Strony internetowe

Paralelizm wymaga aplikacji zabójcy dla masowej adopcji

Jak zacząć keto, porównanie aplikacji na keto.

Jak zacząć keto, porównanie aplikacji na keto.
Anonim

Dodanie wielu rdzeni do mikroprocesorów stworzyło znaczącą szansę na równoległe programowanie, ale potrzebna jest aplikacja zabójcza, aby wprowadzić ideę do głównego nurtu, jak powiedzieli naukowcy podczas panelu dyskusyjnego podczas konferencji Hot Chips.

Większość dzisiejszych programów jest wciąż napisana do sekwencyjnej realizacji, a modele programowania muszą zostać zmienione, aby skorzystać z szybszego sprzętu i rosnącej liczby rdzeni na chipach - powiedzieli panelerzy. Programiści muszą napisać kod w taki sposób, aby możliwe było równoczesne dzielenie i wykonywanie zadań na wiele rdzeni i wątków.

Dużo uwagi i pieniędzy zostało przeznaczonych na budowę szybkich maszyn i lepszych języków programowania, powiedział David Patterson, komputer profesor nauk przyrodniczych na Uniwersytecie Kalifornijskim w Berkeley na konferencji w Stanford w poniedziałek. Stosunkowo mało uwagi poświęcono równolegle pisaniu programów komputerowych, ale aplikacje takie jak gry i muzyka mogą to zmienić. Użytkownicy takich programów wymagają najlepszej wydajności w czasie rzeczywistym, więc programiści mogą musieć przyjmować modele, które dzielą zadania na wiele wątków i rdzeni.

Na przykład, nowe formy paralelizmu mogą poprawić jakość muzyki odtwarzanej na komputerach PC i smartfony, powiedział Patterson. Kod, który lepiej radzi sobie z oddzielaniem kanałów i instrumentów, może ostatecznie generować dźwięki poprzez równoległą interakcję.

Uniwersytet Kalifornijski w Berkeley ma równoległe laboratorium obliczeniowe, w którym naukowcy starają się zrozumieć, w jaki sposób wykorzystywane są aplikacje, co może pomóc zoptymalizować kod dla urządzeń przenośnych. Jeden projekt ma na celu przeniesienie przeglądania na komputer do urządzeń przenośnych poprzez optymalizację kodu w oparciu o konkretne zadania, takie jak renderowanie i analizowanie stron. Kolejny projekt obejmuje optymalizację kodu w celu szybszego wyszukiwania informacji o stanie zdrowia. Laboratorium jest finansowane głównie przez firmę Intel i Microsoft.

Naukowcy z Berkeley próbują doprowadzić do paralelizmu, zastępując fragmenty kodu napisane oryginalnie przy użyciu języków skryptowych takich jak Python i Ruby on Rails z nowym niskopoziomowym kodem C. Nowy kod koncentruje się na konkretnych zadaniach, takich jak analizowanie określonego wzorca głosu w aplikacji do rozpoznawania mowy, powiedział Patterson w wywiadzie w środę. Kod jest napisany przy użyciu OpenMP lub MPI, interfejsów programowania aplikacji zaprojektowanych do pisania równoległych aplikacji na poziomie maszyny.

Eksperci muszą napisać ten wysoce wyspecjalizowany kod równoległy, powiedział Patterson. Skraca to czas programowania programistów, którzy w przeciwnym razie używaliby Pythona i Ruby on Rails, co ułatwiłoby tworzenie aplikacji, ale nie skupiało się na paralelizmie, powiedział Patterson w wywiadzie. Laboratorium wykazało skok wykonania określonego zadania o współczynnik 20 za pomocą kodu maszynowego niskiego poziomu.

Koncepcja równoległości nie jest nowa i była domeną wysokiej wydajności obliczeniowej. Niski poziom paralelizmu zawsze był możliwy, ale programiści musieli stawić czoła zniechęcającemu zadaniu z brakiem narzędzi programowych i ciągle zmieniającym się środowiskiem sprzętowym.

