Dziękujemy za wysłanie zapytania! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Dziękujemy za wysłanie rezerwacji! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Plan Szkolenia
Wprowadzenie
- Czym jest programowanie GPU?
- Dlaczego warto używać programowania GPU?
- Jakie są wyzwania i kompromisy związane z programowaniem GPU?
- Jakie są frameworki do programowania GPU?
- Wybór odpowiedniego frameworka dla Twojej aplikacji
OpenCL
- Czym jest OpenCL?
- Jakie są zalety i wady OpenCL?
- Konfiguracja środowiska deweloperskiego dla OpenCL
- Tworzenie podstawowego programu OpenCL wykonującego dodawanie wektorów
- Korzystanie z interfejsu API OpenCL do uzyskiwania informacji o urządzeniu, alokowania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania kernelów i synchronizacji wątków
- Korzystanie z języka OpenCL C do pisania kernelów wykonywanych na urządzeniu i manipulowania danymi
- Korzystanie z wbudowanych funkcji, zmiennych i bibliotek OpenCL do wykonywania typowych zadań i operacji
- Korzystanie z przestrzeni pamięci OpenCL, takich jak globalna, lokalna, stała i prywatna, aby zoptymalizować transfery danych i dostęp do pamięci
- Korzystanie z modelu wykonania 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 przy użyciu technik takich jak łączenie, buforowanie, prefetching i profilowanie
CUDA
- Czym jest CUDA?
- Jakie są zalety i wady CUDA?
- Konfiguracja środowiska deweloperskiego dla CUDA
- Tworzenie podstawowego programu CUDA wykonującego dodawanie wektorów
- Korzystanie z interfejsu API CUDA do uzyskiwania informacji o urządzeniu, alokowania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania kernelów i synchronizacji wątków
- Korzystanie z języka CUDA C/C++ do pisania kernelów wykonywanych na urządzeniu i manipulowania danymi
- Korzystanie z wbudowanych funkcji, zmiennych i bibliotek CUDA do wykonywania typowych zadań i operacji
- Korzystanie z przestrzeni pamięci CUDA, takich jak globalna, współdzielona, stała i lokalna, aby zoptymalizować transfery danych i dostęp do pamięci
- Korzystanie z modelu wykonania 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 przy użyciu technik takich jak łączenie, buforowanie, prefetching i profilowanie
ROCm
- Czym jest ROCm?
- Jakie są zalety i wady ROCm?
- Konfiguracja środowiska deweloperskiego dla ROCm
- Tworzenie podstawowego programu ROCm wykonującego dodawanie wektorów
- Korzystanie z interfejsu API ROCm do uzyskiwania informacji o urządzeniu, alokowania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania kernelów i synchronizacji wątków
- Korzystanie z języka ROCm C/C++ do pisania kernelów wykonywanych na urządzeniu i manipulowania danymi
- Korzystanie z wbudowanych funkcji, zmiennych i bibliotek ROCm do wykonywania typowych zadań i operacji
- Korzystanie z przestrzeni pamięci ROCm, takich jak globalna, lokalna, stała i prywatna, aby zoptymalizować transfery danych i dostęp do pamięci
- Korzystanie z modelu wykonania 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 przy użyciu technik takich jak łączenie, buforowanie, prefetching i profilowanie
Porównanie
- Porównanie funkcji, wydajności i kompatybilności OpenCL, CUDA i ROCm
- Ocena programów GPU przy użyciu benchmarków i metryk
- Poznanie najlepszych praktyk i wskazówek dotyczących programowania GPU
- Eksploracja aktualnych i przyszłych trendów oraz wyzwań związanych z programowaniem GPU
Podsumowanie i kolejne kroki
Wymagania
- Znajomość języka C/C++ oraz pojęć programowania równoległego
- Podstawowa wiedza na temat architektury komputerów i hierarchii pamięci
- Doświadczenie w korzystaniu z narzędzi wiersza poleceń i edytorów kodu
Grupa docelowa
- Programiści, którzy chcą nauczyć się korzystać z różnych frameworków do programowania GPU i porównać ich funkcje, wydajność i kompatybilność
- 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 i optymalizacją GPU
28 godzin