SYCL - SYCL

SYKL
Logo SYCL
Původní autoři Skupina Khronos
Vývojáři Skupina Khronos
První vydání Březen 2014 ( 2014-03 )
Stabilní uvolnění
Revize 2020 3 / 4. března 2021 ; před 5 měsíci ( 2021-03-04 )
Operační systém Cross-platform
Plošina Cross-platform
Typ Programovací jazyk na vysoké úrovni
webová stránka www .khronos .org / sycl / sycl .tech

SYCL je programovací model vyšší úrovně, který má zlepšit produktivitu programování na různých hardwarových akcelerátorech . Jedná se o jeden zdrojový doménový specifický vestavěný jazyk ( DSEL ) založený na čistém C ++ 17 . Jedná se o standard vyvinutý společností Khronos Group , oznámený v březnu 2014.

Původ jména

SYCL (vyslovuje se „srp“) je jméno, nikoli zkratka . Zejména vývojáři SYCL objasnili, že název neobsahuje žádný odkaz na OpenCL .

Účel

SYCL je bezplatná, multiplatformní abstrakční vrstva, která staví na základních konceptech, přenositelnosti a efektivitě inspirovaných OpenCL a umožňuje kód pro heterogenní procesory zapisovat stylem „jednoho zdroje“ pomocí zcela standardního jazyka C ++ . SYCL umožňuje vývoj z jednoho zdroje, kde funkce šablon C ++ mohou obsahovat kód hostitele i zařízení pro konstrukci složitých algoritmů využívajících hardwarové akcelerátory a jejich opětovné použití v celém zdrojovém kódu na různých typech dat.

Zatímco standard SYCL začínal jako podskupina programovacího modelu vyšší úrovně pracovní skupiny OpenCL a byl původně vyvinut pro použití s OpenCL a SPIR , SYCL je pracovní skupina Khronos Group nezávislá na pracovní skupině OpenCL od 20. září 2019 a začíná s SYCL 2020 byl SYCL zobecněn jako obecnější heterogenní rámec schopný cílit na jiné systémy. To je nyní možné s konceptem generického backendu, který cílí na jakékoli akcelerační API a zároveň umožňuje plnou interoperabilitu s cílovým API , jako je použití stávajících nativních knihoven k dosažení maximálního výkonu spolu se zjednodušením programovacího úsilí. Implementace hipSYCL se například zaměřuje na ROCm a CUDA prostřednictvím HIP AMD od různých dodavatelů.

Verze

SYCL byl představen na GDC v březnu 2014 s prozatímní verzí 1.2, poté byla konečná verze SYCL 1.2 představena na IWOCL 2015 v květnu 2015.

Nejnovější verzí pro předchozí řadu SYCL 1.2.1 je revize 7 SYCL 1.2.1, která byla zveřejněna 27. dubna 2020 (první verze byla zveřejněna 6. prosince 2017).

Prozatímní SYCL 2.2 byl představen na IWOCL 2016 v květnu 2016 s cílem C ++ 14 a OpenCL 2.2. Výbor SYCL však raději tuto verzi nedokončil a posunul se směrem k flexibilnější specifikaci SYCL, která by řešila rostoucí rozmanitost současných hardwarových akcelerátorů , včetně motorů umělé inteligence , což vedlo k SYCL 2020.

Poslední verzí je revize 2 SYCL 2020, která byla publikována 9. února 2021, s přihlédnutím ke zpětné vazbě od uživatelů a implementátorů na revizi 1 prozatímní specifikace SYCL 2020 vydanou 30. června 2020. Podpora C ++ 17 a OpenCL 3.0 jsou hlavní cíle této verze. Sjednocená sdílená paměť (USM) je jednou z hlavních funkcí pro GPU s podporou OpenCL a CUDA.

Na IWOCL 2021 byl představen plán. DPC ++, ComputeCpp, triSYCL, hipSYCL a neoSYCL jsou hlavní implementace SYCL. Next Target in development is support of C ++ 20 in future SYCL 202x.

