150 likes | 254 Views
GPU architektúra. Compute Unified Device Architecture Készítette: Páros Zoltán. GPU fejlődése. A játékipar fejlődésének köszönhetően a GPU óriási párhuzamos számítási kapacitással bír Ezt a kapacitást, már nem csak megjelenítésre, hanem általános célú számításokra is használják. CPU vs. GPU.
E N D
GPU architektúra ComputeUnifiedDeviceArchitecture Készítette: Páros Zoltán
GPU fejlődése • A játékipar fejlődésének köszönhetően a GPU óriási párhuzamos számítási kapacitással bír • Ezt a kapacitást, már nem csak megjelenítésre, hanem általános célú számításokra is használják.
CPU vs. GPU A memória elérés a CPU-nál mondhatni a leglassabb művelet. A Cache elérése gyors, viszont mérete csak pár MB, és nagyon drága. GPU-nál a gyors memória-elérés megvalósítása jóval olcsóbb, és gazdaságosabb. A GPU SIMT (SingleInstuctionMultipleThread) architektúrájának köszönhetően egyetlen utasítást többszálontud végrehajtani. Ez azt jelenti, hogy ugyanazt a az utasítást több 10.000 szálon tudja végrehajtani.
CPU vs. GPU • GPU számítási kapacitásának fejlődése a CPU-hoz mérten 2009-2010
GPU modell • A modern GPU-k megértéséhez először a klasszikus grafikus futószalagot kell megismerni. A folyamat a geometriai csomópontok – a vertexek – felépítésével kezdődik, melyeket a térben eltolni – transzformálni – és világítani kell. Ezután következik a csomópontok háromszögekbe rendezése. Az utóbbi időben a harmadik lépés, a pixelszintű számolás kapta a legnagyobb hangsúlyt. Az egyes képpontok színének meghatározása folyik itt bonyolult matematikai számítások – árnyalási egyenletek – és textúrázási eljárások segítségével. A negyedik lépést az NVIDIA ROP (rasteroperation) vagyis raszteres műveleti résznek, a Microsoft pedig Input Mergernek nevezi. Itt összegződnek a pixel shaderek eredményei és itt kerül a képre az anti-aliasing (élsimítás). A ötödik elem a memória, melyben a végleges kép fölépül, és a textúrákat és egyéb adatokat tárolja. Az évek során ez az elvi felépítés semmit sem változott, csak az egyes lépcsők fejlődtek. A DirectX 7-ben a vertexesrész kikerült a CPU-ból, és a grafikus processzor T&L (Transform & Lighting) egysége foglalkozott vele. A DirectX 8-ban a pixel egységek programozhatósága debütált, ami a DirectX 9 folyamán fokozatosan finomodott. A ROP részen fejlődtek a Z-buffer technikák és az élsimítás, a memória pedig egyre gyorsabb és gyorsabb lett.
GPU programozás kialakulása 2007-ben jelennek meg az első, felhasználó számára is programozható GPU-k ComputeCapability /számítási képesség/ alapján rangsorolják a videókártyákat: CC 1.0: GPU általános számítási célú felhasználása, nVidia CUDA toolkit megjelenése, Directx 10 CC 1.1: További tökéletesítések, atomic funkció CC 1.3: atomic funkciók tökéletesítése, dupla-pontosságú egységek, néhány Tesla architektúrát átdolgoztak CC 1.2: CC 1.3 előbb jelent meg, mint a CC 1.2 ; A kettő között a különbség, a dupla-pontosságú egységek hiánya, 1.2-nél már vannak. CC 2.0: megegyezik a Fermi architektúrával. Nagy programozási változások, könnyebb Kezelhetőség. Új szál szinkronizáció funkciók
CPU és GPU kapcsolata • 3 lépésben tudunk bármilyen műveletet végrehajtatni a GPU-val:- adatotokat át kell másolnunk a GPU-raahostról (CPU)- a GPU-ra írt programmal az adatokon végrehajtjuk a műveleteket- az adatokat vissza kell másolnunk a GPU-rólahostra • A GPU PCI-Express 16x nagy sávszélű busszal kapcsolódik a hosthoz. Ez a busz legfőképpen a DMA-n keresztüli adatforgalmat biztosítja a CPU és GPU memóriák között. Egyik process unit sem képes megcímezni a másik memóriáját. /DMA végzi/ • Memória elérés:- Pagedmemory- Page-lockedmemory- Mappedmemory- Writecombining
Tesla architektúra • Tesla a termék neve, amelyet GPGPU (általános célú GPU) célra fejlesztett és dobott piacra az nVIDIA. Ez az igazi első CUDA-kompatibilis architektúra. • A nagy fejlődés az architektúrában: ThreadProcessingClusters (TPC) • Mindegyik TPC közvetlen eléri a DRAM vezérlőt (crossbar hálózat). A memória fel van osztva 8 vezérlőre (Core). A memória a GPU chipjén kívül található. Mindegyik TPC-nek van 2-3 stream processzora. (Kép következő dián)
Tesla architektúra • Pár szó az adatforgalomról: • CPU-MEMÓRIA: 25GB/s • GPU-MEMÓRIÁJA: 77GB/s • CPU-GPU: 8GB/s DMA-n keresztül • Tehát a memória elérés a GPU-nál 3-szor gyorsabb mint a CPU-nál, azóta ez többszörösére nőtt. • Ezen kívül Core-oknak van megosztott memóriájuk, mindegyik rendelkezik saját Cach-el.
Fermi architektúra • Legelső olyan GPU architektúra, melyet kifejezetten a szuperszámítások elvégzésére terveztek. • 512 vagy annál több CUDA Core a legújabb modelleknél
Fermi architektúra • 768 KB teljesen koherens L2 Cache minden egyes SM-hoz. Ez az új Cache úgy viselkedik, mint a CPU L2 Cache. Eléggé jelentős változás történik ezel.Nem a grafikai számításokat gyorsítja fel, hanem a DRAM hozzáférést. • A Teslánál említett TPC eltűnt • CC 2.x • 2 másoló motorja van
Fermi architektúra • Az ütemezők számán nem változtattak, maradt kettő (SM-enként), de ezekhez egy helyett immár kettő-kettő dispatch egység (menetirányító) kapcsolódik, tehát így egy helyett egyszerre két utasítást képesek feldolgozni, azaz lényegében szuperskalár működésről beszélhetünk. A Fermi TLP alapú működése (ThreadLevelParallelism), vagyis a szálszintű párhuzamos feldolgozás a GF104-ben kiegészült az ILP-vel (InstructionLevelParallelism), azaz az utasításszintű párhuzamos feldolgozással.
Software oldal: • CUDA egy kiterjesztett változata a C nyelv GPU programozási ágának • A programozási modell legfőképpen az nVIDIA grafikus kártyák architektúrájával párosult. • Példa 102 szál szétosztására:<<<1, 102>>>, <<<2, 51>>>, <<<3, 34>>>,<<<6, 17>>> tehát: <<<x, ⌈size/x⌉>>>Az ajánlott szálszám az, ha osztható 32-vel maradék nélkül. Warp végett. Sokkal gyorsabban kezeli a GPU Thread - SzálWarp – 32 szálból álló köteg Block – ezek tartalmazzák a szálakat : CC1.x – 512, CC2.x – 1024, CC3.x - ? /future/ Grid – rács, mely a blokkokat tartalmazza : architektúra-függő a mérete