Pristatyta OpenCL 3.0 specifikacija

Khronos koncernas, atsakingas už OpenGL, Vulkan ir OpenCL šeimos specifikacijų kūrimą, paskelbė baigus kurti OpenCL 3.0 specifikacijas, kurios apibrėžia API ir C kalbos plėtinius, skirtus organizuoti kelių platformų lygiagretųjį skaičiavimą, naudojant kelių branduolių CPU, GPU, FPGA, DSP ir kitus specializuotus lustus iš tų, kurie naudojami superkompiuteriuose ir debesų serveriuose lustams, kuriuos galima rasti mobiliuosiuose įrenginiuose ir įterptosiose technologijose. OpenCL standartas yra visiškai atviras ir nereikalauja licencijos mokesčių. Standarto kūrimo darbe dalyvavo tokios kompanijos kaip IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ir Toshiba.

Dabartiniame etape specifikacijai buvo suteiktas laikinas statusas, o tai reiškia galimybę ją tobulinti remiantis atsiliepimais, išsiųstais per GitHub. Kai bus atsižvelgta į pastabas, specifikacija bus baigta rengti ir bus paskelbtas galutinis bandymų rinkinys, kuriame bus patikrintas esamų diegimų suderinamumas.

Pristatyta OpenCL 3.0 specifikacija

Žymiausias Įranga „OpenCL 3.0“:

  • OpenCL 3.0 API dabar apima visas OpenCL versijas (1.2, 2.x), nepateikdama atskirų specifikacijų kiekvienai versijai. „OpenCL 3.0“ suteikia galimybę išplėsti pagrindines funkcijas, integruojant papildomas specifikacijas, kurios bus išdėstytos parinkčių pavidalu, neužkertant kelią monolitiniam OpenCL 1.2/2.X pobūdžiui.
  • Privalomas yra tik tas funkcionalumas, kuris atitinka OpenCL 1.2, o visos OpenCL 2.x specifikacijose siūlomos funkcijos yra neprivalomos. Šis metodas leis lengviau kurti pasirinktinius diegimus, suderinamus su OpenCL 3.0, ir išplės įrenginių, kuriuose galima naudoti OpenCL 3.0, asortimentą. Pavyzdžiui, gamintojai gali įdiegti OpenCL 3.0 palaikymą neįdiegę konkrečių OpenCL 2.x funkcijų. Norint pasiekti pasirenkamas kalbos funkcijas, OpenCL 3.0 pridėjo bandomųjų užklausų sistemą, kuri leidžia įvertinti atskirų API elementų palaikymą, taip pat specialias makrokomandas.
  • Suvienodinimas su anksčiau išleistomis specifikacijomis leidžia lengviau perkelti programas į OpenCL 3.0. OpenCL 1.2 programos galės veikti įrenginiuose, palaikančiuose OpenCL 3.0 be pakeitimų. „OpenCL 2.x“ programoms taip pat nereikės keisti kodo, jei tik „OpenCL 3.0“ aplinka suteiks reikiamą funkcionalumą (siekiant užtikrinti perkeliamumą ateityje, „OpenCL 2.x“ programoms rekomenduojama pridėti bandomąsias užklausas, kad būtų galima įvertinti „OpenCL 2.x“ funkcijų palaikymą naudojama). Tvarkyklių kūrėjai su OpenCL diegimu gali lengvai atnaujinti savo produktus į OpenCL 3.0, pridedant tik užklausų apdorojimą tam tikriems API iškvietimams ir laikui bėgant palaipsniui didinti funkcionalumą.
  • „OpenCL 3.0“ specifikacija suderinta su SPIR-V bendrojo tarpinio atvaizdavimo aplinka, plėtiniais ir specifikacijomis, kurias taip pat naudoja „Vulkan“ API. SPIR-V 1.3 specifikacijos palaikymas yra įtrauktas į pagrindinį OpenCL 3.0 kaip pasirenkama funkcija. Naudojant tarpinį atvaizdavimą SPIR-V buvo pridėtas palaikymas operacijoms su pogrupiais skaičiavimo branduoliams.
    Pristatyta OpenCL 3.0 specifikacija

  • Pridėtas plėtinio, skirto asinchroninėms DMA operacijoms atlikti (Asynchronous DMA), palaikymas, palaikomas į DSP panašiuose lustuose su tiesiogine prieiga prie atminties. Asinchroninis DMA leidžia naudoti DMA operacijas duomenims perduoti tarp pasaulinės ir vietinės atminties asinchroniškai, lygiagrečiai su skaičiavimais ar kitomis duomenų perdavimo operacijomis.
  • C Parallel Programming Extensions specifikacija buvo atnaujinta į 3.0 versija, o „OpenCL“ kalbos plėtinių, skirtų C++, kūrimas buvo nutrauktas projekto „C++ for OpenCL“ naudai. C++ for OpenCL yra kompiliatorius, pagrįstas Clang/LLVM ir transliacija C++ ir OpenCL C branduoliai į SPIR-V tarpinį atvaizdavimą arba žemo lygio mašinos kodą. Transliuodamas SPIR-V taip pat organizuoja C++ programų surinkimą naudodamas SYCL šablonų biblioteką, kuri supaprastina lygiagrečių programų kūrimą.

    Pristatyta OpenCL 3.0 specifikacija

  • Buvo pasiūlytas kompiliatorius, skirtas OpenCL transliuoti per Vulkan API clspv, kuris konvertuoja OpenCL branduolius į Vulkan SPIR-V atvaizdą ir sluoksnį clvk kad OpenCL API veiktų su Vulkan.

    Pristatyta OpenCL 3.0 specifikacija

Šaltinis: opennet.ru

Добавить комментарий