Hirdetés

Többplatformos programnyelv lesz a C++ AMP

A Microsoft a 2011-es esztendő nyarán mutatta be a C++ AMP (Accelerated Massive Parallelism) platformot, mely elsősorban a heterogén módon programozható rendszerekben rejlő lehetőségek kiaknázására használható. A specifikációk az előző év elején készültek el, és az első fejlesztői vélemények sem voltak rosszak, noha a közvetett konkurensnek tartott OpenCL programnyelv kiforrottabb fejlesztőkörnyezetekkel rendelkezett a C++ AMP bevetésének idejére, ami nyilván hátráltatta a rendszer terjedését.

A C++ AMP egyébként továbbra sem akar az OpenCL közvetlen versenytársa lenni, így elsődleges feladata a grafikus vezérlők egyszerűbb kihasználásának biztosítása a programozók felé. Az OpenCL számos feladatra továbbra is jobb alternatíva marad, viszont némileg nehezebb benne dolgozni. Tulajdonképpen a Microsoft nem jár rossz utat a C++ AMP szempontjából, hiszen a rendszer bármerre továbbfejleszthető, és az előnyei is megőrizhetők. Szintlépésről azonban még nincs szó, az ugyanis a Microsoft feladata, viszont már az elején elárulta a cég, hogy a programnyelvet nem kötik majd a Windowshoz, ennek az eredményeként az AMD hivatalosan is bejelentette a Linuxon futó verziót.

Az AMD neve itt furcsának hat, hiszen a C++ AMP a Microsoft megoldása, de a redmondi óriáscég már 2011-ben az AMD-re bízta a programnyelv támogatását a nem Windows operációs rendszerek esetében. Ezzel kapcsolatban viszont komoly kikötés volt, hogy szabványos támogatásra van szükség, tehát minden C++ AMP-t támogató cég hardverén működnie kell az adott kódnak. Ez lényeges szempont, mivel az Intel és az NVIDIA is támogatja a felületet, tehát őket nem érheti hátrány, illetve nem beszélve a felfutó érintettekről, mint az ARM, a Qualcomm, az Imagination és a Vivante.


[+]

Mivel a C++ AMP működéséhez szükséges DirectCompute 5.0-s felület nem érhető el Linuxon, így alternatív megoldást kellett keresni a programok számára. Ebből a szempontból kedvezően alakult a helyzet, mivel a cégek együttes érdekként tekintettek a programnyelv elérhetőségére, így a fejlesztést végül nem csak az AMD végezte el, hanem mindenki hozzáadott annyit, amennyit tudott. A projekt alapját az LLVM Clang front-endje biztosította, ami a C++AMP kódból LLVM-IR vagy SPIR 1.2 kódot készít. Ezen a ponton már eldőlt, hogy a program milyen képességű hardveren fog futni, mivel a Linux esetében két opció lehetséges a jövőben. Az egyik az OpenCL, míg a másik a HSA platform. Előbbit szinte minden hardver támogatja, míg utóbbi némileg speciális egységeket igényel, de a jövőben ez sem lesz gond. Technikailag az OpenCL-re az Intel és az NVIDIA fog építeni, míg a HSA-ra az AMD, az ARM, a Qualcomm, az Imagination és a Vivante.

Amennyiben a C++AMP programból SPIR 1.2 kód készült, akkor a rendszer az adott gyártó által használt virtuális utasításkészletének megfelelő kódot fordít, majd onnan történik a valós utasításkészletnek megfelelő kód fordítása, ahonnan már egyenes út vezet a hardverhez. A másik út esetében az LLVM-IR kódból az LLVM fordító szabványos HSAIL kódot generál, amit a gyártók által készített HSAIL Finalizer lefordít az adott hardver valós utasításkészletére, és a program így válik futtathatóvá.

Tekintve, hogy a Linuxosoknak mennyire számít a nyílt forrású infrastruktúra, így az AMD a többi érintettel közösen úgy döntött, hogy a projekt nyílt forráskód mellett folytatja majd karrierjét, méghozzá valamikor a következő év első felétől kezdve.

Azóta történt

Előzmények

Hirdetés