Plan Szkolenia

Wprowadzenie

  • Co to 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
  • Eksplorowanie struktury projektu i plików
  • Kompilowanie i uruchamianie programu
  • Wyświetlanie danych wyjściowych za pomocą printf i fprintf

Dyrektywy i klauzule OpenACC

  • Zrozumienie dyrektyw i klauzul OpenACC
  • Używanie dyrektyw równoległych do tworzenia regionów równoległych
  • Używanie dyrektyw kernel dla zarządzanego przez kompilator równoległości
  • Używanie dyrektyw pętli do równoleglowania pętli
  • Zarządzanie przesyłem danych za pomocą dyrektyw danych
  • Synchronizacja danych za pomocą dyrektyw update
  • Poprawa ponownego użycia 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
  • Zapytanie o informacje i możliwości urządzenia
  • Ustawianie numeru i typu urządzenia
  • Obsługa błędów i wyjątków
  • Tworzenie i synchronizacja zdarzeń

Biblioteki i kompatybilność OpenACC

  • Zrozumienie bibliotek i kompatybilności OpenACC
  • Używanie bibliotek matematycznych, losowych i zespolonych
  • Integracja z innymi modelami (CUDA, OpenMP, MPI)
  • Integracja z bibliotekami GPU (cuBLAS, cuFFT)

Narzędzia OpenACC

  • Zrozumienie narzędzi OpenACC w procesie programowania
  • Profileowanie i debugowanie programów OpenACC
  • Analiza wydajności za pomocą kompilatora PGI, NVIDIA Nsight Systems, Allinea Forge

Optymalizacja

  • Czynniki wpływające na wydajność programu OpenACC
  • Optymalizacja lokalizacji danych i redukcja przesyłów
  • Optymalizacja równoległości pętli i fuzji
  • Optymalizacja równoległości kernel i fuzji
  • Optymalizacja wektorowania i automatycznego dostosowywania

Podsumowanie i kolejne kroki

Wymagania

  • Zrozumienie języków C/C++ lub Fortran oraz koncepcji programowania równoległego
  • Podstawowa wiedza na temat architektury komputerów i hierarchii pamięci
  • Dosświadczenie z narzędziami linii poleceń i edytorami kodu

Odbiorcy

  • Programiści, którzy chcą nauczyć się korzystać z OpenACC do programowania heterogenicznych urządzeń 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ą zrozumieć wysokopoziomowe aspekty programowania heterogenicznego i zoptymalizować produktywność kodu
 28 godzin

Liczba uczestników


cena netto za uczestnika

Propozycje terminów

Powiązane Kategorie