Bemutatkozott az OpenACC API

Az NVIDIA mindenféle előzetes nélkül bejelentette az OpenACC API-t, mely a cGPU-kra, illetve a különböző heterogén módon programozható rendszerekre való fejlesztést teheti egyszerűbbé. A felület kifejlesztésében a zöldek mellett a Cray, a Portland Group (PGI) és a CAPS (The Center for Analysis and Prediction of Storms) is részt vett, és mindannyian támogatják a terjedését. Az érintettek reményei szerint az OpenACC API egy ipari szabvány lesz a programkódok nagymértékű párhuzamosítására. Éppen ezért a kezdeményezés nyílt, vagyis bárki támogathatja, és a fejlesztésekben is szabad a részvétel. A koncepció sok szempontból nagyon hasonlít az OpenMP API-ra, ahol a többmagos processzorok jobb kihasználása a cél, csak itt a támogatás a cGPU-kra vonatkozik. Az OpenACC alkotói egyébként az OpenMP fejlesztésében is részt vesznek, és tervben van az utóbbi felület kiegészítése a cGPU-k támogatásával.

Az OpenACC lényege
Az OpenACC lényege

Az OpenACC a PGI Accelerator programozási modellre épül, és úgymond direktívákat ad a fordítónak, hogy a programkód mely részeit lehet cGPU-val gyorsítani, anélkül, hogy a programozó változtatna azokon. A direktívákkal a fordítóprogram számára felismerhetővé vállnak 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. Ez az elgondolás tulajdonképpen már régóta létezik a PGI Acceleratorral, de a hatékonysága nem a legjobb, mivel a régebben megírt C, C++ és Fortran kódokba mindenképpen érdemes belenyúlni, ha a cGPU-n történő hatékony feldolgozás fontos. Az OpenACC újításaival viszont hatékonyabban működhet a párhuzamos kódok kezelése, így gyorsabb feldolgozás érhető el. Konkrétumokról persze nehéz beszélni, mivel az elérhető gyorsulás nagyon függ az adott programkódtól, de a tapasztalatok azt mutatják, hogy két hetes munkával a kétszerestől kezdve akár a tízszeres gyorsulás is elérhető.

Az OpenACC API működni fog számos C, C++ és Fortran fordítóval, illetve alkalmazható lesz a CUDA C, a CUDA C++ és a CUDA Fortran kódokhoz. A felület persze továbbfejleszthető, így később akár az OpenCL-hez is használható lehet, ez szimplán implementálás kérdése. Az OpenACC elsősorban a HPC-piacon jut majd szerephez, hiszen a Cray a Titan néven ismert, készülő szuperszámítógép programozását szeretné vele megkönnyíteni. Ettől függetlenül az API más piacokon is felhasználható majd, hiszen semmi akadálya annak, hogy a konzumer szegmensben is elterjedjen. Itt azonban szükséges a konkurensek támogatása, hiszen a chiptervezők közül egyedül az NVIDIA áll az API mögött. A nyáron megrendezett Fusion Developer Summiton hasonló (bár valamivel komplexebb) kezdeményezéssel állt elő az AMD is, az FSA platform személyében, mely az OpenCL kiterjesztésének tekinthető, és lényegében a heterogén módon programozható rendszerek jobb kihasználását teszi lehetővé. Az FSA szintén nyílt, így bárki számára szabad a részvétel a fejlesztésben, de egyelőre csak az ARM állt be mögé. Persze az FSA és az OpenACC nem feltétlenül ellenfelek, hiszen számtalan olyan felület létezik most is, melyek megegyező céllal születtek anno. Fontos azonban, hogy a gyártók nézőpontjai közeledjenek, így az egyik, vagy akár mindkét említett megoldás szélesebb támogatást kapjon.

Az OpenACC API 1.0-s verziójának specifikációi az alábbi linken érhetők el. Az érintett partnerek fordítói 2012 első negyedévétől támogatják majd a felületet.

Azóta történt

Előzmények

Hirdetés