CUDA

Вычисления общего назначения на GPU

Титаренко К. К.


Что такое CUDA?

- Набор инструментальных средств, позволяющий использовать видеокарты NVIDIA для организации вычислений общего назначения (GPGPU)

- Требует наличия CUDA-совместимого устройства (серия 8 или выше) и установленных драйверов к нему


Зачем использовать CUDA?


Зачем использовать
CUDA?

- Intel Core i7 965 при цене около 1000$ достигает пиковой производительности в приблизительно 70 GFLOPS (по результатам тестов)

- NVIDIA GTX260 при цене около 250$ достигает пиковой производительности в примерно 900 GFLOPS


Зачем использовать CUDA?

- Простота и высокая скорость обучения для С-программистов

- Богатый набор инструментов

- Свободный доступ

- Кроссплатформенность (MS Windows, Linux, Mac OS)


В чем секрет производительности?

- Потоковая обработка данных

- Оптимизированный набор математических функций

- Многоядерность (216 ядер для GTX260)


Потоковая обработка данных

- Принцип SIMT (single instruction – multiple thread)

- Редкое переключение контекста

- Отсутствие надобности в кэшировании


Как это работает?

- Хост передает данные устройству

- Хост запускает ядро – набор инструкций, исполняемый устройством

- Устройство выполняет ядро

- Хост получает данные из устройства


Подробнее о ядре

- Ядро – функция, исполняемая устройством над каждым элементом массива данных в несколько потоков одновременно

- Поток, исполняющий ядро имеет набор идентификаторов

- Рекурсия не поддерживается


Архитектура CUDA

 

 

В чем основа успешной реализации?

- Высокопараллельность метода

- Однотипность действий, выполняемых каждым потоком

- Оптимальный доступ к памяти

- Интенсивные вычисления


Где это используется?

Демонстрация


Где это используется?

-

- Декодирование, обработка, кодирование изображений, звука, видео

- Статистика, финансы

- Моделирование в самых разных научных областях (например, ИИ – нейронные сети)

- Создание цифрового контента

-

 


А как насчет конкретных названий?

-

- Adobe CS4: Premiere Pro, After Effects, Photoshop

- MotionDSP’s vReveal

- MATLAB (plug-ins)

- Mathematica (plug-ins)

-

 

 


С чего начать?

http://www.nvidia.com/object/cuda_home.html