"Gwinty muszą być zsynchronizowane poprawnie," powiedział Christos Kozyrakis, profesor inżynierii elektrycznej i informatyka na Uniwersytecie Stanforda, podczas prezentacji przed dyskusją panelową. Kod musi być zapisany w formie, która zachowuje się w sposób przewidywalny i skaluje się wraz z pojawieniem się większej liczby rdzeni.

Kompilatory muszą być również sprytniejsze i wystarczająco spostrzegawcze, aby dzielić wątki na czas, więc wyjścia są odbierane we właściwej kolejności, powiedział Kozyrakis. Błędne próby zbudowania paralelizmu w kodzie mogłyby stworzyć błędne oprogramowanie, gdyby określone wyliczenia nie były wykonywane w określonej kolejności. Jest to problem powszechnie określany jako warunki wyścigu. Aby uzyskać lepszy poziom równoległości, koder może również potrzebować umiejętności korzystania z wielu narzędzi programistycznych, powiedział panelista.

"Nie ma leniwego podejścia do programowania", powiedział Patterson na konferencji.

Opóźnienie pamięci i sieci stworzyło wąskie gardła w przepustowości danych, co może negować wydajność osiągniętą przez równoległe wykonywanie zadań. Istnieją również różne narzędzia programistyczne dla różnych architektur, które utrudniają wykorzystanie całego dostępnego sprzętu.

Wiele dostępnych obecnie narzędzi do równoległości jest zaprojektowanych do wykorzystania możliwości przetwarzania równoległego procesorów i procesorów graficznych w celu poprawy wydajności systemu. Apple, Intel, Nvidia i Advanced Micro Devices są jednymi z firm promujących OpenCL, równoległe środowisko programistyczne, które będzie obsługiwane w nadchodzącym systemie Apple Mac OS X 10.6, zwanym także Snow Leopard, który ma zostać wydany w piątek. OpenCL konkuruje z Microsoftem, który promuje swoje autorskie narzędzia do programowania równoległego DirectX, oraz Nvidia, która oferuje framework CUDA.

OpenCL zawiera język podobny do języka C z API (interfejsy programowania aplikacji) do zarządzania dystrybucją jądra przez cały sprzęt jako rdzenie procesorów i inne zasoby. OpenCL może pomóc Mac OS dekodować wideo szybciej, rozprowadzając przetwarzanie pikseli w wielu procesorach CPU i procesorach graficznych w systemie.

Wszystkie istniejące narzędzia są ukierunkowane na różne środowiska programowe i korzystają z różnych zasobów, powiedział Patterson. Na przykład OpenCL jest nastawiony bardziej na wykonywanie zadań na GPU. Własne modele, takie jak DirectX, są trudne do wdrożenia w heterogenicznych środowiskach komputerowych, podczas gdy niektóre modele, takie jak OpenCL, dostosowują się tylko do specyficznych środowisk opartych na procesorach GPU.

"Nie sądzę, aby [OpenCL] obejmował wszystkie architektury." Patterson powiedział. "Potrzebujemy w międzyczasie próbować innych rzeczy", jak próbował poprawić modele programowania za pomocą powszechnie używanych narzędzi programistycznych, takich jak Ruby on Rails.

Podczas gdy widzowie zwracali uwagę na to, że paralelizm był problemem dla przez dziesięciolecia panelerzy powiedzieli, że uniwersytety przyjmują teraz nowe podejście do pracy nad wieloma narzędziami programowymi, aby umożliwić równoległość. Po latach finansowania chipów, rząd poświęca więcej uwagi równoległemu przetwarzaniu przez programy związane z finansowaniem.

Kozyrakis powiedział, że Stanford utworzył laboratorium, które ma na celu "sprawienie, by tworzenie równoległych aplikacji było praktyczne dla mas", do roku 2012 Naukowcy pracują z firmami takimi jak Intel, AMD, IBM, Sun, Hewlett-Packard i Nvidia.

Bezpośrednim testem dla programistów może być próba równoległego przetworzenia istniejącego kodu w celu wykonania na współczesnych układach, Berkeley's Patterson powiedziany. Kilka firm oferuje automatyczną równoległość, ale przepisanie i skompilowanie starszego kodu napisanego do sekwencyjnego wykonania może być dużym wyzwaniem.

"Na tych obszarach są pieniądze," powiedział Patterson.