Általános célú számítás a grafikus feldolgozó egységen
Általános célú számítás a grafikus feldolgozó egységen (röviden GPGPU , angolul a grafikai feldolgozó egység ( ek) általános célú számításához ) egy grafikus processzor használatára utal az eredeti hatókörén kívül eső számításokhoz. Ez lehet például műszaki vagy gazdasági szimulációkkal kapcsolatos számítás. A párhuzamos algoritmusok , óriási növekedés sebessége lehet elérni , mint a központi processzor .
áttekintés
A GPGPU a grafikus processzorok árnyékolóiból került elő . Erőssége az egységes feladatok egyidejű végrehajtásában rejlik, például a pixelek színezésében vagy a nagy mátrixok szorzásában . Mivel a modern processzorok sebességének növekedése jelenleg már (elsősorban) nem érhető el az órajel növelésével, a párhuzamosítás fontos tényező a modern számítógépek nagyobb számítási teljesítményének elérésében. A GPU használatának előnye a CPU-val szemben a nagyobb számítási teljesítményben és a nagyobb memória sávszélességben rejlik. A sebességet elsősorban a grafikus processzor számtani műveleteinek nagyfokú párhuzamossága éri el.
modell | Elméleti számítási teljesítmény | Memória busz adatsebessége ( GByte / s ) |
Tárolási típus | Művészet | |
---|---|---|---|---|---|
egyszerűvel | a dupla | ||||
Pontosság ( GFlops ) | |||||
AMD Radeon Pro Duo | 16,384 | 1,024 | 1,024 | HBM | GPU |
AMD Radeon R9 Fury X | 8,602 | 538 | 512 | ||
Nvidia Geforce GTX Titan X | 6,144 | 192 | 336 | GDDR5 | |
AMD FirePro W9100 | 5,350 | 2,675 | 320 | ||
Nvidia Tesla K20X | 3,950 | 1.310 | 250 | ||
AMD Radeon HD 7970 | 3,789 | 947 | 264 | ||
Intel Xeon Phi 7120 | 2,420 | 1,210 | 352 | Társprocesszor | |
PlayStation 4 SoC ( AMD ) | 1,860 | - | 167 | APU | |
Nvidia Geforce GTX 580 | 1,581 | 198 | 192.4 | GPU | |
Intel Xeon E7-8890 v3 | 1,440 | 720 | 102,4 (?) | DDR4 | processzor |
AMD A10-7850k | 856 | - | 34 | DDR3 | APU |
Intel Core i7-3930K | 307.2 | 153,6 | 51.2 | processzor | |
Intel Pentium 4 SSE3-mal, 3,6 GHz | 14.4 | 7.2 | 6.4 | DDR2 |
A töredék és a csúcs árnyékolók egyszerre futhatnak. További előny az alacsony ár a hasonlóan gyors más megoldásokhoz képest, valamint az a tény, hogy a mai napon szinte minden számítógépen megtalálhatók a megfelelő grafikus kártyák.
történelem
Kezdetben az árnyékolók csak olyan speciális funkciókkal voltak társítva, amelyek szorosan kapcsolódtak a grafikus számításokhoz. Az egyes pixelek kiszámításának sebességének felgyorsítása érdekében át kellett lépni az egyes pixelek kiszámításának egyidejű végrehajtására több hasonló aritmetikai egység felhasználásával. Később felmerült az a gondolat, hogy az árnyékolók nagyon korlátozott képességeit kibővítsék annak érdekében, hogy tömegesen párhuzamos számítási egységekké alakítsák őket bármilyen feladathoz: Felmerült az első - többé-kevésbé - szabadon programozható árnyékoló. Az árnyékolók szabadon programozható megtervezése mind a mai napig folytatódik, és a chiptervezők minden új generációs technológiával előreviszik. A modern GPU-k néha több mint 1000 ilyen programozható shader egységet tartalmaznak, ezért egyszerre több mint 1000 számítási műveletet is képesek végrehajtani.
kritika
Az OpenCL által egységes interfész létezik a GPGPU számítások végrehajtására. Hátrány a hagyományos CPU-khoz képest az a hatalmas párhuzamosság, amellyel a programokat végre kell hajtani ezen előnyök kihasználása érdekében. A GPU-k funkcionalitása is korlátozott. Különleges grafikai modellek ( Nvidia Tesla , AMD FireStream ) léteznek a tudományos szektor számára . Ezeknek a grafikus kártyáknak a memóriájában hibajavítási eljárások vannak, és pontosságuk a lebegőpontos számok kiszámításakor nagyobb, ami a költségekben is megmutatkozik.
programozás
Az OpenCL , a CUDA és 2012 óta a C ++ AMP elsősorban a GPGPU-kompatibilis programok fejlesztésére használható . Az OpenCL egy nyílt szabvány, amely számos platformon elérhető, míg a CUDA az Nvidia saját keretrendszere , és csak ennek a gyártónak a GPU-ján futtatható. Az AMP egyike a Microsoft által kezdeményezett C ++ -Spracherweiterung-nak egy kis sablonnal együtt - amely könyvtár nyitott abban az értelemben, hogy sem a Microsoft termékei, sem az Accelerator egyes hardverei korlátozottak vagy bizonyos hardvergyártók (nem csak GPGPU-kat használhatnak, hanem a CPU-k és a jövőben további párhuzamosítási lehetőségek, például a felhőalapú számítások ). A Microsoft AMP-megvalósításában a GPU várhatóan támogatja a DirectX 11-es verzióját, mert csak ezzel a verzióval fordítottak külön figyelmet a GPU-k GPGPU-ként való használatára. Ha egy AMP-t használó program nem talál elég naprakész GPU-t, akkor az AMP segítségével programozott algoritmus automatikusan végrehajtásra kerül a CPU-n, annak párhuzamosítási opcióinak felhasználásával ( többszálas szál több processzormagon , SIMD utasítások). Az AMP-nek tehát egy teljes absztrakciós réteget kell létrehoznia egy algoritmus és a végrehajtó számítógép hardvereszközei között. Ezenkívül néhány új C ++ nyelvi konstrukcióra és néhány új könyvtári osztályra való korlátozásnak csökkentenie kell a korábbi akadályokat és erőfeszítéseket a párhuzamos algoritmusok fejlesztése terén. A DirectX 11-et már natívan hardveresen támogatja az összes elterjedt GPU-sorozat (a DirectX 11-es bevezetésnél újabb) (beleértve az alapvető teljesítményű GPU-kat, például az Intel chipsetbe integrált GPU-kat), de a DirectX 11-et csak a Windows 7 operációs rendszerrel vezették be, és a Windows Vista számára szállították csak azért, hogy a régebbi Windows operációs rendszerek ne legyenek használhatók az AMP-vel. Az, hogy a C ++ AMP-t valaha is adaptálják- e más platformok, vagy a C ++ fejlesztői környezetek a Windows világon kívül, még mindig teljesen nyitott.
Újabb megközelítés az OpenACC , amelyet az OpenMP-hez hasonlóan fordítópragmák vezérelnek. Közönséges forráskód, pl. B. a C ++ nyelven, automatikusan párhuzamosan állítva, hogy bizonyos fordítópragmák, például a "#pragma acc parallel" kerülnek a sorokhoz hurkok számára kialakított sorok elé. A hordozási erőfeszítések viszonylag kicsi. Az automatikus párhuzamosítás azonban nem mindig vezet optimális megoldásokhoz. Az OpenACC ezért soha nem pótolhatja teljesen az explicit párhuzamos programozást, mint az OpenCL-ben. Ennek ellenére sok esetben érdemes ilyen egyszerű módon nagy gyorsulási tényezőket elérni a GPGPU-n. Az OpenACC-t olyan kereskedelmi fordítók támogatják, mint a PGI, és az ingyenes fordítók, például a GNU Compiler Collection .
A programok GPU-n történő futtatásához szükség van egy gazdagépre, amely vezérli az információáramlást. Általában a C- szerű nyelven megfogalmazott GPGPU-kódot futás közben állítják össze a gazda program utasítására, és további feldolgozás céljából elküldik a grafikus processzornak, amely ezután visszaadja a kiszámított adatokat a gazdagépnek.
Lásd még
- videókártya
- Cella (processzor)
- Stream processzor
- Vektor processzor
- Direct Rendering Manager - A Render csomópontok közvetlen hozzáférést tesznek lehetővé
- Heterogén rendszer architektúra
irodalom
- Matt Pharr: GPU Gems 2 . Addison-Wesley Publishing Company, 2005, ISBN 0-321-33559-7 , IV. Rész - GPU-k általános célú kiszámítása: A Primer.
- David B. Kirk: Masszívan párhuzamos processzorok programozása: gyakorlati megközelítés [Puhakötés] . Morgan Kaufmann, 2010, ISBN 978-0-12-381472-2 .
web Linkek
- GPU Gems 2
- GPGPU.org
- Az Nvidia az Apple GP-k első GPGPU-jain dolgozik, AppleInsider (2008. január 24.)
- GPU4Vision GPGPU kiadványok, videók és szoftverek
- GPGPU Computing - áttekintés kezdőknek és haladóknak (planet3dnow.de 2009. május 26.)
- Tobias Preis, Peter Virnau, Wolfgang Paul, Johannes J. Schneider: A GPU gyorsította a 2D és 3D Ising modell Monte Carlo szimulációját. In: Journal of Computational Physics. 228., 2009, 4468-4477. Oldal, doi : 10.1016 / j.jcp.2009.03.018 .