Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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