Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Programowanie dla aplikacji wielordzeniowych - czemu jest tak trudne?

ghost666 13 Dec 2016 11:41 2640 0
Texa Poland
  • Procesory wielordzeniowe są obecne na rynku już od ponad dekady. Odpowiedzialne są za istotny przyrost mocy obliczeniowej dzisiejszych komputerów; idea, aby rozbijać duże problemy na mniejsze kawałki, które daje się analizować czy przetwarzać jednocześnie wzięła szturmem przemysł elektroniczny. Jednakże, z drugiej strony, programowanie dla aplikacji wielordzeniowych nie jest takie proste, jak klasycznych rozwiązań. To w jaki sposób zrównolegla się zadania zależy od wielu czynników np. tego czy układ rdzeni w systemie jest hetero- czy homogeniczny. Wszystko sprowadzone zostało do programowania trochę na wyczucie - na doświadczenie, jak zauważa Kumar Venkatramani, wicedyrektor firmy Silexica. "Oprogramowanie dla aplikacji wielordzeniowych jeszcze nie jest w pełni dojrzałe" skomentował Venkatramani.

    Silexica, to firma z niemieckiego Aachen, zajmująca się opracowywaniem oprogramowania dedykowanego do automatyzacji tworzenia softu na aplikacje wielordzeniowe. Firma ta zaczęła dwa lata temu jako spin-off z Institute for Communication Technologies and Embedded Systems na uniwersytecie w Aachen. Inżynierowie pracujący w firmie zajmują się zagadnieniami automatyzacji programowania dla aplikacji wielordzeniowych już od ponad dziesięciu lat. Firma zaprezentowała niedawno nowy zestaw narzędzi programistycznych - SLX Tool Suite - dedykowany właśnie do tego zadania.

    Oprogramowanie sprzedawane przez firmę oferuje system automatycznego modelowania systemów dedykowany dla programistów wielordzeniowych systemów-na-chipie (SoC) jak i architektów sprzętu obecnego w układach SoC. Oprogramowanie firmy zawiera między innymi narzędzia dedykowane do wykrywania równoleglych wykonań operacji jak i rozwiązywania problemów z mapowaniem. Narzędzia składające się w opisywany zestaw to SLX Parallelizer, SLX Mapper, SLX Generator oraz SLX Explorer.

    Jak mówi Venkatramani "w nowej wersji każde z narzędzi rozrosło się". Nowa wersja pakietu SLX zawiera w sobie wiele istotnych zmian: wspiera więcej języków programowania i obsługuje więcej modeli sprzętu.

    Rosnący problem

    Programowanie dla aplikacji wielordzeniowych nie jest proste, szczególnie w czasach,gdy ilość rdzeni w jednym układzie wzrasta wykładniczo, a wiele z rdzeni różni się możliwościami obliczeniowymi, jak na przykład w układach SoC, które łączą w sobie rdzenie CPU i DSP. Za przykład takiego systemu wziąć można stacje bazowe 5G. Nierzadko w takich systemach projektanci pracują z systemami mającymi 500 rdzeni, które muszą realizować 55 tysięcy zadań równocześnie. Program tworzy 500 developerów, ale gdyby nie zastosowanie narzędzi do optymalizacji kodu dla systemów wielordzeniowych, to aby uzyskać podobne efekty zatrudnić trzeba by trzy razy więcej programistów, a i tak projekt trwałby 4 razy dłużej, co w efekcie zwiększyłoby koszty stworzenia oprogramowania do BTSa.

    Teraz Silexica bierze na celownik trzy główne segmenty rynku: systemy wizyjne/rozszerzonej rzeczywistości, szerokopasmową komunikację bezprzewodową oraz pojazdy autonomiczne i systemy wspomagania kierowców (ADAS). To co jest wspólne we wszystkich tych trzech aplikacjach to fakt, że przesuwają one granice obecnego hardware coraz dalej, będąc motorem napędowym postępu. Dodatkowo, są to branże dosyć 'nowe', a co za tym idzie nie muszą zachowywać kompatybilności wstecznej z systemami poprzedniej generacji.

    Jednakże co najważniejsze - projektanci systemów wielordzeniowych są pod ogromną presją aby wprowadzać coraz więcej innowacji. Potrzebują oni też narzędzi, które pozwolą im na optymalizację tworzonego kodu na podstawie algorytmów i danych, a nie intuicji i własnego doświadczenia, jak zauważa Venkatramani.

    Co oferują poszczególne narzędzia

    SLX Mapper i SLX Generator są zasadniczo zaprojektowane do automatycznej analizy kodu, co pozwala na proste rozdzielenie go na poszczególne rdzenie. Jednakże to nie wszystko - narzędzia te oferują też analizy wydajności i potrafią odnaleźć "wąskie gardła" w kodzie i jego realizacji.

    Mówiąc dokładnie SLX Mapper odpowiedzialny jest za automatyczną dystrybucję oprogramowania i optymalizację wydajności z wykorzystaniem dostępnego sprzętu. Z kolei SLX Generator zapewnia automatyczną generację kodu dla zwiększenia produktywności podczas tworzenia oprogramowania.

    Programowanie dla aplikacji wielordzeniowych - czemu jest tak trudne?


    Aktualizowana wersja tych narzędzi pozwala projektantom na analizę i optymalizację kodu pod kątem krytycznych parametrów takich jak opóźnienia i przepustowość systemu, ale także np. zużycie energii elektrycznej. Dodatkowo narzędzia te pozwalają na analizę np. transmisji w szynach danych w układzie itp. Zmiany te zostały wprowadzone z uwagi na konieczność znalezienia lepszych dróg optymalizacji w systemach z różnorakimi wymaganiami. Wskazywali na to klienci, z których część właśnie zauważała brak możliwości optymalizacji kodu pod kątem zużycia energii w poprzednich wersjach.

    Oprócz opisanych powyżej narzędzi dostępny jest także SLX Parallelizer, który zaprojektowany został do translacji kodu napisanego jako sekwencyjny do aplikacji równoległych. Poprzednie wersje narzędzia wspierały C, a nowa wersja dodała do obsługiwanych języków także C++. Narzędzie to umożliwia migrację starszego oprogramowania napisanego w C i C++ na procesory jednordzeniowe do systemów wielordzeniowych.

    Ostatnim z dostępnych narzędzi jest SLX Explorer, który dedykowany jest dla architektów systemów i umożliwia wybór optymalnej platformy dla danego zadania. Explorer pozwala na porównywanie parametrów pracy poszczególnych układów i architektur w różnych aplikacjach. Nowa wersja tego narzędzia wzbogacona została o wsparcie dla układów 64 bitowych oraz PowerPC.

    Konkurencyjne platformy

    Więc jaka jest konkurencja firmy Silexica na rynku zautomatyzowanych narzędzi do rozwijania oprogramowania dla aplikacji wielordzeniowych? Z pewnością niewielka. Szereg firm oferuje rozmaite narzędzia do zautomatyzowania procesu optymalizacji aplikacji wielordzeniowych, ale zazwyczaj są to narzędzia mało uniwersalne i adresowane raczej do wąskiego segmentu rynku, jak zauważa Venkatramani. "Nikt nie rozwiązuje tylu kwestii naraz, co my" chwali się przedstawiciel Silexica. Dodaje on też, że pewne firmy opracowały własne oprogramowanie na użytek wewnętrzny.

    Pakiet SLX dedykowany jest tak dla projektantów układów SoC jak i architektów ich systemów. Zestaw tych narzędzi nie jest dedykowany do konkretnego procesora - "Nasze podejście opiera się na zewnętrznym modelu układu, zawartym w pliku XML. Pozwala to na rozwijanie modeli niezależnie od rozwijania samego oprogramowania do modelowania, a dodatkowo daje klientom i użytkownikom programu możliwość tworzenia własnych modeli". Jednakże, co trzeba koniecznie dodać, firma wspiera w SLX Mapperze i Generatorze tylko część z dostępnych platform. Są to układy OMAP od Texas Instruments, Keystone, NXP T4240, NXP B4860, architektury Parallella/Epiphany, oraz 32 i 64 bitowe architektury ARM, jednakże, jak dodane Venkatramani "biblioteka tych układów cały czas rośnie".

    Klienci

    Silexica, jakkolwiek założona dopiero dwa lata temu, zdążyła zgromadzić już istotnych klientów w postaci firm Huawei oraz Fujitsu.

    Uwagę dyrektora Huawei Wireless R&D USA, Xiaotao Chena, SLX Tool Suite przyciągnął już jakiś czas temu, gdy firma ta prowadziła jeszcze prace na uniwersytecie w Aachen. "Profilowanie i optymalizacja na poziomie całego systemu, jaką osiąga ten zestaw narzędzi daje zaskakująco dobre rezultaty w kontekście tak wydajności obliczeniowej jak i energetycznej w porównaniu z tradycyjnym podejściem. Od analizy zużycia mocy w jednostkach przetwarzających (rdzenie CPU/DSP) do analizy zużycia energii przez cały układ scalony. Dzięki mapowaniu i kolejkowaniu operacji w sposób biorący pod uwagę zużycie mocy przez system, rozwiązania te doskonale sprawdzają się tak w heterogenicznych systemach jak i układach o architekturze bardziej hierarchicznej, jakie stosujemy w zastosowaniach komunikacji bezprzewodowej" mówił Chen.

    Fujitsu z kolei zamierza stosować narzędzia Silexica do sprostania wyzwaniom w optymalizacji komunikacji w systemach motoryzacyjnych, gdzie procesory wielordzeniowe pojawiają się coraz częściej. "Z powodzeniem zintegrowaliśmy SLX Toole Suite z naszym środowiskiem do rozwijania oprogramowania na układy wielordzeniowe, co pomaga nam w radzeniu sobie z wieloma wyzwaniami" komentował Noriyasu Nakayama, menedżer z firmy Fujitsu Advanced Technologies Ltd.

    Standardy

    Jak wskazuje firma Silexica, standaryzacja platform wielordzeniowych i programowania na nie realizowana jest przez Multuicore Association. Ma ona na celu optymalizację produktów z zaimplementowanymi procesami wielordzeniowymi. Ta organizacja, działająca na zasadzie non-profit, od dawna opracowuje rozwiązanie interfejsów Software/Hardware dla procesorów wielordzeniowych i dedykowane do tego narzędzia pod nazwą SHIM. Silexica jest częścią tej organizacji i aktualizacje, jakie mają pojawić się na platformie SHIM 2.0 są właśnie autorstwa tej firmy.

    Źródło: http://www.eetimes.com/document.asp?doc_id=1330844&

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11015 posts with rating 9359, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • Texa Poland