Lopulliset OpenCL 3.0 -spesifikaatiot julkaistu

Khronos-konserni, joka vastaa OpenGL-, Vulkan- ja OpenCL-perhemäärittelyjen kehittämisestä, ilmoitti lopullisten eritelmien julkaisemisen yhteydessä OpenCL 3.0, joka määrittää C-kielen sovellusliittymiä ja laajennuksia eri alustojen rinnakkaislaskennan järjestämiseen käyttämällä moniytimiä suorittimia, GPU:ita, FPGA:ita, DSP:itä ja muita erikoistuneita siruja supertietokoneissa ja pilvipalvelimissa käytetyistä siruista mobiililaitteissa ja sisäänrakennettu tekniikka. OpenCL-standardi on täysin avoin eikä vaadi lisenssimaksuja.

Samanaikaisesti julkaistu avaa OpenCL SDK työkaluilla, esimerkeillä, dokumentaatiolla, otsikkotiedostoilla, C++-sidoksilla ja C-kirjastoilla OpenCL 3.0:n kanssa yhteensopivien sovellusten kehittämiseen. Myös edustaa OpenCL 3.0:n ensimmäinen käyttöönotto Clang-kääntäjän pohjalta, joka on parhaillaan tarkistamassa korjaustiedostoja sisällytettäväksi LLVM:n päärakenteeseen. Standardin työhön osallistuivat muun muassa IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ja Toshiba.

Lopulliset OpenCL 3.0 -spesifikaatiot julkaistu

Merkittävin ominaisuudet OpenCL 3.0:

  • OpenCL 3.0 API kattaa nyt kaikki OpenCL:n versiot (1.2, 2.x) ilman erillisiä määrityksiä jokaiselle versiolle. OpenCL 3.0 tarjoaa mahdollisuuden laajentaa ydintoimintoja integroimalla lisämäärityksiä, jotka kerrostetaan vaihtoehtojen muodossa estämättä OpenCL 1.2/2.X:n monoliittisuutta.
  • Vain OpenCL 1.2:n mukaiset toiminnot on julistettu pakollisiksi, ja kaikki OpenCL 2.x:n spesifikaatioissa ehdotetut ominaisuudet luokitellaan valinnaisiksi. Tämä lähestymistapa helpottaa OpenCL 3.0:n kanssa yhteensopivien mukautettujen toteutusten luomista ja laajentaa laitteiden valikoimaa, joissa OpenCL 3.0:aa voidaan käyttää. Valmistajat voivat esimerkiksi ottaa käyttöön OpenCL 3.0 -tuen ilman erityisiä OpenCL 2.x -ominaisuuksia. Valinnaisten kieliominaisuuksien käyttöä varten OpenCL 3.0 on lisännyt testikyselyjärjestelmän, jonka avulla voit arvioida yksittäisten API-elementtien sekä erityisten makrojen tukea.
  • Yhdistäminen aiemmin julkaistuihin määrityksiin helpottaa sovellusten siirtämistä OpenCL 3.0:aan. OpenCL 1.2 -sovellukset voivat toimia laitteissa, jotka tukevat OpenCL 3.0:aa ilman muutoksia. OpenCL 2.x -sovellukset eivät myöskään vaadi koodin muutoksia, kunhan OpenCL 3.0 -ympäristö tarjoaa tarvittavat toiminnot (tulevan siirrettävyyden varmistamiseksi OpenCL 2.x -sovelluksiin suositellaan lisäämään testikyselyitä OpenCL 2.x -ominaisuuksien tuen arvioimiseksi käytetään). Ohjainten kehittäjät, joilla on OpenCL-toteutuksia, voivat helposti päivittää tuotteensa OpenCL 3.0:aan lisäämällä vain kyselynkäsittelyn tiettyihin API-kutsuihin ja lisätä toimintoja asteittain ajan myötä.
  • OpenCL 3.0 -spesifikaatio on linjassa SPIR-V:n yleisen väliesityksen ympäristön, laajennukset ja spesifikaatiot, jota myös Vulkan API käyttää. SPIR-V 1.3 -spesifikaatioiden tuki sisältyy OpenCL 3.0:n ytimeen valinnaisena ominaisuutena. Väliesityksen avulla SPIR-V laskentaytimiä varten on lisätty tuki alaryhmien kanssa tehtävälle toiminnalle.
    Lopulliset OpenCL 3.0 -spesifikaatiot julkaistu

  • Lisätty tuki laajennukselle asynkronisten DMA-toimintojen suorittamiseen (Asynchronous DMA), jota tuetaan DSP:n kaltaisissa siruissa, joissa on suora pääsy muistiin. Asynkroninen DMA mahdollistaa DMA-tapahtumien käytön tietojen siirtämiseen globaalin ja paikallisen muistin välillä asynkronisesti, samanaikaisesti laskelmien tai muiden tiedonsiirtotoimintojen kanssa.
  • C Parallel Programming Extensions -spesifikaatio on päivitetty versio 3.0, ja OpenCL-kielilaajennusten kehittäminen C++:lle lopetettiin "C++ for OpenCL" -projektin hyväksi. C++ for OpenCL on kääntäjä, joka perustuu Clang/LLVM ja lähetys C++- ja OpenCL C-ytimet SPIR-V-väliesitykseen tai matalan tason konekoodiksi. Lähetyksen kautta SPIR-V järjestää myös C++-sovellusten kokoonpanon käyttämällä SYCL-mallikirjastoa, mikä yksinkertaistaa rinnakkaisten sovellusten luomista.

    Lopulliset OpenCL 3.0 -spesifikaatiot julkaistu

  • OpenCL:n lähettämiseen Vulkan API:n kautta on ehdotettu kääntäjää clspv, joka muuntaa OpenCL-ytimet Vulkan SPIR-V -esitykseen ja kerrokseen clvk jotta OpenCL API toimisi Vulkanin päällä.

    Lopulliset OpenCL 3.0 -spesifikaatiot julkaistu

Lähde: opennet.ru

Lisää kommentti