GPU Computing – co to je?
Stále slyšíte o GPU computingu nebo akceleraci, ale nejste si jisti, co znamenají? Zde je vše, co potřebujete vědět.

GPU nebo grafické procesorové jednotky jsou přítomny ve všech elektronických obvodech, které vytvářejí jednu nebo druhou formu displeje, zejména v počítači.
Rané grafické procesory byly relativně jednoduché. Ale s příchodem her, 3D animací a úloh vykreslování videa, které posunuly CPU za jejich limity, musely přijít na pomoc výkonnější GPU.
Výkon a složitost těchto nových GPU karet postupem času rostly, přičemž různé společnosti a výzkumníci hledali způsoby, jak využít jejich výhodu paralelního spouštění. Tento příspěvek vám ukazuje, jak to doposud probíhalo.
Co je GPU?
GPU nebo Graphics Processing Unit je specializovaný obvod určený pro manipulaci s daty, který pomáhá při vytváření obrázků pro zobrazení. Jinými slovy, GPU je systém, který vytváří obrázky, které vidíte na jakémkoli povrchu displeje, jako je monitor počítače, obrazovka smartphonu, herní konzole a tak dále.
GPU byla zpočátku přímočará zařízení, která spojovala grafické prvky a vytvořila ideální výstup pro konkrétní zařízení. Postupem času a s příchodem počítačových her však GPU začaly narůstat ve složitosti a výkonu, což dalo vzniknout GPGPU nebo General Purpose Computing na GPU.
Co je to GPU Computing?
GPU computing nebo GPGPU je použití GPU pro výpočty nad rámec grafiky. To znamená použití GPU zabudovaných do grafické karty počítače a původně určených pro zpracování počítačové grafiky pro výpočet jiných typů dat, jako jsou vědecké simulace, těžba kryptoměn, algebrické výpočty, předpověď počasí, neuronové sítě a tak dále.
Důvod pro tento vývoj GPU computingu pochází z působivého vývoje grafických procesorových jednotek, které vycházejí z distribuované paralelní architektury moderních GPU systémů.
Vzhledem k tomu, že procesor počítače byl stále výkonnější a mohl si poradit se složitějšími programy a hrami, výrobci grafických karet se také snažili držet krok s vývojem moderní výpočetní techniky a 3D grafiky. Nvidia představila GeForce 256 v roce 1999 jako první grafická karta na světě s GPU a odtud se věci vyvinuly.
Hlavní výhodou karet GPU oproti CPU je jejich architektura paralelního zpracování, která jim umožňuje zpracovávat velké datové úlohy distribuovaným paralelním způsobem, který zabraňuje úzkým místům a zamrzání CPU.
Jaké jsou aplikace pro GPU Computing?
Aplikace GPU computingu je mnoho, zde je pohled na některá nejlepší použití:
- Strojové učení a neuronové sítě
- Fuzzy logika
- Bioinformatika
- Molekulární modelování
- Vykreslování videa
- Geometrické výpočty
- Výzkum klimatu a předpověď počasí
- Astrofyzika
- Kryptografie
- Počítačové vidění
- Prolomení hesla
- Kvantový výzkum
GPU versus CPU Processing
GPU i CPU zpracovávají digitální data, ale dělají to různými způsoby. CPU nebo centrální procesorová jednotka je navržena pro sériové zpracování při vysokých rychlostech, zatímco GPU jsou navrženy pro paralelní zpracování při mnohem nižších rychlostech. Samozřejmě, že CPU může používat hyper-threading, aby získal 2 vlákna na jádro, nebo dokonce může mít desítky jader, ale v zásadě jsou to sériové procesory.
Zatímco CPU mohou mít několik jader, moderní GPU přicházejí s tisíci jader, například Nvidia GeForce RTX 3090 který obsahuje 10 XNUMX+ jader. Chcete-li však získat výhodu oproti CPU, musí být data schopna paralelního zpracování, jako je zpracování proudu obsahujícího tisíce obrázků najednou.
GPU vs ASIC
ASIC je zkratka pro Application Specific Integrated Circuit a to znamená, že může vykonávat pouze jeden úkol – tedy úkol, pro který byl navržen. ASIC je jedinečný stroj, který je vyvinut od nuly a jeho sestavení vyžaduje odborné znalosti hardwaru. ASIC se běžně používají při těžbě kryptoměn, protože nabízejí dobré výhody paralelního zpracování a lepší efektivitu než GPU.
Hlavní rozdíl mezi těmito dvěma je však v tom, že GPU jsou všestrannější. Například můžete snadno vytvořit zařízení pro těžbu kryptoměn pomocí GPU. Díly jsou snadno dostupné a pokud skončíte s těžbou, vždy můžete GPU kartu prodat hráčům nebo jiným těžařům. S ASICy však můžete ojetý stroj prodat pouze jiným těžařům, protože s ním těžko můžete dělat něco jiného.
Kromě těžby kryptoměn je ještě obtížnější položit ruce na ASIC stroj, protože se nejedná o masové produkty. To silně kontrastuje se systémy GPU, které můžete získat všude a snadno nakonfigurovat.
GPU vs Cluster Computing
Zatímco jedna karta GPU obsahuje tisíce jader, která přidávají ohromný výkon jakémukoli počítači, ke kterému ji připojíte, teoreticky můžete na základní desku počítače přidat tolik karet GPU, kolik zvládne, a dále zvýšit její zpracovatelskou kapacitu.
Na druhé straně počítačový cluster označuje více počítačů, které jsou propojeny do sítě, aby fungovaly jako jeden velký počítač – superpočítač. Každý počítač v síti se nazývá uzel a může mít vícejádrový CPU a také jednu nebo více GPU karet na desce.
Každý cluster musí mít hlavní uzel, což je přední počítač, který je zodpovědný za správu a plánování jeho pracovních uzlů. Bude také obsahovat software, který alokuje data a programy pro své pracovní uzly, aby vypočítaly a vrátily výsledky.
Akcelerace GPU vs Hyper-threading
CPU je navrženo tak, aby zvládlo více úloh najednou, a proto běží při velmi vysokých rychlostech a naplánuje dobu zpracování mezi těmito více procesy. Když však narazí na výpočetně náročnou funkci, může chvíli strávit ve smyčce, než se vrátí k ostatním procesům. To obvykle vede k celkovému zpomalení počítače, v horších případech k úplnému zamrznutí systému.
Počítačoví návrháři se mohou tomuto obávanému scénáři vyhnout buď použitím hyper-threadingu, nebo akcelerace GPU. Hyper-threading umožňuje, aby jedno jádro CPU fungovalo jako dvě procesní vlákna. Takže když je jedno vlákno uvězněno ve smyčce náročné na výpočetní výkon, druhé vlákno může stále držet systém pohromadě.
Moderní počítače mají nyní více jader od 2 do 4, 8, 16, 32 a tak dále. Navíc mají hyper-threading, takže 2jádrový procesor nabízí 4 vlákna, 4jádrový nabízí 8 vláken a tak dále.
Hyper-threading s vícejádrovými procesory vyřeší většinu problémů s počítačem, zabrání úzkým místům a poskytne špičkový výkon s jednoduchými hrami, hudební produkcí a malými projekty grafiky, videa a strojového učení. Když ale potřebujete větší výkon, pak je GPU často tím správným řešením.
GPU nebo hardwarová akcelerace je schopnost softwarové aplikace využít paralelní výpočetní výkon GPU k drcení velkého množství dat, aniž by došlo k zablokování CPU. Mnoho profesionálních aplikací závisí na správném fungování akcelerace GPU. Patří mezi ně programy pro návrh/renderování videa a animací, kodéry, kryptografie, velké neuronové sítě a tak dále.
Základy programování GPGPU
Všeobecné programování GPU bylo zpočátku prováděno pomocí DirectX si OpenGL knihovny. Ty byly navrženy výhradně pro vývoj grafiky, takže jste museli svá data znovu použít do grafických modelů, aby fungovaly.
Naštěstí v průběhu let došlo v GPGPU k velkému pokroku, který vedl ke knihovnám, programovacím jazykům a rámcům. Nejoblíbenějším z těchto frameworků je CUDA od Nvidie.
CUDA usnadňuje jakémukoli vývojáři ponořit se do programování GPU, aniž by potřeboval znát to podstatné z klasického programování GPU. Poskytuje funkce, které vylepšují vývoj nad rámec grafiky, přičemž mnoho jednotek dokonce obsahuje funkce specifické pro strojové učení.
Dostupné knihovny také usnadňují vytváření nových programů s akcelerací GPU od začátku nebo přizpůsobení předem napsaných programů paralelnímu zpracování. Vyberete si správnou knihovnu, optimalizujete kód pro paralelní smyčky, překompilujete a je to.
Procesory CUDA Cores vs Stream
Často se setkáte s podmínkami Cuda jádra si stream procesory. Oba pojmy jednoduše odkazují na jádro GPU resp Aritmetické logické jednotky GPU. CUDA Core je proprietární technologie od Nvidie, zatímco Stream procesory jsou od AMD.
Dalším pojmem, se kterým se můžete setkat, je Streaming Multi-Processor neboli SM. Jedná se o další technologii Nvidia, která původně seskupovala 8 CUDA jader na SM. Provádí 32-ti vláknové warpy najednou, s použitím 4 hodinových cyklů na příkaz. Novější návrhy nyní obsahují více než 100 jader na streamovací multiprocesor.
Nejlepší jazyky a knihovny GPU
Existuje tolik knihoven a jazyků, které fungují na platformách Nvidia CUDA i AMD. Následuje jen několik z nich:
- Nvidia cuBLAS – Základní podprogramy lineární algebry pro CUDA
- cuDNN – Knihovna hlubokých neuronových sítí
- OpenCL – Otevřený standard pro paralelní programování
- Openmp – Pro GPU AMD
- HIP – knihovna C++
- Nvidia cuRAND – Generování náhodných čísel
- cuFFT – Pro rychlou Fourierovu transformaci
- JE Nvidia – 2D zpracování obrazu a signálu
- GPU VSIPL – Vektorový obraz a zpracování signálu
- OpenCV – Knihovna GPU pro počítačové vidění
- Otevřít ACC – Jazyk pro paralelní vývoj
- V PyCU – Python pro platformu CUDA
- TensorRT – Hluboké učení pro CUDA
- CUDA C++ – Jazyk C++ pro CUDA
- CUDA C – Jazyk C pro CUDA
- CUDA Fortran – CUDA pro vývojáře FORTRAN
Nejlepší projekty GPU Cluster
Od června 2022 má 8 z 10 nejrychlejších superpočítačů na světě akceleraci GPU. Všechny také sdílejí operační systém Linux a jsou následující:
| Hodnost | Jméno | Petaflops | CPU jádra | GPU jádra | Výkon (kW) | Rok výroby |
| 1. | Hranice | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | POKOJ, MÍSTNOST | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | Summit | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | Pilka | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | Perlmutter | 64.59 | N / A | N / A | 2,589 | 2021 |
| 6. | Selene | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | Tianhe-2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | Adastra | 46.1 | 21,632 | 297,440 | 921 | 2022 |
Proč investovat do čističky vzduchu?
Když jste se dostali na konec tohoto ponoru do výpočetní techniky GPU a všeho, co s tím souvisí, měli byste už mít představu o její síle a rozsahu.
Pro další informace se můžete podívat na vývojářskou platformu Nvidia zde nebo toho AMD zde.




