Muropaketti.com

Khronos julkaisi OpenGL 4.4:n lopullisen ja OpenCL SPIR 1.2:n ja OpenCL 2.0:n ennakkoversiot

23.7.2013

Khronos Group on julkaissut päivityksiä ylläpitääminsä rajapintoihin SIGGRAPH -konferenssissa. Ensimmäinen päivityksen saanut rajapinta on OpenGL. OpenGL 4.4:n suurimmaksi uudistukseksi kerrotaan uusi puskurimuisti (ARB_buffer_storage), joka on suunnattu APU-piireille (Accelerated Processing Unit), järjestelmäpiireille ja muille piireille, joissa kaksi eri prosessoria käyttävät yhteistä muistia, osoiteavaruutta tai muita jaettuja resursseja. Ominaisuus antaa kehittäjälle esimerkiksi mahdollisuuden hallita, mihin olemassa olevista muistiavaruuksista puskurimuisti sijoitetaan.

Muita OpenGL 4.4:n uudistuksia ovat muun muassa ARB_sparse_textures, ARB_bindless_textures ja GLSL:n (OpenGL Shader Language) ARB_enhanced_layouts. ARB_sparse_textures- ja ARB_bindless_textures-laajennokset tuovat AMD:n HD 7000 -sarjasta tutun Partially Resident Textures -ominaisuuden ja NVIDIAn GTX 600 -sarjasta tutun Bindless Textures -ominaisuuden OpenGL:n standardilaajennosten piiriin. Aiemmin nämä ominaisuudet olivat käytettävissä vain valmistajien omien OpenGL-laajennosten kautta. ARB_enhanced_layouts puolestaan mahdollistaa datan sommittelun optimoimisen tehokkaammaksi varjostinohjelmissa.

OpenCL SPIR 1.2 (Standard Portable Intermediate Representation) on OpenCL:aan luotu laajennus, jonka tarkoitus on paikata rajapintaa käyttävien ohjelmien julkaisuun liittyviä puutteita. Toisin kuin OpenGL 4.4, OpenCL SPIR 1.2 on vasta alustava versio tulevasta standardista, joka on vielä avoin palautteelle ja sitä kautta muutoksille. Lopullinen standardi aiotaan julkaista puolen vuoden kuluttua.

Aiemmin OpenCL-kehittäjällä oli vain kaksi vaihtoehtoa ohjelman julkaisussa. C-kielellä julkaistuna kehittäjä joutui suoraan julkaisemaan OpenCL-ohjelmansa lähdekoodin kaikkien nähtäville, kun taas jokaiselle laiteperheelle kääntäminen erikseen vaatii huomattavaa panostusta laajan laitekirjon vuoksi, ja jättää tulevat laiteperheet vaille suoraa tukea. SPIR:n tarkoitus on paikata näiden kahden vaihtoehdon väliin jäävä aukko. Kehittäjä voi sen myötä kääntää C-kielellä kirjoitetun OpenCL-ohjelmansa SPIR-formaattiin, jolloin lähdekoodi ei jää kaikkien nähtäville. Käytettäessä SPIR-formaattia, kunkin laitteen ajurit hoitavat lopullisen kääntämisen ohjelman suorittavalle laitteelle.

OpenCL 2.0 on SPIR 1.2:n tapaan vasta alustava versio standardista, ja on siten avoin muutoksille tarvittaessa. Lopullinen versio standardista aiotaan julkaista puolen vuoden kuluttua, mikäli kaikki menee suunnitelmien mukaan. Suurimmat uudistukset OpenCL 2.0:ssa keskittyvät HSA:an (Heterogenous System Architecture) ja HSA:n kaltaisiin järjestelmiin, joissa prosessori ja grafiikkaydin voivat jakaa muistin, osoittimia ja välimuistin sekä muita resursseja.

Suurin yksittäinen uudistus OpenCL 2.0:ssa on tuki jaetulle virtuaalimuistille. Jaettu virtuaalimuisti antaa ohjelman kerneleille mahdollisuuden jakaa muistiosoittimia, suorittaa tehtäviä ja käyttää dataa ilman, että niitä tarvitsisi erikseen siirtää pääohjelmaa ajavan prosessorin ja kerneleitä suorittavan laitteen välillä. Vaikka tehtävien jakaminen sen suorittamiseen sopiville laitteille jää edelleen kehittäjän harteille, jaettu virtuaalimuisti mahdollistaa huomattavasti nopeamman ohjelmien suorittamisen.

Muita OpenCL 2.0:n uudistuksia on muun muassa geneerinen osoiteavaruus, joka poistaa tarpeen tehdä jokaisesta toiminnosta omat versiot nimetyille osoiteavaruuksille, sekä dynaaminen rinnakkaistuvuus. Dynaaminen rinnakkaistuvuus esiteltiin ensimmäistä kertaa NVIDIAn Tesla K20 -korttien yhteydessä. Ominaisuus antaa ohjelman kerneleille mahdollisuuden synnyttää uusia kerneleitä ilman pääohjelman väliintuloa. Lisäksi OpenCL 2.0:aan on lisätty ominaisuuksia, joilla OpenGL voi hyödyntää OpenCL:ää useammissa tilanteissa kuin aiemmin.

AnandTech, Khronos @ SIGGRAPH 2013: OpenGL 4.4, OpenCL 2.0, & OpenCL 1.2 SPIR Announced

Khronos Group, OpenGL 4.4 -lehdistötiedote

Khronos Group, OpenCL 2.0 -lehdistötiedote

Petrus Laine

 

Takaisin ylös