Szerző: Gálffy Csaba

2013. szeptember 23. 14:50:00

GPU gyorsítja az IBM üzleti alkalmazásait

A Java GPU-gyorsítása hamarosan valósággá válik. Egymástól függetlenül az IBM és NVIDIA, valamint a HSA Alapítvány is bejelentette ezzel kapcsolatos jövőbeni terveiket - átjárás az eltérő megközelítés miatt sajnos nincs.

HIRDETÉS

Látványos gyorsulást hoz a teljesítményérzékeny, jól párhuzamosítható számítási feladatok körében a GPU használata - a régi felismerés immár IBM-es Java-alkalmazások körében is igaz lesz. Az NVIDIA CUDA függvénykönyvtárait használva egyes feladatok nagyságrendekkel gyorsabban végrehajthatóak - jelentette be John Duimovich, az IBM szoftvermérnöke a most folyó JavaOne konferencián. Ennek megfelelően az IBM saját fejlesztésű alkalmazásai áttérnek a CUDA-könyvtárak használatára, így ki tudják aknázni a rendszerben található bővítőkártyákat.

A Java-ban írt, de GPU-gyorsítást használó potenciális alkalmazások sora rendkívül hosszú, képelemzéstől csalásdetektálásig, pénzügyi elemzéstől a tudományos-mérnöki feladatokig. A Java jelenleg is messze a legnépszerűbb nyelvnek számít, a nagyvállalati szerveroldali alkalmazások igen széles körben használják. A prezentáció szerint a kód gyorsítása transzparens módon (vagyis módosítás nélkül) vagy kisebb módosítással elérhető, csupán egyes függvények használatával az NVIDIA CUDA könyvtárából. Az IBM példája egyébként szokványos Java tömbök rendezése volt, amely a tömb méretétől függően 2-48-szor gyorsabban fut le, mint a sima Java könyvtárak használata mellett.

Az NVIDIA kapcsolódó bejegyzése szerint ez a technológia már Java 8 alól elérhető, egyetlen feltétele a CUDA-könyvtár használata. Duimovich bejelentése szerint az IBM saját üzleti alkalmazásaiban át fog térni e könyvtárak használatára. A Nagy Kék bizonyos kiszolgálói ma is rendelhetőek Tesla GPU-kkal, a jövőben ezek a bővítőkártyák képesek lesznek Java kódot is gyorsítani.

HSAIL a másik oldalon

A mostani bejelentéshez szorosan kapcsolódik (és annak akár előzménye is lehet), hogy a Hot Chips konferencián a másik oldal, az AMD által gründolt HSA Foundation elnöke, Phil Rogers mutatta be a kezdeményezés javás terveit. Eszerint 2015-től, a Java 9 megjelenésével a tisztán Java kód gyorsítva futna a CPU-GPU pároson. A koncepció egy ponton jelentősen eltér az NVIDIA megközelítésétől, a HSA esetében ugyanis nem szükséges külön könyvtárakat használni.

A koncepció szerint a JVM átmeneti HSAIL kódot generál, amely hardverfüggetlen és képes bármely olyan gyártó lapkáján futni, amely biztosít hozzá "véglegesítőt" (finalizer), amely architektúraspecifikus gépi kóddá fordítja az HSAIL-t. A megközelítés előnye, hogy az elkészült kód olyan GPU-architektúrán is képes lesz futni, amely a fordítás pillanatában nem is létezett.

A HSAIL-kompatibilis Java virtuális gép (JVM) fejlesztésén együtt dolgozik az Oracle, az AMD és más partnerek. A Sumatra névre keresztelt technológia lehetővé teszi, hogy a JVM saját hatáskörben el tudja dönteni, mi fut közvetlenül a CPU-n és mit bíz a "véglegesítőre" a GPU-n való futtatáshoz. Az alkalmazás szintjén nem szükséges drámai módosítás, a Sumatra is a Java 8-ban bevezetett Stream API-t használja.  Eszerint ha a programozó deklarálja, hogy nincs a szálak között versenyhelyzet (race condition) és engedélyezi a párhuzamos futást a stream.parallel() hívással, akkor ez az engedély a GPU-n való futtatáshoz is elengedő.

a címlapról