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.

Open CL 1.0 spatřilo světlo světa před několika týdny a za tímto novým standardem stojí Khronos Group, která je tvořena zástupci největších firem v IT průmyslu (AMD, IBM, Nvidia, 3D Labs a mnoho dalších). Tato společnost vznikla za účelem vzniku standardu na poli grafiky, multimédií a paralelních výpočtů na všem od mobilních zařízení po stolní počítače.

Úkolem nového rozhraní OpenCL je usnadnění některých typů paralelního programování a poskytnutí dostatečně výkonného hardware (především GPU) pro tento typ výpočtů. Jinak řečeno, vývojáři do rukou dostanou nástroje k efektivnímu využití hardware, jako jsou procesory nebo grafické karty, které budou pro tento typ paralelních výpočtů fungovat velmi efektivně, samozřejmě s příslušnými ovladači pro OpenCL.

V poslední době se setkáváme velmi často s pojmem datově paralelní výpočty, jejichž princip spočívá ve zpracovávání stejného kódu na stovkách datových bodů současně. U současných her je již dnes poměrně známý model úkolově paralelní, kdy každý z těchto úkolů představuje AI (umělou inteligenci), audio, renderování atd. Naproti tomu datově paralelní model funguje na principu, kdy bychom měli kupříkladu každý pixel obrazu v dané scéně procesovaný vlastním vláknem v takovémto kódu. Mohou nám tedy v důsledku vzniknout až statisíce vláken, jejichž řazení a následný výpočet závisí na tom, jak je daný program napsán a jakým hardware bude akcelerován.




Grafika jako taková je v podstatě nekonečně paralelizovatelná, neboť obraz, který putuje na náš monitor, je složen z miliónů pixelů, které jsou na sobě většinou nezávislé. Jednoduché vlákno v kódu tak může počítat vše, co je pro daný pixel potřeba. Pokud bychom chtěli najít nejvýkonnější procesory datově paralelních výpočtů, tak nepůjdeme hledat do řad klasických CPU (AMD a Intel), ale na pole grafických karet, které jsou pro tuto úlohu vybaveny s přehledem nejlépe.

Grafické karty jsou velmi specializované procesory, a tak můžeme rovnou zapomenout, že by z jejich síly profitoval tabulkový (Excel) nebo textový (Word) procesor, kde bude klasický „general purpose“ procesor značně rychlejší. Aplikace, kde se mohou výhody datově paralelních výpočtu ukázat, jsou například zpracování, enkódování nebo dekódování videa. Dále můžeme také profitovat z jejich výkonu v případě matematických výpočtů v programech ála Matlab nebo Maple.

OpenCL ale není samospásné a rozhodně nemůžeme čekat, že se nám zrychlí všechny dostupné aplikace o stovky procent. Jde zde spíše o to, že výrobci budou mít možnost některé úlohy urychlit a využít všeobecně dostupného hardware v našich počítačích (grafické karty nebo vícejádrové procesory).