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ą ramy dla programowania GPU?
  • Wybór odpowiedniego frameworka dla aplikacji

OpenCL

  • Czym jest OpenCL?
  • Jakie są zalety i wady OpenCL?
  • Konfigurowanie środowiska programistycznego dla OpenCL
  • Tworzenie podstawowego programu OpenCL wykonującego dodawanie wektorowe
  • Używanie OpenCL API do odpytywania informacji o urządzeniu, przydzielania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizowania wątków.
  • Używanie OpenCL języka C do pisania jąder, które wykonują się na urządzeniu i manipulują danymi
  • Korzystanie z OpenCL wbudowanych funkcji, zmiennych i bibliotek do wykonywania typowych zadań i operacji
  • Korzystanie z OpenCL przestrzeni pamięci, takich jak globalna, lokalna, stała i prywatna, w celu optymalizacji transferu danych i dostępu do pamięci
  • Korzystanie z modelu wykonania OpenCL do kontrolowania elementów roboczych, grup roboczych i zakresów ND, które definiują równoległość.
  • Debugowanie i testowanie OpenCL programów przy użyciu narzędzi takich jak CodeXL
  • Optymalizacja OpenCL programów przy użyciu technik takich jak koalescencja, buforowanie, wstępne pobieranie i profilowanie.

CUDA

  • Czym jest CUDA?
  • Jakie są zalety i wady CUDA?
  • Konfiguracja środowiska programistycznego dla CUDA
  • Tworzenie podstawowego programu CUDA wykonującego dodawanie wektorowe
  • Używanie interfejsu API CUDA do wyszukiwania informacji o urządzeniu, przydzielania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizowania wątków
  • Używanie języka CUDA C/C++ do pisania jąder, które wykonują się na urządzeniu i manipulują 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, w celu optymalizacji transferu danych i dostępu do pamięci
  • Korzystanie z modelu wykonania CUDA do kontrolowania wątków, bloków i siatek, które definiują 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 takich technik jak koalescencja, buforowanie, prefetching i profilowanie.

ROCm

  • Czym jest ROCm?
  • Jakie są zalety i wady ROCm?
  • Konfiguracja środowiska programistycznego dla ROCm
  • Tworzenie podstawowego programu ROCm wykonującego dodawanie wektorowe
  • Używanie interfejsu API ROCm do wyszukiwania informacji o urządzeniu, przydzielania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizowania wątków
  • Używanie języka ROCm C/C++ do pisania jąder, które wykonują się na urządzeniu i manipulują 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, w celu optymalizacji transferu danych i dostępu do pamięci
  • Korzystanie z modelu wykonania ROCm do kontrolowania wątków, bloków i siatek, które definiują 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 koalescencja, buforowanie, wstępne pobieranie i profilowanie.

Porównanie

  • Porównanie funkcji, wydajności i kompatybilności OpenCL, CUDA i ROCm
  • Ocena programów GPU przy użyciu testów porównawczych i metryk
  • Poznanie najlepszych praktyk i wskazówek dotyczących programowania GPU
  • Badanie obecnych i przyszłych trendów i wyzwań związanych z programowaniem GPU.

Podsumowanie i kolejne kroki

Wymagania

  • Zrozumienie języka C/C++ i koncepcji programowania równoległego
  • Podstawowa znajomość architektury komputera i hierarchii pamięci
  • Doświadczenie z narzędziami wiersza poleceń i edytorami kodu

Odbiorcy

  • Programiści, którzy chcą dowiedzieć się, jak 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 netto za uczestnika

Opinie uczestników (3)

Propozycje terminów

Powiązane Kategorie