Свържете се с нас

Съдържание и теми, включени в курса

Въведение

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

Първи стъпки

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

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

  • Разбиране на директивите и клаузите на OpenACC
  • Използване на parallel директиви за създаване на паралелни региони
  • Използване на 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атегории