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í kódu Visual Studio
- 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 hostitelském programu
- Použití rozhraní API OpenCL k dotazování na informace a možnosti zařízení
- Použití OpenCL API k vytváření kontextů, příkazových front, vyrovnávacích pamětí, jader a událostí
- Použití rozhraní API OpenCL k zařazení příkazů do fronty, jako je čtení, zápis, kopírování, mapování, odmapování, provádění a čekání
- Použití OpenCL API ke zpracování chyb a výjimek
OpenCL C
- Pochopení role OpenCL C v programu zařízení
- Použití OpenCL C k zápisu jader, která se spouštějí na zařízení a manipulují s daty
- Použití OpenCL C datových typů, kvalifikátorů, operátorů a výrazů
- Použití OpenCL C vestavěných funkcí, jako jsou matematické, geometrické, relační atd.
- Použití OpenCL C rozšíření a knihoven, jako je atomic, image, cl_khr_fp16 atd.
OpenCL Paměťový model
- Pochopení rozdílu mezi modely paměti hostitele a zařízení
- Použití OpenCL paměťových prostorů, jako je globální, místní, konstantní a soukromý
- Použití paměťových objektů OpenCL, jako jsou vyrovnávací paměti, obrázky a kanály
- Použití režimů přístupu do paměti OpenCL, jako je pouze čtení, pouze zápis, čtení-zápis atd.
- Použití modelu konzistence paměti OpenCL a mechanismů synchronizace
OpenCL Model provedení
- Pochopení rozdílu mezi modely provádění hostitele a zařízení
- Použití OpenCL pracovních položek, pracovních skupin a rozsahů ND k definování paralelismu
- Používání funkcí pracovních položek OpenCL, jako je get_global_id, get_local_id, get_group_id atd.
- Použití funkcí pracovní skupiny OpenCL, jako je bariéra, 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 chyb v programech OpenCL
- Použití Visual Studio Code debugger ke kontrole proměnných, zarážek, 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 programů OpenCL
- Použití OpenCL vektorových datových typů a vektorizačních technik ke zlepšení aritmetické propustnosti
- Použití technik rozvinování smyček a skládání smyček OpenCL ke snížení režie řízení a zvýšení lokality
- Použití funkce OpenCL místní paměti a místní paměti k optimalizaci přístupu k paměti a šířky pásma
- Použití OpenCL profilovacích a profilovacích nástrojů k měření a zlepšení doby provádění a využití zdrojů
Shrnutí a další kroky
Požadavky
- Pochopení jazyka C/C++ a konceptů paralelního programování
- Základní znalosti architektury počítačů a hierarchie paměti
- Zkušenosti s nástroji příkazového řádku a editory kódu
Publikum
- Vývojáři, kteří se chtějí naučit používat OpenCL k programování heterogenních zařízení a využívat jejich paralelismus
- Vývojáři, kteří chtějí psát přenosný a škálovatelný kód, který může běžet na různých platformách a zařízeních
- Programátoři, kteří chtějí prozkoumat nízkoúrovňové aspekty heterogenního programování a optimalizovat výkon svého kódu
28 hodiny
Reference (2)
Velmi interaktivní s různými příklady, s dobrým postupem ve složitosti mezi začátkem a koncem školení.
Jenny - Andheo
Kurz - GPU Programming with CUDA and Python
Machine Translated
Trenéři energii a humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurz - NVIDIA GPU Programming - Extended
Machine Translated