План на курса

Въведение

  • Какво е 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 Hours

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



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

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

Свързани Kурсове

GPU Programming with OpenCL

28 Hours

GPU Programming with CUDA

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

AMD GPU Programming

28 Hours

ROCm for Windows

21 Hours

Introduction to GPU Programming

21 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

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