Á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

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