План на курса

Въведение

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

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


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

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

Предстоящи Курсове

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