
Khronos Group hallinnoi muun muassa useita merkittäviä avoimen lähdekoodin rajapintoja sekä grafiikkaan että laskentaan. Nyt yhtiö on saanut valmiiksi alustavat ominaisuudet uuden sukupolven laskentarajapinnalleen.
OpenCL 3.0 on todella merkittävän tason muutos ja omalla tavallaan myös askel taakse. Uusi rajapinta tekee OpenCL 1.2:sta oletustason, mitä kaikkien on tuettava, ja kaikesta siitä ylöspäin valinnaista. OpenCL 2.X -versioiden ominaisuudet löytyvät myös uudesta 3.0-versiosta, mutta ne on muutettu valinnaisiksi optioiksi, joiden mahdollisen tuen sovellus voi tarkistaa nopeasti. Myös itse 3.0:n omat uudet ominaisuudet ovat nyt valinnaisia. Aiemmin tiettyä OpenCL-versiota tukevien laitteiden oli tuettava kaikkia sen version ominaisuuksia riippumatta siitä, olisiko sen tyyppisellä laitteella mitään käyttöä niille.
Rajapinnan uudet linjat nähdään parhaana ratkaisuna saada ala hyödyntämään uusia ominaisuuksia. Aiemmin valmistajat ovat saattaneet rajoittaa tuen esimerkiksi 1.2-tasolle, vaikka 2.X sisältäisi hyödyllisiä uudistuksia, koska kyseisen laitteen kannalta täysin hyödyttömien muiden 2.X-ominaisuuksien sisällyttäminen tulisi liian kalliiksi. Toisaalta taas uusi ratkaisu saattaa rajoittaa uudempien ominaisuuksien tukea sovelluspuolella, mikäli sovelluksen halutaan toimivan useilla eri laitteilla. OpenCL 3.0 -kehittäjät voivat luottaa kaikkien tukevan vain 1.2-tasoa ja siten punnitsemaan onko uudempien ominaisuuksien tukemisesta saatava hyöty vaivan arvoista.
Nyt julkaistu OpenCL 3.0 on vielä virallisesti alustava julkaisu, eli sen ominaisuuksia saatetaan palautteen vuoksi hienosäätää ennen lopullista lukkoon lyömistä. Rajapinnasta syvemmin kiinnostuneille suosittelemme Khronoksen tiedotteen ja AnandTechin artikkelin lukua.
Taisi olla tosiaan aika heikkoa OpenCL 2.x tuki?
Mielestäni tämä pikemminkin selkeyttää, vaikken mitään OpenCLstä tiedä.
En nyt ymmärrä, miten liittyy USB 3:een tai HDMI hin?
Enkä myöskään sitä, miten selkeyttää tilannetta…
Kyllähän se olisi mielestäni ollut paljon selkeämpää, että
V 1.2: Tietyt ominaisuudet.
V2 : tietyt ominaisuudet.
V3 Tietyt ominaisuudet.
Nyt V3=V1,2 + ehkä mahdollisesti yksi tai useampi ominaisuus.
V2 Taas on määritelty, mitä kaikkea sisältää.
Voi siis olla V1.2 ja V3 yhteensopiva, mutta ei V2.
Maksaa extraa siinä mielessä, että pitää rakentaa siru joka osaa tehdä ne hommat ja ajurit sille.
jaa..
Tuo tukee V3:sta.. Tukeekos se tätä, tuota ja sitä ominasuutta, ne tarvitsisin.. Katsotaampa tästä listasta, joka löytyy, kun lataa laitteen datsheetin, sivulta 75 näköjään… juu, eipä tue tuot kolmatta ominaisuutta… No katsompa sitten toista laitetta.. mistäs löydän sen tukemat ominaisuudet….
Ei minusta mitenkään helpolta ja yksinkertaiselta kuulosta..
Tietysti voidaan mennä siihen, että ohjelman tekijä ilmoittaa, että ohjelma toimii tietyillä korteilla ja muiden toimivuutta ei taata, milääntavoin..
VS:
Ohjelma vaatii V2 tuen..
Näyttis tukee V2:sta
-> Toimii.
Enitenhän tässä hyötyy piirivalmistajat, koska jotkut OpenCL-ominaisuudet ovat sellaisia ettei niitä yksinkertaisesti ikinä tulla tarvitsemaan sen piirin kohdemarkkinoilla, mutta samaan speksiin voi sisältyä oikeinkin hyödyllisiä ominaisuuksia. Tällöin siruvalmistajalle riittää, että tuetaan niitä itselle tarpeellisia ominaisuuksia.
Sovellusten kannalta voidaan rakentaa 1.2-perustaso ja siihen päälle sitten laajennosmaisesti uusia ominaisuuksia tarpeiden mukaan, softa pyörii sitten laitteen ominaisuuksien mukaan 1.2 tai 1.2 + laajennoksia tasolla. Jos sovellus vaatii tiettyjä ominaisuuksia, se sitten ilmoittaa vaativansa ne ja yksinkertaisesti ei toimi muilla.
Ehkä tällä saadaan samalla poistettua jarruja, missä rauta pidättelee softaa (esimerkiksi NVIDIAhan ei tue virallisesti kuin OpenCL 1.2:ta, OpenCL 2.0 -tuki on kokeellinen ja sisältää joitain rajoituksia minkä vuoksi eivät voi mainostaa tukevansa 2.0:aa)
Perustaso tulee päivittymään tulevaisuudessa sen perusteella mitä koetaan tarpeellisiksi liitettäväksi osaksi perusspeksiä, kuten Vulkanilla jne
Tosin JOS sitä käytettäisiin, niin ilmeisesti kolmannen osapuolen pitäisi sitten määritellä esim
OGL3 basic game, OGL3 advanced game jne setit, joissa olisi tarkkaan määritelty vaaditut ominaisuudet. Sitten riittäisi esim pelissä maininta: Vaatii OGL3ag tuen, jolloin voisi katsoa, tukeeko oma rauta sitä. Voisi esim julkaista testit, jotka käyttävät noita kaikkia ominaisuuksia, valinnan mukaan ja visuaalisen jäljen lisäksi ilmoittaisivat "pass" /"fail", jos toimii / ei toimi.
Tuollaisenaan tuo on naurettava sotku, johon ei kannata kenenkään puuttua.
Nyt meni puurot ja vellit sekaisin, uutinen koskee OpenCL:ää, OpenGL:n kanssa mennään jo nelosessa (tosin Vulkan on kovaa vauhtia korvaamassa sitä toki).
OpenCL, ei OpenGL, ja kyllä sitä käytetään laajasti.
OpenCL:ää hyödyntävät pelit voi laskea sormilla. Ei sitä ole pelejä varten tehty.
Nyt on tainnut mennä jotain pahasti sekaisin.
Miten joku jota ei ennen ole käytetty yhtään voi käydä "harvinaisemmaksi" ?
Juu, itsekin olen suunnitellut pari signaalinkäsittely-ydintä jotka on tarkoitettu OpenCLllä ohjelmoitaviksi.
LordCore: Energy-Efficient OpenCL-Programmable Software-Defined Radio Coprocessor – IEEE Journals & Magazine
Turbo decoding on tailored OpenCL processor – IEEE Conference Publication
Ja tosiaan joissain tilanteissa OpenCL voi olla ihan kätevä tapa saada myös monta ydintä ja SIMD-käskykannat (SSE/AVX/AVX-512) melko optimaalisesti käyttöön vaikka koodia ajaisi CPUlla.