Пятница, пожалуй самый любимый день недели у каждого человека, по крайней мере, это справедливо для всех тех людей, которых я знаю :) Работа за неделю утомила, хочется покоя и тишины, хочется расслабиться и насладиться жизнью. Тут уж всяк по своему подходит к решению этой задачи. Я, например, порой желаю съездить за город, благо условия позволяют поехать и зимой и летом без потери комфорта. Надо бы обязательно захватить с собой ноутбук и пару фильмов в хорошем качестве, чтобы можно было вечером вкусить плоды синематографа.... Стоп. Что-то тут не то. И даже не что-то, а всё! Ноутбук мой не может воспроизводить видео в HDTV качестве с нормальной скоростью, максимум, на что способен этот малыш так это крутить DVD без тормозов... А место!? Оно же не резиновое, да и кучу болванок с собой как-то не хочется возить... Надо срочно перекодировать новые фильмы! И тут самое обидное... Сколько же нужно времени, чтобы пережать хотябы 2 полноразмерных фильма в HDTV? .... Вот так вот разбиваются мечты. Возникает резонный вопрос: что делают производители программного и аппаратного обеспечения, чтобы решить эти проблемы и делают ли вообще? Оказывается, делают, точнее, начали делать. Давайте посмотрим на это вместе с вами и оценим, насколько эти усилия оправдывают себя.
Есть на свете такая компания, Pegasys зовётся. Выпускает эта компания программу TMPGEnc. Всякий, кто хоть раз серьёзно занимался кодированием и несложной обработкой видео наверняка слышал об этой софтине. Конечно, обзора этой программы на modlabs.net не будет, а будет сражение двух гигантов - Intel и NVIDIA, а в качестве судьи будет выступать программа TMPGEnc 4.0 XPress MSI Special edition 4.62.267. Поводом к такому сражению послужило желание компании MSI в первых рядах начать комплектовать свои карты на базе чипов NVIDIA триальной версией TMPGEnc 4.0 XPress, с поддержкой технологии NVIDIA CUDA. Прочитав пресс-релиз от MSI уж очень захотелось проверить на практике то, как работают новые разработки с соотвествующим ПО. Также, интересно посмотреть, что же получит пользователь, купивший очередную железку.
Прежде, чем приступить к описанию тестового стенда, программ и методики, я бы хотел остановиться на небольшом теоретическом вступлении, в котором расскажу о том, что такое NVIDIA CUDA
За последние годы, компания AMD и компания Intel приложили немало усилий для развития рынка центральных процессоров и наборов логики. Произошёл существенный качественный рывок, обеспечивший значительный прирост вычислительной мощности как стационарных компьютеров, так и портативных. Современные процессоры обладают большим количеством вычислительных ядер, созданы высокоскоростные шины для обмена потоками данных межузлами системы, контроллеры памяти интегрировались в процессорные ядра итд. Но почему-то людям этого мало. Шагая семимильными шагами прогресса в одной области, мы автоматически тянем за собой и все остальные, смежные с ними области нашей жизни. В качестве ориентира для индустрии развлечений было выбрано понятие "кинематографические спецэффекты" и "графика кинематографического качества". Для покорения этой вершины в бой были брошены лучшие инженеры и программисты IT гигантов. Ведь для решения поставленной задачи необходим комплексный подход, позволяющий эффективно использовать все доступные вычислительные ресурсы для достижения цели. Но вот беда, центральные процессоры, несмотря на кажущуюся мощь, не могут обеспечить нужный уровень производительности. Вот тогда-то и зародилась идея создания специализированных ускорителей и SDK для них, дабы разгрузить несчастный ЦП. Первопроходцем можно считать компанию Ageia, которая, как и 3dfx, была куплена калифорнийской NVIDIA, а её творение под названием Ageia PhysX было специально адаптировано для ускорения физики в играх при помощи чипов GeForce. NVIDIA пошла ещё дальше, разработав и выпустив на рынок технологию NVIDIA CUDA. По заявлениям NVIDIA, CUDA - это единственная среда разработки на C, которая позволяет программистам и разработчикам писать программное обеспечение для решения сложных вычислительных задач за меньшее время благодаря многоядерной вычислительной мощности графических процессоров. А ведь всем этим до недавнего времени занимался центральный процессор. Вот, как говорится, "CUDA катится мир" :)
Что ж, у нас есть небольшой, но по-моему достаточный багаж теории, позволяющий понять какие ресурсы использует наша подопытная программа TMPGEnc 4.0 XPress. Теперь я хочу представить вашему вниманию тестовый стенд и список тестового ПО:
ЦП: Intel Core i7 920
MB: Intel Smackover DX58SO
RAM: 3x2048MB @ 1066 @ 7-7-7-19-1T
VC: MSI N9800GTX T2D512
HDD: 2xHitachi Deskstar RAID0
OS: Microsoft Windows Vista Home Premium x64 SP1
VE Tool: TMPGEnc 4.0 XPress MSI Special edition 4.62.267 + мультфильм Horton DVD общим объёмом 1,4Гб. Был отрезан кусок видео размером 3 минуты 20 секунд (5011 кадров).В процессе самого кодирования приоритет процесса TMPGenc был выставлен в положение "Процесс реального времени", а превью ролика было отключено.
Сводная информация о конфигурации:
При инсталляции вам необходимо иметь под рукой диск с драйверами от карты MSI, вставив который удалось благополучно закончить установку программы.
Во время первого запуска программа попросила активировать лицензию через интернет и начала выводить преветственные сообщения и информацию.
Вот, например:
Предупреждение о том, что технология NVIDIA CUDA выключена
Вначале посмотрим что нам сможет показать процессор Core i7 при кодировании видео, NVIDIA CUDA отключена, можно приступать.
А чтобы жизнь мёдом не казалась, было решено применить кучу фильтров для создания максимальной нагрузки на процессор, это ведь куда интересней с практической точки зрения, нежели лёгкие и непрактичные режимы. Итак, вот какие фильтры и в каких режимах были использованы для тестирования:
Video Noise Reduction:
Still Picture Stranght - 50
Noise reduction range - Largest
Time strenght - 50
Color Correction: On
Countour:
Countour Strenght - 50
Countour range - wide
А вот в каком виде мы должны получить новый файл:
Как вы видите, для тестирования был использован кодек DivX, в опциях которого есть множество вкусностей, связанных с настройкой производительности и качества. Давайте посмотрим на них более внимательно:
Именно эти настройки были выставлены во всех режимах тестирования, для чистоты эксперемента.
Первый раунд
Мы выбрали источник видео, выбрали и настроили фильтры, выбрали кодек и его настройки. Теперь переходим к самому действу. Раз CUDA выключена, значит можно смело выбирать место сохранения нового файла и жать кнопку старт. Так и было сделано. Вот, первый результат:
Итог - 5 минут и 36 секунд. Неплохо. Я уже было хотел задействовать аппаратное ускорение при помощи видеокарты, но натолкнулся в опциях вот на какие, на мой взгляд, довольно интересные пункты:
Особенно интересно, что по умолчанию галочка напротив надписи "Использовать многопоточность для обработки фильтров" отсутствовала! Также были сняты галочки с остальных пунктов, а в разделе Prefetch video while encoding было выставлено значение 64Mb...Придётся опять тестировать. Как можно видеть на скриншоте выше, я поправил значения в правильную, на мой взгляд, сторону. И вот что получилось:
3 минуты и 23 секунды! Вот это прирост! Как говорится, "просто добавь воды". Включение многопоточности сократило время кодирования на 2 минуты и 12 секунд. Что же будет, когда мы задействуем NVIDIA CUDA!
Второй раунд
Потирая руки я полез в волшебный раздел настроек, позволяющий включить CUDA.
Почему же не все настройки были включены? Логичный вопрос. Ответ на скриншоте ниже:
Кажется, что установленный в системе процессор достаточно мощный. Для начала, не будем включать аппаратный декодер, посмотрим что получится без него. Программа попросила провести ряд внутренних тестов и оптимизаций, это заняло не более 30 секунд и вот мы уже начали кодирование с активированной CUDA
Вот! Прирост очевиден! 2 минуты 43 секунды против 3 минут и 23 секунд! Отрыв от процессорного исполнения очевиден. Когда настанет час и вам придётся кодировать фильм целиком, а не тестовый кусочек, как нам, жалкие минуты могут превратиться в десятки, если не больше....
Возвращшаясь к тестам, хочется отметить, что в процессе кодирования наша программа показывает степень нагрузки на центральный процессор и на графический ускоритель:
На данный момент нагрузка на CPU куда больше, чем нагрузка на графическую карту, что вполне понятно. Во-первых, степень загрузки может варьироваться в зависимости от типа ЦП, настроек кодека, да и самого кодека тоже. Кроме того, нам никто не обещал полностью разгрузить процессор, ему обещали помочь.
В общем и целом ситцация ясна. Прирост мы получили, вроде бы можно строить сводную диаграмму и делать выводы, ан нет. Не даёт покоя аппаратный декодер в настройках. Включаем и заново прогоняем весь процесс:
Мда."....ведь не даром, Москва спалённая пожаром, французам отдана..." Написано же было, английским по серому, что программное декодирование работает лучше, если стоит мощный процессор. Выходит, его и надо использовать в купе со всеми вышеозначенными настройками для CUDA. Именно так можно достичь максимальной производительности.
ИТОГ:
CPU-1 (настройки только кодека, фильтры в 1 поток) - 05:36
CPU-2 (настройки кодека, фильтров) - 03:23
CUDA - 1 (CPU-2 + CUDA без аппаратного MPEG декодера) - 02:43
CUDA - 2 (CPU -2 + CUDA с аппаратным MPEG декодером ) - 04:04
Я думаю, что в данной ситуации нужно сравнивать наилучшие результаты. 203 секунды у CPU Core i7 920 и 163 секунды у Core i7 + CUDA.
В итоге хочу сказать следующее. Безусловно, компания NVIDIA стремится делать и делает реальные шаги навстречу пользователям, а её партнёры, такие, как, например, MSI способствуют этому. Реальный пример мы привели. С выходом новых программ и драйверов с оптимизациями производительность нынешних и будущих решений безусловно подтянется и мы с вами станем зрителями новых баталий, за новые рыночные горизонты.
Мы приглашаем вас обсудить материал в форуме, либо оставить свои комментарии здесь, на сайте.
Редакция Modlabs.net выражает благодарность Украинскому и Российскому представительствам компании MSI за предоставленное на тестирование оборудование.