План на курса

Въведение

  • Какво е 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 Hours

Брой участници



Цена за участник

Oтзиви от потребители (1)

Свързани Kурсове

GPU Programming with OpenCL

28 Hours

GPU Programming with CUDA

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

ROCm for Windows

21 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with OpenACC

28 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Свързани Kатегории