Az Oracle-nek nagy tervei vannak a HSA-val

Az Oracle nagyjából egy évvel korábban jelentette be, hogy a HSA alapítvány tagjává váltak, így mostantól teljes mellszélességgel a HSA platform jövőjéért dolgoznak. Ennek egyik alapja az érkező Java 9 lesz. A Sumatra kódnevű projekt drámaian leegyszerűsíteni a heterogén módon programozható processzorok kódolását. A Java 8 Lambda és Stream API-ja megmarad, de a JVM-en belül lesz a felújított GRAAL nevű JIT (Just-In-Time) fordító, ami HSAIL kódot generál, majd azt a HSA futtatási környezet és a HSAIL Finalizer megfelelő formában eljuttatja a hardverhez. Az OpenJDK által vezényelt projekt célja, hogy a Java ne veszítse el azt, ami népszerűvé tette, vagyis az egyszerűségét, így a JVM dönt arról, hogy a munkafolyamatot a központi vagy a grafikus vezérlő kapja meg, méghozzá az adott feladat karakterisztikája szerint.

Az Oracle és a HSA a friss előadásokban elmondták, hogy a projekt jól halad. A kompatibilitás is biztosított, így azok a fejlesztők, akik a mostani Java fejlesztőkörnyezet Lambda és Stream API-ját használják automatikusan gyorsulást fognak érezni, ugyanis a meglévő kód a Java 9-ben már a grafikus vezérlő erejét is képes kihasználni, mindenféle kiegészítést vagy optimalizálást mellőzve. Jelenleg programbeállításoktól és teszthardverektől függően, a kód módosítása nélkül, 8-12-szer gyorsabban fut a Lambda és Stream API-t használó Java 8-as NBody példaprogram Java 9 alatt. Az Oracle szerint az elkövetkező egy évben esedékes optimalizálással az eredmények még javulni fognak, de a jelenleg elérhető gyorsulással a fejlesztők már most elégedettek. Persze ebben nagy szerepe van annak, hogy a már megírt Java 8-as Lambda és Stream API-t használó programokat nem kell módosítani ahhoz, hogy kihasználják a megfelelő grafikus vezérlők képességeit.

Java 9 és az új JVM HSA támogatással
Java 9 és az új JVM HSA támogatással

Az Oracle, az OpenJDK és a HSA alapítvány tagjai már a következő lépésen dolgoznak. A Java 9 után a JVM-alapú nyelvekhez és keretrendszerekhez érkezik a HSA támogatása. Ez a Truffle nevű AST (absztrakt szintaxisfa) továbbfejlesztésében fog megvalósulni. Ennek hála a grafikus vezérlővel történő gyorsítása támogathatóvá válik az olyan nyelvek esetében, mint a JavaScript, az R, a Ruby és a Python. A félreértések elkerülése végett egyik nyelv sem kapcsolódik szorosan a Java 9-hez, tehát a HSA támogatása elsődlegesen a JVM újításaival, ezen belül is a HSAIL kódot generáló GRAAL fordító megjelenésével válik lehetségessé. Ehhez viszont ki kell egészíteni a jelenlegi Truffle AST-t, amin jelenleg is dolgozik az Oracle.

Az új Truffle és az új JVM HSA támogatással
Az új Truffle és az új JVM HSA támogatással

A fenti projektek célja, hogy a Java és a JVM (Java Virtual Machine), azaz Java virtuális gép feljavítása és kiterjesztése. Egyrészt a sebesség rendkívül fontos tényezővé vált, így a Lambda és Stream API-n keresztül megoldható az adatpárhuzamos programozás. Ebből a GRAAL többféle utasításarchitektúrára (AMD64 és SPARC) vagy virtuális utasításarchitektúrára (PTX és HSAIL) tud, illetve tud majd fordítani. Ezeken keresztül az összes hardver szinte összes képessége elérhető, és a kód gyors lesz, ráadásul nem szükségesek specifikus optimalizációk sem, vagyis egyetlen forrásból kiszolgálható szinte minden termék. A kiterjesztésre vonatkozóan a Truffle AST érkező fejlesztései lényegesek, hiszen JavaScript, R, Ruby és Python alól is elérhetők a GRAAL által támogatott utasításarchitektúrák vagy virtuális utasításarchitektúrák, ezzel szintén javul az egyes JVM-alapú nyelvek sebessége, ugyanis jól kihasználhatóvá válik az adatpárhuzamos programozás. Ezúttal is egyetlen forrásból, szinte minden termékkel biztosított kompatibilitás mellett.

Azóta történt

Előzmények

Hirdetés