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

Počet účastníků


Price per participant

Upcoming Courses

Související kategorie