Végre érkeznek az OpenCL-es programok

Az OpenCL platformot még a 2008-as év végén mutatta be a Khronos Group, míg az 1.1-es, alaposan továbbfejlesztett verzió az előző esztendő közepén érkezett meg. A rendszerre pár program már debütált korábban, de az igazi áttörésre mostanáig várni kellett. A jelenleg is zajló Fusion Developer Summit rendezvény keretén belül több cég is bemutatta az OpenCL API-t kihasználó programját. A kiállításon belül főleg az AMD Fusion APU-k esetében alkalmazott optimalizációk kerültek előtérbe, de maga az OpenCL felület egy gyártótól független szabvány, így szó sincs arról, hogy csak a Fusion rendszereken futnának az új alkalmazások.

Mivel ez a terület a PC-n meglehetősen új, így érdemes röviden elemezni, hogy mi kell ahhoz, hogy az adott gépen OpenCL-re írt programot futtassunk. Először is szükség van egy OpenCL-t támogató driverre. Itt két opció lehetséges: az 1.0-s felületen írt programokhoz jó az 1.0-s, míg az 1.1-es API-t kihasználó alkalmazásokhoz 1.1-es OpenCL meghajtó szükséges. Természetesen az operációs rendszerre akárhány OpenCL driver telepíthető, de a program a futtatás során ezek közül csak az egyiket használhatja. Itt megjegyzendő, hogy technikailag lehetséges a több driver használata (amennyiben a program több kernelt futtat), de ezt egyelőre elvetik a fejlesztők, mivel túlzott időigény ennek az opciónak a kitesztelése. A PC-s gyártók közül az AMD, az NVIDIA és a VIA már végleges eszközillesztőket is kínál, míg az Intel fejlesztőkörnyezete, és a hozzá illő driver béta fázisban van jelenleg.

Az említett vállalatok driveres támogatása eltérő, így röviden vázolnánk az aktuális helyzetet. Az AMD a DirectX 11-es GPU-ihoz kínál OpenCL 1.1-es drivert, míg a Radeon HD 4000-es termékcsalád – béta fázisú – 1.0-s támogatást tudhat magáénak. A Catalyst APP (Accelerated Parallel Processing) felülete az SSE2, SSE3, és SSE4A-s utasításkészlettel rendelkező, x86-os processzorokat is támogatja, de az AMD külön kiemeli, hogy az OpenCL 1.1-es meghajtó működését csak a saját processzoraira teszteli, így ha egy program a driver hibájából nem, vagy hibásan, illetve esetlegesen lassan fut az Intel CPU-in, akkor ezzel kapcsolatban nem érdekeltek a javítás elkészítésében. Ez tulajdonképpen rendben is van, hiszen a vállalat nem szeretné a konkurens helyet elvégezni a munkát, így tulajdonképpen csak azt az alapot biztosítja, amire szükség van az OpenCL programok terjedéséhez. Amennyiben fennállna az Intel processzorok melletti problémás működés, úgy az Intel gyári OpenCL driverét kell a felhasználónak előnyben részesítenie. A Santa Clara-i óriáscég még nem kínál végleges megoldást erre, de elérhető egy SDK, amely egy béta fázisban lévő processzordrivert rejt OpenCL 1.1-es támogatással. Ez a meghajtó minden minimum SSE4.1-es utasításkészletet támogató Intel processzoron működik, továbbá támogatja az SSE4.2 és az AVX utasításkészletet.

Az előbbi bekezdésben rögtön szembesülhetünk egy problémával, ami az OpenCL működésének sajátossága. A gyártók nem támogatják a konkurensek hardvereit, így a tökéletes OpenCL-hez csak platform mellett lehet hozzájutni. Ez a probléma abból ered, hogy az Intel processzorok mellé társított Radeon GPU-k csak akkor működnek, ha az AMD OpenCL driverét telepíti a felhasználó. Fennáll azonban a veszély egy heterogén módon megírt program hibás működésére, ami lehetetlenné teszi a futtatást, így át kell váltani az Intel OpenCL driverére, ami viszont lehetetlenné teszi a grafikus processzorok általános számítási teljesítményének kihasználását.

