Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Plan Szkolenia
Wprowadzenie
- Czym jest OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Przegląd funkcji i architektury OpenACC
- Konfiguracja środowiska programistycznego
Pierwsze kroki
- Tworzenie nowego projektu OpenACC przy użyciu Visual Studio Code
- Przeglądanie struktury projektu i plików
- Kompilowanie i uruchamianie programu
- Wyświetlanie danych wyjściowych przy użyciu printf i fprintf
Dyrektywy i klauzule OpenACC
- Zrozumienie roli dyrektyw i klauzul OpenACC w kodzie hosta i urządzenia
- Używanie dyrektywy i klauzul równoległych OpenACC do tworzenia równoległych regionów i określania liczby gangów, pracowników i wektorów
- Używanie dyrektywy i klauzul jądra OpenACC do tworzenia regionów jądra i pozwalania kompilatorowi na decydowanie o równoległości.
- Używanie dyrektywy i klauzul pętli OpenACC do zrównoleglania pętli i określania rozkładu pętli, zwijania, redukcji i kafelkowania
- Używanie dyrektywy i klauzul danych OpenACC do zarządzania ruchem danych i regionami danych
- Używanie dyrektywy i klauzul aktualizacji OpenACC do synchronizacji danych między hostem a urządzeniem
- Korzystanie z dyrektywy i klauzul pamięci podręcznej OpenACC w celu poprawy ponownego wykorzystania i lokalizacji danych
- Używanie dyrektywy rutynowej OpenACC i klauzul do tworzenia funkcji urządzenia oraz określania typu funkcji i długości wektora
- Używanie dyrektywy i klauzul OpenACC wait do synchronizacji zdarzeń i zależności
API OpenACC
- Zrozumienie roli interfejsu API OpenACC w programie hosta
- Używanie interfejsu API OpenACC do wyszukiwania informacji o urządzeniu i jego możliwościach
- Używanie interfejsu API OpenACC do ustawiania numeru i typu urządzenia
- Używanie interfejsu API OpenACC do obsługi błędów i wyjątków
- Używanie interfejsu API OpenACC do tworzenia i synchronizowania zdarzeń
Biblioteki OpenACC i interoperacyjność
- Zrozumienie roli bibliotek OpenACC i funkcji interoperacyjności w programie urządzenia
- Korzystanie z bibliotek OpenACC, takich jak matematyczne, losowe i złożone, do wykonywania typowych zadań i operacji
- Korzystanie z funkcji interoperacyjności OpenACC, takich jak deviceptr, use_device i acc_memcpy, w celu integracji OpenACC z innymi modelami programowania, takimi jak CUDA, OpenMP i MPI.
- Korzystanie z funkcji interoperacyjności OpenACC, takich jak host_data i declare, w celu integracji OpenACC z bibliotekami GPU, takimi jak cuBLAS i cuFFT.
Narzędzia OpenACC
- Zrozumienie roli narzędzi OpenACC w procesie programowania
- Korzystanie z narzędzi OpenACC do profilowania i debugowania programów OpenACC oraz identyfikowania wąskich gardeł i możliwości w zakresie wydajności
- Wykorzystanie narzędzi OpenACC, takich jak PGI Compiler, NVIDIA Nsight Systems i Allinea Forge, do pomiaru i poprawy czasu wykonywania i wykorzystania zasobów.
Optymalizacja
- Zrozumienie czynników wpływających na wydajność programów OpenACC
- Wykorzystanie dyrektyw i klauzul OpenACC do optymalizacji lokalności danych i redukcji transferów danych
- Używanie dyrektyw i klauzul OpenACC do optymalizacji równoległości pętli i fuzji
- Używanie dyrektyw i klauzul OpenACC do optymalizacji równoległości jądra i fuzji
- Wykorzystanie dyrektyw i klauzul OpenACC do optymalizacji wektoryzacji i automatycznego dostrajania
Podsumowanie i kolejne kroki
Wymagania
- Zrozumienie języka C/C++ lub Fortran 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ć OpenACC do programowania heterogenicznych urządzeń i wykorzystywania ich równoległości.
- Programiści, którzy chcą pisać przenośny i skalowalny kod, który może działać na różnych platformach i urządzeniach
- Programiści, którzy chcą poznać wysokopoziomowe aspekty programowania heterogenicznego i zoptymalizować wydajność swojego kodu
28 godzin
Opinie uczestników (2)
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