План на курса

Въведение

  • Какво е програмиране с 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, който извършва събиране на вектори
  • Използване на API на CUDA за извличане на информация за устройството, заделяне и освобождаване на памет на устройството, копиране на данни между хоста и устройството, пускане на ядра и синхронизация на нишки
  • Използване на език C/C++ за CUDA за писане на ядра, които се изпълняват на устройството и манипулират данни
  • Използване на вградени функции, променливи и библиотеки на CUDA за изпълнение на общи задачи и операции
  • Използване на пространствата за памет на CUDA, като глобални, обща, постоянни и локални, за оптимизация на преносът на данни и достъпа до паметта
  • Използване на изпълнителната модель на CUDA за контрол на нишките, блоковете и мрежите, които определят паралелизма
  • Отстраняване на грешки и тестване на програми с CUDA с инструменти като CUDA-GDB, CUDA-MEMCHECK и NVIDIA Nsight
  • Оптимизация на програмите с CUDA с техники като коалиция, кеширане, предварително заредване и профилиране

ROCm

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

Сравнение

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

Резюме и следващи стъпки

Изисквания

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

Целева аудитория

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

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


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

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

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