План на курса

Въведение

  • Какво е GPU програмиране?
  • Защо да използвате GPU програмиране?
  • Какви са предизвикателствата и компромисите от GPU програмирането?
  • Какви са рамките за GPU програмиране?
  • Избор на правилната рамка за вашето приложение

OpenCL

  • Какво е OpenCL?
  • Какви са предимствата и недостатъците на OpenCL?
  • Настройване на средата за разработка за OpenCL
  • Създаване на основна OpenCL програма, която извършва добавяне на вектори
  • Използване на OpenCL API за заявка на информация за устройството, разпределяне и освобождаване на паметта на устройството, копиране на данни между хост и устройство, стартиране на ядра и синхронизиране на нишки
  • Използване на OpenCL C език за писане на ядра, които се изпълняват на устройството и манипулират данни
  • Използване на OpenCL вградени функции, променливи и библиотеки за изпълнение на общи задачи и операции
  • Използване на OpenCL пространства на паметта, като глобални, локални, постоянни и частни, за оптимизиране на трансфера на данни и достъпа до паметта
  • Използване на OpenCL модел за изпълнение за контрол на работните елементи, работните групи и ND-обхватите, които определят паралелизма
  • Отстраняване на грешки и тестване OpenCL на програми с помощта на инструменти като CodeXL
  • Оптимизиране OpenCL на програми с помощта на техники като обединяване, кеширане, предварително извличане и профилиране

CUDA

  • Какво е CUDA?
  • Какви са предимствата и недостатъците на CUDA?
  • Настройка на средата за разработка за CUDA
  • Създаване на базова CUDA програма, която извършва добавяне на вектори
  • Използване на CUDA API за заявка на информация за устройството, разпределяне и освобождаване на паметта на устройството, копиране на данни между хост и устройство, стартиране на ядра и синхронизиране на нишки
  • Използване на езика CUDA C/C++ за писане на ядра, които се изпълняват на устройството и манипулират данни
  • Използване на вградени функции, променливи и библиотеки на CUDA за изпълнение на общи задачи и операции
  • Използване на CUDA пространства на паметта, като глобални, споделени, постоянни и локални, за оптимизиране на трансфера на данни и достъпа до паметта
  • Използване на модел за изпълнение на CUDA за управление на нишките, блоковете и решетките, които определят паралелизма
  • Отстраняване на грешки и тестване на CUDA програми с помощта на инструменти като CUDA-GDB, CUDA-MEMCHECK и NVIDIA Nsight
  • Оптимизиране на CUDA програми с помощта на техники като обединяване, кеширане, предварително извличане и профилиране

ROCm

  • Какво е ROCm?
  • Какви са предимствата и недостатъците на ROCm?
  • Настройка на средата за разработка за ROCm
  • Създаване на базова ROCm програма, която извършва добавяне на вектори
  • Използване на ROCm API за запитване на информация за устройството, разпределяне и освобождаване на паметта на устройството, копиране на данни между хост и устройство, стартиране на ядра и синхронизиране на нишки
  • Използване на ROCm C/C++ език за писане на ядра, които се изпълняват на устройството и манипулират данни
  • Използване на ROCm вградени функции, променливи и библиотеки за изпълнение на общи задачи и операции
  • Използване на ROCm пространства на паметта, като глобални, локални, постоянни и частни, за оптимизиране на прехвърлянето на данни и достъпа до паметта
  • Използване на модел за изпълнение на ROCm за управление на нишките, блоковете и решетките, които определят паралелизма
  • Отстраняване на грешки и тестване на ROCm програми с помощта на инструменти като ROCm Debugger и ROCm Profiler
  • Оптимизиране на ROCm програми с помощта на техники като обединяване, кеширане, предварително извличане и профилиране

Сравнение

  • Сравняване на характеристиките, производителността и съвместимостта на OpenCL, CUDA и ROCm
  • Оценяване на GPU програми с помощта на бенчмаркове и показатели
  • Научаване на най-добрите практики и съвети за GPU програмиране
  • Проучване на настоящите и бъдещи тенденции и предизвикателства на GPU програмирането

Обобщение и следващи стъпки

Изисквания

  • Разбиране на езика C/C++ и концепциите за паралелно програмиране
  • Основни познания за компютърната архитектура и йерархията на паметта
  • Опит с инструменти за команден ред и редактори на код

Публика

  • Разработчици, които желаят да научат как да използват различни рамки за GPU програмиране и да сравнят техните характеристики, производителност и съвместимост
  • Разработчици, които искат да напишат преносим и мащабируем код, който може да работи на различни платформи и устройства
  • Програмисти, които искат да изследват компромисите и предизвикателствата на GPU програмирането и оптимизацията
 28 Hours

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



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

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

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

GPU Programming with OpenCL

28 Hours

GPU Programming with CUDA

28 Hours

AMD GPU Programming

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атегории