Plan Szkolenia

Wprowadzenie

  • Co to jest ROCm?
  • Czym jest HIP?
  • ROCm vs CUDA vs OpenCL
  • Przegląd funkcji i architektury ROCm i HIP
  • Konfiguracja środowiska programistycznego

Pierwsze kroki

  • Tworzenie nowego projektu ROCm przy użyciu Visual Studio Kodu
  • Przeglądanie struktury projektu i plików
  • Kompilowanie i uruchamianie programu
  • Wyświetlanie danych wyjściowych przy użyciu printf i fprintf

ROCm API

  • Zrozumienie roli interfejsu API ROCm w programie hosta
  • Używanie interfejsu API ROCm do wyszukiwania informacji o urządzeniu i jego możliwościach
  • Używanie ROCm API do przydzielania i zwalniania pamięci urządzenia
  • Używanie ROCm API do kopiowania danych między hostem a urządzeniem
  • Używanie ROCm API do uruchamiania jądra i synchronizowania wątków
  • Używanie ROCm API do obsługi błędów i wyjątków

Język HIP

  • Zrozumienie roli języka HIP w programie urządzenia
  • Używanie języka HIP do pisania jąder, które wykonują się na GPU i manipulują danymi
  • Korzystanie z typów danych, kwalifikatorów, operatorów i wyrażeń HIP
  • Używanie wbudowanych funkcji, zmiennych i bibliotek HIP do wykonywania typowych zadań i operacji

Model pamięci ROCm i HIP

  • Zrozumienie różnicy między modelami pamięci hosta i urządzenia
  • Korzystanie z przestrzeni pamięci ROCm i HIP, takich jak globalna, współdzielona, stała i lokalna
  • Korzystanie z obiektów pamięci ROCm i HIP, takich jak wskaźniki, tablice, tekstury i powierzchnie
  • Korzystanie z trybów dostępu do pamięci ROCm i HIP, takich jak tylko do odczytu, tylko do zapisu, odczyt-zapis itp.
  • Korzystanie z modelu spójności pamięci ROCm i HIP oraz mechanizmów synchronizacji

Model wykonania ROCm i HIP

  • Zrozumienie różnicy między modelem wykonania hosta i urządzenia
  • Używanie wątków, bloków i siatek ROCm i HIP do definiowania równoległości
  • Korzystanie z funkcji wątków ROCm i HIP, takich jak hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x itp.
  • Używanie funkcji blokowych ROCm i HIP, takich jak __syncthreads, __threadfence_block itp.
  • Korzystanie z funkcji siatki ROCm i HIP, takich jak hipGridDim_x, hipGridSync, grupy współpracy itp.

Debugowanie

  • Zrozumienie typowych błędów i usterek w programach ROCm i HIP
  • Używanie debuggera Visual Studio Code do sprawdzania zmiennych, punktów przerwania, stosu wywołań itp.
  • Używanie debuggera ROCm do debugowania programów ROCm i HIP na urządzeniach AMD
  • Używanie ROCm Profiler do analizowania programów ROCm i HIP na urządzeniach AMD

Optymalizacja

  • Zrozumienie czynników wpływających na wydajność programów ROCm i HIP
  • Korzystanie z technik koalescencji ROCm i HIP w celu poprawy przepustowości pamięci
  • Korzystanie z technik buforowania i pobierania wstępnego ROCm i HIP w celu zmniejszenia opóźnień pamięci
  • Korzystanie z technik pamięci współdzielonej i lokalnej ROCm i HIP w celu optymalizacji dostępu do pamięci i przepustowości
  • Korzystanie z narzędzi do profilowania i profilowania ROCm i HIP w celu pomiaru i poprawy czasu wykonania i wykorzystania zasobów.

Podsumowanie i następny krok

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 używać ROCm i HIP do programowania procesorów AMD GPU i wykorzystywania ich równoległości.
  • Programiści, którzy chcą pisać wysokowydajny i skalowalny kod, który może działać na różnych urządzeniach AMD
  • Programiści, którzy chcą poznać niskopoziomowe aspekty programowania GPU i zoptymalizować wydajność swojego kodu
 28 godzin

Liczba uczestników


cena netto za uczestnika

Opinie uczestników (2)

Propozycje terminów

Powiązane Kategorie