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

Liczba uczestników


cena netto za uczestnika

Propozycje terminów

Powiązane Kategorie