GPGPU výpočty? Stonásobek výkonu oproti CPU (Archiv)

gpgpu   !! článek archivu 10/10. Může být omezena vypovídající hodnota !! Tento článek je reakcí na současný, v řadě již několikátý, "boom" informací okolo GPGPU výpočtů, který česká internetová scéna v posledním týdnu zažívá. Protože můj počítač už nějakou dobu počítá distribuované výpočty, z nichž některé jsou celkem obstojně optimalizovány pro výpočet na grafických kartách, uvedu v této zprávičce mj. to, co všude jinde chybí. Reálný poměr výkonu GPU oproti CPU dle výsledků aplikace BOINC.

 

 

 

 

   Samozřejmě na úvod trochu základních teoretických informací uvedu, abych předešel eventuální chybné interpretaci nadpisu. Tedy ano, jak jsem zjistil dnes není problém, aby grafická karta v praxi počítala určitý úkol stonásobně rychleji oproti CPU, ale má své omezení v šíři úkolů kterou může počítat. Na rozdíl od CPU, které mohou počítat prakticky neomezenou škálu. Pro názorné přirovnání si dovolím ocitovat text uživatele "5c0" z diskuze serveru extrahardware.cz.

   "Jednoducho povedané, CPU je univerzálny stroj. Akcelerovať ti môže hocičo, len nie extra rýchlo. Zober si to ako porovnanie závodného auta na okruhu (GPU), je to pre neho ideálne a jazdí tam rýchlo (grafika, fyzika, niektoré iné operácie). Na tradičnej D1 ti však toto auto nepôjde, lebo by hneď havarovalo. Dôvod je jednoduchý, GPU niesú x86 zariadenia, takže nemôžu vykonávať prácu procesora všade, kde by chceli. CPU ti však môže jazdiť pomaly i na tom okruhu a aj D1." Tedy doplním jen již asi všeobecně známý fakt, že grafické karty, respektive jejich GPU, skutečně nebudou nahrazovat v počítačích CPU.

 

   Každopádně tyto informace v žádném případě nesnižují zajímavost výsledků. Do nedávna "ukrytý" potenciál grafických karet pro seriózní výpočty je obrovský. Že se jedná o řešení nejen pro nadšence nelze pochybovat a potvrzují to mnohé projekty viz. např. projekt FASTRA či už samotná existence instrukcí, jež grafikám rozšířila obzory o možnost seriózních výpočtů. To mě také vede k poznámce, že aby se karta mohla účastnit něčeho "víc" než jen renderování grafiky, je nutné aby byla vybavena technologií, která jí to umožní. Dnes jsou tyto technologie obecně známé tři. CUDA pro karty nVidia, STREAM pro karty ATI a OpenCL které je považováno za budoucnost ve využívání grafických karet pro výpočty.

 

 

   Co tedy mohou a co nemohou GPU počítat?

 

   Obecně řečeno jsou specializovaná jádra GPU schopné rychle zpracovávat jednoduché paralelní výpočty. Tedy výpočty které jsou "stejnorodé, v průběhu se nemění a které je možné počítat souběžně", například dělení, násobení apod. A obecně řečeno příliš nevím oč přesně jde a pro zájemce o danou problematiku jsem nalezl archivovanou bakalářskou práci jež se problematikou trochu zabývá zde (formát pdf).

   GPU nejsou vhodné pro výpočty ve kterých je vyžadována velmi vysoká přesnost. Toto je dáno tím, že jsou pouze 32 bitové, a tedy dokáží pracovat pouze s čísly o velikosti max. 32 bitů. Také může být problém ve způsobu zaokrouhlování hodnot, které se u CPU řídí normou, avšak u GPU, kde není výsledek požadován až tak přesný, je způsob zaokrouhlování jiný (namísto zaokrouhlení je hodnota oříznuta). Jak jsem se dočetl, tak chyba při zaokrouhlení může dosáhnout nejvýše poloviny hodnoty jednotky posledního čísla. Toto respektují CPU. Avšak u GPU, které hodnoty ořezávají může zaokrouhlovací chyba dosáhnou až hodnoty celého posledního čísla a v případě složitějších výpočtů, například dělení, i více.

   Občasně užívaným příkladem toho, co neumějí GPU zpracovávat, a já myslím že celkem výmluvným, jsou například kryptografie či zpracování textu.

 

 

   A jak si tedy GPU vede ve srovnání s univerzálními procesory

 

   Yep, to je otázka o který se hodně píše, hodně mluví, ale praktických výsledků né a né dohledat. Něco málo, co jsem dohledal je níže. Také jsem měřil výkon GPU a CPU v úlohách projektu distribuovaných výpočtů Collatz Conjecture kde jsou výsledky výmluvné. Sluší se také uvést fakt, že zatímco výkony CPU dnes rostou poměrně pomalu, trh s grafickými kartami se řítí výkonnostně kupředu zběsilou rychlostí. Z toho plyne, že pokud dnes může grafická karta počítat např. 100x rychleji, za 2 roky to může být 200x nebo více. Tento "trend" se nezmění minimálně do příchodu Tera-scale procesorů, alespoň dle mého názoru :)

   Níže nějaká praktická srovnání výkonu GPU vs. CPU

