Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
Съдържание и теми, включени в курса
Въведение
- Какво представлява 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 Часа