Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
План на курса
Въведение
- Какво е 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 програми с помощта на техники като обединяване, кеширане, предварително извличане и профилиране
ХИП
- Какво е HIP?
- Какви са предимствата и недостатъците на HIP?
- Настройка на средата за разработка за HIP
- Създаване на основна HIP програма, която извършва добавяне на вектори
- Използване на HIP език за писане на ядра, които се изпълняват на устройството и манипулират данни
- Използване на вградени в HIP функции, променливи и библиотеки за изпълнение на общи задачи и операции
- Използване на HIP пространства на паметта, като глобални, споделени, постоянни и локални, за оптимизиране на трансфера на данни и достъпа до паметта
- Използване на модел за изпълнение на HIP за управление на нишките, блоковете и решетките, които определят паралелизма
- Отстраняване на грешки и тестване на HIP програми с помощта на инструменти като ROCm Debugger и ROCm Profiler
- Оптимизиране на HIP програми с помощта на техники като обединяване, кеширане, предварително извличане и профилиране
Сравнение
- Сравняване на характеристиките, производителността и съвместимостта на OpenCL, CUDA, ROCm и HIP
- Оценяване на GPU програми с помощта на бенчмаркове и показатели
- Научаване на най-добрите практики и съвети за GPU програмиране
- Проучване на настоящите и бъдещи тенденции и предизвикателства на GPU програмирането
Обобщение и следваща стъпка
Изисквания
- Разбиране на езика C/C++ и концепциите за паралелно програмиране
- Основни познания за компютърната архитектура и йерархията на паметта
- Опит с инструменти за команден ред и редактори на код
Публика
- Разработчици, които желаят да научат основите на GPU програмирането и основните рамки и инструменти за разработване на GPU приложения
- Разработчици, които искат да напишат преносим и мащабируем код, който може да работи на различни платформи и устройства
- Програмисти, които искат да изследват предимствата и предизвикателствата на GPU програмирането и оптимизацията
21 Часа
Oтзиви от потребители (2)
Много интерактивен с различни примери, с добра прогресия в сложността между началото и края на обучението.
Jenny - Andheo
Курс - GPU Programming with CUDA and Python
Машинен превод
Обучаващи енергия и хумор.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Курс - NVIDIA GPU Programming - Extended
Машинен превод