Bądźmy w kontakcie

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

Liczba uczestników


Cena za uczestnika (netto)

Propozycje terminów

Powiązane Kategorie