Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
Съдържание и теми, включени в курса
Въведение
- Какво е ROCm?
- Какво е HIP?
- ROCm срещу CUDA срещу OpenCL
- Общ преглед на характеристиките и архитектурата на ROCm и HIP
- Настройка на средата за разработка
Първи стъпки
- Създаване на нов ROCm проект с помощта на Visual Studio Code
- Разглеждане на структурата и файловете на проекта
- Компилиране и стартиране на програмата
- Показване на изходните данни с printf и fprintf
ROCm API
- Разбиране на ролята на ROCm API в хост програмата
- Използване на ROCm API за запитване на информация и възможности на устройството
- Използване на ROCm API за заделяне и освобождаване на памет на устройството
- Използване на ROCm API за копиране на данни между хоста и устройството
- Използване на ROCm API за стартиране на ядра и синхронизиране на нишки
- Използване на ROCm API за обработка на грешки и изключения
Език HIP
- Разбиране на ролята на езика HIP в програмата за устройството
- Използване на езика HIP за писане на ядра, които се изпълняват на GPU и манипулират данни
- Използване на типове данни, квалификатори, оператори и изрази на HIP
- Използване на вградените функции, променливи и библиотеки на HIP за извършване на общи задачи и операции
Модел на паметта на ROCm и HIP
- Разбиране на разликата между моделите на памет на хоста и устройството
- Използване на пространствата на паметта в ROCm и HIP, като глобална, споделена, константна и локална
- Използване на обекти на паметта в ROCm и HIP, като указатели, масиви, текстури и повърхности
- Използване на режими за достъп до паметта в ROCm и HIP, като само за четене, само за запис, за четене и запис и т.н.
- Използване на модела за консистентност на паметта и механизмите за синхронизация на ROCm и HIP
Модел на изпълнение на ROCm и HIP
- Разбиране на разликата между моделите на изпълнение на хоста и устройството
- Използване на нишки, блокове и решетки в ROCm и HIP за дефиниране на паралелизацията
- Използване на функции за нишки в ROCm и HIP, като hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x и т.н.
- Използване на функции за блокове в ROCm и HIP, като __syncthreads, __threadfence_block и т.н.
- Използване на функции за решетки в ROCm и HIP, като hipGridDim_x, hipGridSync, кооперативни групи и т.н.
Дебъгване
- Разбиране на често срещаните грешки и бъгове в ROCm и HIP програми
- Използване на дебъгера на Visual Studio Code за проверка на променливи, точки на прекъсване, стек на извикванията и др.
- Използване на ROCm Debugger за дебъгване на ROCm и HIP програми на AMD устройства
- Използване на ROCm Profiler за анализ на ROCm и HIP програми на AMD устройства
Оптимизация
- Разбиране на факторите, които влияят на производителността на ROCm и HIP програми
- Използване на техники за коалесциране в ROCm и HIP за подобряване на пропускателната способност на паметта
- Използване на техники за кеширане и предварително извличане в ROCm и HIP за намаляване на латентността на паметта
- Използване на техники за споделена и локална памет в ROCm и HIP за оптимизиране на достъпа до паметта и честотната лента
- Използване на профилирането и инструментите за профилиране на ROCm и HIP за измерване и подобряване на времето за изпълнение и използването на ресурси
Обобщение и следващи стъпки
Изисквания
- Разбиране на езика C/C++ и концепциите за паралелно програмиране
- Основни познания по компютърна архитектура и йерархия на паметта
- Опит с инструменти за команден ред и редактори на код
Аудитория
- Разработчици, които искат да се научат да използват ROCm и HIP за програмиране на AMD GPU и да оползотворят способността им за паралелна обработка
- Разработчици, които искат да пишат високопроизводителен и мащабируем код, работещ на различни AMD устройства
- Програмисти, които искат да изследват ниското ниво на GPU програмирането и да оптимизират производителността на своя код
28 Часа