План на курса

Въведение

  • Какво е OpenACC?
  • OpenACC спрямо OpenCL, CUDA, SYCL
  • Общ преглед на функциите и архитектурата на OpenACC
  • Настояване на околната среда за разработка

Започване

  • Създаване на проект с OpenACC в Visual Studio Code
  • Изследване на структурата и файловете на проекта
  • Компилиране и изпълнение на програмата
  • Показване на изход с printf и fprintf

Директиви и клаузи на OpenACC

  • Разбиране на директивите и клаузите на OpenACC
  • Използване на паралелни директиви за създаване на паралелни области
  • Използване на директиви kernels за компилаторно управляем паралелизъм
  • Използване на директиви loop за паралелизиране на цикли
  • Управление на преместването на данни с директиви data
  • Синхронизация на данните с директиви update
  • Подобряване на повторното използване на данни с директиви cache
  • Създаване на функции за устройствата с директиви routine
  • Синхронизация на събития с директиви wait

API на OpenACC

  • Разбиране на ролята на API на OpenACC
  • Запитване за информация и възможности на устройствата
  • Настояване номера и типа на устройството
  • Обработка на грешки и изключения
  • Създаване и синхронизиране на събития

Библиотеки и интероперабилност на OpenACC

  • Разбиране на библиотеките и интероперабилността на OpenACC
  • Използване на математически, случайни и комплексни библиотеки
  • Интегриране с други модели (CUDA, OpenMP, MPI)
  • Интегриране с GPU библиотеки (cuBLAS, cuFFT)

Инструменти на OpenACC

  • Разбиране на инструментите на OpenACC за разработка
  • Профилиране и дебъгване на програми с OpenACC
  • Анализ на производителността с PGI Compiler, NVIDIA Nsight Systems, Allinea Forge

Оптимизация

  • Фактори, които влияят на производителността на програмите с OpenACC
  • Оптимизиране на локалността на данни и намаляване на премествания
  • Оптимизиране на паралелизм на цикли и фузия
  • Оптимизиране на паралелизъм на ядрата и фузия
  • Оптимизиране на векторизацията и автоматичното настройване

Сводка и следващи стъпки

Изисквания

  • Разбиране на езика C/C++ или Fortran и концепциите на паралелно програмиране
  • Основни знания за архитектурата на компютри и иерархията на паметта
  • Опит с командните инструменти и редактори на кода

Публика

  • Програмисти, които желаят да научат как да използват OpenACC за програмиране на хетерогенни устройства и използването на техния паралелизъм
  • Програмисти, които желаят да напишат переносим и масштабируем код, който може да работи на различни платформи и устройства
  • Програмисти, които желаят да изследват високонивните аспекти на хетерогенно програмиране и оптимизират продуктивността на кода си
 28 часа

Брой участници


Цена за участник

Предстоящи Курсове

Свързани Kатегории