A harmadik legnagyobb szereplőként számon tartott NVIDIA VGA-ihoz OpenCL 1.0-s driver érhető jelenleg el, de a fejlesztők számára már van OpenCL 1.1-es meghajtó is, ami a DirectX 11-es GPU-khoz telepíthető. Arról nincs információ, hogy a végleges driverekben mikortól lesz 1.1-es OpenCL támogatás, az viszont biztos, hogy az NVIDIA nem fogja támogatni az AMD és az Intel processzorokat a meghajtóin keresztül. Végül essen szó a VIA Chrome GPU-król is, melyekhez a vállalat OpenCL 1.0-s drivert kínál, de a processzorokhoz nem fejlesztettek még meghajtót.

A könnyebb átláthatóság kedvérét egy táblázatba foglaltuk össze az OpenCL-es driverek helyzetét:

A gyártók OpenCL driverei
Driver AMD
Intel NVIDIA
VIA
OpenCL verzió
1.1
1.1 béta (SDK)
1.0 (1.1 dev)
1.0
OpenCL driver típusa Heterogén (CPU+GPU és APU)
csak CPU
csak GPU
csak GPU
Konkurens CPU-k támogatása Intel, VIA
nincs - -
OpenCL CPU driver utasításkészlete SSE2, SSE3, SSE4A
SSE4.1, SSE4.2, AVX
- -

Végre van megfelelő hardver, jöhetnek a programok

Bár az OpenCL-es alkalmazásokat nem kötelező heterogén módban futtatni a fejlesztők többsége nem szívleli a pusztán GPU-s kódot. Ezzel lényegében hiába jelent meg az API egy évvel ezelőtt, a megfelelő hardver nélkül nehéz volt terjednie. A mai napon bemutatott Llano lapka a PC-s piac első, nagy teljesítményű APU-ja, így a programok számára ideális lehetőségeket biztosít. A Fusion Developer Summit rendezvényen több megjelent és fejlesztés alatt álló alkalmazás is feltűnt, mely aktívan épít az OpenCL lehetőségeire.

A videolejátszók között az ArcSoft TotalMedia Theatre új verzióját lehetett megszemlélni, mely mellett a Corel WinDVD is szerepet kapott. Mindkét megoldás az AMD OpenVideo Decode API-ját használja, és az OpenCL-en keresztül alkalmaznak képminőséget javító szűrőket a tartalmakra. A videokommunikációs alkalmazások esetében a ViVu termékei pompáztak, mely az AMD Fusion Fund partnerprogramjának kiemelt megoldása, de az otthoni felhasználóknak készülő ArcSoft Webcam Companion program is bemutatásra került.

A legtöbb OpenCL-es alkalmazás a video- és képszerkesztők között született. E területeken az ArcSoft ShowBiz és Panorama Maker Pro, a Corel Digital Studio és VideoStudio Pro, a Cyberlink PowerDirector, a vReveal MotionDSP, a Sony Vegas Movie Studio HD és Vegas Pro, valamint az eyeon Fusion képviseltette magát, míg a transzkódolók közül az ArcSoft MediaConverter és a Rovi MainConcept került elő. Érdekes program még a Viewdle Uploader is, ami a webes közösségi életet kívánja könnyebbé tenni, méghozzá egy OpenCL-es arcfelismerő algoritmus segítségével.

Természetesen a professzionális felhasználók is megtalálták számításaikat a különböző mérnöki szimulációs szoftverekben, név szerint az Altair Engineering HyperWorks RADIOSS, a Dassault Systemes PLM (Product Lifecycle Management), a DEM Solutions EDEM, az ESI Group PAM-CRASH and PAM-STAMP 2G solvers, az MSC Software MSC Nastran és az OPTIS RTLab and VRLab programokban.

A felsorolt szoftverek közül a fejlesztés alatt álló programok megjelenése nyáron, vagy esetlegesen ősszel lehetséges.

Hirdetés

Azóta történt

Előzmények

Hirdetés