Производительность параллельных вычислений GPGPUИспользование видеокарт для организации параллельных вычислений очень перспективно, причём это не описание ближайшего будущего, а суровая реальность. Для реализации возможностей современных видеокарт необходимо соответствующее программное обеспечение и алгоритмы, которые можно распараллелить. Большинство алгоритмов, используемых в программном обеспечении для процессоров Intel/AMD/Cell изначально являются последовательными, поэтому не всегда возможна их переделка для параллельной реализации. Примерами таких последовательных алгоритмов являются арифметическое кодирование, сжатие в JPEG без потерь (JPEG-LS), декодирование видеопотока и др. Для демонстрации возможностей параллельных вычислений на видеокартах NVIDIA с технологией CUDA мы написали ряд программ, которые раскрывают потенциал этого направления. Эти примеры сделаны нами и не повторяют код из примеров CUDA SDK. Более того, наши результаты заметно лучше, чем можно найти в SDK. Конфигурация компьютера
Дополнительные условияДля демонстрации результатов параллельных вычислений на видеокарте мы рассматриваем ситуацию, когда все необходимые данные уже находятся в памяти видеокарты. Такая постановка задачи позволяет оценить потенциал именно видеокарты, без учёта влияния других устройств, связанных с операциями ввода-вывода. Цветовая интерполяция (дебайер) по алгоритму Malvar-He-CutlerДля восстановления цвета после байеровской решётки необходимо выполнить цветовую интерполяцию. Для изображений формата 1920 х 1080 по алгоритму HQLI (набор фильтров для квадрата 5х5), получена скорость вычислений 25 ГБайт в секунду для видеокарты GeForce GTX 1080 TI без учёта копирований. Сжатие цветных изображений по алгоритму Baseline JPEGПри сжатии 24-битного изображения с разрешением 3840 х 2160 по алгоритму Baseline JPEG примерно в 10 раз (без учёта копирований), была получена производительность кодирования 46 ГБайт в секунду. Сжатие изображений по алгоритму JPEG2000Для сжатия в 12 раз 24-битного изображения с разрешением 3840 х 2160 по алгоритму JPEG2000 в режиме пачки, видеокарте требуется 10.3 мс, что соответствует производительности 2.3 ГБайт в секунду. Бенчмарки для кодирования и декодирования JPEG2000 можно посмотреть на этих страницах: JPEG2000 encoder и JPEG2000 decoder Другие бенчмарки для различных алгоритмов обработки изображений из библиотеки Fastvideo SDK можно посмотреть тут. |