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.
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