Obecný výpočet na jednotce grafického zpracování
General Purpose Computation on Graphics Processing Unit (zkráceně GPGPU , z angličtiny pro obecné účely výpočtu na grafických procesorových jednotkách ) odkazuje na použití grafického procesoru pro výpočty nad jeho původní rozsah. Může se jednat například o výpočty pro technické nebo ekonomické simulace. S paralelními algoritmy lze dosáhnout enormního zvýšení rychlosti ve srovnání s hlavním procesorem .
přehled
GPGPU se vynořilo ze shaderů grafických procesorů. Jeho síla spočívá ve provádění jednotných úkolů současně, jako je barvení pixelů nebo násobení velkých matic . Vzhledem k tomu, že zvýšení rychlosti moderních procesorů již v současné době nelze (primárně) dosáhnout zvýšením taktovací frekvence, je paralelizace důležitým faktorem při dosahování vyššího výpočetního výkonu v moderních počítačích. Výhoda použití GPU oproti CPU spočívá ve vyšším výpočetním výkonu a vyšší šířce pásma paměti. Rychlost se dosahuje hlavně vysokým stupněm paralelismu aritmetických operací grafického procesoru.
| Modelka | Teoretický výpočetní výkon | Rychlost datové sběrnice paměti ( GByte / s ) |
Typ úložiště | Umění | |
|---|---|---|---|---|---|
| s jednoduchým | na dvojnásobek | ||||
| Přesnost ( GFlops ) | |||||
| AMD Radeon Pro Duo | 16,384 | 1024 | 1024 | 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 | 2675 | 320 | ||
| Nvidia Tesla K20X | 3950 | 1.310 | 250 | ||
| AMD Radeon HD 7970 | 3,789 | 947 | 264 | ||
| Intel Xeon Phi 7120 | 2,420 | 1210 | 352 | Koprocesor | |
| PlayStation 4 SoC ( AMD ) | 1860 | - | 167 | APU | |
| Nvidia Geforce GTX 580 | 1581 | 198 | 192.4 | GPU | |
| Intel Xeon E7-8890 v3 | 1440 | 720 | 102,4 (?) | DDR4 | procesor |
| AMD A10-7850k | 856 | - | 34 | DDR3 | APU |
| Intel Core i7-3930K | 307.2 | 153.6 | 51.2 | procesor | |
| Intel Pentium 4 s SSE3, 3,6 GHz | 14.4 | 7.2 | 6.4 | DDR2 | |
Shadery fragmentů a vrcholů mohou běžet současně. Další výhodou je nízká cena ve srovnání s podobně rychlými jinými řešeními a také skutečnost, že vhodné grafické karty dnes najdete téměř na každém PC.
Dějiny
Na začátku byly shadery spojeny pouze se speciálními funkcemi, které byly úzce spojeny s grafickými výpočty. Aby se urychlila rychlost výpočtu jednotlivých pixelů, bylo provedeno provádění výpočtu jednotlivých pixelů současně pomocí několika podobných aritmetických jednotek. Později vznikla myšlenka rozšířit velmi omezené možnosti shaderů, aby se z nich mohly stát masivně paralelní výpočetní jednotky pro jakýkoli úkol: Objevily se první - víceméně volně programovatelné shadery. Trend volně programovatelného navrhování shaderů pokračuje dodnes a s každou novou generací technologie ho posouvají designéři čipů. Moderní GPU někdy obsahují více než 1000 těchto programovatelných shaderových jednotek, a proto mohou současně provádět více než 1000 výpočetních operací.
kritika
Podle OpenCL existuje jednotné rozhraní pro implementaci výpočtů GPGPU. Nevýhodou ve srovnání s konvenčními CPU je masivní paralelismus, s nímž musí být programy prováděny, aby bylo možné tyto výhody využít. GPU jsou také omezené ve své funkčnosti. Pro vědecký sektor existují speciální grafické modely ( Nvidia Tesla , AMD FireStream ). Paměť těchto grafických karet má postupy pro opravu chyb a jejich přesnost při výpočtu čísel s plovoucí desetinnou čárkou je větší, což se také odráží v nákladech.
programování
OpenCL , CUDA a od roku 2012 C ++ AMP jsou k dispozici hlavně pro vývoj programů kompatibilních s GPGPU . OpenCL je otevřený standard, který je k dispozici na mnoha platformách, zatímco CUDA je proprietární rámec od Nvidia a může běžet pouze na GPU od tohoto výrobce. AMP je jedním z Microsoftem iniciovaných C ++ -Spracherweiterung ve spojení s malou šablonou - knihovnou, která je otevřená v tom smyslu, že ani produkty společnosti Microsoft, ani určitý hardware Accelerator nejsou omezené typy nebo někteří výrobci hardwaru (mohou používat nejen GPGPU, ale také CPU a v budoucnu další možnosti paralelizace, jako je cloud computing ). V implementaci AMP společnosti Microsoft se očekává , že GPU bude podporovat DirectX verze 11, protože pouze s touto verzí byla věnována zvláštní pozornost použití GPU jako GPGPU. Pokud program využívající AMP nenajde dostatečně aktuální GPU, algoritmus naprogramovaný pomocí AMP se automaticky provede na CPU pomocí jeho možností paralelizace ( multithreading na několika jádrech procesoru , instrukce SIMD ). AMP by tedy měl vytvořit úplnou abstrakční vrstvu mezi algoritmem a hardwarovým vybavením provádějícího počítače. Kromě toho omezení na několik nových konstrukcí jazyka C ++ a několik nových tříd knihoven by mělo omezit předchozí překážky a úsilí při vývoji paralelních algoritmů. DirectX 11 je již nativně hardwarově podporován všemi běžnými řadami GPU (novější než představení DirectX 11) (včetně základních výkonových GPU, jako jsou GPU integrované do čipové sady Intel ), ale DirectX 11 byl představen pouze s Windows 7 a je dodáván pro Windows Vista pouze proto, že starší operační systémy Windows nelze s AMP použít. Zda bude C ++ AMP někdy přizpůsoben jinými platformami nebo vývojovými prostředími C ++ mimo svět Windows, je v současné době stále zcela otevřené.
Novější přístup je OpenACC , který je stejně jako OpenMP řízen pomocí pragmat kompilátoru. Obyčejný zdrojový kód, např. B. v C ++, automaticky paralelizovány v tom, že před sériově formulované smyčky jsou umístěna některá pragma kompilátoru, například „#pragma acc parallel“. Úsilí o přenesení je relativně malé. Automatická paralelizace však ne vždy vede k optimálnímu řešení. OpenACC proto nikdy nemůže úplně nahradit explicitní paralelní programování jako v OpenCL. V mnoha případech však stojí za to, aby bylo možné tímto způsobem dosáhnout vysokých faktorů zrychlení na GPGPU. OpenACC je podporován komerčními kompilátory jako PGI a bezplatnými kompilátory jako GNU Compiler Collection .
Ke spuštění programů na GPU potřebujete hostitelský program, který řídí tok informací. Obvykle je kód GPGPU formulovaný v jazyce C podobném kompilován za běhu na pokyn hostitelského programu a odeslán do grafického procesoru k dalšímu zpracování, který poté vrací vypočítaná data hostitelskému programu.
Viz také
- grafická karta
- Buňka (procesor)
- Streamovací procesor
- Vektorový procesor
- Správce přímého vykreslování - uzly vykreslení umožňují přímý přístup
- Heterogenní systémová architektura
literatura
- Matt Pharr: GPU Gems 2 . Addison-Wesley Publishing Company, 2005, ISBN 0-321-33559-7 , část IV - Obecný výpočet na GPU: Primer.
- David B. Kirk: Programování masivně paralelních procesorů: praktický přístup [brožovaný výtisk] . Morgan Kaufmann, 2010, ISBN 978-0-12-381472-2 .
webové odkazy
- Drahokamy GPU 2
- GPGPU.org
- Nvidia pracuje na prvních GPGPU pro Apple Mac, AppleInsider (24. ledna 2008)
- Publikace, videa a software GPU4Vision GPGPU
- GPGPU Computing - přehled pro začátečníky i pokročilé uživatele (planet3dnow.de 26. května 2009)
- Tobias Preis, Peter Virnau, Wolfgang Paul, Johannes J. Schneider: GPU zrychlila simulaci modelu 2D a 3D Ising v Monte Carlu. In: Journal of Computational Physics. 228, 2009, s. 4468-4477, doi : 10,1016 / j.jcp.2009.03.018 .