Plan Szkolenia
Wprowadzenie
- Co to jest ROCm?
- Czym jest HIP?
- ROCm vs CUDA vs OpenCL
- Przegląd funkcji i architektury ROCm i HIP
- ROCm dla ROCm for Windows vs ROCm dla Linux
Instalacja
- Instalacja ROCm w systemie Windows
- Weryfikacja instalacji i sprawdzenie kompatybilności urządzenia
- Aktualizacja lub odinstalowanie ROCm w systemie Windows
- Rozwiązywanie typowych problemów z instalacją
Pierwsze kroki
- Tworzenie nowego projektu ROCm przy użyciu Visual Studio Code w systemie Windows
- Przeglądanie struktury projektu i plików
- Kompilowanie i uruchamianie programu
- Wyświetlanie danych wyjściowych przy użyciu printf i fprintf
ROCm API
- Korzystanie z interfejsu API ROCm w programie hosta
- Sprawdzanie informacji o urządzeniu i jego możliwościach
- Przydzielanie i zwalnianie pamięci urządzenia
- Kopiowanie danych między hostem a urządzeniem
- Uruchamianie jądra i synchronizacja wątków
- Obsługa błędów i wyjątków
Język HIP
- Używanie języka HIP w programie urządzenia
- Pisanie jąder, które wykonują się na GPU i manipulują danymi
- Korzystanie z typów danych, kwalifikatorów, operatorów i wyrażeń
- Korzystanie z wbudowanych funkcji, zmiennych i bibliotek
Model pamięci ROCm i HIP
- Korzystanie z różnych przestrzeni pamięci, takich jak globalna, współdzielona, stała i lokalna
- Korzystanie z różnych obiektów pamięci, takich jak wskaźniki, tablice, tekstury i powierzchnie
- Korzystanie z różnych trybów dostępu do pamięci, takich jak tylko do odczytu, tylko do zapisu, odczyt-zapis itp.
- Korzystanie z modelu spójności pamięci i mechanizmów synchronizacji
Model wykonania ROCm i HIP
- Korzystanie z różnych modeli wykonania, takich jak wątki, bloki i siatki
- Używanie funkcji wątków, takich jak hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x itp.
- Używanie funkcji blokowych, takich jak __syncthreads, __threadfence_block itp.
- Korzystanie z funkcji siatki, takich jak hipGridDim_x, hipGridSync, grupy współpracy itp.
Debugowanie
- Debugowanie programów ROCm i HIP w systemie Windows
- Używanie debuggera Visual Studio Code do sprawdzania zmiennych, punktów przerwania, stosu wywołań itp.
- Używanie debugera 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
- Optymalizacja programów ROCm i HIP w systemie Windows
- Korzystanie z technik koalescencji w celu poprawy przepustowości pamięci
- Korzystanie z technik buforowania i pobierania wstępnego w celu zmniejszenia opóźnień pamięci
- Korzystanie z technik pamięci współdzielonej i lokalnej w celu optymalizacji dostępu do pamięci i przepustowości
- Korzystanie z profilowania i narzędzi do profilowania w celu pomiaru i poprawy czasu wykonywania 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
- Znajomość systemu operacyjnego Windows i PowerShell
Odbiorcy
- Programiści, którzy chcą dowiedzieć się, jak zainstalować i używać ROCm w systemie Windows 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
Opinie uczestników (3)
Bardzo interaktywne z różnymi przykładami, z dobrym postępem złożoności między początkiem a końcem szkolenia.
Jenny - Andheo
Szkolenie - GPU Programming with CUDA and Python
Przetłumaczone przez sztuczną inteligencję
Spójny sposob prezentacji, duża wiedza trenera, odpowiedni poziom wejscia
Maciej Majka - Nokia
Szkolenie - NVIDIA GPU Programming - Extended
Podczas szkolenia najbardziej spodobała mi się elastyczność trenera, jego zdolność do reagowania na niespodziewane i potencjalnie głupie pytania. Wybitny poziom wiedzy trenera na temat kart graficznych NVIDIA.