Konzorcium Khronos, které se zabývá vývojem specifikací rodiny OpenGL, Vulkan a OpenCL, o vydání finálních specifikací , které definují API a rozšíření jazyka C pro organizaci kros-platformní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ých technologiích. Standard OpenCL je zcela otevřený a nevyžaduje licenční poplatky.
Současně otevřený OpenCL SDK s nástroji, příklady, dokumentací, hlavičkovými soubory, obálkami pro C++ a C-knihovnami pro vývoj aplikací, které jsou kompatibilní s OpenCL 3.0. Také počáteční implementace OpenCL 3.0 na bázi kompilátoru Clang, která je ve fázi revize patchů pro začlenění do hlavního sestavení LLVM. Na práci na standardu se podílely společnosti jako IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments a Toshiba.
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
