HSA dla programistów: heterogeniczne obliczenia dla mas
Opublikowany: 2022-03-11Co mają wspólnego producenci chipów, tacy jak AMD, ARM, Samsung, MediaTek, Qualcomm i Texas Instruments? Cóż, poza oczywistymi podobieństwami między tymi gigantami produkującymi chipy, są oni również założycielami Fundacji HSA. Co to jest HSA i dlaczego potrzebuje fundamentu wspieranego przez przemysł wagi ciężkiej?
W tym poście postaram się wyjaśnić, dlaczego HSA może być wielkim problemem w najbliższej przyszłości, więc zacznę od podstaw: Co to jest HSA i dlaczego powinno Cię to obchodzić ?
HSA to skrót od Heterogenous System Architecture, który brzmi trochę nudno, ale uwierz mi, może być naprawdę bardzo ekscytujący. HSA to zasadniczo zestaw standardów i specyfikacji zaprojektowanych w celu umożliwienia dalszej integracji procesorów i procesorów graficznych na tej samej magistrali. Nie jest to całkowicie nowa koncepcja; Procesory stacjonarne i mobilne SoC od lat wykorzystują zintegrowaną grafikę i używają pojedynczej magistrali, ale HSA przenosi to na wyższy poziom.
Zamiast po prostu korzystać z tej samej magistrali i pamięci współdzielonej dla procesora i karty graficznej, HSA pozwala również tym dwóm bardzo różnym architektom działać w tandemie i współdzielić zadania . Może to nie brzmieć jak wielka sprawa, ale jeśli przyjrzysz się bliżej i zbadasz potencjalne długoterminowe skutki tego podejścia, zaczyna wyglądać bardzo „słodko” w sensie technicznym.
O nie! Oto kolejny głupi programista standardu, który muszą wdrożyć
Tak i nie.
Pomysł współdzielenia tej samej magistrali nie jest nowy, podobnie jak pomysł wykorzystania wysoce zrównoleglonych procesorów graficznych do niektórych zadań obliczeniowych (które nie obejmują renderowania zdjęć w głowę). Zostało to zrobione wcześniej i myślę, że większość naszych czytelników jest już zaznajomiona ze standardami GPGPU, takimi jak CUDA i OpenCL.
Jednak w przeciwieństwie do podejścia CUDA czy OpenCL, HSA skutecznie wyeliminuje programistę, przynajmniej jeśli chodzi o przypisywanie różnych obciążeń do różnych rdzeni przetwarzania. Sprzęt decydowałby o tym, kiedy przenieść obliczenia z procesora na GPU i odwrotnie. HSA nie ma zastępować znanych języków programowania GPGPU, takich jak OpenCL, ponieważ można je zaimplementować również na sprzęcie HSA.
O to właśnie chodzi w HSA: ma sprawić, że cały proces będzie łatwy, a nawet bezproblemowy. Deweloperzy niekoniecznie będą musieli myśleć o przeniesieniu obliczeń na GPU. Sprzęt zrobi to automatycznie.
Aby to osiągnąć, HSA będzie musiała korzystać ze wsparcia wielu producentów chipów i dostawców sprzętu. Chociaż lista zwolenników HSA jest imponująca, Intel jest wyraźnie nieobecny w tej prawdziwej branży chipowej. Biorąc pod uwagę udział Intela w rynku procesorów zarówno do komputerów desktop, jak i serwerów, jest to wielka sprawa. Inną nazwą, której nie znajdziesz na liście, jest Nvidia, która koncentruje się na CUDA i jest obecnie liderem na rynku obliczeń GPU.
Jednak HSA nie jest przeznaczony wyłącznie do systemów i aplikacji o wysokiej wydajności, na sprzęcie, który zwykle ma naklejkę Intel Inside . HSA można również stosować w energooszczędnych urządzeniach mobilnych, w których Intel ma znikomy udział w rynku.
HSA ma więc ułatwiać życie, ale czy ma to jeszcze znaczenie? Czy to się przyjmie? To nie jest pytanie technologiczne, ale ekonomiczne. Będzie to zależało od niewidzialnej ręki rynku. Tak więc, zanim przejdziemy dalej, zacznijmy od dokładniejszego przyjrzenia się temu, w jakim stanie rzeczy są teraz i jak się tutaj znaleźliśmy.
Rozwój HSA, problemy z ząbkowaniem i obawy związane z adopcją
Jak powiedziałem we wstępie, HSA nie jest koncepcją nową. Został pierwotnie wymyślony przez firmę Advanced Micro Devices (AMD), która miała żywotny interes w uruchomieniu go. Dziesięć lat temu AMD kupiło firmę ATI specjalizującą się w grafice i od tego czasu firma próbuje wykorzystać swój dostęp do najnowocześniejszych technologii GPU, aby zwiększyć ogólną sprzedaż.
Na pierwszy rzut oka pomysł był dość prosty: AMD nie tylko kontynuowałoby rozwój i produkcję najnowocześniejszych dyskretnych procesorów graficznych, ale także zintegrowałoby technologię GPU firmy ATI ze swoimi procesorami. Dział marketingu AMD nazwał pomysł „Fusion”, a HSA określano jako Fusion System Architecture (FSA). Brzmi świetnie, prawda? Uzyskanie przyzwoitego procesora x86 z dobrą zintegrowaną grafiką brzmiało jak dobry pomysł i tak było.
Niestety, AMD napotkało po drodze wiele problemów; Wyróżnię kilka z nich:
- Każdy dobry pomysł w technologii na pewno zostanie podchwycony przez konkurencję, w tym przypadku – Intel.
- AMD straciło przewagę technologiczną na rzecz Intela i coraz trudniej było mu konkurować na rynku procesorów z powodu wiodącej technologii odlewniczej Intela.
- Wykonanie AMD było problematyczne, a wiele nowych procesorów było spóźnionych na rynek. Inne zostały całkowicie złomowane.
- Nie pomogły krach gospodarczy z 2008 roku i późniejsza rewolucja mobilna.
Te i wiele innych czynników przyczyniło się do osłabienia przewagi AMD i uniemożliwienia przyjęcia na rynek jej produktów i technologii. AMD zaczęło wprowadzać procesory z nową generacją zintegrowanych kart graficznych Radeon w połowie 2011 roku i zaczęło nazywać je jednostkami przyspieszonego przetwarzania (APU) zamiast procesorami.
Pomijając marketing, pierwsza generacja układów APU AMD (o nazwie kodowej Llano) okazała się klapą. Chipy były spóźnione i nie nadążały za ofertami Intela. Poważne funkcje HSA również nie zostały uwzględnione, ale AMD zaczęło dodawać je do swojej platformy z 2012 roku (Trinity, która zasadniczo została wykonana prawidłowo przez Llano). Następny krok nastąpił w 2014 roku, wraz z wprowadzeniem APU Kaveri, które wspierały zarządzanie pamięcią heterogeniczną (IOMMU GPU i MMU procesora współdzieliły tę samą przestrzeń adresową). Kaveri przyniósł również większą integrację architektoniczną, umożliwiając spójną pamięć między procesorem a GPU (AMD nazywa to hUMA, co oznacza Heterogenous Unified Memory Access). Kolejne odświeżenie Carizzo dodało jeszcze więcej funkcji HSA, umożliwiając procesorowi przełączanie kontekstu zadań obliczeniowych na GPU i wykonywanie kilku dodatkowych sztuczek.
Nadchodząca architektura procesorów Zen i zbudowane na niej APU obiecuje dostarczyć jeszcze więcej, jeśli i kiedy pojawi się na rynku.
Więc w czym problem?
AMD nie było jedynym producentem chipów, który wykorzystał potencjał wbudowanych procesorów graficznych. Intel zaczął dodawać je również do swoich procesorów Core, podobnie jak producenci chipów ARM, więc zintegrowane procesory graficzne są obecnie używane w praktycznie każdym smartfonie SoC, a także w zdecydowanej większości komputerów PC/Mac. W międzyczasie pozycja AMD na rynku procesorów uległa erozji. Spadek udziału w rynku sprawił, że platformy AMD stały się mniej atrakcyjne dla programistów, firm, a nawet konsumentów. Po prostu nie ma na rynku zbyt wielu komputerów z procesorami AMD, a Apple w ogóle nie używa procesorów AMD (chociaż używał grafiki AMD, głównie ze względu na kompatybilność z OpenCL).
AMD nie konkuruje już z Intelem na rynku high-endowych procesorów, ale nawet gdyby tak było, nie miałoby to większego znaczenia pod tym względem. Ludzie nie kupują stacji roboczych lub komputerów do gier za 2000 dolarów, aby korzystać ze zintegrowanej grafiki. Używają drogiej, dyskretnej grafiki i nie dbają zbytnio o energooszczędność.
Co powiesz na niektóre HSA dla smartfonów i tabletów?
Ale poczekaj. A co z platformami mobilnymi? Czy AMD nie mogłoby po prostu wprowadzić podobnych rozwiązań dla chipów smartfonów i tabletów? Cóż, nie, niezupełnie.
Widzisz, kilka lat po przejęciu ATI, AMD znalazło się w trudnej sytuacji finansowej, spotęgowanej kryzysem gospodarczym, więc zdecydowało się sprzedać swój oddział Imageon Mobile GPU firmie Qualcomm. Qualcomm zmienił nazwę produktów na Adreno (anagram Radeona) i stał się dominującym graczem na rynku procesorów do smartfonów, używając świeżo odmalowanych wewnętrznych procesorów graficznych.
Jak niektórzy z was mogą zauważyć, sprzedawanie stroju graficznego na smartfony tuż przed rozpoczęciem smartfonowej rewolucji nie wygląda na genialny biznesowy ruch, ale myślę, że z perspektywy czasu zawsze jest 20/20.
HSA była kiedyś kojarzona wyłącznie z AMD i jej procesorami x86, ale tak już nie jest. W rzeczywistości, gdyby wszyscy członkowie HSA Foundation zaczęli sprzedawać smartfonowe procesory ARM obsługujące HSA, sprzedaliby kilkakrotnie procesory AMD x86, zarówno pod względem przychodów, jak i sprzedanych jednostek. Więc co się stanie, jeśli to zrobią? Co by to oznaczało dla branży i deweloperów?
Cóż, na początek procesory smartfonów już polegają w pewnym sensie na przetwarzaniu heterogenicznym. Przetwarzanie heterogeniczne zwykle odnosi się do koncepcji wykorzystania różnych architektur w jednym chipie, a biorąc pod uwagę wszystkie komponenty znajdujące się w dzisiejszych wysoce zintegrowanych układach SoC, może to być bardzo szeroka definicja. W rezultacie prawie każdy SoC można uznać za heterogeniczną platformę obliczeniową, w zależności od standardów. Czasami ludzie odnoszą się nawet do różnych procesorów opartych na tym samym zestawie instrukcji jako platformy heterogenicznej (na przykład mobilne chipy z rdzeniami ARM Cortex-A57 i A53, z których oba są oparte na 64-bitowym zestawie instrukcji ARMv8).
Wielu obserwatorów zgadza się, że większość procesorów opartych na ARM można obecnie uznać za platformy heterogeniczne, w tym chipy Apple z serii A, układy SoC Samsung Exynos i podobne procesory innych producentów, a mianowicie dużych graczy, takich jak Qualcomm i MediaTek.
Ale dlaczego ktokolwiek miałby potrzebować HSA na procesorach smartfonów? Czy to nie jest sens używania procesorów graficznych do ogólnych obliczeń w celu radzenia sobie z profesjonalnymi obciążeniami, a nie Angry Birds i Uber?
Tak, ale to nie znaczy, że prawie identyczne podejście nie może być użyte do zwiększenia wydajności, co jest priorytetem w projektowaniu procesorów mobilnych. Tak więc, zamiast przetwarzać niezliczone równoległe zadania na wysokiej klasy stacji roboczej, HSA może być również wykorzystana do zwiększenia wydajności i uniwersalności procesorów mobilnych.
Niewiele osób przygląda się bliżej tym procesorom, zwykle sprawdzają specyfikację, kiedy kupują nowy telefon i to wszystko: patrzą na numery i marki. Zwykle nie patrzą na samą matrycę SoC , co wiele nam mówi, a oto dlaczego: GPU w zaawansowanych procesorach smartfonów zajmują więcej powierzchni krzemu niż procesory. Biorąc pod uwagę, że już tam są, fajnie byłoby je dobrze wykorzystać w aplikacjach innych niż gry, prawda?
Hipotetyczny, w pełni zgodny z HSA procesor do smartfonów może pozwolić programistom wykorzystać ten potencjał bez zwiększania ogólnych kosztów produkcji, wdrażania większej liczby funkcji i zwiększania wydajności.
Oto, co HSA może zrobić dla procesorów smartfonów, przynajmniej teoretycznie:
- Popraw wydajność, przenosząc odpowiednie zadania do GPU.
- Zwiększ wydajność, odciążając procesor w niektórych sytuacjach.
- Efektywnie wykorzystuj magistralę pamięci.
- Potencjalnie obniż koszty produkcji chipów, wykorzystując jednocześnie więcej krzemu.
- Wprowadź nowe funkcje, z którymi rdzenie procesora nie mogą sobie poradzić w wydajny sposób.
- Usprawnij rozwój dzięki standaryzacji.
Brzmi nieźle, zwłaszcza jeśli weźmie się pod uwagę, że programiści raczej nie będą tracić czasu na implementację. Taka jest teoria, ale będziemy musieli poczekać, aby zobaczyć to w akcji, a to może chwilę potrwać.
Jak mimo wszystko działa HSA?
Nakreśliłem już podstawy we wstępie i waham się, aby wchodzić w zbyt wiele szczegółów z kilku powodów: nikt nie lubi nowel publikowanych na blogu technicznym, a implementacje HSA mogą się różnić.
Dlatego postaram się nakreślić koncepcję w kilkuset słowach.
W standardowym systemie aplikacja odciążyłaby obliczenia GPU, przenosząc bufory do GPU, co wiązałoby się z wywołaniem procesora przed kolejkowaniem. Procesor następnie zaplanuje zadanie i przekaże je do GPU, który po zakończeniu przekaże je z powrotem do procesora. Wtedy aplikacja dostałaby bufor, który ponownie musiałby zostać zmapowany przez CPU, zanim będzie gotowy. Jak widać, takie podejście wymaga wielu ruchów w przód i w tył.
W systemie HSA aplikacja ustawiałaby zadanie w kolejce, procesor HSA przejąłby zadanie, przekazałby je do GPU, odzyskałby i przekazał do aplikacji. Gotowy.
Jest to możliwe dzięki współdzieleniu pamięci systemowej bezpośrednio między procesorem a procesorem graficznym, chociaż mogą być zaangażowane również inne jednostki obliczeniowe (na przykład procesory DSP). Aby osiągnąć ten poziom integracji pamięci, HSA wykorzystuje wirtualną przestrzeń adresową dla urządzeń obliczeniowych. Oznacza to, że rdzenie CPU i GPU mogą uzyskiwać dostęp do pamięci na równych warunkach , o ile współdzielą tabele stron, co pozwala różnym urządzeniom na wymianę danych za pomocą wskaźników.
Jest to oczywiście świetne dla wydajności, ponieważ nie jest już konieczne przydzielanie pamięci do GPU i CPU przy użyciu pamięci wirtualnej dla każdego z nich. Dzięki zunifikowanej pamięci wirtualnej obaj mogą uzyskiwać dostęp do pamięci systemowej zgodnie ze swoimi potrzebami, zapewniając lepsze wykorzystanie zasobów i większą elastyczność.
Wyobraź sobie system o niskim poborze mocy z 4 GB pamięci RAM, z czego 512 MB jest przeznaczone na zintegrowany procesor graficzny. Ten model zwykle nie jest elastyczny i nie można zmieniać ilości pamięci GPU w locie. Utkniesz z 256 MB lub 512 MB i to wszystko. Dzięki HSA możesz robić, co tylko zechcesz: jeśli przeładujesz dużo rzeczy na GPU i potrzebujesz więcej pamięci RAM dla GPU, system może je przydzielić. Tak więc w aplikacjach związanych z grafiką, z wieloma zasobami o wysokiej rozdzielczości, system może bezproblemowo przydzielić 1 GB lub więcej pamięci RAM do GPU.

