План на курса

Въведение

  • Какво е OpenCL?
  • OpenCL срещу CUDA срещу SYCL
  • Преглед на OpenCL функции и архитектура
  • Създаване на среда за разработка

Приготвяме се да започнем

  • Създаване на нов OpenCL проект с помощта на Visual Studio код
  • Проучване на структурата и файловете на проекта
  • Компилиране и изпълнение на програмата
  • Показване на изхода с помощта на printf и fprintf

OpenCL API

  • Разбиране на ролята на OpenCL API в хост програмата
  • Използване на OpenCL API за заявка на информация и възможности на устройството
  • Използване на OpenCL API за създаване на контексти, опашки от команди, буфери, ядра и събития
  • Използване на OpenCL API за поставяне на команди в опашката, като четене, писане, копиране, картографиране, декартиране, изпълнение и изчакване
  • Използване на OpenCL API за обработка на грешки и изключения

OpenCL В

  • Разбиране на ролята на OpenCL C в програмата на устройството
  • Използване на OpenCL C за писане на ядра, които се изпълняват на устройството и манипулират данни
  • Използване на OpenCL C типове данни, квалификатори, оператори и изрази
  • Използване на OpenCL C вградени функции, като математически, геометрични, релационни и др.
  • Използване на OpenCL C разширения и библиотеки, като atomic, image, cl_khr_fp16 и др.

OpenCL Модел на паметта

  • Разбиране на разликата между моделите памет на хост и устройство
  • Използване на OpenCL пространства на паметта, като глобални, локални, постоянни и частни
  • Използване на OpenCL обекти на паметта, като буфери, изображения и канали
  • Използване на OpenCL режими за достъп до паметта, като само за четене, само за запис, четене-запис и др.
  • Използване на OpenCL модел на консистенция на паметта и механизми за синхронизация

OpenCL Модел на изпълнение

  • Разбиране на разликата между моделите за изпълнение на хост и устройство
  • Използване на OpenCL работни елементи, работни групи и ND-обхвати за дефиниране на паралелизма
  • Използване на OpenCL функции на работен елемент, като get_global_id, get_local_id, get_group_id и др.
  • Използване на OpenCL функции за работна група, като бариера, work_group_reduce, work_group_scan и др.
  • Използване на OpenCL функции на устройството, като get_num_groups, get_global_size, get_local_size и др.

Отстраняване на грешки

  • Разбиране на често срещаните грешки и бъгове в OpenCL програми
  • Използване на Visual Studio програма за отстраняване на грешки в код за проверка на променливи, точки на прекъсване, стек на повиквания и т.н.
  • Използване на CodeXL за отстраняване на грешки и анализ на OpenCL програми на AMD устройства
  • Използване на Intel VTune за отстраняване на грешки и анализ на OpenCL програми на устройства на Intel
  • Използване на NVIDIA Nsight за отстраняване на грешки и анализ на OpenCL програми на NVIDIA устройства

Оптимизация

  • Разбиране на факторите, които влияят на производителността на OpenCL програми
  • Използване на OpenCL векторни типове данни и техники за векторизация за подобряване на аритметичната производителност
  • Използване на OpenCL техники за разгръщане и подреждане на цикъла за намаляване на контрола и увеличаване на локалността
  • Използване на OpenCL локална памет и функции на локалната памет за оптимизиране на достъпа до паметта и честотната лента
  • Използване на OpenCL профилиране и инструменти за профилиране за измерване и подобряване на времето за изпълнение и използването на ресурсите

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

Изисквания

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

Публика

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

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



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

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

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

GPU Programming with CUDA

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

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