Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Ian Buck z Nvidie o budoucnosti GPGPU

17.9.2009, Petr Štefek, článek
Ian Buck z Nvidie o budoucnosti GPGPU
Dnešní článek bude poněkud netradiční, jelikož se jedná o rozhovor, který se šéfem vývoje platformy CUDA provedl redaktor světoznámého magazínu Tom's Hardware. Obsahem je budoucnost i současnost GPGPU v oblasti spotřebních i vědeckých aplikací.
Kapitoly článku:
V současné době je to AMD, které preferuje Brook jako nejlepší jazyk pro GPGPU a Nvidia naproti tomu využívá programovacího jazyka C s extenzemi CUDA. Jak byste srovnal silné a slabé stránky obou těchto směrů?

Začnu u Nvidie. Měli jsme možnost revidovat některé ze základních vlastností Brooku, které byly do značné míry závislé na tom, co dokázal tehdejší hardware kompatibilní s DirectX 9. Jedna z klíčových limitací bylo omezení paměťového modelu, který vyžadoval, aby programátor své algoritmy přizpůsobil silně limitujícímu přístupu do paměti. V případě platformy CUDA založené na programovacím jazyku C jsme tyto limity obešli. V zásadě je programátorovi dán obrovský společný počet vláken, díky nimž může do paměti přistupovat dle svých potřeb bez velkých omezujících limitů. Tento a několik dalších faktů nám dovolilo implementovat plnou sémantiku jazyka C pro GPU.


Řekněte mi ještě o CUDA, například „architektura“ versus „CUDA pro C“ kompilátor.

CUDA je název Nvidie pro paralelní výpočetní hardwarovou architekturu. Nvidia poskytuje kompletní balík nástrojů pro programování pod CUDA, takže obsahuje kompilátor, ladicí program, profilovač, knihovny a další informace, které vývojáři potřebují k tomu, aby vytvořili kvalitní produkt využitelný pro běžného uživatele. Architektura CUDA také poskytuje podporu pro standardní jazyky (C a Fortran s CUDA extenzemi) a rozhraní pro GPU výpočty jako je OpenCL nebo DirectX Compute.
Tento diagram může napovědět trošku více:



S OpenCL dostanete výhodu podpory napříč různými platformami, ale ztratíte automatizované nástroje jako paměťový management, který najdeme v CUDA. Vypadá to, že jako vědec chcete snížit počáteční nákady na vývoj, ale zároveň chcete, aby byly podporovány různé platformy. Jaká je tedy nejlepší cesta k vyřešení této otázky?

Samozřejmě jsme museli udělat určité kompromisy, abychom docílili toho, že bude toto řešení multi-platformní. Nvidia od počátku pracovala s Apple a pracovní skupinou OpenCL, abychom měli jistotu, že OpenCL poskytne schopné ovladače pod tímto rozhraním pro GPU výpočty a speciálně pro hardware Nvidie. V budoucnu budeme mít rozšíření, která dovolí provozovat náš hardware s OpenCL.


Windows 7 - DirectCompute rozhraní

Nvidia stále vylepšuje svůj kompilátor pro programovací jazyk C a prostředí pro grafická jádra. Máme pouze několik jednoduchých extenzí jazyka C pro aktivaci našich GPU. Pokud spíše preferujete Fortran, tak máme také kompilátor pro tento jazyk. Po uvedení Windows 7 budou mít uživatelé a vývojáři přístup k rozhraní DirectCompute, které sdílí mnohé společné věci s naším rozšířením pro programovací jazyk C (CUDA). Nvidia má v plánu co nejdříve poslat klíčovým vývojářům ovladače pro DirectCompute, aby tak měl náš hardware konkurenční výhodu. V budoucnu tedy budeme podporovat všechny hlavní programovací jazyky a rozhraní.


Vaše práce s GPU začala v době GeForce 5 a nyní jsme již o několik generací popředu. Obvykle je pravidlem, že nová generace hardware je rychlejší, ale jaké přinesly nové generace hardware výhody? Je dnes možné něco, co bylo v minulosti nedosažitelné?

První programovatelná GPU byla pouze jednoduchý procesor pro operace s desetinnou čárkou (FLOP). Takže zde nebyla možnost celočíselných výpočtů nebo bitových operací či jednoduchého přístupu do paměti GPU a také jsme mohli zapomenout na komunikaci mezi jednotlivými výpočetními jednotkami. Hlavní inovace, nutná pro využití programovacího jazyka, byla podpora „full pointer“ a nativní datové typy.
Další klíčovou inovací byla dedikovaná paměť na čipu, která dovolovala výpočetním jednotkám vzájemně komunikovat a sdílet výsledky, což značně vylepšilo efektivitu algoritmů. Programátor tak dostal možnost dočasně uložit a pracovat s daty blíže k procesoru a neposílat data ven z čipu do mnohem pomalejší paměti mimo procesor.


Legendární vysavač - GeForce 5800 Ultra

Konečně přidání dvojnásobné přesnosti výpočtů s pohyblivou čárkou byl také podstatný krok kupředu k opravdu vysoce výkonnému výpočetnímu produktu, který umožnil nasazení i v případě aplikací vyžadujících tuto rozšířenou přesnost numerických výpočtů. Vylepšení také doznala kapacita paměti, která nyní může dosahovat až 4 GB pro jeden procesor a dokonce 16 GB pro náš Tesla server. To vše posunulo řešení Nvidie o notný kus kupředu a vyřešilo spoustu problémů.


A co kompilátor? Jaký druh vylepšení a inovací byl přidán během času?

Velice brzy jsme si uvědomili, že budeme potřebovat skutečně výkonný kompilátor světové úrovně (Intel nebo IBM mají nejvýkonnější řešení na trhu). Programy využívající výpočetní výkon GPU jsou obvykle mnohem větší, komplexnější a mají prospěch z mnohem komplexnějších optimalizací než je obvyklé. Konkurenční CPU mělo skoro 40 let, aby věci dotáhlo k dokonalosti. Náš kompilátor pro jazyk C je založen na technologii Edison Design Group, která vyvíjí kompilátory pro C již 20 let a také vyvíjela kompilátor Open64, který byl původně určen pro procesory Intel Itanium. Naše technologie tedy spojuje jednak světovou technologii a také tým lidí, který jsme vytvořili, což nám ve výsledku dává recept na úspěch.


V současné době většina GPU zvládá matematiku s velmi jednoduchou přesností, ale horší je to právě s potřebnou dvojitou přesností. Dokáže GPU poskytnout lepší poměr výkonu ku ceně než CPU v této oblasti? Dokážete udělat speciálně optimalizovaná GPU pro výpočty s dvojitou přesností při zachování nízké ceny?

Trh pro GPU výpočty stále pokračuje v růstu, takže postupem času vidíme více oblastí, kde by se řešení procesorů s dvojitou přesností výpočtů dalo nasadit. Náš hardware podporující „double precision“, který jsme vypustili minulý rok, je jen prvním krokem a očekávám, že v průběhu času bude docházet ke zvýšení investic do tohoto odvětví jak ze strany Nvidie, tak ze strany samotného průmyslu.