Predstavljena specifikacija OpenCL 3.0

Koncern Khronos, odgovoren za razvoj specifikacij družine OpenGL, Vulkan in OpenCL, napovedal o zaključku razvoja specifikacij OpenCL 3.0, ki opredeljujejo API-je in razširitve jezika C za organizacijo vzporednega računalništva na več platformah z uporabo večjedrnih CPU-jev, GPE-jev, FPGA-jev, DSP-jev in drugih specializiranih čipov, ki se uporabljajo v superračunalnikih in strežnikih v oblaku do čipov, ki jih je mogoče najti v mobilnih napravah in vgrajeni tehnologiji. Standard OpenCL je popolnoma odprt in ne zahteva licenčnine. Pri delu na standardu so sodelovala podjetja, kot so IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments in Toshiba.

V trenutni fazi je specifikaciji dodeljen začasni status, kar pomeni možnost izboljšave na podlagi povratnih informacij, poslanih prek GitHub. Ko bodo pripombe upoštevane, bo specifikacija dokončana in objavljen bo končni testni paket za testiranje združljivosti obstoječih izvedb.

Predstavljena specifikacija OpenCL 3.0

Najbolj opazen funkcije OpenCL 3.0:

  • API OpenCL 3.0 zdaj pokriva vse različice OpenCL (1.2, 2.x), ne da bi zagotovil ločene specifikacije za vsako različico. OpenCL 3.0 ponuja možnost razširitve osnovne funkcionalnosti z integracijo dodatnih specifikacij, ki bodo večplastne v obliki možnosti, ne da bi blokirale monolitno naravo OpenCL 1.2/2.X.
  • Samo funkcionalnost, ki je v skladu z OpenCL 1.2, je razglašena za obvezno, vse funkcije, predlagane v specifikacijah OpenCL 2.x, pa so razvrščene kot neobvezne. Ta pristop bo olajšal ustvarjanje izvedb po meri, ki so združljive z OpenCL 3.0, in bo razširil obseg naprav, na katerih je mogoče uporabljati OpenCL 3.0. Na primer, proizvajalci lahko implementirajo podporo za OpenCL 3.0, ne da bi implementirali posebne funkcije OpenCL 2.x. Za dostop do izbirnih jezikovnih funkcij je OpenCL 3.0 dodal sistem testnih poizvedb, ki vam omogoča ovrednotenje podpore posameznih elementov API, kot tudi posebnih makrov.
  • Poenotenje s predhodno izdanimi specifikacijami olajša selitev aplikacij na OpenCL 3.0. Aplikacije OpenCL 1.2 se bodo lahko izvajale na napravah, ki podpirajo OpenCL 3.0 brez sprememb. Aplikacije OpenCL 2.x prav tako ne bodo zahtevale sprememb kode, dokler okolje OpenCL 3.0 zagotavlja zahtevano funkcionalnost (za zagotovitev prihodnje prenosljivosti je aplikacijam OpenCL 2.x priporočljivo dodati testne poizvedbe za oceno podpore za funkcije OpenCL 2.x biti izkoriščen). Razvijalci gonilnikov z implementacijami OpenCL lahko enostavno nadgradijo svoje izdelke na OpenCL 3.0, dodajo samo obdelavo poizvedb za določene klice API-ja in postopoma povečajo funkcionalnost skozi čas.
  • Specifikacija OpenCL 3.0 je usklajena z okoljem, razširitvami in specifikacijami generične vmesne predstavitve SPIR-V, ki jo uporablja tudi Vulkan API. Podpora za specifikacijo SPIR-V 1.3 je vključena v jedro OpenCL 3.0 kot izbirna funkcija. Z uporabo vmesne reprezentacije SPIR-V za računalniška jedra je dodana podpora za delovanje s podskupinami.
    Predstavljena specifikacija OpenCL 3.0

  • Dodana podpora za razširitev za izvajanje asinhronih operacij DMA (Asynchronous DMA), podprta v DSP podobnih čipih z neposrednim dostopom do pomnilnika. Asinhroni DMA omogoča uporabo transakcij DMA za asinhroni prenos podatkov med globalnim in lokalnim pomnilnikom, vzporedno z izračuni ali drugimi operacijami prenosa podatkov.
  • Specifikacija razširitev vzporednega programiranja C je bila posodobljena na različica 3.0, razvoj jezikovnih razširitev OpenCL za C++ pa je bil prekinjen v korist projekta »C++ za OpenCL«. C++ za OpenCL je prevajalnik, ki temelji na Clang/LLVM in oddajanje Jedra C++ in OpenCL v vmesno predstavitev SPIR-V ali nizkonivojsko strojno kodo. Z oddajanjem SPIR-V organizira tudi sestavljanje aplikacij C++ s pomočjo knjižnice predlog SYCL, ki poenostavlja ustvarjanje vzporednih aplikacij.

    Predstavljena specifikacija OpenCL 3.0

  • Predlagan je bil prevajalnik za oddajanje OpenCL prek API-ja Vulkan clspv, ki pretvori jedra OpenCL v predstavitev Vulkan SPIR-V, in plast clvk da omogočite API-ju OpenCL, da deluje na vrhu Vulkana.

    Predstavljena specifikacija OpenCL 3.0

Vir: opennet.ru

Dodaj komentar