Plan Szkolenia

Wprowadzenie

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

Rozpoczęcie pracy

  • Tworzenie nowego projektu ROCm za pomocą Visual Studio Code
  • Eksploracja struktury projektu i plików
  • Kompilowanie i uruchamianie programu
  • Wyświetlanie wyników za pomocą printf i fprintf

Interfejs API ROCm

  • Zrozumienie roli interfejsu API ROCm w programie hosta
  • Użycie interfejsu API ROCm do odpytywania o informacje i możliwości urządzenia
  • Użycie interfejsu API ROCm do alokowania i zwalniania pamięci urządzenia
  • Użycie interfejsu API ROCm do kopiowania danych między hostem a urządzeniem
  • Użycie interfejsu API ROCm do uruchamiania jąder i synchronizacji wątków
  • Użycie interfejsu API ROCm do obsługi błędów i wyjątków

Język HIP

  • Zrozumienie roli języka HIP w programie urządzenia
  • Użycie języka HIP do pisania jąder wykonywanych na GPU i manipulowania danymi
  • Użycie typów danych, kwalifikatorów, operatorów i wyrażeń HIP
  • Użycie 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
  • Użycie przestrzeni pamięci ROCm i HIP, takich jak globalna, współdzielona, stała i lokalna
  • Użycie obiektów pamięci ROCm i HIP, takich jak wskaźniki, tablice, tekstury i powierzchnie
  • Użycie trybów dostępu do pamięci ROCm i HIP, takich jak tylko do odczytu, tylko do zapisu, odczyt-zapis itp.
  • Użycie modelu spójności pamięci ROCm i HIP oraz mechanizmów synchronizacji

Model wykonania ROCm i HIP

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

Debugowanie

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

Optymalizacja

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

Podsumowanie i kolejne kroki

Wymagania

  • Zrozumienie języka C/C++ oraz koncepcji programowania równoległego
  • Podstawowa wiedza na temat architektury komputera 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ę, jak używać ROCm i HIP do programowania GPU AMD i wykorzystania ich równoległości
  • Programiści, którzy chcą pisać wydajny i skalowalny kod, który może działać na różnych urządzeniach AMD
  • Programiści, którzy chcą zgłębić niskopoziomowe aspekty programowania GPU i optymalizować wydajność swojego kodu
 28 godzin

Liczba uczestników


Cena za uczestnika

Propozycje terminów

Powiązane Kategorie