План на курса

Въведение

  • Какво е OpenACC?
  • OpenACC срещу OpenCL срещу CUDA срещу SYCL
  • Преглед на функциите и архитектурата на OpenACC
  • Създаване на среда за разработка

Приготвяме се да започнем

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

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

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

OpenACC API

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

OpenACC библиотеки и оперативна съвместимост

  • Разбиране на ролята на OpenACC библиотеките и функциите за оперативна съвместимост в програмата на устройството
  • Използване на OpenACC библиотеки, като математически, произволни и сложни, за изпълнение на общи задачи и операции
  • Използване на функции за оперативна съвместимост на OpenACC, като deviceptr, use_device и acc_memcpy, за интегриране на OpenACC с други модели за програмиране, като CUDA, OpenMP и MPI
  • Използване на функции за оперативна съвместимост на OpenACC, като host_data и declare, за интегриране на OpenACC с GPU библиотеки, като cuBLAS и cuFFT

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

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

Оптимизация

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

Обобщение и следващи стъпки

Изисквания

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

Публика

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

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


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

Oтзиви от потребители (2)

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

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