Bądźmy w kontakcie

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
 28 godzin

Liczba uczestników


Cena za uczestnika (netto)

Propozycje terminów

Powiązane Kategorie