Hirdetés

Részletesebben ecsetelte a Volta legnagyobb fejlesztéseit az NVIDIA

A vállalat Hot Chips előadásán a Tensor magoké és az L1 gyorsítótáré volt a főszerep.

Az NVIDIA még az év első felében leplezte le a GV100 kódnevű lapkát, amely a Volta architektúrára alapozott. A gyorsítót az alábbi cikkben körbejártuk, így a nyers technikai adatok újbóli leírásáról eltekintünk, tehát csak az újdonságokra fókuszálunk, amelyből a Hot Chips előadáson volt bőven.

Persze itt az újdonságokat érdemes úgy érteni, hogy a főbb specifikációk eddig is ismertek voltak, az NVIDIA csupán változások indikátorait próbálta meghatározni. Az alábbi kép összegzi a Tesla V100 előrelépését a Tesla P100-hoz képest, és már elsőre szemet szúrhat, hogy a legtöbb tényező szempontjából igazán jelentős változás a gépi tanulást célzó képességek, illetve L1 gyorsítótár tekintetében történt.

A gépi tanulást nem kell különösebben magyarázni, mivel Tensor magok a GP100-ban nem voltak, tehát nem a GV100 mondhatni erre van kihegyezve, a beépített dedikált feldolgozókkal pedig nem nehéz 6-12-szeres javulást elérni. A Tensor operáció szempontjából a Volta az alapértelmezett dizájn tekintetében 16 bites lebegőpontos bemenetekkel dolgozik és 32 bites lebegőpontos kimenetet eredményez. Ez részben hasonlít a Knights Mill VNNI-16 kiegészítéséhez, azzal a különbséggel persze, hogy az Intel integer operációkkal dolgozik.

Az NVIDIA a saját méréseire hivatkozva elmondta, hogy a Tesla V100 a Tesla P100-hoz viszonyítva 9,3-szer lehet gyorsabb a cuBLAS-t használva, kevert pontosság esetén. Azt azért hozzá kell tenni, hogy a Volta architektúrán már a CUDA 9 futott, míg a Pascalon csak a CUDA 8, de az NVIDIA itt direkt a szoftver és a hardver kombinált előrelépését akarta bemutatni.

Az L1 gyorsítótárra rátérve a Volta egyik legnagyobb változása részletezhető. A Pascal dizájnjában az L1 gyorsítótár és a helyi adatmegosztás különálló volt. Ezzel önmagában nincs gond, de az NVIDIA architektúrái tipikusan regiszterszegények, nincs bennük utasítás-előbetöltés, illetve az L1 gyorsítótár elérése is rendkívül lassú a helyi adatmegosztáshoz viszonyítva, ráadásul a tárkapacitás szempontjából sincs eleresztve.

A fentiekkel az NVIDIA a GPU-knál használt L1 gyorsítótárak összes gyermekbetegségét bevállalta, ami addig nem baj, amíg van elég regiszter és helyi adatmegosztás a megfelelő számú warpot futtatni, de amint valamelyik elfogy, úgy csökken a futtatható warpok száma, és onnantól kezdve a multiprocesszorok egyre hosszabb ideig várnak majd az adatra. Maga a probléma egyébként távolról sem egyedi, az Intel és az AMD architektúrái is érintettek, csak a konkurensek már kezelik a helyzetet. Az Intel például rengeteg regisztert és helyi adatmegosztást épít a fejlesztéseibe, így nagyon nehéz elérni, hogy ezekből kifogyjon a multiprocesszor. Az AMD esetében ez már sűrűbben fordul elő, viszont a Polaris és a Vega dizájnok az utasítás-előbetöltéssel lerövidítik a memóriaeléréshez szükséges időt, így kevésbé jelent problémát, ha a futtatható wavefrontok száma csökken. A Vega esetében ugyanakkor az igénybe vehető helyi adatmegosztás kapacitása is nagyobb, ami nyilván sokat segít.

