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