Plan Szkolenia


Wprowadzenie




  • Co to jest programowanie GPU?


  • Dlaczego używać programowania GPU?


  • Jakie są wyzwania i kompromisy związane z programowaniem GPU?


  • Jakie frameworki służą do programowania GPU?


  • Wybieranie odpowiedniego frameworka dla swojej aplikacji



OpenCL




  • Co to jest OpenCL?


  • Jakie są zalety i wady OpenCL?


  • Skonfigurowanie środowiska deweloperskiego dla OpenCL


  • Stworzenie podstawowego programu OpenCL wykonującego dodawanie wektorów


  • Używanie API OpenCL do zapytania informacji o urządzeniu, alokacji i dealokacji pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania kerneli i synchronizacji wątków


  • Używanie języka OpenCL C do pisania kerneli wykonujących na urządzeniu i manipulowania danymi


  • Używanie wbudowanych funkcji, zmiennych i bibliotek OpenCL do wykonywania standardowych zadań i operacji


  • Używanie przestrzeni pamięci OpenCL, takich jak globalna, lokalna, stała i prywatna, w celu optymalizacji transferów danych i dostępów do pamięci


  • Używanie modelu wykonywania OpenCL do kontrolowania work-items, work-groups i ND-ranges definiujących równoległość


  • Debugowanie i testowanie programów OpenCL przy użyciu narzędzi takich jak CodeXL


  • Optymalizacja programów OpenCL za pomocą technik takich jak koalescencja, buforowanie, prefetching i profilowanie



CUDA




  • Co to jest CUDA?


  • Jakie są zalety i wady CUDA?


  • Skonfigurowanie środowiska deweloperskiego dla CUDA


  • Stworzenie podstawowego programu CUDA wykonującego dodawanie wektorów


  • Używanie API CUDA do zapytania informacji o urządzeniu, alokacji i dealokacji pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania kerneli i synchronizacji wątków


  • Używanie języka CUDA C/C++ do pisania kerneli wykonujących na urządzeniu i manipulowania danymi


  • Używanie wbudowanych funkcji, zmiennych i bibliotek CUDA do wykonywania standardowych zadań i operacji


  • Używanie przestrzeni pamięci CUDA, takich jak globalna, współdzielona, stała i lokalna, w celu optymalizacji transferów danych i dostępów do pamięci


  • Używanie modelu wykonywania CUDA do kontrolowania wątków, bloków i siatek definiujących równoległość


  • Debugowanie i testowanie programów CUDA przy użyciu narzędzi takich jak CUDA-GDB, CUDA-MEMCHECK i NVIDIA Nsight


  • Optymalizacja programów CUDA za pomocą technik takich jak koalescencja, buforowanie, prefetching i profilowanie



ROCm




  • Co to jest ROCm?


  • Jakie są zalety i wady ROCm?


  • Skonfigurowanie środowiska deweloperskiego dla ROCm


  • Stworzenie podstawowego programu ROCm wykonującego dodawanie wektorów


  • Używanie API ROCm do zapytania informacji o urządzeniu, alokacji i dealokacji pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania kerneli i synchronizacji wątków


  • Używanie języka ROCm C/C++ do pisania kerneli wykonujących na urządzeniu i manipulowania danymi


  • Używanie wbudowanych funkcji, zmiennych i bibliotek ROCm do wykonywania standardowych zadań i operacji


  • Używanie przestrzeni pamięci ROCm, takich jak globalna, lokalna, stała i prywatna, w celu optymalizacji transferów danych i dostępów do pamięci


  • Używanie modelu wykonywania ROCm do kontrolowania wątków, bloków i siatek definiujących równoległość


  • Debugowanie i testowanie programów ROCm przy użyciu narzędzi takich jak ROCm Debugger i ROCm Profiler


  • Optymalizacja programów ROCm za pomocą technik takich jak koalescencja, buforowanie, prefetching i profilowanie



Porównanie




  • Porównanie cech, wydajności i zgodności OpenCL, CUDA i ROCm


  • Ocena programów GPU przy użyciu benchmarków i metryk


  • Nauczenie się najlepszych praktyk i porad dla programowania GPU


  • Eksploracja bieżących i przyszłych trendów oraz wyzwań związanych z programowaniem GPU



Podsumowanie i dalsze kroki

Wymagania



  • Zrozumienie języka C/C++ i koncepcji programowania równoległego


  • Podstawowa wiedza o architekturze komputera i hierarchii pamięci


  • Doświadczenie z narzędziami linii poleceń i edytorami kodu



Publikacja




  • Programiści, którzy chcą nauczyć się korzystania z różnych frameworków dla programowania GPU i porównywania ich cech, wydajności i zgodności


  • Programiści, którzy chcą pisać przenośny i skalowalny kod, który może działać na różnych platformach i urządzeniach


  • Programiści, którzy chcą poznać kompromisy i wyzwania związane z programowaniem GPU i optymalizacją

 28 godzin

Liczba uczestników


cena netto za uczestnika

Propozycje terminów

Powiązane Kategorie