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