Jak již bylo řečeno v úvodu, GPU Computing Conference pod záštitou Nvidie, Sprinx Systems a FIT ČVUT se konala již podruhé a určitě ne naposled. O rozmachu GPGPU technologií v České republice svědčí i fakt, že zatímco loni trvala celá akce tři až čtyři hodiny, letos přednášky zabraly celý den a napřesrok se uvažuje o dvou paralelních sálech.
Praha nebyla zvolena jako místo konání náhodou – Fakulta informačních technologií ČVUT se totiž jako jediný ústav v Česku může honosit označením „CUDA Teaching Center“ (přestože CUDA se učí i na jiných českých univerzitách). Není tedy divu, že drtivou většinu účastníků konference tvořili právě „čvuťáci“.
Kromě toho je FEI VŠB-TU v Ostravě certifikována jako „CUDA Research Center“ a CUDA je zařazena do výuky i na brněnské Masarykově univerzitě. Tím je Česká republika ve východní Evropě unikátní. Celkem se CUDA vyučuje na 334 univerzitách po celém světě.
Jak GPU pomáhá zachraňovat i brát životy
GPU computing je širší pojem, než jenom vědecké počítání. Často jsou výsledkem jejich práce obrázky – přesto se ale nejedná o běžný rendering jako pod Direct3D nebo OpenGL. GPU se například používá pro zdravotnické snímkování – namísto zobrazování jednotlivých řezů z CT nebo magnetické rezonance je vytvořen trojrozměrný model, který lze otáčet a plynule zoomovat.
Trojrozměrně naskenované srdce pak lze nasimulovat za běhu. Lékař tak může nejen odhalit problém, který vás právě trápí, ale i infarkt, který byste mohli dostat za pár let. Pokud je vaše srdeční choroba vážnější, než jenom ucpané cévy, a neobejde se to bez operace, i tady vám může pomoci GPU. Moderním trendem v kardiochirurgii jsou totiž operace na běžícím srdci, prováděné dálkově řízeným robotem. Řezat do tlukoucího srdce nebo ho zase sešívat je docela kaskadérský kousek. Daleko lépe se chirurgovi pracuje, když robot kopíruje pohyby srdce a on jej pozoruje jako téměř statické. Tomu se říká motion compensation a jedině GPU je schopno dosáhnout použitelné snímkové frekvence.
Motion compensation má i jiné využití. Za pomoci těchto algoritmů můžete vylepšit i vaše rotřesené domácí video, americká armáda jimi „čistí“ materiál natočený špionážními letouny. Jen ve válce v Afghánistánu se prý zatím natočilo 24 let videa. Ještě tak vymyslet algoritmus, který na něm automaticky najde teroristy. Ale i toho se možná dočkáme: jedním z dalších využití GPU, které nám bylo prezentováno, je počítání projíždějících automobilů ze záznamu dopravní kamery.
A pochopitelně vědecké výpočty. Výpočty jsou vedle teoretizování a experimentů třetí pilíř moderní vědy.
GPU je nový superpočítač
První přednášky se ujal Yuri Uralsky. Pravděpodobně jste již slyšeli o vývojářském středisku Nvidie v Moskvě, kde mimo jiné vznikají profily pro SLI a Optimus (k tomu se ještě vrátím). Tak tomu tenhle upovídaný chlapík šéfuje. První část jeho prezentace se zaměřila na důvody, proč vlastně potřebujeme nahradit superpočítače s x86 procesory grafickými čipy. V 90. letech jsme byli zvyklí, že výkon procesorů každý rok průměrně vzrostl o 50 %. V posledních letech se ale tento trend značně zpomalil, nyní je meziroční růst jen kolem 20 %. Procesory narazily na spotřebovou bariéru. Složitá výpočetní jádra s obrovskou cache zkrátka nemohou podat takový surový výkon, jako stovky stream procesorů v GPU. Yuri je realista a uvědomuje si, že i grafické čipy jednou narazí do stejné zdi. Ale než se tak stane, mají před sebou dobrých deset či patnáct let produktivní kariéry v HPC segmentu.
Výkon snadno a rychle
Nejjednodušší cesta, jak pomocí grafického akcelerátoru zrychlit existující aplikaci, vede přes již hotové CUDA knihovny (z nich některé se vyvíjí v Moskvě, další pocházejí od třetích stran a všechny je najdete na stránkách CUDA Zone). Pokud pro daný algoritmus knihovna existuje, stačí v kódu programu změnit několik řádků – nejčastěji to budou asi for cykly na velkých množinách. Musíte ještě rozdělit vlákna do bloků, vlákna v rámci jednoho bloku mohou navzájem komunikovat. Tím se ale momentálně zaobírat nemusíte, thread management za vás řeší CUDA. Kompilátor CUDA rozumí jazykům C a Fortran, ale existují i wrappery na jiné jazyky, například Javu nebo Python.
Když ovšem chcete z GPU vyždímat maximální možný výkon, práci s vlákny se nevyhnete. A v tomto případě můžete zvolit jak CUDA, tak OpenCL. Jan Prach, který vedl pozdější přednášku o OpenCL, přirovnává obě API k češtině a slovenštině. OpenCL se z velké míry inspirovalo právě u dítka kalifornské společnosti, a tak principy programování jsou stejné, jenom některé příkazy jsou odlišné.
Pro představu, kolik vláken vlastně grafické jádro zvládne počítat naráz. Každý stream procesor jich může zpracovávat až 128, takže na jádro GT200 s 240 SP můžete naložit až 30 720 threadů. Architektura Fermi kromě zvýšení výkonu a dalších vylepšení přináší možnost zpracovávat souběžně více kernelů (programových jader). Některé kernely mají malý počet vláken a u starších čipů při jejich zpracovávání zůstávala většina výpočetních jednotek nevyužitých. Lépe to bude vidět na slajdu:
Stará dobrá rasterizace
Ing. Jan Buriánek, který pracuje ve firmě AV Media a přednáší na ČVUT, měl na GPU Computing Conference dokonce dvě přednášky. Ta první se týkala GPU Technology Conference 2010, kterou Nvidia pořádala koncem září v San Jose a kam byl Jan Buriánek vyslán jako elita českého národa.
„Málem jsem tam vrazil do Jen-Hsuna Huanga!"
"Oni přeskočili tři generace grafické architektury!"
(mávajíc Fermi-based Quadrem) "Teď držím v ruce 352 procesorů!"
Z této části jeho přednášky jsem si do svého bločku nic nenapsal – veskrze to byly věci mně (a tedy i vám) dávno známé. Méně exaltovaných prohlášení a více informací k tématu GPU computingu přinesla druhá část přednášky, kdy jsme se dozvěděli o pluginu FurryBall pro renderovací program Maya.
FurryBall původně vznikl jako interní projekt Art and Animation studia během tvorby CGI filmu Kozí příběh, nyní je ale nabízen i komerčně. Bez pluginu vidíte v Maye pouze drátový model vašeho výtvoru a chcete-li se podívat, jak bude vypadat v reálu, musíte i za použití raytracing rendererů využívajících GPU akceleraci čekat dlouhé minuty, než se vám scéna vykreslí.
FurryBall staví na klasické rasterizaci a celou scénu v téměř produkční kvalitě dokáže vykreslit za zlomek sekundy. S chlupatým zvířátkem si můžete v reálném čase „zatřást“ a sledovat, jak se realisticky pohybuje jeho srst (na promítaném videu to mohlo běžet s 15 – 20 fps, na dnešních kartách už by pohyb mohl být zcela plynulý). Narozdíl od jiných rendererů také nemusí převádět model do vlastního formátu – daní za to je nekompatibilita s jinými programy než Maya. FurryBall funguje s jakoukoliv grafickou kartou s podporou alespoň DirectX 10, na novějším hardware podporuje i některé vymoženosti z DirectX 11 (například teselaci).
SLI profily
Na programu přednášek byla i vystoupení profesora Václava Skaly z FAV ZČU v Plzni a Jean-Pierra Panziery z firmy Bull, která staví superpočítače. První zmíněnou přednášku a valnou část té druhé jsme bohužel minuli, měli jsme k tomu ale dobrý důvod. Zatímco pro zbytek účastníků konference byl zařízen oběd přímo v prostorách Národní technické knihovny, pro nás novináře (sešli jsme se v prudce hojném počtu, kromě mě se konference zúčastnili Ondřej Košťál a Lukáš Voříšek, oba za PCTuning.cz) uspořádala Nvidia VIP oběd v nedaleké pizzerii. Kromě nás tří okolo kulatého stolu zasedli Igor Staněk, Jens Neuschaefer (produktový PR manažer Nvidie), Jan Buriánek a také Yuri Uralsky.
Právě Yuri byl „hvězdou večera“ a vyprávěl nám, vedle aktuálního počasí v Moskvě, také o práci v tamním vývojovém středisku. Zde se mimo jiné vytvářejí profily pro SLI nebo Optimus. Není to vůbec nic jednoduchého: výkon každé hry se musí otestovat v několika nastaveních a následně vybrat to nejlepší. Hry, které nemají vestavěný benchmark, nezbývá než otrocky testovat s FRAPSem. Aby si Nvidia ulehčila práci, vytvořila interface pro změny nastavení a automatické testování externí aplikací. Zdarma jej poskytuje vývojářům, přesněji řečeno je spíš prosí, aby jej implementovali do svých her. Ne vždy jsou prosby vyslyšeny, ale časem snad takových titulů bude přibývat a Nvidia bude moci svým uživatelům poskytnout více SLI profilů. A kolik práce by automatizované testování ulehčilo kolegům, kteří recenzují grafické karty?
Yuri nám také prozradil, že se moskevské středisko bude stěhovat do nových, větších prostor. Zároveň Nvidia v této lokalitě nabírá návrháře mikročipů, takže působnost centra se rozroste o vývoj hardware.
Yuri Uralsky exkluzivně pro EHW na téma Larrabee
Během oběda přišla řeč také na snadnost programování pro architekturu x86. Cestou zpátky jsem tak využil příležitosti a zeptal se Yuriho, co si myslí o chystaných výpočetních akcelerátorech od Intelu, které budou soupeřit s produkty Nvidia Tesla.
Podle Yuriho karty rodiny „Knights“ doplatí na příliš vysokou spotřebu a oproti kartám Nvidie dříve narazí na „power wall“, o které Yuri mluvil ve své přednášce. Dnešní x86 procesory totiž interně nepracují s instrukcemi x86, ale nějakými vlastními, do kterých musí být x86 kód nejprve přeložen. Jednojádrový procesor tuhle mrtvou váhu táhne jednou, padesátijádrová Larrabee padesátkrát. A to už je mnoho tranzistorů, které se přímo nepodílejí na výpočtech, ale zabírají místo v čipu a spotřebovávají energii.
Závěr
Pokud vás reportáž z letošní GPU Computing Conference zaujala, nepropásněte příští ročník. Kromě nových znalostí budete možná bohatší i o nějaké pěkné hardware nebo hru: letos tři šťastlivci v tombole vyhráli GeForce GTX 460 od Gigabyte, dalších deset si odneslo kupón pro stažení Mafie II.