План на курса

Введение

  • Какво е програмиране с 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 часа

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


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

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

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