C++ AMP

A C++ AMP (Accelerated Massive Parallelism) egy Microsoft által megálmodott és fejlesztett felület, mely platformtól független, nyílt specifikációval rendelkező ipari szabványnak tekinthető, és a gyártók széles körben támogatják. A koncepció alapvetően az OpenCL ötletét másolja, vagyis alapvető célja az adatpárhuzamos végrehajtásra tervezett, illetve a heterogén módon programozható processzorok képességeinek minél jobb kiaknázása. Ezzel gyorsítható a feldolgozás, valamint a rendelkezésre álló erőforrások energiahatékony felhasználása is lehetséges.

A C++ AMP azonban nem pont úgy közelíti meg a kérdést, ahogy a konkurens megoldások. A Microsoft elsősorban az egyszerűségre helyezi a hangsúlyt. A felület úgymond direktívákat ad a fordítónak, hogy a programkód mely részeit lehet GPU-val gyorsítani. Mindezt természetesen a programozónak kell részleteznie. A direktívákkal a fordítóprogram számára felismerhetővé válnak a masszívan párhuzamosítható kódrészletek, majd a program fordítása az összegyűjtött információk alapján történik meg. Persze a jó eredményhez a programkód módosítására is szükség lehet, hiszen itt a gyorsítás a párhuzamos feldolgozással kerül előtérbe. Ha nincs párhuzamosan futtatható kódrészlet, akkor lényegében nem alkalmas a kód a GPU-n való futtatásra. Ezt is a fejlesztőnek kell koordinálnia, így a C++ AMP nem csodaszer, hanem egy újabb eszköz, amivel meg lehet próbálni elegánsan kihasználni a GPU-k erejét.

Általános vélekedés, hogy az egyszerű kódoknál a C++ AMP nagyon kedvező, de a bonyolultak mellett inkább hátrányos ezt a platformot használni. A C++ AMP-s kód egyébként rövidebb lehet, mint az OpenCL-es, ami főleg annak köszönhető, hogy a Microsoft bináris formátumot is definiál, így nem szükséges semmilyen fordításra vonatkozó kódrészlet. Ez azt jelenti, hogy a kliensek felé elég a bináris kódot biztosítani, míg az OpenCL esetében ez nem ilyen egyszerű.

A C++ AMP gyakorlatilag bármilyen fejlesztőkörnyezetekbe és operációs rendszerbe integrálható. A felülethez természetesen szükséges a driver oldaláról egy alapszintű támogatás, de minden olyan grafikus mag megfelel az igényeknek, mely támogatja a DirectCompute 5.0-s platformot. Egyszerűbben fogalmazva DirectX 11-es GPU-ra, vagy IGP-re lesz szükség a C++ AMP-re írt programok futtatásához. A CPU oldalán nincs különösebb követelmény, azaz bármelyik modernebb processzor megfelelő.

Hirdetés