CUDA в Adobe Premiere CS5: оправдано ли использование бюджетной видеокарты?

Филипп Казаков
  • 20 сентября 2011
  • 11k

Adobe Premiere CS5 и CS5.5 позволяет использовать технологию nVidia CUDA для аппаратного ускорения просчета видеоэффектов. Однако официальный список совместимых видеокарт, обеспечивающих поддержку данной функциональности, довольно короток и ограничивается моделями верхнего ценового диапазона.

Штаб студии Lookaround, рабочее место автора, август 2011 :)

Наряду с этим, широко известен хак, позволяющий включить поддержку аппаратного ускорения на гораздо более дешевых решениях. Впрочем, "хаком" назвать этот финт можно с большой натяжкой - "взлом" Premiere сводится к вписыванию названия вашей видеокарты в текстовый файл, лежащий в корне программы. "Дырка" сделана настолько дружелюбной для пользователя, что вызывает непроизвольный вопрос, не специально ли она оставлена?

Собираясь сделать апгрейд видеосистемы монтажного компьютера, я стремился решить несколько задач сразу. Во-первых, обеспечить одновременную поддержу трех мониторов и проектора; во-вторых, сохранить шумность компьютера на прежнем (очень низком) уровне; в-третьих - уложиться в более-менее разумный бюджет (до 8000 руб). Так или иначе, мой выбор остановился на двух двухвентиляторных картах nVidia GeForce GTS450 1024Mb производства Gigabyte, удовлетворяющих поставленным задачам. Карты я поставил в компьютер под управлением Windows 7 со следующими существенными железками:

  • Gigabyte GA-P35-DS3p
  • 8 GB RAM DDR2
  • Core 2 Quad Q9300

"Взлом" Premiere прошел без каких-либо проблем и, убедившись в том, что аппаратное ускорение заработало, я сразу же постарался понять, что же оно привнесет в процесс монтажа (я брал видеокарты с манибеком, рассчитывая, если они не понравятся, обменять на более мощные). Кстати, а как убедиться в том, что аппаратное ускорение включено? Во-первых, в настройках проекта Premiere в пункте Video Rendering and Playback должен появится пункт Mercury Playback Engine GPU Acceleration:

Mercury Playback Engine GPU Acceleration

Во-вторых, нажав Ctrl+F12 можно попасть в консоль Premiere, и, изменив значение параметра EnableDogEars на "true", увидеть статистику рендеринга прямо на изображении. Вот так:

Статистика рендеринга прямо на изображении

Для тестов я взял файлы 1920x1080 с автомобильного видеорегистратора (h264) и с видеокамеры Sony EX3 (MPEG2). Для начала я провел простейший эксперимент: наложил один слой видео на другой, обрезав (crop) половину верхнего кадра. В исследовании производительности на ixbt.com приводился похожий пример с шестью видеодорожками, расположенными друг над другом с различными эффектами. Все они успешно воспроизводились на профессиональной Quadro FX 4800, и первые четыре - на игровой GeForce GTX 285.

Увы! При попытке воспроизведения в моем случае уже через пару-тройку секунд картинка "залипла". Таким образом, карта не справилась даже с двумя слоями Full HD h264 видео. Обращу внимание на желтую полосу над фрагментом на Timeline - она свидетельствует о том, что, по мнению Premiere, это фрагмент должен бы проиграться в реальном времени без каких-либо проблем. С 1920x1080 MPEG2 видео ситуация оказалась немного лучше - залипание проявилось только при трех слоях.

Тест аппаратного ускорителя в Adobe Premiere при наложении видео слоями

В следующем эксперименте я отказался от наложения видео слоями, и попробовал наложить несколько аппаратных эффектов на один слой изображения:

Тест при наложении нескольких аппаратных эффектах на одном слое изображения

И еще больше эффектов:

Тест при еще большем количестве эффектов

Для MPEG2 на одном слое мне так и не удалось получить пропущенных кадров, даже добавив 10 "тяжелых" фильтров. Лишь при наложении друг на друга двух слоев с 22 фильтрами в сумме, производительность рендеринга превью, наконец, упала до 15 FPS.

Производительность упала при наложении друг на друга двух слоев с 22 фильтрами в сумме

Замечу, что при отключении аппаратного ускорения, даже один фильтр "Кривые" не позволяет получить воспроизведение в реальном времени на Core 2 Quad Q9300. Вывод: аппаратных ресурсов хватает для обработки одного слоя любого Full HD видео в реальном времени, и двух слоев MPEG2 1080p с разумным количеством фильтров.

В следующих экспериментах я накладывал на Full HD-слои видео стандартного разрешения (DV AVI), а также работал со слоями в "стандартном" разрешении (720х576). Не утомляя подробностями: с этими задачами карта блестяще справляется при любом разумном количестве слоев.


Что же со всем этим делать?

