Konzorcium Khronos, které se zabývá vývojem specifikací rodiny OpenGL, Vulkan a OpenCL, o dokončení vývoje specifikací OpenCL 3.0, které definují API a rozšíření jazyka C pro organizaci multiplatformních paralelních výpočtů s využitím vícejádrových CPU, GPU, FPGA, DSP a dalších specializovaných čipů, od těch, které se používají v superpočítačích a cloudových serverech, až po čipy, které lze nalézt v mobilních zařízeních a vestavěné technice. Standard OpenCL je zcela otevřený a nevyžaduje licenční poplatky. Na práci na standardu se podílely společnosti jako IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments a Toshiba.
V aktuální fázi byla specifikaci přidělena předběžná (provisional) status, což znamená možnost dalšího vylepšení na základě zpětné vazby odeslané prostřednictvím . Jakmile budou připomínky zohledněny, specifikace získá status finální a bude zveřejněna konečná testovací sada pro ověření kompatibility existujících implementací.
Nejvýraznější :
- API OpenCL 3.0 nyní pokrývá všechny verze OpenCL (1.2, 2.x), aniž by poskytovalo oddělené specifikace pro každou verzi. OpenCL 3.0 předpokládá možnost rozšíření základní funkčnosti prostřednictvím integrace dalších specifikací, které budou vrstveny jako volby, aniž by blokovaly monolitní povahu OpenCL 1.2/2.X.
- Povinnou funkcionalitou byla prohlášena pouze funkčnost odpovídající OpenCL 1.2, zatímco všechny možnosti nabízené ve specifikacích OpenCL 2.x jsou považovány za volitelné. Tento přístup usnadní vytváření specializovaných implementací kompatibilních s OpenCL 3.0 a rozšíří spektrum zařízení, na nichž může být OpenCL 3.0 používáno. Například výrobci mohou implementovat podporu OpenCL 3.0, aniž by implementovali jednotlivé vlastnosti OpenCL 2.x. Pro přístup k volitelným vlastnostem jazyka byla v OpenCL 3.0 přidána systém kontrolních dotazů, který umožňuje hodnotit podporu jednotlivých prvků API a také speciální makra.
- Unifikace s dříve vydanými specifikacemi usnadňuje převod aplikací na OpenCL 3.0. Aplikace OpenCL 1.2 budou fungovat na zařízeních podporujících OpenCL 3.0 bez nutnosti jakýchkoli změn. Aplikace OpenCL 2.x také nevyžadují úpravy kódu, ale pokud prostředí OpenCL 3.0 poskytuje potřebnou funkcionalitu (pro zajištění přenositelnosti v budoucnu se aplikacím OpenCL 2.x doporučuje přidat kontrolní dotazy pro posouzení podpory používaných možností OpenCL 2.x). Vývojáři ovladačů s implementacemi OpenCL budou moci snadno aktualizovat své produkty na OpenCL 3.0, když přidají pouze zpracování dotazů na přítomnost určitých API volání, a postupně zvyšovat funkcionalitu.
- Specifikace OpenCL 3.0 byla sladěna s prostředím, rozšířeními a specifikacemi univerzálního meziproduktu SPIR-V, které se také používá v API Vulkan. Podpora specifikace SPIR-V 1.3 byla integrována do jádra OpenCL 3.0 jako volitelná funkcionalita. Prostřednictvím použití meziproduktu byla pro výpočetní jádra přidána podpora operací se skupinami.
- Byla přidána podpora rozšíření pro provádění asynchronních DMA operací (Asynchronous DMA), které jsou podporovány v DSP-podobných čipech s přímým přístupem k paměti. Asynchronous DMA umožňuje využívat transakce DMA pro přenos dat mezi globální a lokální pamětí v asynchronním režimu, paralelně s prováděnými výpočty nebo jinými operacemi přenosu dat.
- Specifikace rozšíření paralelního programování pro jazyk C byla aktualizována na , zatímco rozvoj jazykových rozšíření OpenCL pro C++ byl ukončen ve prospěch projektu „C++ for OpenCL“. C++ for OpenCL je kompilátor založený na Clang/LLVM a jádra na C++ a OpenCL C do meziproduktu SPIR-V nebo nízkoúrovňového strojového kódu. Prostřednictvím převodu do SPIR-V je také organizována kompilace C++ aplikací, které využívají šablonovou knihovnu SYCL, což usnadňuje vytváření paralelních aplikací.
- Pro překlad OpenCL prostřednictvím API Vulkan byly navrženy kompilátory , který převádí jádra OpenCL na reprezentaci Vulkan SPIR-V, a vrstvu , která zajišťuje funkčnost API OpenCL nad Vulkanem.
Zdroj: opennet.ru