Bez względu na to, czy wszystko jest takie samo, systemy HSA i inne niż HSA będą współdzielić tę samą przepustowość pamięci , będą miały dostęp do tej samej ilości pamięci , ale system HSA może wykorzystać ją znacznie wydajniej, poprawiając w ten sposób wydajność i zmniejszając zużycie energii. Chodzi o to, aby uzyskać więcej za mniej.
Do czego przydałyby się heterogeniczne obliczenia?
Prosta odpowiedź? Przetwarzanie heterogeniczne lub HSA jako jedno z jego implementacji powinno być dobrym wyborem dla wszystkich zadań obliczeniowych lepiej dostosowanych do GPU niż CPU. Ale co to dokładnie oznacza, w czym i tak są dobre procesory graficzne?
Nowoczesne, zintegrowane procesory graficzne nie są zbyt wydajne w porównaniu do oddzielnych kart graficznych (zwłaszcza zaawansowanych kart graficznych do gier i rozwiązań dla stacji roboczych), ale są znacznie wydajniejsze niż ich poprzednicy.
Jeśli nie śledziłeś tego, możesz założyć, że te zintegrowane procesory graficzne to żart i przez lata były tylko tym: grafiką do tanich domowych i biurowych pudełek. Jednak na przełomie dekady zaczęło się to zmieniać, gdy zintegrowane procesory graficzne przeniosły się z chipsetu do pakietu CPU i umierały, stając się naprawdę zintegrowanymi .
Mimo że wciąż jest żałośnie słaby w porównaniu do flagowych procesorów graficznych, nawet zintegrowane procesory graficzne mają duży potencjał. Podobnie jak wszystkie procesory graficzne, wyróżniają się one ładowaniem pojedynczej instrukcji, wielu danych (SIMD) i pojedynczej instrukcji, wielu wątków (SIMT). Jeśli potrzebujesz złamać wiele liczb w powtarzalnych, równoległych obciążeniach, procesory graficzne powinny pomóc. Z drugiej strony procesory nadal lepiej radzą sobie z dużymi, rozgałęzionymi obciążeniami.
Dlatego procesory mają mniej rdzeni, zwykle od dwóch do ośmiu, a rdzenie są zoptymalizowane pod kątem sekwencyjnego przetwarzania szeregowego. Procesory graficzne mają zwykle dziesiątki, setki, a we flagowych dyskretnych kartach graficznych tysiące mniejszych, bardziej wydajnych rdzeni. Rdzenie GPU są zaprojektowane do obsługi wielu zadań jednocześnie, ale te poszczególne zadania są znacznie prostsze niż te obsługiwane przez procesor. Po co obciążać procesor takimi obciążeniami, skoro GPU poradzi sobie z nimi z doskonałą wydajnością i/lub wydajnością?
Ale jeśli procesory graficzne są w tym tak cholernie dobre, dlaczego nie zaczęliśmy ich używać jako ogólnych urządzeń komputerowych lata temu? Cóż, branża próbowała, ale postęp był powolny i ograniczony do pewnych nisz. Koncepcja ta nosiła pierwotnie nazwę General Purpose Computing on Graphics Processing Units (GPGPU). W dawnych czasach potencjał był ograniczony, ale koncepcja GPGPU była rozsądna, a następnie została przyjęta i ustandaryzowana w postaci CUDA Nvidii i OpenCL Grupy Apple/Khronos.
CUDA i OpenCL zrobiły ogromną różnicę, ponieważ pozwoliły programistom korzystać z procesorów graficznych w inny i znacznie bardziej efektywny sposób. Były jednak zależne od dostawcy. Możesz używać CUDA na sprzęcie Nvidii, podczas gdy OpenCL był zarezerwowany dla sprzętu ATI (i został przyjęty przez Apple). Microsoft DirectCompute API został wydany wraz z DirectX 11 i pozwalał na ograniczone, niezależne od dostawcy podejście (ale ograniczało się do systemu Windows).
Podsumujmy, wymieniając kilka aplikacji do obliczeń na GPU:
Tradycyjne obliczenia o wysokiej wydajności (HPC) w postaci klastrów HPC, superkomputerów, klastrów GPU do obciążeń obliczeniowych, obliczeń GRID, równoważenia obciążenia.
Obciążenia wymagające fizyki , które mogą, ale nie muszą, obejmować gry lub ogólnie grafikę. Mogą być również używane do obsługi obliczeń dynamiki płynów, fizyki statystycznej oraz kilku egzotycznych równań i algorytmów.
Geometria , prawie wszystko związane z geometrią, w tym obliczenia przezroczystości, cienie, wykrywanie kolizji i tak dalej.
Przetwarzanie dźwięku z wykorzystaniem procesora graficznego zamiast procesorów DSP, przetwarzanie mowy, przetwarzanie sygnału analogowego i nie tylko.
Cyfrowe przetwarzanie obrazu jest tym, do czego (oczywiście) zaprojektowano procesory graficzne, dzięki czemu można je wykorzystać do przyspieszenia przetwarzania i dekodowania obrazu i wideo. Jeśli potrzebujesz zdekodować strumień wideo i zastosować filtr, nawet podstawowy procesor GPU wyczyści podłogę za pomocą procesora.
Obliczenia naukowe , w tym badania klimatu, astrofizyka, mechanika kwantowa, modelowanie molekularne i tak dalej.
Inne zadania wymagające dużej mocy obliczeniowej , a mianowicie szyfrowanie/odszyfrowywanie. Niezależnie od tego, czy potrzebujesz „wydobywać” kryptowaluty, szyfrować lub odszyfrowywać poufne dane, łamać hasła lub wykrywać wirusy, GPU może pomóc.
Nie jest to pełna lista potencjalnych aplikacji obliczeniowych na GPU, ale czytelnicy niezaznajomieni z tą koncepcją powinni mieć ogólne pojęcie o tym, co wyróżnia obliczenia na GPU. Pominąłem też oczywiste aplikacje, takie jak gry i profesjonalną grafikę.
I tak nie istnieje wyczerpująca lista, ponieważ obliczenia GPU mogą być używane do różnych rzeczy, od finansów i obrazowania medycznego po ładowanie baz danych i statystyk. Ogranicza Cię własna wyobraźnia. Tak zwana wizja komputerowa to kolejna rozwijająca się aplikacja. Wydajny procesor graficzny to dobra rzecz, jeśli chcesz „nauczyć” drona lub samochód bez kierowcy, jak unikać drzew, pieszych i innych pojazdów.
Zapraszam do wstawienia tutaj swojego ulubionego żartu Lindsay Lohan.
Programowanie dla HSA: czas na złe wieści
To może być moja osobista opinia, a nie fakt, ale jestem zwolennikiem HSA. Myślę, że koncepcja ma duży potencjał, pod warunkiem, że zostanie poprawnie zaimplementowana i zyska wystarczające poparcie wśród producentów chipów i programistów. Jednak postęp był boleśnie powolny, a może to tylko moje odczucie, ze szczyptą myślenia życzeniowego. Po prostu lubię widzieć nowe technologie w akcji i nie jestem osobą cierpliwą.
Problem z HSA polega na tym, że jeszcze go tam nie ma . To nie znaczy, że nie wystartuje, ale może to trochę potrwać. W końcu nie mówimy tylko o nowych stosach oprogramowania; HSA do działania wymaga nowego sprzętu. Problem polega na tym, że znaczna część tego sprzętu jest wciąż na desce kreślarskiej, ale do tego dochodzimy. Powoli.
Nie oznacza to, że programiści nie pracują nad projektami związanymi z HSA, ale nie ma dużego zainteresowania ani postępu w tym zakresie. Oto kilka zasobów, które powinieneś sprawdzić, jeśli chcesz spróbować HSA:
HSA Foundation @ GitHub to oczywiście miejsce na zasoby związane z HSA. Fundacja HSA publikuje i utrzymuje szereg projektów w serwisie GitHub, w tym debugery, kompilatory, niezbędne narzędzia HSAIL i wiele innych. Większość zasobów jest przeznaczona dla sprzętu AMD.
Zasoby HSAIL dostarczane przez AMD pozwalają lepiej poznać specyfikację HSAIL. HSAIL to skrót od HSA Intermediate Language i jest w zasadzie kluczowym narzędziem dla autorów kompilatorów zaplecza i autorów bibliotek, którzy chcą atakować urządzenia HSA.
HSA Programmer's Reference Manual (PDF) zawiera pełną specyfikację HSAIL oraz wyczerpujące wyjaśnienie języka pośredniego.
Zasoby Fundacji HSA są na razie ograniczone, a program dla programistów Fundacji „wkrótce”, ale istnieje wiele oficjalnych narzędzi programistycznych do sprawdzenia. Co ważniejsze, dadzą ci dobre wyobrażenie o stosie, którego będziesz potrzebować, aby zacząć.
Oficjalny blog AMD zawiera również przydatne treści HSA.
To powinno wystarczyć, aby zacząć, pod warunkiem, że jesteś ciekawy. Prawdziwe pytanie brzmi, czy powinieneś zawracać sobie głowę.
Przyszłość obliczeń HSA i GPU
Za każdym razem, gdy omawiamy nową technologię, stajemy przed tym samym dylematem: czy powinniśmy powiedzieć czytelnikom, aby poświęcili na nią czas i zasoby, czy też trzymali się z daleka, stosując podejście „poczekaj i zobacz”?
Wyjaśniłem już, że jestem nieco stronniczy, ponieważ podoba mi się ogólna koncepcja obliczeń na GPU, ale większość programistów może na razie się bez niej obejść. Nawet jeśli wystartuje, HSA będzie miała ograniczoną atrakcyjność i nie będzie dotyczyć większości programistów. Jednak może to być ważne w przyszłości. Na nieszczęście dla AMD, jest mało prawdopodobne, aby zmieniła zasady gry na rynku procesorów x86, ale może okazać się ważniejsza w przypadku procesorów mobilnych opartych na architekturze ARM. Być może był to pomysł AMD, ale firmy takie jak Qualcomm i MediaTek są w lepszej pozycji, aby dostarczać sprzęt obsługujący HSA setkom milionów użytkowników.
Musi to być idealna symbioza oprogramowania i sprzętu. Gdyby mobilni producenci chipów oszaleli na punkcie HSA, byłaby to wielka sprawa. Nowa generacja chipów HSA zatarłaby granicę między rdzeniami CPU i GPU. Dzieliliby tę samą szynę pamięci na równych warunkach i myślę, że firmy zaczną sprzedawać je w inny sposób. Na przykład AMD już sprzedaje swoje APU jako „urządzenia obliczeniowe” składające się z różnych „rdzeni obliczeniowych” (CPU i GPU).
Mobilne chipy mogą skończyć na podobnym podejściu. Zamiast sprzedawać chip z ośmioma lub dziesięcioma rdzeniami CPU i takim a takim GPU, producenci chipów mogliby zacząć mówić o klastrach, modułach i jednostkach. Tak więc procesor z czterema małymi i czterema dużymi rdzeniami CPU byłby procesorem „dwuklastrowym” lub „podwójnym modułem” albo „trójklastrowym” lub „czteroklastrowym”, jeśli weźmie się pod uwagę rdzenie GPU . Wiele specyfikacji technicznych z czasem staje się bez znaczenia, na przykład DPI w drukarce biurowej lub liczba megapikseli w tanim aparacie smartfona.
To jednak nie tylko marketing. Jeśli procesory graficzne stają się tak elastyczne jak rdzenie procesorów i mogą uzyskiwać dostęp do zasobów systemowych na równych warunkach jak procesor, dlaczego mielibyśmy w ogóle zawracać sobie głowę ich prawdziwym imieniem? Dwie dekady temu przemysł przestał używać dedykowanych koprocesorów matematycznych (FPU), kiedy stały się niezbędnym elementem każdego procesora. Zaledwie kilka cykli produktu później zapomnieliśmy, że kiedykolwiek istniały.
Pamiętaj, że HSA nie jest jedynym sposobem wykorzystania procesorów graficznych do obliczeń.
Intela i Nvidii nie ma na pokładzie, a ich podejście jest inne. W ostatnich latach Intel po cichu zwiększył inwestycje w badania i rozwój procesorów graficznych, a jego najnowsze zintegrowane rozwiązania graficzne są całkiem dobre. W miarę jak wbudowane procesory graficzne stają się coraz potężniejsze i zajmują więcej powierzchni krzemowych, Intel będzie musiał znaleźć bardziej pomysłowe sposoby wykorzystania ich do ogólnych obliczeń.
Z drugiej strony Nvidia wycofała się z rynku zintegrowanych kart graficznych lata temu (kiedy przestała produkować chipsety do komputerów PC), ale próbowała szczęścia na rynku procesorów ARM z procesorami z serii Tegra. Nie odniosły one wielkiego sukcesu, ale nadal są używane w niektórych urządzeniach, a Nvidia koncentruje swoje wysiłki na systemach wbudowanych, a konkretnie na motoryzacji. Przy tym ustawieniu zintegrowany procesor graficzny ma swoją własną wagę, ponieważ może być używany do wykrywania kolizji, nawigacji w pomieszczeniach, mapowania 3D i tak dalej. Pamiętasz Projekt Tango Google? Część sprzętu była oparta na chipach Tegra, co pozwalało na wykrywanie głębi i kilka innych fajnych sztuczek. Po przeciwnej stronie, linia produktów Nvidii Tesla obejmuje rynek zaawansowanych procesorów graficznych i zapewnia dominację Nvidii w tej niszy na wiele lat.
Konkluzja? Na papierze obliczenia na GPU to świetna koncepcja z ogromnym potencjałem, ale obecny stan technologii pozostawia wiele do życzenia. HSA powinna przejść długą drogę w kierunku rozwiązania większości z tych problemów. Co więcej, nie jest on wspierany przez wszystkich graczy w branży, co z pewnością spowalnia jego adopcję.
Może to zająć kilka lat, ale jestem przekonany, że układy GPU w końcu wzrosną, aby zająć należne im miejsce na ogólnej arenie obliczeniowej, nawet w układach mobilnych. Technologia jest już prawie gotowa, a ekonomia zajmie się resztą. W jaki sposób? Oto prosty przykład. Obecna generacja procesorów Atom firmy Intel zawiera od 12 do 16 jednostek wykonawczych GPU (EU), podczas gdy ich poprzednicy mieli tylko cztery jednostki EU, oparte na starszej architekturze. W miarę jak zintegrowane procesory graficzne stają się coraz większe i mocniejsze, a powierzchnia ich matrycy rośnie, producenci chipów nie będą mieli innego wyboru, jak tylko wykorzystać je do poprawy ogólnej wydajności i wydajności. Niezastosowanie się do tego byłoby niekorzystne dla marż i akcjonariuszy.
Nie martw się, nadal będziesz mógł cieszyć się okazjonalną grą na tej nowej generacji GPU. Jednak nawet wtedy, gdy nie grasz, GPU robi wiele rzeczy w tle, odciążając procesor, aby zwiększyć wydajność i efektywność.
Myślę, że wszyscy możemy się zgodzić, że byłaby to wielka sprawa, zwłaszcza na niedrogich urządzeniach mobilnych.