Děkujeme za vaši dotaz! Jeden z našich pracovníků vás brzy kontaktuje.
Děkujeme za rezervaci! Jeden z našich pracovníků vás brzy kontaktuje.
Návrh Školení
Úvod
- Co je OpenCL?
- OpenCL vs CUDA vs SYCL
- Přehled funkcí a architektury OpenCL
- Nastavení vývojového prostředí
Začínáme
- Vytvoření nového projektu OpenCL pomocí Visual Studio Code
- Prozkoumání struktury a souborů projektu
- Sestavování a spouštění programu
- Zobrazení výstupu pomocí printf a fprintf
OpenCL API
- Rozumění roli OpenCL API ve hostitelském programu
- Používání OpenCL API pro získání informací o zařízení a jeho schopnostech
- Používání OpenCL API k vytvoření kontextů, pořadových front, bufferek, jádry a událostí
- Používání OpenCL API ke zpracování příkazů, jako jsou čtení, zápis, kopírování, mapování, odmapování, spuštění a čekání
- Používání OpenCL API pro řešení chyb a výjimek
OpenCL C
- Rozumění roli OpenCL C ve programu zařízení
- Používání OpenCL C k vytvoření jáder, která se spouštějí na zařízení a manipuluje s daty
- Používání OpenCL C datových typů, kvalifikátorů, operátorů a výrazů
- Používání OpenCL C integrovaných funkcí, jako jsou matematické, geometrické, relační atd.
- Používání OpenCL C rozšíření a knihoven, jako jsou atomická operace, obrázek, cl_khr_fp16 atd.
OpenCL Paměťový model
- Rozumění rozdílu mezi hostitelským a zařízením paměťovým modelem
- Používání OpenCL paměťových prostorů, jako jsou globální, lokální, konstantní a privátní
- Používání OpenCL paměťových objektů, jako jsou buffery, obrázky a potrubí
- Používání OpenCL přístupových módů k paměti, jako je pouze pro čtení, pouze pro zápis, pro čtení i zápis atd.
- Používání OpenCL modelu shody paměti a synchronizačních mechanismů
OpenCL Model spouštění
- Rozumění rozdílu mezi hostitelským a zařízením modely spouštění
- Používání OpenCL pracovních položek, pracovních skupin a ND-rangů pro definici paralelismu
- Používání OpenCL funkcí pracovních položek, jako jsou get_global_id, get_local_id, get_group_id atd.
- Používání OpenCL funkcí pracovních skupin, jako je barrier, work_group_reduce, work_group_scan atd.
- Používání OpenCL funkcí zařízení, jako jsou get_num_groups, get_global_size, get_local_size atd.
Ladicí nástroje
- Rozumění běžných chyb a chování programů OpenCL
- Používání ladicího nástroje Visual Studio Code pro kontrolu proměnných, zarážek, volacích zásobníků atd.
- Používání CodeXL pro ladění a analýzu programů OpenCL na zařízeních AMD
- Používání Intel VTune pro ladění a analýzu programů OpenCL na zařízeních Intel
- Používání NVIDIA Nsight pro ladění a analýzu programů OpenCL na zařízeních NVIDIA
Optimalizace
- Rozumění faktorů, které ovlivňují výkon programů OpenCL
- Používání OpenCL vektorových datových typů a technik vektorigaci pro zlepšení aritmetického propustnosti
- Používání OpenCL technik rozbalování cyklů a šrotování cyklů k snížení ovládacích náročností a zvýšení lokality
- Používání OpenCL místní paměti a funkcí místní paměti pro optimalizaci přístupů k paměti a šířky pásma
- Používání OpenCL profilování a nástrojů pro profilování ke změření a zlepšení času spouštění a využití prostředků
Shrnutí a další kroky
Požadavky
- Přehled jazyka C/C++ a pojmy paralelního programování
- Základní znalosti architektury počítače a hierarchie paměti
- Zkušenost s nástroji příkazové řádky a kódovacími editory
Cílová skupina
- Vývojáři, kteří se chtějí naučit používat OpenCL pro programování heterogenních zařízení a využít jejich paralelismus
- Vývojáři, kteří se chtějí naučit psát portabilní a škálovatelný kód, který může běžet na různých platformách a zařízeních
- Programátoři, kteří se chtějí zabývat nízkorozvrženými aspekty heterogenního programování a optimalizovat výkon svého kódu
28 hodiny