Hogy mennyire sok lehetőség van egy GPU-k tekintetében tipikus probléma megoldására, azt az NVIDIA is mutatja, ugyanis a cég egy harmadik irányt választott. A Volta architektúrában már nincs különálló L1 gyorsítótár és helyi adatmegosztásra szánt memória, hanem ez össze van vonva egy 128 kB-os multiprocesszoronkénti gyorsítótár formájában. Ez azt is jelzi, hogy a fenti táblázatban látható előrelépés egy kicsit fals adatra épül, ugyanis az NVIDIA a Pascal esetében nem számolta a helyi adatmegosztás kapacitását, de ebbe most ne kössünk bele, itt tényleg a strukturális változáson van a hangsúly. Az L1 gyorsítótár ugyanis ilyen formában legalább négyszer nagyobb sávszélességgel érhető el, és ezzel együtt a különálló textúra gyorsítótár is megszűnt. Utóbbinak nincs különösebb jelentősége, mivel csak pár kilobájtnyi kapacitásra van szükség, az pedig igény esetén lecsippenthető a 128 kB-os L1 gyorsítótárból.

Maga az összevont L1 gyorsítótár tetszés szerint particionálható. A helyi adatmegosztás kapacitása maximum 96 kB lehet, és a maradék terület maradhat a hagyományos L1 gyorsítótár, ami ezúttal a textúraadatokat is tárolja. Ez a változás két előnyt kínál. Elsődlegesen kevésbé kell a programokat kihegyezni a helyi adatmegosztásra fenntartott adatok manuális menedzselésére, amire egyébként az NVIDIA architektúrája amúgy is nagyon érzékeny. Ez az optimalizálás ugyan az optimális teljesítmény eléréséhez továbbra is elengedhetetlen, viszont az NVIDIA szerint a manuális menedzsment kihagyásával a Volta multiprocesszora csak 7%-ot veszít a teljesítményéből, szemben a Pascal-ban található multiprocesszor 30%-os deficitjével. Ami sokakat érdekelhet itt, az a játék, és ebből a szempontból is előnyös az összevont gyorsítótár, ugyanis a hardverhez tervezett fordítók egy kicsit szabadabban paraméterezhetők. Többek között megoldható az is, hogy a shadert szándékosan limitált, de még relatíve sok warp futtatását lehetővé tevő erőforrás-allokációval fordítsák le, és az L1 gyorsítótár elég gyorsan érhető el ahhoz, hogy erre építve a regiszterek felszabadíthatók legyenek.

Igazából az alapprobléma tekintetében az NVIDIA, az AMD és az Intel megoldása is eredményez hátrányokat, amellett persze, hogy a GPU-k tipikus problémája, vagyis a kihasználtságlimit kezelhető velük. Az Intelnél például a sok regiszter és a sok helyi adatmegosztásra szánt memória elég sok tranzisztort igényel, míg az AMD-nél az utasítás-előbetöltés viszonylag bonyolult hardvernek tekinthető, így ez sem olcsó a tranzisztorszám tekintetében. Az NVIDIA elgondolása az egységesített és gyors L1 gyorsítótárral aránylag tranzisztorkímélő, viszont az Intel és az AMD megoldásával ellentétben nem működik automatikusan, vagyis rendszerprogramozók direkt figyelmét igényli.

Az NVIDIA egyébként nem javasolja, hogy a programokat a jövőben másképp írják. A Volta újítása csak egy szimpla könnyítés, így a cég továbbra is a helyi adatmegosztásra fenntartott adatok manuális menedzselésére buzdítja a partnereit.

Az NVLink is szóba került, és a fentebb linkelt cikkünkben már leírtuk, hogy a több interfész több topológia kiépítésére ad lehetőséget. Ezt az NVIDIA a fenti képen szemléltette, továbbá a cég kihangsúlyozta, hogy ha a Tesla V100-as gyorsítók IBM Power9 architektúrára épülő, NVLINK interfészt is támogató processzorok mellé kerülnek, akkor használható a beléjük épített ATS (Address Translation Services) támogatás, ami lehetővé teszi a GV100-as GPU-nak, hogy közvetlenül elérhesse a CPU-k laptábláit.

Azóta történt

Előzmények

Hirdetés