Итак, промежуточный итог таков: видеокарта не справляется с послойной обработкой Full HD h264, однако вполне подходит для работы с эффектами на одном слое такого видео, и двух слоях MPEG2. Однако исчерпываются ли на этом преимущества аппаратного ускорения? Для эксперимента я отключил аппаратное ускорение:

Для эксперимента аппаратное ускорение отключено

Как видите, полоска над фрагментом стала красной - Premiere уже не ожидает, что фрагмент будет отображен в реальном времени. Скорость рендеринга составляет менее 1 FPS. Чтобы добиться плавного воспроизведения, его придется "отрендерить". В "софтверном" режиме этот процесс на Core 2 Quad Q9300 занимает примерно 26 минут, при этом среднее пиковое потребление питания системного блока компьютера возрастает до 150 ватт:

Процесс программного рендеринга

Теперь включим обратно аппаратное ускорение. Полоска снова стала желтой - Premiere "думает", что сможет воспроизвести фрагмент плавно. Но мы-то знаем, что на самом деле мощности видеокарты сейчас не хватит. Чтобы форсированно отрендерить фрагмент, вместо привычного Enter необходимо вызвать "Sequence-> Render entire work area" (в "Edit -> Keyboard Customization" этой функции можно назначить горячую клавишу, например, тот же Enter).

Процесс аппаратного рендеринга

Что мы видим? 2 минуты против 26 в софтверном режиме! Как видно, аппаратное ускорение даже если и не может обеспечить realtime воспроизведение, но зато в 10 раз ускоряет рендеринг сложных сцен! Потребление системного блока при этом в пике закономерно достигало 200 ватт.


Выводы:

  • если вы используете Premiere для многослойного компоузинга Full HD, видеокарта среднего ценового диапазона вам НЕ подойдет;
  • если вы используете Premiere преимущественно для классического монтажа "в стык", такая карта вполне приемлема: в редкие моменты, когда вы будете использовать 2 слоя видео, даже если она не справится с RealTime, но наверняка даст многократное ускорение рендеринга;
  • карта также облегчит практически любой монтаж и компоузинг видео стандартного разрешения.

Эмпирика

Это мое частное мнение, не претендующее на истинность.

Положа руку на сердце, бОльшую часть видеомонтажных задач даже "средняя" карта ускоряет весьма успешно. Почему же Adobe ограничила официальную поддержку только самыми-самыми картами? Потому, что в частной задаче послойного наложения Full HD видео карта мгновенно пасует, а механизм детектирования таких ситуаций не разработан. В режиме аппаратного ускорения полоска над тайм-линией всегда остается желтой, сколько бы слоев вы не наложили, вне зависимости от фактической скорости воспроизведения! А должна, по идее, становиться красной, если мощности видеокарты не хватает, после чего этот фрагмент можно было бы "отсчитать" привычным всем образом (нажатием Enter).

Таким образом, если бы Adobe расширила официальных список видеокарт "вниз", многие пользователи, не знакомые с этой особенностью программы, столкнулись бы с проблемами при наслоении видео. С другой стороны, "открытые ворота", т.е. предельно упрощенный способ включения новых видеокарт в список совместимых, позволил охватить нишу энтузиастов, для которых мелкие неудобства могут быть менее значимы, чем стоимость оборудования (и не только стоимость: кроме, собственно, цены меня еще очень беспокоит шумность решения).


Оффтоп:

Совсем кратко, пару любопытных наблюдений за работой видеокарт (сделанных по мониторингу температур и загрузки карт во время монтажа с помощью nVidia Inspector). Оказывается, совершенно не важно, на мониторе какой видеокарты в данный момент находится окно Preview: расчет эффектов будет происходить на той видеокарте, которая в ОС выбрана основной. При этом простой запуск Premiere с аппаратным ускорением приводит к существенной загрузке обеих видеокарт: даже если ничего не монтировать, температура обоих GPU при работающем Premiere возрастает на 10-15 градусов.


P.S.

Есть мнение, что Premiere зачастую непоследовательно ведет себя на разнообразных платформах. То есть при казалось бы одинаковых формальных параметрах железа, производительность на различных моделях может здорово отличаться. Поэтому я намереваюсь повторить проведенные эксперименты на более современной материнской плате и посмотреть, изменится ли что-либо. Если тема интересна, с удовольствием поделюсь результатами.


Эта статья написана специально для информационной поддержки фильма "Ты забыл, во что мы играли". Все кадры на скриншотах - из фильма. В рамках эксперимента, данный фильм в ближайшие дни начнет распространяться совершенно бесплатно.

Комментарии

К сожалению, Премьер единственный редактор, который поддерживает Куду. Но он далеко не самый удобный и функциональный. Остаётся только ждать от других таких же разработок.
Не верится как-то, что в Adobe Premiere можно делать настоящие фильмы. Не знаю как сейчас, но ранее программа глючила. А фильм пойду скачаю, интересно стало. :-)