Нашему постоянному читателю может показаться, что в названии статьи присутствует некое противоречие. Что-то лишнее затесалось, да? Какое-то из слагаемых... но какое же?
В отличие от упоминавшейся на нашем сайте технологии NVIDIA CUDA, архитектура ATI Stream освещается не в пример реже. Несколько слов о ней сказано в статье "Самый мощный однопроцессорный 3D-ускоритель от AMD: ATI RADEON HD 4890 1024MB", а также в недавней новости на сайте iXBT.com.
Впрочем, расписывать особенности этой технологии нет особой нужды. Предназначение ATI Stream в точности то же самое, что и NVIDIA CUDA: перенос неграфических вычислений на графический процессор (GPU). Который, как известно, с развитием видеокарт "вдруг сделался" быстрее-выше-сильнее центрального процессора (CPU). Для того, чтобы такая технология заработала в привычных нам программах (а речь мы по традиции ведём о программах для обработки видео), разработчику такой программы следует всего лишь научить своё детище общаться на одном языке с графическим процессором. Кто и как это делает — совершенно иной разговор, касающийся нас, потенциальных потребителей, лишь вскользь. Всё, что нас волнует — это конечный результат, а не процесс.
Вот благодаря такому результату и родилась тема сегодняшней статьи. Мы не смогли пройти мимо описания новых возможностей знакомого нам видеоредактора — Cyberlink PowerDirector. Помимо совместной работы с NVIDIA CUDA, программа научилась понимать ATI Stream.
Мы не собираемся сталкивать лбами двух известных нам тяжеловесов в области видеотехнологий, отнюдь! Цель другая: попытаться выяснить, насколько тщательно проведена специалистами Cyberlink работа по "сращиванию" своего PowerDirector-а с двумя архитектурами: NVIDIA CUDA и ATI Stream. А работа проведена немалая: для того, чтобы программа заговорила с графическими процессорами на одном языке, одного лишь желания недостаточно.
Cyberlink PowerDirector
Ну кому из любителей не знаком этот ладно скроенный, с magic-ескими функциями, видеоредактор? Многие вещи делаются здесь буквально нажатием одной кнопки, машинных ресурсов при этом едва ли требуется больше, чем в любом другом видеоредакторе. А благодаря фирменной технологии Cyberlink RichVideo работа с большими проектами значительно облегчается (см. обзор Cyberlink PowerDirector 7).
![](cpd-cuda-stream/01.jpg)
Поддержка графических ускорителей в Cyberlink PowerDirector введена не вчера, а довольно давно. Однако наиболее благоприятный момент для изучения этой технологии — именно сейчас, когда программа умеет работать более чем с одним "брендом".
Пусть пользователя не сбивает с толку, что версия программы не меняется довольно длительное время, оставаясь всё той же "7 с хвостиком", а с заставки нам по-прежнему улыбается начинающий видеолюбитель с модной причёской "Good Morning!".
![](cpd-cuda-stream/00.jpg)
Но всё же, если вдуматься, то действительно: один только факт включения таких функций, как поддержка графических ускорителей, вполне является поводом для срочного приплюсовывания к текущей версии программы очередной единички. Ан нет, разработчик отчего-то не спешит, так и топчется вокруг версии 7.ххх — неужели готовит втихомолку ещё более полезные новшества?
NVIDIA CUDA
C установленной в системе видеокартой NVIDIA, поддерживающей архитектуру CUDA, окно "About", где обычно содержится информация о версии программы, украшено логотипом с надписью "DESIGNED FOR NVIDIA CUDA". Это означает, что Cyberlink PowerDirector распознал вашу видеокарту как годную к совместной работе.
![](cpd-cuda-stream/03.png)
Но заглянем в настройки программы. Оказывается, Cyberlink PowerDirector "дружит" с NVIDIA CUDA не только лишь во время завершающего этапа монтажа — кодирования, но также задействует данную технологию непосредственно при самом монтаже (и в самом деле, при установленном в настройках программы флажке многослойные композиции проигрываются в окне просмотра значительно увереннее, а переходы и вовсе перестают подтормаживать, даже если на таймлинии находится трудноредактируемое видео в "тяжёлом" формате).
![](cpd-cuda-stream/02.png)
Основное же предназначение интеграции программы с графическим ускорителем — это, конечно, кодирование. Но технология NVIDIA CUDA задействуется не всегда, а лишь при выборе наиболее требовательного к машинным ресурсам формата — конечно же, AVC.
![](cpd-cuda-stream/09.png)
Что же касается кодирования MPEG-2, тут CUDA ни сном, ни духом — если выбрать этот формат кодирования, то флажок, включающий графический ускоритель, оказывается неактивным. То есть, при кодировании в MPEG-2 работать будет только центральный процессор.
![](cpd-cuda-stream/04.png)
Спросим сами себя: почему мы вспомнили MPEG-2 и зачем вообще в него кодировать с помощью графического процессора, ведь упаковка в данный формат не так уж и трудоёмка? Хороший вопрос получился, но ответ на него будет ниже.
ATI Stream
Если в ПК установлена видеокарта AMD, поддерживающая технологию ATI Stream, то логотип в окне About сменяется на соответствующий имеющемуся видеоускорителю.
![](cpd-cuda-stream/05.png)
В настройках программы нас ожидает небольшое разочарование: программа не может задействовать данный видеоускоритель во время монтажа. По всей видимости, данная опция доступна (пока?) только с видеокартами NVIDIA.
![](cpd-cuda-stream/06.png)
При выборе предустановки AVC мы видим два вновь появившихся пункта: Video Preservation — High и Standard Definition. Как оказалось, технология ATI Stream задействуется только в том случае, если мы выберем одну из этих двух предустановок. Если же мы станем кодировать в один из "умолчальных" пресетов, то флажок Enable GPU Acceleration окажется неактивным. Таким образом, интеграция ATI Stream здесь организована посредством создания собственных предустановок кодирования.
![](cpd-cuda-stream/07.png)
А теперь ответим на вопрос об MPEG-2, заданный выше. Вот почему мы вспомнили об этом формате, не собирающемся пока сдавать позиции новому AVC: ATI Stream ускоряет кодирование в MPEG-2!
![](cpd-cuda-stream/08.png)
Насколько такая поддержка помогает ускорить кодирование в данный формат — покажет только проверка. К чему, собственно, пора уже и приступить.
Тестирование
Мудрить не станем, пойдём проторенной (и не раз затейливо обруганной читателем) дорожкой. В качестве исходного видео используем самые, пожалуй, распространённые сегодня форматы видео, которые по тем или иным причинам могут нуждаться в перекодировании:
- AVCHD 1920x1080, снятый HD-видеокамерой (длительность 5 минут);
- MPEG-2 720x576, длительность 7 мин 50 сек;
- DV-AVI 720x576 длительностью 4 мин 50 сек.
Кодировать станем также в наиболее "злободневные" форматы:
- AVCHD 1920x1080 (данный формат предназначается для дальнейшего авторинга Blu-ray диска);
- AVC 720x576 (в такой формат мы будем кодировать не-HD видео, ну какой смысл из DV-AVI делать FullHD?);
- MPEG-2 720x576 (готовый материал для авторинга DVD-Video диска);
- MPEG4 AVC 320x240 (имеет условное название Portable, по всем параметрам подходит для просмотра на мобильном устройстве, к примеру, SONY PSP).
Характеристики тестового стенда:
- центральный процессор: AMD Phenom II X4 810, 2600 MHz (13 x 200);
- Видеокарты:
- XFX GeForce GTX 285
- SAPPHIRE HD 4870
- системная плата: Asus M3A32-MVP Deluxe;
- оперативная память: A-Data 2048 МБ DDR2-800 DDR2 SDRAM;
- жесткие диски:
- операционная система и установленные программы: 120 ГБ 7200 об/мин
- исходное видео: 465 ГБ 7200 об/мин
- результат просчёта: 320 ГБ 7200 об/мин
- Операционная система Windows Vista SP1
Напоминаем: из-за отсутствия возможности ускорить на CUDA просчёт в MPEG-2, в диаграммах будут отсутствовать значения, касающиеся этого параметра. В этом случае сравнивать придётся скорость работы одного из графических процессоров только с CPU (что, в общем-то, и неплохо — меньше поводов для разжигания очередной священной войны "чей графический процессор быстрее?").
Исходное видео: AVCHD 1920x1080
Сделаем короткое лирическое отступление, предназначенное исключительно для ушей и глаз пользователя, который, как говорится, "не в теме". Обсуждая с коллегой очередные "железячные" проблемы, возникшие при тестировании, автор столкнулся с непониманием: коллега не мог представить себе, зачем перед кодированием в какой-либо формат программа еще и декодирует исходное видео? Ведь просмотра-де никакого не происходит, а декодирование — это же как раз задача плееров! Всё просто: любой кодировщик — это ещё и плеер, воспроизводящий видео. Только вместо того, чтобы выводить это видео на экран, программа-кодировщик пересчитывает материал и запаковывает видео в новый формат.
Формат AVC, как мы помним (и неоднократно с этим сталкивались), требует от центрального процессора чертовски много усилий, чтобы распаковать его. И, как бы ни были хороши технологии CUDA и Stream, распаковкой видео по-прежнему занимается центральный, но не графический, процессор. А вкупе с необходимостью дальнейшей подготовки кадра для передачи его графическому процессору для кодирования, усилия эти всегда выливаются в практически полную загрузку CPU, причём независимо от способа кодирования: посредством GPU или же CPU. А ну-ка, посмотрим, подтвердилась ли наша теория и в этот раз?
В первом случае, при кодировании в AVCHD 1920x1080, налицо ощутимое ускорение от использования GPU. При этом технология ATI Stream справилась с задачей чуть быстрее NVIDIA CUDA, однако, на фоне почти двукратного отрыва от центрального процессора, данный выигрыш незначителен. При кодировании в MPEG-2 один из участников турнира временно помещён на скамейку запасных — NVIDIA CUDA не ускоряет кодирование в MPEG-2. И мы видим причину: нет смысла ускорять то, что и без всякого ускорения практически достигло потолка. Примерно та же картина наблюдается на третьем "прогоне" — при кодировании в MPEG-4 Portable. Только, в отличие от второго теста, скамейку запасных занимает уже ATI Stream, который не желает ускорять и без того скоростную операцию. Что-ж, каждый прав по-своему...
Исходное видео: MPEG-2 720x576
Степень сжатия информации в MPEG-2 не так велика, как в AVC. Соответственно, и ресурсов для проигрывания требуется значительно меньше, просмотреть DVD-Video диск можно на любом маломощном ноутбуке. Помимо этого, MPEG-2 вот уже много лет занимает самое видное место на наших полках, и список программ, умеющих с ним работать (в том числе и без перекодирования) — просто огромен.
Сейчас мы увидим поистине странную, труднообъяснимую противоречивость. Разве может такое быть, чтобы графический процессор справлялся с кодированием медленнее, чем центральный?
Оказывается, может. Чем же объяснить тот факт, что при кодировании в MPEG-2 ATI Stream оказался медленнее центрального процессора? Давайте попробуем разобраться. Всё выглядит так, словно графический процессор ATI не только кодирует, но и... декодирует видео! Ну а чем ещё можно объяснить такое отставание от центрального процессора? Ведь если бы ATI Stream занималась только кодированием, то справилась бы с этой задачей уж никак не медленнее центрального процессора. А здесь всё указывает на то, что работа построена по следующей цепочке: исходное видео поступает на GPU для декодирования, декодируется, после чего передаётся через связку память-центральный процессор опять же на графический, уже для кодирования.
Предел когда-то должен наступить. Похоже, здесь-то мы его и наблюдаем: мощный центральный процессор в одиночку работает быстрее, чем графический, обременённый множественными связями с тем же центральным. Для очистки совести данный тест был проведён на другом ПК, со средненьким центральным процессором (AMD Athlon 64 X2 4200+). После долгих процедур по установке видеокарт и нужного программного обеспечения все подозрения подтвердились:
Ай, ну просто загляденье: теперь и в случае кодирования в MPEG-2 технология переноса вычислений даёт выигрыш! А всё отчего?
Как видим, работа центрального процессора замедлилась в среднем в два раза. Оно и понятно — два ядра против четырех скоростных! Обратим внимание также и на увеличение времени кодирования посредством GPU видеокарт. Нет, видеокарты медленнее работать не стали. Данное увеличение — всего лишь итог смены процессора на более слабый. В результате чего оба процессора (графический и центральный) просто стали медленнее обмениваться информацией!
Исходное видео: DV-AVI 720x576
Данный формат имеет ещё меньшее сжатие, чем MPEG-2. Поэтому не стоит удивляться, если мы вновь увидим нечто, похожее на предыдущий результат.
Само собой, а что же мы хотели? Снова наблюдаем то же самое отставание графического процессора от центрального при кодировании в нересурсоёмкий формат!
Выводы
Что касается результатов тестирования, то не нужно делать скоропалительных выводов о ненужности технологий NVIDIA CUDA или ATI Stream. Да, в наших измерениях эти технологии не показывают тех сумасшедших ускорений, которыми иногда насыщены страницы официальных пресс-релизов.
Приходится согласиться: конфигурация нашего тестового стенда (ПК, на котором мы тренируемся в создании диаграмм) не является подходящей для получения очень уж оптимистичных результатов. То центральный процессор оказывается слишком мощным, то видеокарта требуется похилее (вспоминается притча о плохом танцоре). Вне всякого сомнения, десятикратное ускорение от использования ATI Stream или NVIDIA CUDA вполне реально получить. Вот только для этого придётся искусственно подобрать такие составляющие ПК, как скорость и количество ядер CPU, модель видеокарты, дисковую подсистему, количество оперативной памяти, операционную систему с установленным на ней ПО, формат исходного видео и, наконец, формат конечного сжатия. При достаточном умении жонглировать всеми этими параметрами вполне реально получение какого-то сногсшибательного результата (дурное дело всегда нехитрое). Впрочем, не исключена возможность и случайного совпадения, когда компьютер пользователя выдаст восхитительный результат. Для получения такого результата (но отнюдь не для повседневной работы) идеальным видится следующий расклад: слабый (но, опять же, до разумных пределов) центральный процессор, мощная видеокарта, скоростная дисковая подсистема, большое количество оперативной памяти, и — самое главное — исходное видео с небольшим размером кадра и запакованное каким-нибудь "лёгким" кодеком, желательно — DV, ну или, на худой конец, MPEG-2.
Напомним: данный материал не имел цели сравнивать какие-либо стороны двух разных, но вместе с тем похожих (по крайней мере по своему предназначению) технологий. Однако не следует думать, что такой важнейший аспект, как качество видео, не был затронут в статье по этой же причине. Так что же помешало сравнить это качество путём анализа кадров из видео, полученного кодированием на NVIDIA CUDA, и взятых из файлов, обработанных ATI Stream?
Помешали сами кадры. Дело в том, что с помощью пресетов, встроенных в Cyberlink PowerDirector, создаётся только интерлейсное видео, в то время как предустановка ATI Stream, называющаяся Video Preservation, создаёт прогрессивный кадр (сделаем оговорку: данная информация верна на сегодняшнюю дату; ближайшие обновления Cyberlink PowerDirector или драйверов ATI могут внести кардинальные изменения в данные предустановки).
И ещё одно важное замечание: всё тестирование проводилось под управлением Windows Vista, поскольку в Windows 7 технология ATI Stream в Cyberlink PowerDirector пока ещё не работает. Это не приговор, а опять же всего лишь состояние дел на момент написания статьи. Вне всякого сомнения, специалисты AMD уже вовсю заняты созданием драйверов к своим видеокартам, адаптированным под новую операционку.
0 комментариев
Добавить комментарий
Добавить комментарий
Пожаловаться на комментарий