Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
План на курса
Въведение
- Какво е 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)
Много интерактивен с различни примери, с добра прогресия в сложността между началото и края на обучението.
Jenny - Andheo
Курс - GPU Programming with CUDA and Python
Машинен превод
Обучаващи енергия и хумор.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Курс - NVIDIA GPU Programming - Extended
Машинен превод