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.
Czas trwania 28 godzin
Plan Szkolenia
Wprowadzenie
- Czym jest OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Przegląd funkcji i architektury OpenACC
- Konfigurowanie środowiska programistycznego
Rozpoczęcie pracy
- Tworzenie projektu OpenACC w Visual Studio Code
- Eksploracja struktury i plików projektu
- Kompilowanie i uruchamianie programu
- Wyświetlanie wyników za pomocą printf i fprintf
Dyrektywy i klauzule OpenACC
- Zrozumienie dyrektyw i klauzul OpenACC
- Używanie dyrektyw parallel do tworzenia regionów równoległych
- Używanie dyrektyw kernels do zarządzania równoległością przez kompilator
- Używanie dyrektyw loop do równoległego przetwarzania pętli
- Zarządzanie przenoszeniem danych za pomocą dyrektyw data
- Synchronizacja danych za pomocą dyrektyw update
- Poprawa ponownego wykorzystania danych za pomocą dyrektyw cache
- Tworzenie funkcji urządzeń za pomocą dyrektyw routine
- Synchronizacja zdarzeń za pomocą dyrektyw wait
API OpenACC
- Zrozumienie roli API OpenACC
- Pozyskiwanie informacji i możliwości urządzeń
- Ustawianie numeru i typu urządzenia
- Obsługa błędów i wyjątków
- Tworzenie i synchronizacja zdarzeń
Biblioteki i interoperacyjność OpenACC
- Zrozumienie bibliotek i interoperacyjności OpenACC
- Korzystanie z bibliotek matematycznych, losowych i złożonych
- Integracja z innymi modelami (CUDA, OpenMP, MPI)
- Integracja z bibliotekami GPU (cuBLAS, cuFFT)
Narzędzia OpenACC
- Zrozumienie narzędzi OpenACC w rozwoju
- Profilowanie i debugowanie programów OpenACC
- Analiza wydajności za pomocą PGI Compiler, NVIDIA Nsight Systems, Allinea Forge
Optymalizacja
- Czynniki wpływające na wydajność programów OpenACC
- Optymalizacja lokalności danych i redukcja transferów
- Optymalizacja równoległości i fuzji pętli
- Optymalizacja równoległości i fuzji kernelów
- Optymalizacja wektoryzacji i auto-dostosowywania
Podsumowanie i kolejne kroki
Wymagania
- Zrozumienie języka C/C++ lub Fortran 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
Odbiorcy
- Programiści, którzy chcą nauczyć się, jak wykorzystać OpenACC do programowania urządzeń heterogenicznych i wykorzystania 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ć zaawansowane aspekty programowania heterogenicznego i zoptymalizować swoją produktywność kodowania