OpenCL 3.0 -spesifikaatio esitelty

Khronos-konserni, joka vastaa OpenGL-, Vulkan- ja OpenCL-perhemäärittelyjen kehittämisestä, ilmoitti OpenCL 3.0 -spesifikaatioiden kehittämisen valmistumisesta, jotka määrittelevät C-kielen API:t ja laajennukset eri alustojen välisen rinnakkaislaskennan järjestämiseen käyttämällä moniytimiä suorittimia, GPU:ita, FPGA:ita, DSP:itä ja muita erikoistuneita siruja supertietokoneissa ja pilvipalvelimissa käytettävistä siruihin, joita löytyy mobiililaitteista ja sulautetusta tekniikasta. OpenCL-standardi on täysin avoin eikä vaadi lisenssimaksuja. Standardin työhön osallistuivat muun muassa IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ja Toshiba.

Tällä hetkellä spesifikaatiolle on annettu väliaikainen tila, mikä mahdollistaa tarkennusmahdollisuuden sähköpostitse lähetetyn palautteen perusteella. GitHub. Kun kommentit on otettu huomioon, spesifikaatio viimeistellään ja lopullinen testipaketti julkaistaan ​​olemassa olevien toteutusten yhteensopivuuden testaamiseksi.

OpenCL 3.0 -spesifikaatio esitelty

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.
    OpenCL 3.0 -spesifikaatio esitelty

  • 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.

    OpenCL 3.0 -spesifikaatio esitelty

  • 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ä.

    OpenCL 3.0 -spesifikaatio esitelty

Lähde: opennet.ru

Lisää kommentti