A HSAIL beállítása: Az AMD elmagyarázza a CPU / GPU együttműködés jövőjét

AMD HSAIL

Az AMD heterogén rendszerarchitektúra (HSA) kezdeményezése folyamatos érdeklődéssel kíséri azóta, hogy a vállalat 2007-ben kezdett el először beszélni a „Fusion” processzorokról. Ma, a nemzetközi Hot Chips számítástechnikai konferencián a vállalat előadást tartott, amely részleteket ismertetett A HSA Alapítvány megtervezte a technológiát működtető nyelvet, HSAIL (HSA Intermediate Language) néven.



A legjobb, ha a probléma alapvető áttekintésével kezdjük. Annak ellenére, hogy népszerű az OpenCL és az Nvidia dollár százmilliókat fektetett be közvetlenül a Tesla termékeibe és a CUDA szoftverébe, a munka CPU-ról GPU-ra való áthelyezése, végrehajtása és újbóli visszahelyezése továbbra is óriási fejfájás. A probléma legegyszerűbb magyarázata a következő: A történelem nagy részében a számítástechnika tendenciája az volt, hogy a feladatokat a Központi Feldolgozó egység, amely ezt követően elvégzi őket. A játék gyakorlatilag az egyetlen munkaterhelés, amely ellenállt ennek a tendenciának (a GPU on-die mozgatása nem ugyanaz, mint egy játék programozása a CPU-ra futtatásra).



SoC tervezés



Több évtizedes munkaterhelés a CPU felé haladva egy olyan rendszer megtervezése, amely újra visszahelyezi őket, és egyenrangú partnerré teszi a GPU-t, összetett vállalkozás. A a HSA kompatibilitás hardver oldala azzal a problémával foglalkozik, hogy megad egy olyan képességet, amely a kombinált CPU-GPU rendszernek rendelkeznie kell a heterogén számítás kihasználása érdekében. A CPU-nak és a GPU-nak közös laptábla-bejegyzésekkel kell rendelkeznie, lehetővé kell tenniük, hogy a CPU és a GPU is hibát okozzon (és ugyanazt a címteret használja), a rendszernek képesnek kell lennie a parancsok várakoztatására a végrehajtáshoz a GPU-n az operációs rendszer igénye nélkül. kernel a feladat végrehajtásához, a GPU-nak képesnek kell lennie a feladatok független váltására, és mindkét eszköznek képesnek kell lennie ugyanazon koherens memóriablokk címzésére.

A HSAIL-t az egyenlet szoftveres oldalának kezelésére tervezték.



HSAIL: Ez nem API

Ez elég nagy zűrzavar, amellyel korán szeretnék foglalkozni. A HSAIL egy futás közben létrehozott köztes nyelv, amelyet a hardvergyártó ISA-hoz társítottak. Ez a titkos szósz, amely lehetővé teszi, hogy több gyártó, például az Imagination, az ARM, az AMD és a Qualcomm is profitálhasson a technológiából, annak ellenére, hogy mindegyiküknek nagyon különböző GPU-hardvere van. Az ötlet az, hogy a kívánt nyelven írjon kódot (a C ++, az AMP, az OpenCL, a Java vagy a Python mindegyike fel van tüntetve), majd ezt a kódot összeállítja a HSAIL megcélzásához, és azon futtatja, amelyen a GPU integrálva van a rendszerbe.



HSA verem

Az AMD szerint a HSAIL előnye, hogy nem lesz szükség a programozókra, hogy teljesen új nyelveket tanuljanak. Ha ismeri az OpenCL-t, használja az OpenCL-t. Még mindig előfordulhat némi átfedés a HSAIL képességek és az OpenCL 2.0 által támogatottak között, de a HSAIL kifejezetten a GPU-k programozásának néhány kritikus módon történő egyszerűsítésére szolgál. Megnyitja a nyelvek gyorsításának lehetőségét is mint a Java a GPU-n , bár ez ismét megköveteli, hogy maga a Java is képes legyen jól leképezni egy grafikus kártyára. Ennek a hidrának számos feje van.