Implementace

  • DPC ++: (dataallel C ++) je open source projekt společnosti Intel, který má zavést SYCL pro LLVM a oneAPI. C ++ 17 a části C ++ 20 se SYCL 2020 jsou základem tohoto rámce kompilátoru.
  • ComputeCpp: Rámec vyhovující verzi Codeplay společnosti SYCL 1.2.1 s komunitní verzí
  • HipSYCL: neúplná podpora 1.2.1 bez vazby a obrázků OpenCL, částečně SYCL 2020, podporuje RocM (AMD), CUDA (Nvidia), OpenMP (CPU) a Level Zero (Intel). Aktuální verze je 0.9.1 v březnu 2021.
  • triSYCL: založené na OpenCL ++ OpenCL 2.2, pomalý vývoj, neúplné, částečně C ++ 17
  • neoSYCL: SYCL 1.2.1 téměř dokončen, pro hpc SX-Aurora Tsubasa, žádné specifické funkce OpenCL, jako je podpora obrázků
  • SYCL-gtx: podpora C ++ 11 pro OpenCL 1.2+, zdaleka nedokončeno, žádný skutečný vývoj
  • SYLKAN je implementace zařízení SYCL do zařízení Vulkan v experimentálním stavu.

Software

  • Gromacs : SYCL 2020 je součástí Gromacs verze 2021.
  • použití v automobilovém průmyslu pro autonomní řízení s podporou ISO 26262 .

Návody

V průvodcích ComputeCpp SYCL je několik návodů.

Licence

Zdrojové soubory pro vytváření specifikace, jako jsou Makefiles a některé skripty, hlavičky SYCL a ukázky kódu SYCL, jsou pod licencí Apache 2.0. Podrobnosti o licenci jsou na: https://www.apache.org/licenses/LICENSE-2.0.html

Porovnání s jinými API

Otevřené standardy SYCL a OpenCL jsou podobné CUDA specifických pro dodavatele od společnosti Nvidia .

Ve sféře skupiny Khronos jsou OpenCL a Vulkan nízkoúrovňové API, které není jediným zdrojem, a SYCL je integrovaný jazyk na úrovni jedné domény s jedním zdrojem C ++ .

Pro srovnání, verze CUDA s integrovanou jazykovou verzí CUDA pro jeden zdroj C ++ , která se ve skutečnosti jmenuje „ CUDA Runtime API “, je poněkud podobná SYCL. Ale ve skutečnosti existuje méně známá non-source verze CUDA, která se nazývá „ CUDA Driver API “, podobná OpenCL a používá se například samotnou implementací CUDA Runtime API .

SYCL rozšiřuje funkce C ++ AMP, které programátorovi ulehčují explicitně přenášet data mezi hostitelem a zařízeními pomocí vyrovnávacích pamětí a přístupových prvků , oproti opozici vůči CUDA (před zavedením sjednocené paměti v CUDA 6). Ale počínaje SYCL 2020 je také možné použít USM namísto vyrovnávacích pamětí a přístupových objektů k použití modelu programování nižší úrovně podobného Unified Memory v CUDA .

SYCL je na vyšší úrovni než C ++ AMP a CUDA, protože nepotřebujete vytvářet graf explicitní závislosti mezi všemi jádry a poskytuje vám automatické asynchronní plánování jader s překrytím komunikace a výpočtu. To vše se provádí pomocí konceptu přistupujících objektů, aniž by byla vyžadována podpora kompilátoru.

Na rozdíl od C ++ AMP a CUDA je SYCL čistý C ++ DSEL bez jakéhokoli rozšíření C ++ , což umožňuje základní implementaci procesoru spoléhající se na čistý běh bez jakéhokoli konkrétního kompilátoru. To je velmi užitečné pro ladění aplikace nebo pro vytváření prototypů pro novou architekturu, aniž by byla ještě k dispozici architektura a kompilátor.

Implementace hipSYCL přidává programování vyšší úrovně SYCL do CUDA a HIP .

SYCL má mnoho podobností s programovacím modelem Kokkosu , včetně použití neprůhledných vícerozměrných maticových objektů (vyrovnávací paměti SYCL a pole Kokkos), vícerozměrných rozsahů pro paralelní provádění a omezení (přidáno v SYCL 2020). V reakci na zpětnou vazbu od komunity Kokkos byla přidána řada funkcí v SYCL 2020.

Viz také

Reference

externí odkazy