Свържете се с нас

Съдържание и теми, включени в курса

Въведение

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

Първи стъпки

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

OpenCL API

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

OpenCL C

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

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

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

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

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

Дебъгване

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

Оптимизация

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

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

Изисквания

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

Аудитория

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

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


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

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

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