Simon Green odpovídá
Kapitoly článků
prof. Václav Skala a Simon Green
- 1) Dobrý den, na úvod bych Vás požádal o pár základních informací. Kde jste studoval, jak dlouho v nVidii jste, jakou momentálně zastáváte funkci?
Vystudoval jsem informatiku na britské Reading University. V nVidii jsem od roku 2000 (herdek, to to letí!). Začínal jsem jako programátor v demo týmu, kde jsem pracoval na grafických demech jako Wolfman, Dusk a Dancing Ogre. Moje současná funkce je senior softwarový inženýr v Developer Technology Group, kde pracuji s externími softwarovými vývojáři na optimalizacích jejich aplikací pro GPU a nových algoritmech, které lépe využijí GPU.
- 2) V čem spatřujete oproti AMD Close to Metal/Stream, OpenCL a dalším systémům výhody CUDA a v čem naopak nedostatky, na kterých je třeba zapracovat? Co přiměje člověka koupit právě GeForce kvůli CUDA a ne Radeon?
Upřímně, nejsem seznámen s řešeními AMD, ale myslím, že největší výhody CUDA jsou dnes, že je zaprvé stabilním a zavedeným systémem (dodáváme ji již více než dva roky) a zadruhé se snadno používá, neboť je založena na standardním jazyku C, který většina vývojářů již zná. Co je ale důležitější, že CUDA již prokázala, že může být úspěšně nasazena širokou škálou softwarových vývojářů k řešení reálných problémů, od Folding@Home a Badaboom po finanční software a lékařská zobrazení. GPU akcelerovaná fyzika PhysX (implementovaná pomocí CUDA) je také velkou výhodou, která není dostupná na jiných platformách.
- 3) Schopnosti/výkon v double-precision jsou momentálně výrazně horší než u single, plánujete v tomto ohledu výraznější změny v architektuře GPU příští generace?
Nemohu říci nic o budoucím hardware, ale my vždy opakovaně vyhodnocujeme náklady a zisky různých vlastností GPU. Double precision není skutečně potřebná pro většinu spotřebitelských aplikací (jako jsou hry), takže nedává smysl přidávat hromadu hardware, který bude po většinu času nečinný. Tím chci říct, si dokáži představit, že relativní výkon v double precision se pravděpodobně bude zvyšovat.
- 4) Do jaké míry je softwarová vrstva CUDA aktuálně optimalizována, máme v budoucnu čekat výraznější zrychlení tak jako tomu bývá u her?
Může dojít na jistá vylepšení v CUDA ovladači (například zvýšení přenosových rychlostí), ale výkon CUDA aplikací je zejména o tom, jak jsou aplikace naprogramovány, ne o optimalizacích ovladačů.
- 5) Existuje či plánujete pro CUDA alternativu programu TWIMTBP?
Nevím o žádném programu typu TWIMTBP pro CUDA, ale velmi úzce spolupracujeme s CUDA vývojáři stejným způsobem jako s herními vývojáři.
- 6) Jaký typ běžně realizovaných úloh je pro GPGPU obecně vhodný a jaký naopak silně nevhodný, zejména s přihlédnutím k vývoji GPU v budoucích letech?
Nepředstíráme, že GPU jsou dobrá na všechno. GPU jsou nejvhodnější pro data-paralelní aplikace, tedy aplikace pracující s velkými objemy dat paralelně. Naštěstí s explozí digitálních médií a internetu je zde velké množství aplikací, které spadají do této kategorie, jako zpracování obrazu a videa, herní fyzika a data mining.
- 7)Jsme v ČR, plánuje zde nVidia nějakou významnější kooperaci s univerzitami, akademií věd, či IT firmami? Vznikne zde nějaké CUDA Center Of Excellence? A když už sedíme na FAV, chystá se nějaká forma spolupráce přímo zde?
Máme aktivní program spolupráce s univerzitami a věřím, že výuka CUDA na univerzitách je dobrá cesta jak dát studentům přímou zkušenost s paralelním programováním. Mluvil jsem zde s mnoha účastníky konference o spolupráci na výzkumných projektech.
- 8) Jak složitá je konverze existujícího CUDA kódu do OpenCL, jak moc je kód vzájemně kompatibilní? Existují, nebo jsou v plánu nějaké konverzní nástroje, nebo jsou rozdíly natolik zásadní, že bude třeba vše přepisovat?
OpenCL API je velice podobné low-level CUDA driver API (a ve skutečnosti je jím silně ovlivněno). Pokud se podíváte na OpenCL a CUDA specifikace, uvidíte, že jsou velmi podobné. CUDA také nabízí „runtime“ API, které je na vyšší úrovni a věci pro programátora mnohem snadnějšími integrací CPU a GPU kódu a ošetřováním jako třeba automatickým přenosem parametrů do GPU atd.
Jazyk OpenCL je v některých cestách více restriktivní než CUDA, která může být programována v čistém C. Tak bylo učiněno, aby mohlo běhat na velkém množství hardware.
Dle mé zkušenosti, hlavní výzvou v portování aplikací na GPU je převod na algoritmy pracující s daty paralelně. Jakmile toto uděláte, portování z CUDA do OpenCL nebo DirectX 11 je relativně jednoduché.
- 9) Je CUDA výpočetně rychlejší než OpenCL?
Ne, oba kompilují stejnou hardwarovou instrukční sadu, takže výkon bude ekvivalentní. Je to to samé, jako ptát se, jestli je C rychlejší než Pascal (oba jsou o tomtéž).
- 10) Co mě přiměje používat CUDA, když OpenCL bude podporováno daleko větší řadou výrobců?
Umím si představit, že OpenCL bude populární v uživatelských aplikacích jako zpracování obrazu a video aplikacích, kde je přenositelnost důležitá.
Myslím, že CUDA bude nadále populární v komerční sféře a v high-performance computingu, kde je důležitá spolehlivost a podpora Linuxu a výpočetních clusterů.
- 11) Velkou výhodou OpenCL je možnost přímé spolupráce s OpenGL (tedy výpočet a následně rovnou vizualizace), je něco takového možné s CUDA?
Ano, CUDA nabízí grafickou interoperabilitu s OpenGL i DirectX 9/10. To umožňuje generovat obraz a geometrii v CUDA a poté renderovat přímo bez nutnosti načítat data zpět do CPU. Mnoho ukázek v našem SDK toto demonstruje.
- 12) Bude CUDA podporována dlouhodobě, nebo plánujete přechod na OpenCL/DirectX 11?
Ano, plánujeme CUDA podporovat dlouhodobě. Budeme plně podporovat CUDA, OpenCL, DirectX 11 Compute a jakékoli další rozhraní, které by se objevilo. Je opravdu jen na vývojářích, pro které rozhraní se rozhodnou - každé má své výhody i nevýhody.
Jedna velká výhoda s CUDA pro nás je, že když ji máme pod kontrolou, můžeme přidávat vlastnosti velice rychle, jakmile se objeví nový hardware.
- 13) Jsou někde zajímavé stránky o CUDA, nejlépe s tutoriály?
CUDA FAQ odkazuje na některé dobré výukové materiály: http://forums.nvidia.com/index.php?showtopic=84440.
- 14) Kdy bude k dispozici renderer pro 3Ds Max, nejlépe V-ray využívající GPU. Bude pro toto lepší koupit ATI nebo nVidii (ať již kvůli CUDA, nebo kvůli architektuře/výkonu)?
Mnoho vývojářů off-line rendererů připravuje GPU akceleraci jejich software. Loni nVidia koupila Mental Images, kteří vyvíjejí Mental Ray renderer dodávaný s Autodesk Maya a mnohým dalším software, takže nebudu překvapen, když začnou brzy dodávat GPU renderer. Také my jsme představili ukázku interaktivního raytracingu na Siggraph 2008.
- 15) Je možné využít CUDA i na audio konverzi (nejlépe on-the-fly), existují takové nástroje?
Možné to je, ale zatím jsem o nikom takovém neslyšel. Dělali jsme soutěž k GPU akceleraci LAME MP3 encoderu, kde jsme měli nějaké úspěchy.
- 16) Kdy budeme moci využít novou knihovnu NvPVEnc.ax (pozn. David: NVIDIA Pure Video Encoder), resp. encoder CUDA v ovladačích, video editačních programech, stejně jako i DivX/Xvid (tedy dotaz na GPU Dshow/VFW video kodeky)? Tmpeg, Badaboom či PowerDirector přeci jen vnucují fixní parametry mainstreamových formátů. Padne toto omezení parametrů výstupního videa?
Nejsem obeznámen s našimi řešeními pro zpracování videa, ale my se snažíme předvést tolik PureVideo, kolik je z CUDA možné. Podpora formátů je zejména na vývojářích daných programů, není zde žádný technický důvod pro nějaké restrikce.
- 17) Uvažuje se o napsání ovladače, který by umožnil provozovat 3D na ATI Radeonu a CUDU na nVidia GeForce (dotaz lze zobecnit i pro 3D ATI + PhysX nVidia).
Pokud je mi známo, tak ne.
- 18) A na závěr obligátní oddychové otázky: jak se vám líbí v ČR, jak se vám líbí Plzeň, jak vám chutná Plzeň, co česká děvčata a tak vůbec?
Toto je poprvé, co jsem v České republice a moc si to užívám, speciálně pivo. Nemohu říci, že jsem si všiml moc českých žen, ale moje přítelkyně by si tohle mohla přečíst, takže tak!