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