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
- Co to jest programowanie GPU?
- Dlaczego używać programowania GPU?
- Jakie są wyzwania i kompromisy związane z programowaniem GPU?
- Jakie są ramy programowania GPU?
- Wybór odpowiedniej ramy dla aplikacji
OpenCL
- Co to jest OpenCL?
- Jakie są zalety i wady OpenCL?
- Konfiguracja środowiska rozwoju dla OpenCL
- Tworzenie podstawowego programu OpenCL, który wykonuje dodawanie wektorów
- Używanie API OpenCL do zapytania o informacje urządzenia, alokacji i dealokacji pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizacji wątków
- Używanie języka C OpenCL do pisania jądra, które wykonuje się na urządzeniu i manipuluje danymi
- Używanie wbudowanych funkcji, zmiennych i bibliotek OpenCL do wykonywania typowych zadań i operacji
- Używanie przestrzeni pamięci OpenCL, takich jak globalna, lokalna, stała i prywatna, aby optymalizować transfery danych i dostęp do pamięci
- Używanie modelu wykonania OpenCL do kontrolowania jednostek pracy, grup pracy i zakresów ND, które definiują równoległość
- Debugowanie i testowanie programów OpenCL za pomocą narzędzi, takich jak CodeXL
- Optymalizacja programów OpenCL za pomocą technik, takich jak scalenie, buforowanie, pobieranie z wyprzedzeniem i profilowanie
CUDA
- Co to jest CUDA?
- Jakie są zalety i wady CUDA?
- Konfiguracja środowiska rozwoju dla CUDA
- Tworzenie podstawowego programu CUDA, który wykonuje dodawanie wektorów
- Używanie API CUDA do zapytania o informacje urządzenia, alokacji i dealokacji pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizacji wątków
- Używanie języka C/C++ CUDA do pisania jądra, które wykonuje się na urządzeniu i manipuluje danymi
- Używanie wbudowanych funkcji, zmiennych i bibliotek CUDA do wykonywania typowych zadań i operacji
- Używanie przestrzeni pamięci CUDA, takich jak globalna, współdzielona, stała i lokalna, aby optymalizować transfery danych i dostęp do pamięci
- Używanie modelu wykonania CUDA do kontrolowania wątków, bloków i siatek, które definiują równoległość
- Debugowanie i testowanie programów CUDA za pomocą narzędzi, takich jak CUDA-GDB, CUDA-MEMCHECK i NVIDIA Nsight
- Optymalizacja programów CUDA za pomocą technik, takich jak scalenie, buforowanie, pobieranie z wyprzedzeniem i profilowanie
ROCm
- Co to jest ROCm?
- Jakie są zalety i wady ROCm?
- Konfiguracja środowiska rozwoju dla ROCm
- Tworzenie podstawowego programu ROCm, który wykonuje dodawanie wektorów
- Używanie API ROCm do zapytania o informacje urządzenia, alokacji i dealokacji pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizacji wątków
- Używanie języka C/C++ ROCm do pisania jądra, które wykonuje się na urządzeniu i manipuluje danymi
- Używanie wbudowanych funkcji, zmiennych i bibliotek ROCm do wykonywania typowych zadań i operacji
- Używanie przestrzeni pamięci ROCm, takich jak globalna, lokalna, stała i prywatna, aby optymalizować transfery danych i dostęp do pamięci
- Używanie modelu wykonania ROCm do kontrolowania wątków, bloków i siatek, które definiują równoległość
- Debugowanie i testowanie programów ROCm za pomocą narzędzi, takich jak ROCm Debugger i ROCm Profiler
- Optymalizacja programów ROCm za pomocą technik, takich jak scalenie, buforowanie, pobieranie z wyprzedzeniem i profilowanie
Porównanie
- Porównanie funkcji, wydajności i kompatybilności OpenCL, CUDA i ROCm
- Ocena programów GPU za pomocą benchmarków i metryk
- Poznanie najlepszych praktyk i porad dotyczących programowania GPU
- Badając bieżące i przyszłe trendy oraz wyzwania związane z programowaniem GPU
Podsumowanie i następne kroki
Wymagania
- Znajomość języka C/C++ i koncepcji programowania równoległego
- Podstawowa wiedza o architekturze komputera i hierarchii pamięci
- Doświadczenie w korzystaniu z narzędzi wiersza polecenia i edytorów kodu
Grupa docelowa
- Programiści, którzy chcą nauczyć się korzystania z różnych frameworków do programowania GPU i porównywania ich funkcji, wydajności i kompatybilnoś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ą eksplorować kompromisy i wyzwania związane z programowaniem GPU i optymalizacją
28 godzin