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ě

OpenCL - konkurent pro DirectX?

29.1.2009, Petr Štefek, článek
OpenCL - konkurent pro DirectX?
OpenCL je nový adept na poli univerzálních rozhraní pro akceleraci aplikací skrze výpočetní sílu grafických karet. První krůčky Nvidie jsme mohli pozorovat s rozhraním CUDA, které je nadstavbou nad programovací jazyk C. OpenCL by však mohlo vše sjednotit.

OpenGL 3.0 bylo zklamáním pro vývojáře her, kteří doufali v API s novými klíčovými vlastnostmi, které by ukončily zaostávání za konkurenčním DirectX. Khronos využil poslední verze OpenGL v profesionální sféře v aplikacích jako je CAD/CAM a tvorba 3D obsahu. Bohužel dnes (možná bohudík) neexistuje žádný větší vývojář her, který by herní engine pod OpenGL vyvíjel nebo provozoval. Poslední mohykán v oblasti OpenGL byl Id Software a jeho engine hry Doom 3. O následovníkovi se zatím pouze a jen spekuluje.

OpenCL ovšem má jedno eso v rukávu. Jedna z hlavních výhod DirectX 11 bude přidaní výpočetního shaderu do pipeline. Tento výpočetní shader bude tzv. „general purpose“ typu (stejně jako je například běžné CPU) a bude schopen zpracovávat odlišné datové struktury, se kterými si pixel shader neporadí. OpenCL má ovšem podobné vlastnosti a není na rozdíl od DirectX 11 striktně zaměřeno na grafiku, kde sdílení dat vychází principielně z daných datových struktur než z klasického vstupně/výstupního mechanismu.

OpenGL nic podobného neumí, ale právě OpenCL do značné míry pomáhá změnit. Mezi OCL a OGL bude existovat fyzické sdílení datových struktur a částí paměti. To v principu přidává podporu výpočetního „general purpose“ shaderu do OpenGL pro ty, kdo jej budou chtít využít. To znamená, že nejenže budou moci OpenCL a OpenGL pracovat se stejnými daty, ale metoda jakou pracují a komunikují je velice podobná DirectX 11 a jeho práci s daty mezi pixel shaderem a geometry shaderem.
Důvod k povyku ovšem nemají ani tak herní vývojáři, kterým může budoucí DirectX 11 připadat mnohem jednodušší a oblíbenější, ale především vývojáři v profesionální sféře. Tam dostanou možnost kombinovat reálnou práci se simulací nebo manipulovat s daty u vizualizací. Pokud samotný hardware podporuje „double precision“, můžeme s úspěchem využít u aplikací, kde mnoho práce musí být směřováno vizualizaci částí a zároveň celku jako takového. V principu tak lze všechno o mnoho uspíšit a problémem nebudou ani realtime vizualizace, kde se zároveň bude moci pracovat s daty.

Jako přídavek toho všeho může být i fakt, že výpočetní shader bude pracovat i s hardware, který jinak není kompatibilní s DirectX 11, ale v současné době není možné říci, jaké budou přesné specifikace tohoto API. Kombinace OpenGL 3.0 a OpenCL 1.0 po dlouhé době bude znamenat funkcionalitu a technologii na úrovni DirectX. Dnes je velmi těžké jen odhadnout, zda to bude znamenat pro OpenGL vstání z popela či nikoli.



V každém případě je fakt, že OpenGL a OpenCL sdílejí data bez nutnosti je kopírovat nebo konvertovat, opravdu klíčový. Vývojářům dovolí OpenCL využívat GPU jako „general purpose“ procesor a spojení s OpenGL zase pomůže postavit most mezi datově paralelními výpočty a vizualizací. CUDA ani Brook+ nemají v této oblasti vše vyřešeno a využívání OpenGL nebo DirectX pro datově paralelní výpočty je neefektivní. Spojení OpenCL a OpenGL tyto problémy nezná. Jak se k celé věci postaví vývojáři, se zatím můžeme jen dohadovat.

Spojením těchto dvou rozhraní vzniká téměř dokonalá symbióza a pro vývojáře otevírá nekonečné horizonty možností.