Zveřejněny konečné specifikace OpenCL 3.0

Koncern Khronos, zodpovědný za vývoj specifikací rodiny OpenGL, Vulkan a OpenCL, oznámeno o zveřejnění konečných specifikací OpenCL 3.0, definující API a rozšíření jazyka C pro organizování multiplatformních paralelních výpočtů pomocí vícejádrových CPU, GPU, FPGA, DSP a dalších specializovaných čipů, od těch používaných v superpočítačích a cloudových serverech až po čipy, které lze nalézt v mobilních zařízeních a vestavěná technologie. Standard OpenCL je zcela otevřený a nevyžaduje licenční poplatky.

Zároveň publikováno otevřené OpenCL SDK s nástroji, příklady, dokumentací, hlavičkovými soubory, vazbami C++ a knihovnami C pro vývoj aplikací kompatibilních s OpenCL 3.0. Taky zastoupená počáteční implementace OpenCL 3.0 založená na kompilátoru Clang, který je ve fázi revize oprav pro zahrnutí do hlavní struktury 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.

Zveřejněny konečné specifikace OpenCL 3.0

Nejpozoruhodnější Rysy OpenCL 3.0:

  • OpenCL 3.0 API nyní pokrývá všechny verze OpenCL (1.2, 2.x), aniž by pro každou verzi poskytovalo samostatné specifikace. OpenCL 3.0 poskytuje možnost rozšířit základní funkčnost prostřednictvím integrace dalších specifikací, které budou vrstveny ve formě možností, aniž by blokovaly monolitický charakter OpenCL 1.2/2.X.
  • Pouze funkce, které jsou v souladu s OpenCL 1.2, jsou deklarovány jako povinné a všechny funkce navržené ve specifikacích OpenCL 2.x jsou klasifikovány jako volitelné. Tento přístup usnadní vytváření vlastních implementací, které jsou kompatibilní s OpenCL 3.0, a rozšíří řadu zařízení, na kterých lze OpenCL 3.0 používat. Výrobci mohou například implementovat podporu OpenCL 3.0 bez implementace specifických funkcí OpenCL 2.x. Pro přístup k volitelným jazykovým funkcím přidal OpenCL 3.0 systém testovacích dotazů, které umožňují vyhodnotit podporu jednotlivých prvků API a také speciálních maker.
  • Sjednocení s dříve vydanými specifikacemi usnadňuje migraci aplikací na OpenCL 3.0. Aplikace OpenCL 1.2 budou moci běžet na zařízeních podporujících OpenCL 3.0 bez úprav. Aplikace OpenCL 2.x také nebudou vyžadovat změny kódu, pokud prostředí OpenCL 3.0 poskytuje požadovanou funkcionalitu (pro zajištění budoucí přenositelnosti se aplikacím OpenCL 2.x doporučuje přidat testovací dotazy pro vyhodnocení podpory funkcí OpenCL 2.x se používá). Vývojáři ovladačů s implementací OpenCL mohou snadno upgradovat své produkty na OpenCL 3.0, přidat pouze zpracování dotazů pro určitá volání API a postupně zvyšovat funkčnost v průběhu času.
  • Specifikace OpenCL 3.0 je v souladu s prostředím, rozšířeními a specifikacemi generické střední reprezentace SPIR-V, kterou také používá Vulkan API. Podpora specifikace SPIR-V 1.3 je součástí jádra OpenCL 3.0 jako volitelná funkce. Prostřednictvím použití mezilehlé reprezentace SPIR-V pro výpočetní jádra byla přidána podpora operací s podskupinami.
    Zveřejněny konečné specifikace OpenCL 3.0

  • Přidána podpora pro rozšíření pro provádění asynchronních DMA operací (Asynchronous DMA), podporované v čipech podobných DSP s přímým přístupem do paměti. Asynchronní DMA umožňuje používat transakce DMA k asynchronnímu přenosu dat mezi globální a lokální pamětí, paralelně s výpočty nebo jinými operacemi přenosu dat.
  • Specifikace C Parallel Programming Extensions byla aktualizována na verze 3.0a vývoj rozšíření jazyka OpenCL pro C++ byl přerušen ve prospěch projektu „C++ for OpenCL“. C++ pro OpenCL je kompilátor založený na Clang/LLVM a vysílání C++ a OpenCL C jádra do SPIR-V střední reprezentace nebo nízkoúrovňového strojového kódu. Prostřednictvím vysílání SPIR-V také organizuje sestavení C++ aplikací pomocí knihovny šablon SYCL, což zjednodušuje tvorbu paralelních aplikací.

    Zveřejněny konečné specifikace OpenCL 3.0

  • Byl navržen kompilátor pro vysílání OpenCL přes Vulkan API clspv, který převádí jádra OpenCL na reprezentaci Vulkan SPIR-V a vrstvu clvk aby OpenCL API fungovalo nad Vulkanem.

    Zveřejněny konečné specifikace OpenCL 3.0

Zdroj: opennet.ru

Přidat komentář