Регулярно появлялись сообщения о выходе все новых программных продуктов с применением GPGPU (General-purpose computing on graphics processing units — универсальные вычисления на графическом процессоре). К сожалению, программные интерфейсы, поддерживаемые ГП как AMD, так и nVidia, пока не получили широкого распространения, зато технология nVidia CUDA, активно продвигаемая компанией уже четвертый год подряд, дала жизнь большому количеству разнообразного ПО.
В данной статье мы постараемся разобраться, какую пользу способно принести применение CUDA конечному пользователю и стоит ли ради этого включать в конфигурацию ПК мощную видеокарту.
Объективные измерения
Для того чтобы сравнить производительность центрального процессора и графических плат, мы выбрали две общедоступные программы. Первая из них называется CUDA Factorial Benchmark, ее автор — Александр Петров, являющийся участником веб-конференции проекта Total Overclock (сайт www.total-oc.ru, там же можно загрузить дистрибутив программы). В процессе тестирования утилита вычисляет факториал заданного числа по желанию пользователя на видеокарте или на центральном процессоре. Последняя версия CUDA Factorial Benchmark — 0.4.0 — поддерживает двухпроцессорные графические платы и массивы SLI. При расчете на процессоре можно вручную задать число потоков. В нашем случае на шестиядерном процессоре Intel Core i7 980X при включенной Hyper Threading наилучший результат получился, как это ни странно, при расчете в шесть потоков, а не в 12. Вторая программа — это PhysX FluidMark версии 1.2.0 разработки Geeks3D.com, определяющая производительность в PhysX.
Такой выбор тестового ПО обусловлен тем, что мы хотели как можно более объективно оценить, насколько применение технологии CUDA способно ускорить выполнение приложений, традиционно работающих только на центральном процессоре. Стоит помнить, что в данных тестах ставятся специфические задачи, заведомо лучше реализуемые на графическом процессоре.
Все испытания проводились на нашем привычном тестовом стенде с 64‑разрядной ОС Windows 7 Ultimate и с драйверами nVidia версии 258.96. При тестах производительности мы применили две графические платы, работающие на «референсных» частотах: ASUS GeForce GTX 295 и Ganward GeForce GTX 470. Наше предположение о том, что ГП nVidia GF100 вычислительно-графической архитектуры Fermi в вычислениях уйдет от ГП предыдущего поколения намного дальше, чем в трехмерной графике, подтвердилось. По результатам тестов видно, что видеокарта GeForce GTX 470 оказалась быстрее двухпроцессорной GeForce GTX 295.
Прикладное ПО
За информацией о программном обеспечении, использующем технологию CUDA, мы отправились на сайт nVidia. Имеющийся там каталог приложений насчитывает более 1000 наименований, 246 из которых — законченные программные продукты. Начать наш обзор мы решили с ПО наиболее распространенного типа с применением вычислений на ГП — с конвертеров видеоданных.
MediaCoder
Из всего многообразия видеоконвертеров более других наше внимание привлекла программа под названием MediaCoder, обладающая двумя весомыми преимуществами: во-первых, она функциональна, а во-вторых, распространяется бесплатно. В MediaCoder интегрированы все современные кодеки, мультиплексоры и контейнеры, что делает ее универсальным инструментом, с помощью которого легко транскодировать видео из какого-либо формата в любой другой, попутно масштабируя его, добавляя или заменяя звуковые дорожки или субтитры. В отличие от простых программ, таких как CyberLink MediaShow Espresso или Nero Move It, где транскодирование осуществляется одним-двумя щелчками мышью на предустановленных профилях, MediaCoder представляет собой гораздо более гибкий инструмент, однако обращение с ним требует наличия знаний о современных форматах видео- и аудиоданных. В числе прочего в программу интегрирован кодировщик стандарта Н.264, использующий CUDA, что в данной ситуации было важно для нас.
Мы транскодировали 10‑мин отрывок кинофильма в формате Н.264 с битрейтом 35 Мбит/с и разрешением 1920×1080 точек до 12 Мбит/с без масштабирования с помощью кодировщика CUDA, включив лучшие настройки качества, а затем применили стандартный кодировщик Н.264, работающий на ЦП, причем в этом случае мы воспользовались двумя режимами: самым быстрым, при котором время кодирования было наиболее близким к показателю GeForce GTX 470, и трехпроходным кодированием с наилучшим качеством.
Как видите, при битрейте, равном 12 Мбит/с, разница между изображениями, полученными с помощью центрального и графического процессоров, невелика.
vReveal
Наше внимание привлекла еще одна программа для работы с видеоматериалом, использующая технологию CUDA, — vReveal. Так же как и MediaCoder, она позволяет транскодировать видео, однако ее ключевой функцией является не конвертация, а улучшение отснятого видеоматериала. Для этого в ней предусмотрены цветокоррекция, автоматическая подстройка контрастности и баланса белого, повышение резкости. Отличает программу предельно простой, интуитивно понятный интерфейс и наличие автоматичеcких настроек — сразу видно, что это ПО ориентировано на людей, не обладающих опытом работы с видео. Наиболее интересная функция vReveal — возможность стабилизации изображения, что бывает очень полезно при работе с видео, снятым с рук. Работает она довольно уверенно, мелкие случайные движения камеры сглаживаются. Степень кадрирования изображения регулируется в пределах от 100 до 120 %, причем разрешение картинки на выходе допустимо задать таким же, как и на входе, — будет осуществляться масштабирование вверх.
В бесплатной версии vReveal отключены несколько функций улучшения изображения, а видеоролики сохраняются только с разрешением не более 480р. Цена полной версии программы — 39 долл.
VST-плагины
В упомянутом выше каталоге на сайте nVidia встречается значительное число программ для работы со звуком. В основном это разнообразные VST-плагины. Один из них, импульсный ревербератор LiquidSonics Reverberate LE, мы испытали в виртуальной студии Steinberg Cubase 4. В комплект поставки программы входит некоторое число импульсных характеристик в формате FLAC, но можно загрузить и свои.
Помимо версии с применением CUDA, существует и дистрибутив Reverberate LE, работающий на процессоре. На наш взгляд, в данном случае использование видеокарты не оправдано, поскольку производительности процессора вполне достаточно для работы эффекта в реальном времени, к тому же в CUDA-версии плагина недоступна функция Zero Delay, обеспечивающая работу ревербератора без задержки.
* * *
Рассмотрев имеющееся на рынке прикладное ПО с использованием технологии CUDA, мы пришли к выводу, что польза от повсеместного применения GPGPU оказалась не столь велика, как этого хотелось бы производителям ГП. Реализовать ресурсы видеокарты в системе, где она установлена,для игр — это одно дело, но вот покупать видеокарту тем, кто не заинтересован в играх, пожалуй, не стоит. Лучше приобрести на эти деньги более дорогой процессор. Исключение составляют продукты Adobe из набора Creative Suite, но опять же инвестиции в видеокарту, вероятнее всего, будут оправданны лишь для тех, кто использует это ПО профессионально.