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?
- 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