Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
План на курса
Въведение
- Какво е програмиране с 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 Часа