A fentiek szerint a központi gondolat az, hogy a HSAIL-kompatibilis hardverblokknak nem kell x86-kompatibilisnek lennie, vagy GCN-alapúnak kell lennie, vagy bármilyen más speciális architektúrához kell kapcsolódnia. Ez azt jelenti, hogy az Imagination ugyanúgy képes futtatni a kódot, mint a Qualcomm, legalábbis azzal a feltétellel, hogy minden vállalat saját illesztőprogramot ír. Ennek ellenére a teher nem erre a programozóra hárul, és ez nagy előny.

Mi a helyzet a játékkal?

Ez egy meglehetősen összetett kérdés. Amit „játéknak” hívunk, pontosan hihetetlenül összetett adatáramlás a CPU, a GPU, a fő memória és a csatolt tárhely között. A processzoroknak és a GPU-knak mindig is kommunikálniuk kellett, de a történelem nagy részében ez a kommunikáció aszinkron és gyors volt, csak egy irányban. Történelmileg a CPU-GPU kommunikáció meglehetősen félresikerült, amint azt az alábbi ábra is mutatja.



AMD Llano sávszélesség



Ez a diagram mutatja a Llano CPU és GPU sávszélességét, amikor különféle típusú memóriákat használ. Félrefordult, mert tükrözi az egyensúlyhiányt a tipikus CPU és GPU sávszélességek között a fő memória különböző részein. Ezek az oldalirányú kapcsolatok felerősödhetnek, és csökkenthető a késés - ezek bemutatásának lényege annak szemléltetése, hogy ez nagyjából szemlélteti azt az állapotot, amellyel a fejlesztők évtizedek óta szoktak dolgozni. A játékokat történelmileg úgy tervezték, hogy egy adott konfigurációban jól működjenek. A HSA képes ezen változtatni, de a szoftverfejlesztés mindig lemarad a hardverről.

CPU - GPU együttműködés

Ez nem azt jelenti, hogy a HSA nem lesz fontos, vagy hogy nem növelheti a játék teljesítményét. Az AMD egyik kiemelt területe, hogy történelmileg, míg a GPU-kat a játékfizika felgyorsítására és fejlesztésére használták, a feldolgozás nagy része szigorúan kozmetikai jellegű volt. Az Nvidia's PhysX lehetővé teszi további szemcsemegék csodálatos bemutatását, de ez a szemcukor nem befolyásolta a tényleges játékot. Az AMD egyik előadásában kiemeli a játékon belüli fizikát van számítási probléma - és a HSA elképzelhető módon sokkal erősebb tapasztalatok létrehozása érdekében alkalmazható.

A HSA-nak előnyei lesznek a játékban, de az adatok arra utalnak, hogy ezek az előnyök időbe telhet a megjelenése - a fizikai motorokat úgy kell megtervezni, hogy oda-vissza továbbítsák az adatokat, a HSAIL-nak szállítania kell, és az új programozási modellre való áttérés időbe telik. Egyelőre a HSAIL használatára helyezzük a hangsúlyt a számítási feladatoknál, ezért a HSA támogatását bejelentő vállalatok többsége a nagy teljesítményű számítástechnikára összpontosít.

A GPU-k programozhatóbbá és használhatóbbá tétele kihat a mobilra és olyan bonyolult feladatokra, mint az arcfelismerés és a természetes nyelv feldolgozása. Az AMD célja a HSAIL-lel és a HSA-val egy olyan közös keretrendszer biztosítása, amely felgyorsíthatja számos feladatot, de a játékhasználathoz vezető út összetettebb lehet, mint más területeken, ahol a CPU-k és a GPU-k gyakorlatilag nem rendelkeznek adatmegosztással és a cél az, hogy hogy elsősorban a GPU-t lehessen kihasználni.