Честное слово — скоро мы станем присоединять компьютеры к видеокартам, а не наоборот, как привыкли. Впрочем, дело не только в растущих размерах и энергопотреблении видеокарт, но и в вычислительных возможностях, зачастую превосходящих мощь центрального процессора ПК. Уместное и достаточно свежее тому пояснение — цикл статей, освещающих возможности неграфических вычислений, производящихся силами графического процессора.
- Введение
- Комплектность, подключение, установка ПО
- Результаты измерений
- Ускорение работы приложений
- Выводы
1. Введение
Не секрет, что монтаж видео, снятого нынешними HD-видеокамерами, является сущим мучением. Разработчики новых видеостандартов в своем стремлении, во что бы то ни стало, повысить качество и разрешение картинки без увеличения объема файла (битрейта потока), добились своего, но с какими последствиями... Конечно, речь идет о формате, ставшем результатом маркетинговых и патентных перепалок между разработчиками и владельцами этих технологий — AVCHD, этакий коктейль преимуществ и пороков.
Первое и главное достоинство данного формата — это возможность сохранения высокого качества видео с минимально возможным битрейтом. За счет усовершенствованной технологии сжатия, напоминающей изощрённые методы архивации, данный формат удивительным образом может сочетать высокое качество видео и вместе с этим низкий битрейт, а, следовательно, — малый размер конечных файлов. Можно предположить, что появлению такого формата способствовало трудное и долгое рождение нового типа оптического носителя — пресловутого Blu-ray диска.
Каким бы ёмким поначалу ни казался новый носитель, а для размещения полнометражного фильма в новом высоком разрешении объема всё равно не хватало. Кстати, HD часто преподносится как "видео высокой чёткости", что является почти буквальным переводом с английского и не совсем точно определяет суть нововведения. Если имеется в виду фильм с большим размером кадра, то вместо "четкости" следовало бы употреблять другое слово — "разрешения". Теперь, при использовании AVCHD, объема нового диска вполне хватает для записи любого видеоматериала разумной продолжительности, да ещё и для различных "бонусов" места хватает.
Достоинства мы рассмотрели, но как же с недостатками? Всё просто, как и в тех архиваторах: чем плотнее сжата информация, тем труднее её извлечь. Даже обыкновенное проигрывание AVCHD-файлов требует от процессора немалых усилий, что уж говорить о монтаже такого формата... Скажем прямо ни один (даже самый-самый современный) процессор не позволит вам работать с форматом AVCHD так же легко, как это было со стандартным DV.
Но и исключительно работа в видеомонтажной программе, оказывается, ещё не конец мучениям: нас ждёт долгий и томительный процесс просчёта в результирующий файл — кодирование. И здесь мы снова сталкиваемся с проблемой сильного сжатия информации — чем это сжатие выше, тем больше времени и ресурсов требуется на упаковку. Где же выход? Ждать появления еще более мощных процессоров, которые, в конце концов, заменят нам батареи центрального отопления?
Пора вспомнить о графическом процессоре, венчающем видеокарту. Всё равно этот "камешек" чаще всего томится в безделье, пока мы заняты монтажом, а не устраиваем виртуальные побоища в фантастическом 3D-мире. Ведь, оказывается, данный чип может проявить себя гораздо эффективнее в вычислительных процессах, чем ЦП, который постоянно занят обработкой системных событий. Но это всё слова, но как подобное решение может проявить себя в реальной жизни? Попробуем разобраться.
Начнем с того, что нынешние 3D-видеокарты можно условно разделить на два класса: игрового и профессионального назначения. Какие отличия между ними? Где провести эту грань? Одним из отличий можно считать те особенности и нюансы, которые раскрываются при установке драйверов к видеокарте: во время их инсталляции программа распознаёт видеокарту, определяя её назначение — профессиональное или игровое. В зависимости от этого могут установиться разные драйверы, с различными возможностями.
Почему мы заговорили о профессиональных видеокартах? Сегодня мы рассмотрим любопытный пример профессионального симбиоза — связку видеокарты NVIDIA Quadro CX и некоторых программ из пакета Adobe CS4.
2. Комплектность, подключение, установка ПО
Слово "коробка" совершенно не подходит этому произведению упаковочной индустрии. Даже не верится, что в этой внушительной и тяжеленной громадине всего лишь видеокарта. Один только вес запакованной коробки разубеждает в этом: целых два с половиной килограмма! Однако внутри действительно видеокарта, но... какая!
Больше похоже на некое самостоятельное устройство, даже отдаленно не напоминая привычную "без одёжки" компьютерную плату с насквозь просматриваемой электронной начинкой. Глухой со всех сторон корпус, оснащенный вентиляционной системой (как выяснится позже — исключительно тихой и эффективной), и лишь выступающие PCI-E контакты выдают видеокарту как обыкновенное устройство, подсоединяемое к системной плате ПК.
Помимо видеокарты, в коробке оказались заботливо упакованными следующие комплектующие:
- переходник Display Port DVI-I;
- соединительный кабель SLI Bridge;
- CD с программным обеспечением;
- краткая инструкция по установке и регистрационная карточка.
Прежде чем устанавливать видеокарту в ПК, необходимо убедиться в его соответствии минимальным (рекомендуемым) системным требованиям:
- Microsoft Windows XP 32-bit, Microsoft Windows Vista 64-bit или 32-bit;
- intel Pentium 4, AMD Opteron или выше;
- 1 ГБ RAM (рекомендуется 2 ГБ);
- PCI Express x16;
- Блок питания 500 W.
Последнее требование (БП 500 W) — это так называемая перестраховка. Производитель видеокарты, будучи прекрасно осведомлен о целях и задачах своего потребителя, справедливо полагает, что одной лишь видеокартой наполнение системного блока пользователя не ограничивается. Коль скоро такой пользователь занимается обработкой видео, то вполне резонно ожидать наличия у него нескольких быстрых жестких дисков, устройств для захвата или обработки видео — всё это в сумме нуждается в мощном блоке питания. А сама видеокарта потребляет "всего лишь" 150 W.
Установка этой видеокарты ничем не отличается от установки обыкновенной, за исключением того, что здесь потребуется в два раза больше свободного места проще говоря, под видеокартой один слот должен пустовать, поскольку по высоте она занимает ровно два слота системной платы. Возможно, при установке придется освободить от креплений некоторые внутренние кабели, чтобы видеокарта уместилась в стандартном midi-tower.
Видеокарта оснащена четырьмя видеовыходами: один DVI-I и два выхода Display Port, а трёхпиновый mini-DIN коннектор предназначен для подключения стерео-очков.
Основные характеристики видеокарты доступны на сайте Nvidia, а мы не станем отвлекаться на технические особенности и перейдём к программному обеспечению, с помощью которого графический процессор работает в качестве кодировщика видео.
На прилагаемом CD находится драйвер к видеокарте, плагин RapidHD и руководства пользователя в формате PDF.
Установка плагина RapidHD (в окне инсталлятора он почему-то называется Quadro CX Encoder) происходит быстро, перезагрузка ПК после установки не требуется. Во время установки пользователь может видеть, какие файлы и куда копирует установщик как видно на рисунке, основным адресатом инсталляции является папка Adobe.
В составе RapidHD находится утилита SysCheck, задача которой провести проверку системы на предмет ее готовности к работе с данным модулем. В нашем случае результат положительный система полностью готова к работе.
Как известно, кодирование из Adobe Premiere CS4 происходит посредством другой программы — Adobe Media Encoder. Однако прежде чем мы увидим этот модуль, в Adobe Premiere Pro CS4 следует выбрать тот формат, в который мы собираемся кодировать смонтированный фильм. Итак, привычные File -> Export -> Media, и открывается знакомый модуль Export Settings, где пользователю предлагается выбрать параметры кодирования, удовлетворяющие его условиям. Здесь, в выпадающем списке строки Format и следует искать интересующий нас пункт: ETI RapidHD.
В стандартном дистрибутиве Adobe Premiere Pro CS4 вы такой строчки не найдёте, и немудрено. RapidHD это отдельный продукт, который мы только что установили на наш тестовый ПК. Кстати говоря, ETI RapidHD это вовсе не формат, как может показаться непосвящённому. Это лишь название модуля RapidHD, разработанного компанией Elemental Technologies Inc, который кодирует видеоматериал в AVC. Принцип действия технологии RapidHD наглядно продемонстрирован на сайте компании.
Вернемся к работе: выбрав ETI RapidHD, следует перейти к выбору шаблона (Preset). Как видим, их немного — всего 10 пунктов, однако здесь присутствуют самые распространенные размеры и частота кадров. Впрочем, никто не ограничивает пользователя — создавайте свои собственные шаблоны с любым размером кадра и частотой, и сохраняйте их в качестве новых пресетов под любым понятным вам именем.
Следующий этап запуск Adobe Media Encoder. И здесь ещё не поздно изменить как шаблон, так и отдельные его параметры. Стоит лишь щёлкнуть по строчке шаблона, как снова откроется окно настроек экспорта, где можно изменить любой из параметров.
Настало время измерений, к чему мы и приступим.
3. Результаты измерений
Для тестирования скорости кодирования мы используем короткий видеоролик (37 422 КБ) со следующими параметрами: AVCHD 1920x1080, прогрессивная развертка, 25 кадр/с, максимальный общий битрейт — 18 Мбит/с. Продолжительность клипа всего 18,5 секунд, но большая продолжительность здесь и не нужна, это же не тест на выживание центрального или графического процессора. Нам важно увидеть лишь разницу, которую даёт кодирование графическим процессором в сравнении с привычным, а не скорость кодирования, выражаемую в виртуальных кадрах/с (почему виртуальных? Очень просто: условия кодирования и материал всегда разные. Часовая лекция говорящей на зеленом фоне головы закодируется быстрее, чем яркий, насыщенный красками мюзикл с той же продолжительностью. Так же и ролик с размером кадра 320x240 будет упакован в разы быстрее, чем 1920x1080).
Поскольку наш ролик сжат фактически тем же AVCHD, в который мы станем кодировать, для большей объективности добавим еще один файл — несжатое видео 1920х1080p 25, полученное из этого же видеоролика (тем самым убедимся, что GPU именно перекодирует, а не переупаковывает из контейнера в контейнер). К этим двум файлам добавим ещё и несложный проект в Adobe Premiere Pro CS4, состоящий из упомянутого выше файла с добавленными к нему тремя видеофильтрами: Auto Color, Auto Contrast и Auto Levels. В придачу разместим поверх видео небольшую надпись.
Характеристики ПК, на котором проводилось тестирование, следующие: ОС Windows Vista SP1, процессор AMD Athlon 64 X2 Dual Core 4200+, 2 ГБ RAM, четыре SATA-диска (на первом установлена ОС и программные файлы; на втором располагаются временные файлы; на третьем диске исходное видео, требующее перекодирования; на четвертый диск записываются конечные, перекодированные файлы). Все диски работают раздельно друг от друга, RAID-массив не создавался. Почему?
Вкратце: RAID хорош, когда от него требуется получить скорость в каком-то одном направлении — что-то быстро считать или, наоборот, записать. Однако процесс видеомонтажа и кодирования — это беспрестанное и одновременное считывание и запись больших объемов информации. При этом процессор — далеко не самый важный элемент. Дисковая система играет не меньшую, если даже не большую роль. Попробуйте что-то копировать с диска и одновременно записывать на него — какую скорость обмена вы получите? Правильно, низкую. Причина в том, что головки диска вынуждены метаться, попеременно копируя и записывая информацию на одну пластину, но в разные её кластеры. Так же ведет себя и RAID-массив, повторяя поведение одного жесткого диска. Если два диска работают раздельно, то и скорость обмена увеличивается (первый диск занят только чтением, второй — только записью). Подробнее о мифе видеомонтажного RAID-массива рассказано в главе Дисковая подсистема статьи Филиппа Казакова Компьютер для домашнего видеомонтажа.
И, опять же для чистоты эксперимента, все тесты были проведены трижды. Пусть это и заняло немало времени, зато выяснилось, что результат практически всегда одинаков, а микроскопическая разница в 2-4% несущественна и относится, скорее всего, к случайным факторам. В таблицу помещены наиболее удачные результаты с минимальным по времени значением. Здесь красным цветом показаны результаты кодирования центральным процессором, а серым обозначены результаты кодирования силами GPU видеокарты Quadro CX в тандеме с плагином RapidHD. В левой части таблицы указывается формат файла, в который производится кодирование, время кодирования выражено в секундах.
Какие могут быть комментарии? Во-первых, совершенно очевидно, что графический процессор наиболее активно проявляет себя, когда мы кодируем "из файла в файл", при этом, чем меньше разница между размером кадра исходного клипа и конечного, тем выше скорость GPU-кодирования. Яркий пример — кодирование файла 1920x1080p 25 силами графического процессора происходит в три-четыре раза быстрее, чем силами ЦП. Дело в том, что в данном случае центральный процессор работает лишь в качестве обычного конвейера, по которому бегут готовые к кодированию кадры. Если при кодировании требуется изменить размер кадра или соотношение сторон пикселя, то операция кодирования тормозится — центральный процессор не успевает вовремя отдать видеокарте кадр с измененным размером, поскольку занят его просчётом.
Тем же объясняется и малая разница во времени GPU vs CPU при кодировании последовательности Premiere Pro CS4 с добавленными к клипу фильтрами. Все эти фильтры просчитываются силами центрального процессора, а уже кодированием обработанного кадра, как и положено, занимается графический процессор. Так или иначе, быстрый GPU вынужден простаивать, пока ЦП занят расшифровкой данных и их передачей графическому процессору для окончательной упаковки.
Остается добавить, что во время проведения всех трёх тестов загрузка центрального процессора держалась на самом максимуме 100%, что явно затормаживало работу GPU. Избежать задержек, возникающих из-за медленной работы центрального процессора, можно, лишь сменив его... на более мощный. "Дорогому камню дорогая оправа", истина остаётся незыблемой.
Во время непродолжительного (увы) знакомства с видеокартой Quadro CX автором был закодирован в AVC 1280x720p семейный фильм продолжительностью целых 54 минуты. При кодировании видеокартой это заняло один час и 52 минуты (112 минут), что вполне сочетается с результатами, полученными при тестировании с участием короткого видеоролика. Позже, уже в отсутствие Quadro CX, этот же 54-минутный файл был перекодирован в такой же формат, но с помощью центрального процессора. Здесь окончания операции пришлось ждать целых пять часов 47 минут (347 минут). Разница во времени кодирования GPU vs CPU составила 3,1 раза; этот результат вполне согласуется с результатами "коротких" тестов.
Пусть мы и убедились в том, что "GPU что-то делает и ускоряет", но ведь хочется большей наглядности, так, как мы привыкли видеть на вкладке "Быстродействие" Диспетчера задач Windows... К сожалению, программных средств, которые смогли бы отобразить в реальном времени загрузку графического процессора нашей видеокарты, не нашлось. Великолепная утилита RivaTuner тоже не "увидела" этой возможности — график GPU Usage просто не отобразился. Что же, придется проверить работу графического процессора иными методами — измерением его температуры. Пусть данный метод является и не совсем научным — скорее, субъективным — грех им не воспользоваться, как единственным доступным.
Здесь видно, как графический процессор во время кодирования видео постепенно нагревается — за 12 минут работы на целых 10 градусов. Конечно, он мог нагреться значительно больше, не помешай ему эффективная система охлаждения, о которой мы вскользь упоминали в начале обзора.
4. Ускорение работы приложений
Теперь хотелось бы увидеть в реальности ту помощь, которую оказывает Quadro CX при работе в некоторых программах из пакета Adobe CS4 — Premiere Pro и After Effects. По утверждению разработчика, данная видеокарта делает работу в Adobe Premiere Pro, Adobe After Effects и даже в Adobe Photoshop более комфортной, сглаживая и ускоряя отображаемый на экране редактируемый материал. Любого монтажера, в первую очередь, заинтересует именно этот фактор, в то время как скорость кодирования — величина несущественная (после недельной работы над фильмом — какие-то пять часов кодирования, подумаешь!).
Итак, в нашем ПК установлена Quadro CX. Начнем с создания новой тайм-линии (Sequence) в Adobe Preemiere Pro CS4, имеющей такие параметры: AVCHD 1920x1080 c прогрессивной разверткой 25 кадр/с (подробнее о работе в этой программе написано в соответствующем обзоре). Импортируем в копилку проекта знакомый нам короткий видеоролик (37 422 КБ) и расположим его на тайм-линии. Этого следовало ожидать — никаких цветных полос на render-bar не видно, следовательно, параметры видеоролика полностью совпадают с параметрами тайм-линии, и программа в состоянии проиграть такой файл без предварительного просчёта. Так считает программа, в то время как на деле проигрывание обычно напоминает слайд-шоу. Но это — без Quadro CX, а что мы увидим, когда в работу включится её графический процессор?
Удивительное дело! Проигрывание этого файла отнимает не более половины ресурсов центрального процессора. Запомним этот результат до той поры, когда видеокарта покинет корпус ПК, а на смену ей вернется скромная GeForce 8600 GTS.
Попробуем провести подобный опыт в After Effects: расположим на тайм-линии такое же по характеристикам видео (AVCHD 1920x1080i, 25 кадр/с. Да-да, работать в After Effects со сжатыми форматами, по меньшей мере, неграмотно, если не сказать грубее... Но мы же экспериментируем?). А теперь в придачу разместим поверх видео ещё два слоя — обыкновенные скриншоты. Первый из рисунков не имеет прозрачности, зато движется по замысловатой траектории. Второй рисунок статичен, но имеет прозрачность 50%. Каково сейчас придется процессору (или видеокарте?), когда мы попытаемся просмотреть этот бутерброд без предварительного просчёта?
То, что мы видим на рисунке, нельзя назвать иначе, как сладкий сон видеомонтажёра. Просмотр почти в реальном времени (до полного счастья не хватает жалких пяти кадров в секунду) и при загрузке ЦП всего лишь в 80%? Действительно, "нервосберегающая" технология...
Что мы получим, если удалим эту видеокарту из ПК, и обработка станет вестись одним лишь центральным процессором, без помощи графического?
Как и следовало ожидать, работа в обоих приложениях замедлилась, в то время как нагрузка на центральный процессор увеличилась. Так, простое проигрывание файла в Adobe Premiere Pro CS4 превратилось в подобие слайд-шоу на фоне полностью загруженного ЦП.
Что уж говорить о нашем "бутерброде" многослойном проекте, сделанном в After Effects. Проигрываться композиция стала в два раза медленнее, при этом загрузка центрального процессора "плясала", неуклонно приближаясь к 100%.
В заключение наших экспериментов следует напомнить, что плагин RapidHD может работать только в паре с Quadro CX, о чем красноречиво свидетельствует сообщение, возникающее при попытке кодирования с другой видеокартой.
5. Выводы
В выводах подобных обзоров принято обобщать полученные за время экспериментов знания, подчеркивать те или иные характеристики исследуемой техники, хвалить или поругивать разработчика и производителя...
Нарушим сложившийся уклад, и вспомним ещё об одном важном факторе, который зачастую играет решающую роль в выборе кодировщика, — качество кодирования. Пользователь, имевший дело с программными или аппаратными кодировщиками, знает на практике, насколько кардинально могут различаться те или иные программы и плагины. Не только скоростью работы (что обычно приветствуется), но и качеством кодирования.
О скорости, с которой работает GPU в видеокарте Quadro CX, мы уже знаем. Но насколько качественно производится пересчёт видеокадров? Лучший способ оценить качество — конечно, сравнить кадр из исходного видеофайла с кадром полученного в результате перекодировки. Но и здесь без специальных методов никуда — невооруженным глазом крайне трудно, а то и вовсе невозможно увидеть отличия. Одним из методов, позволяющих это сделать, может стать обычное "вычитание" в Adobe Photoshop, когда один из слоёв накладывается на другой, но при этом отображаются лишь те пиксели, которые в этих слоях не совпадают.
Итак, Layer -> Layer Style -> Blending Options: Difference. Результат слабо видимые контуры на черном фоне. Само собой, чем больше на рисунке "шумов" (не закрашенных черным цветом областей) тем больше разница между исходным и перекодированным кадром. Следовательно ниже качество (пере)кодирования. А теперь взглянем на результат его даже не требуется комментировать.
На кадре из видеоролика, перекодированного без участия RapidHD, пусть слабо, но всё-таки просматриваются цветные контуры движущегося микроавтобуса (чтобы их разглядеть, пришлось "выкрутить" яркость обоих черных кадров до максимума). Второй кадр кажется полностью чёрным, не имеющим артефактов, но все-таки и здесь присутствуют шумы, хотя в гораздо меньшем объёме (если вы не наблюдаете на картинках искажений, а видите лишь "квадраты Малевича" — попробуйте временно изменить настройки вашего монитора или, если у вас ЖК-монитор, взгляните на экран под другим углом — сверху, например).
Читатель уже сделал вывод, это, несомненно. AVC-кодер, работающий в Adobe Media Encoder, не так тщательно обрабатывает видеокадр, как это делает специализированный Rapid HD.
Наличие Quadro CX и череда выходных дней — это ли не счастливый случай? Воспользовавшись такой оказией, автор сумел воплотить в жизнь изрядную долю своих видеозадумок, смонтировав очередной семейно-хроникальный фильм. Этот подвиг много месяцев подряд откладывался под предлогом неизбежного апгрейда компьютера, на котором монтаж AVCHD довольно затруднителен. Впрочем, есть подозрение, что и после апгрейда такой монтаж всё равно будет мучительным — даже мощный центральный процессор вряд ли заменит специализированное устройство, предназначенное для ускорения работы с видео.
Разговоры о переносе вычислительных процессов на GPU слышатся регулярно, готовых же решений до сих пор, увы, немного. А ведь перспективы у этого направления есть, и весьма значительные. Технология, увидевшая свет вместе с выпуском Nvidia Quadro CX, — пожалуй, первый достойный внимания пример из всех, что до сих пор встречались автору. Технология, работающая не на словах, а на деле. Ощутимый прирост скорости кодирования в популярный ныне AVC, быстрый, комфортный монтаж и композитинг — профессионал наверняка призадумается, несмотря на немалую стоимость устройства (средняя цена видеокарты (количество предложений) составляет Н/Д(1)).
Профессионал, который ценит свое время, да и нервы тоже.