Dziękujemy za wysłanie zapytania! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Dziękujemy za wysłanie rezerwacji! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Plan Szkolenia
Wprowadzenie
- Czym jest ROCm?
- Czym jest HIP?
- Porównanie ROCm, CUDA i OpenCL
- Przegląd funkcji i architektury ROCm i HIP
- ROCm dla Windows vs ROCm dla Linux
Instalacja
- Instalacja ROCm w systemie Windows
- Weryfikacja instalacji i sprawdzenie zgodności urządzenia
- Aktualizacja lub odinstalowanie ROCm w systemie Windows
- Rozwiązywanie typowych problemów z instalacją
Rozpoczęcie pracy
- Tworzenie nowego projektu ROCm za pomocą Visual Studio Code w systemie Windows
- Eksploracja struktury i plików projektu
- Kompilacja i uruchomienie programu
- Wyświetlanie wyników za pomocą printf i fprintf
Interfejs ROCm API
- Korzystanie z interfejsu ROCm API w programie hosta
- Pozyskiwanie informacji o urządzeniu i jego możliwościach
- Alokowanie i zwalnianie pamięci urządzenia
- Kopiowanie danych między hostem a urządzeniem
- Uruchamianie jąder i synchronizacja wątków
- Obsługa błędów i wyjątków
Język HIP
- Korzystanie z 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
- Korzystanie z funkcji wątkowych, takich jak hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x itp.
- Korzystanie z funkcji blokowych, takich jak __syncthreads, __threadfence_block itp.
- Korzystanie z funkcji siatkowych, takich jak hipGridDim_x, hipGridSync, grupy współpracujące itp.
Debugowanie
- Debugowanie programów ROCm i HIP w systemie Windows
- Korzystanie z debuggera Visual Studio Code do inspekcji zmiennych, punktów przerwania, stosu wywołań itp.
- Korzystanie z ROCm Debugger do debugowania programów ROCm i HIP na urządzeniach AMD
- Korzystanie z ROCm Profiler do analizy programów ROCm i HIP na urządzeniach AMD
Optymalizacja
- Optymalizacja programów ROCm i HIP w systemie Windows
- Korzystanie z technik łączenia w celu poprawy przepustowości pamięci
- Korzystanie z technik buforowania i pobierania z wyprzedzeniem 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 narzędzi profilowania do pomiaru i poprawy czasu wykonania oraz wykorzystania zasobów
Podsumowanie i kolejne kroki
Wymagania
- Znajomość języka C/C++ oraz koncepcji 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
- Znajomość systemu operacyjnego Windows i PowerShell
Grupa docelowa
- Programiści, którzy chcą nauczyć się instalować i korzystać z ROCm w systemie Windows, aby programować karty graficzne AMD i wykorzystywać ich możliwości równoległego przetwarzania
- 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
21 godzin