Zkuste nás kontaktovat
 Doba trvání 28 hodiny

Návrh Školení

Úvod

  • Co je OpenCL?
  • OpenCL vs. CUDA vs. SYCL
  • Přehled funkcí a architektury OpenCL
  • Nastavení vývojového prostředí

Úvodní kroky

  • Vytvoření nového OpenCL projektu pomocí Visual Studio Code
  • Prozkoumání struktury projektu a souborů
  • Kompilace a spuštění programu
  • Zobrazení výstupu pomocí printf a fprintf

OpenCL API

  • Pochopení role OpenCL API v programu hostitele
  • Použití OpenCL API ke získání informací o schopnostech a vlastnostech zařízení
  • Použití OpenCL API ke vytvoření kontextů, front příkazů, bufferů, jader a událostí
  • Použití OpenCL API k zařazení příkazů, jako jsou čtení, zápis, kopírování, mapování, odmapování, spuštění a čekání
  • Použití OpenCL API k zpracování chyb a výjimek

OpenCL C

  • Pochopení role OpenCL C v programu zařízení
  • Použití OpenCL C ke psaní jader, která se provádějí na zařízení a manipulují s daty
  • Použití datových typů, kvalifikátorů, operátorů a výrazů v OpenCL C
  • Použití vestavěných funkcí OpenCL C, jako jsou matematické, geometrické, relační atd.
  • Použití rozšíření a knihoven OpenCL C, jako jsou atomické operace, obrázky, cl_khr_fp16 atd.

Model paměti OpenCL

  • Pochopení rozdílu mezi modely paměti hostitele a zařízení
  • Použití paměťových prostoru OpenCL, jako jsou globální, lokální, konstantní a soukromé
  • Použití paměťových objektů OpenCL, jako jsou buffery, obrázky a roury (pipes)
  • Použití režimů přístupu k paměti OpenCL, jako jsou pouze pro čtení, pouze pro zápis, čtení/zápis atd.
  • Použití modelu konzistence paměti OpenCL a synchronizačních mechanismů

Model provedení OpenCL

  • Pochopení rozdílu mezi modely provedení hostitele a zařízení
  • Použití prvků práce, skupin práce a N-rozměrných rozsahů OpenCL k definování paralelismu
  • Použití funkcí prvků práce OpenCL, jako jsou get_global_id, get_local_id, get_group_id atd.
  • Použití funkcí skupin práce OpenCL, jako jsou barrier, work_group_reduce, work_group_scan atd.
  • Použití funkcí zařízení OpenCL, jako jsou get_num_groups, get_global_size, get_local_size atd.

Ladění

  • Pochopení běžných chyb a bugů v OpenCL programech
  • Použití ladicího programu Visual Studio Code ke kontrole proměnných, breakpointů, zásobníku volání atd.
  • Použití CodeXL k ladění a analýze OpenCL programů na zařízeních AMD
  • Použití Intel VTune k ladění a analýze OpenCL programů na zařízeních Intel
  • Použití NVIDIA Nsight k ladění a analýze OpenCL programů na zařízeních NVIDIA

Optimalizace

  • Pochopení faktorů, které ovlivňují výkon OpenCL programů
  • Použití vektorových datových typů OpenCL a technik vektorizace ke zvýšení aritmetické throughputu
  • Použití technik rozmotávání smyček (loop unrolling) a kachlíkování smyček (loop tiling) OpenCL ke snížení řídicího přenosu a zvýšení lokalizace
  • Použití lokální paměti OpenCL a funkcí lokální paměti k optimalizaci přístupu k paměti a propustnosti
  • Použití profilování OpenCL a profilovacích nástrojů k měření a zlepšování času provedení a využití zdrojů

Požadavky

  • Rozumění jazyku C/C++ a konceptům paralelního programování
  • Základní znalosti počítačové architektury a hierarchie paměti
  • Znalost příkazového řádku a kódovacích editorů

Cílová skupina

  • Vývojáři, kteří se chtějí naučit používat OpenCL k programování heterogenních zařízení a využití jejich paralelismu
  • Vývojáři, kteří chtějí psát přenosný a škálovatelný kód, který může běhat na různých platformách a zařízeních
  • Programátoři, kteří chtějí prozkoumat nízkourové aspekty heterogenního programování a optimalizovat výkon svého kódu

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie