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

Liczba uczestników


cena netto za uczestnika

Opinie uczestników (2)

Propozycje terminów

Powiązane Kategorie