ewsa1

ewsa2

   Výše uvedené grafy jsou naměřené výsledky aplikace Elcomsoft Wireless Security Auditor. Elcomsoft je jednou z předních společností zabývající se výrobou softwaru na diagnostiku zabezpečení a kvality hesel. V překladu software na rozlouskávání a nalézání hesel k programům, účtům, sítím apod. Využití grafických karet k rychlejšímu prolamování hesel metodou brute force, je celkem novinkou a jen ukazuje potenciál který je v grafických kartách ukrytý.

collatzs

  Tento graf představuje naměřené hodnoty při výpočtu jednotky úkolu projektu distribuovaných výpočtů Collatz Conjecture. Osa X představuje prvních deset sekund výpočtů, osa Y dokončená procenta. Z grafu je patrné, že v daném úkolu vypočítá jedno jádro uvedeného CPU za jednu sekundu zhruba 2 tisíciny procenta. Naproti tomu uvedená GPU více než jednu desetinu. Tedy to co jedno jádro průměrného procesoru počítá okolo 13 hodin, zvládne mainstreamová grafická karta s výkonem 1,008TeraFlopu za 14 minut. A to je celkem rozdíl.

   Grafické procesory těchto výsledků dosahují díky způsobu jakým operace provádějí. Při dohledávání informací jsem narazil na osobní blog http://tojaj.com/ kde je na příkladu vysvětleno jak rozdílně pracují GPU a CPU.  Dovolím si zde příklad ocitovat.

   "Představte si, že máte pole o 10 000 000 prvcích a je třeba hodnotu každého prvku zdvojnásobit. V případě zpracování na CPU by byl nejspíš použitý nějaký cyklus, pravděpodobně for, který by prošel celé pole a každý prvek vynásobil dvěma. CPU by zadaný úkol provádělo ve více jak 10 000 000 taktech. Zatím co GPU by vzalo celé pole a během jednoho taktu všechny prvky zároveň vynásobilo dvěma." Mimochodem na blogu tojaj.com se také nachází článek zabývající se GPGPU výpočty zde. Článek obsahuje také zajímavé informace, avšak vstupuje do problematiky trochu hlouběji.

    Podporuji:                                                                                                               A tesim se:
    BOINC   Happy Eund (zeleny sport)   EU Fuck You
Copyright ©2008-2017 i-skladka.cz All Rights Reserved. Contact: i-skladka@tiscali.cz. Basic template by RocketTheme
i-skladka run an open source CMS system Joomla! | | Compatible with:
FirefoxIE 11SafariOperaGoogle Chrome