Введение
Нам нравятся яркие и красивые демонстрации. Но, в конце концов, все мы являемся пользователями ПК. Все мы используем компьютер для выполнения каких-либо полезных задач. Причём у большинства пользователей работают довольно скромные конфигурации с недорогими комплектующими, а на апгрейды по $500 просто жалко денег. Нам нужны технологии, которые позволят выполнять работу более эффективно, будь то монтаж видео, моделирование генетического кода или игры.
Решения GPGPU от nVidia.
Некоторые приложения линейные по своей природе, им нужно просто как можно более быстрое выполнение одного потока. Другие приложения могут использовать параллелизм. Совершенно разный код, от Unreal Engine 3 до Adobe Premiere, смог продемонстрировать преимущества на многопоточных CPU, но что если 4, 8 или даже 16 потоков – это только начало?
Именно такая идея кроется за вычислительной архитектурой nVidia CUDA, которая, судя по определению компании, может работать одновременно с тысячами потоков.
Мы уже писали о технологии CUDA в прошлом, поэтому, будем надеяться, базовые представления о ней у вас имеются (если нет, то рекомендуем сначала ознакомиться со статьёй “nVidia CUDA: вычисления на видеокарте или смерть CPU?“). Хорошо это или плохо, но большинство обзоров CUDA в прессе фокусируется на high-end “железе”, хотя соответствующая аппаратная поддержка присутствует в GPU nVidia ещё со времён GeForce 8. Если принять во внимание крупные корпоративные бюджеты, выделенные для высокопроизводительных вычислений (high-performance computing, HPC) и профессиональных графических станций (куда, соответственно, позиционируются решения nVidia Tesla и Quadro), неудивительно, что отдел маркетинга nVidia работает в данном направлении в полную силу.
Но в 2009 году грядут перемены. Технология CUDA станет массовой. Сегодня уже присутствует довольно крупная база совместимых настольных видеокарт, и массовые приложения, которые уже содержат встроенную поддержку CUDA, появляются одно за другим.
Начало “с нуля”
Первым пользовательским приложением с поддержкой CUDA стало Folding@Home – вычислительный проект Стэндфордского университета, в котором каждый пользователь мог внести свою лепту и принять участие в вычислении взаимодействия протеиновых цепочек, чтобы лучше понимать (будем надеяться, и лечить) некоторые тяжёлые заболевания человека. Приложение стало поддерживать CUDA во второй половине 2008 года. Очень скоро после этого появился Badaboom, перекодировщик видео от Elemental Technologies, который, по информации Elemental, мог перекодировать до 18 раз быстрее, чем решение только на CPU.
Затем на рынок вышло большое количество мультимедийных приложений CUDA: Adobe Creative Suite 4, TMPGEnc 4.0 XPress, CyberLink PowerDirector 7, MotionDSP vReveal, Loilo LoiLoScope, Nero Move it и другие. Mirror’s Edge, по всей видимости, стала первой игрой уровня AAA с полной поддержкой технологии PhysX на основе CUDA, которая позволяет увеличить визуальную сложность, будто бы, от 10x до 20x. Можно ожидать появления всё большего количества приложений – намного большего количества. AMD со своей технологией ATI Stream сегодня увязла в трясине неудач, а nVidia заявляет о полностью законченной технологии, предлагая CUDA всем, кто готов прислушаться… и разработчики, похоже, приняли технологию nVidia близко к сердцу.
Нажмите на картинку для увеличения.
Всё это, конечно, хорошо, но доказательство столь привлекательных возможностей CUDA пока приводилось только на high-end GPU. А как же насчёт обычных пользователей с ограниченным бюджетом? Конечно, неплохо было бы поставить в систему 3-way графическую конфигурацию, но большинство пользователей тратит на графику сто-двести долларов. Поэтому нам было интересно, сможет ли технология CUDA быть полезной для тех, кто не обладает high-end графической подсистемой.
Давайте посмотрим. В нашей статье мы изучим некоторые наиболее привлекательные приложения, а также измерим производительность на двух GPU среднего уровня.
Ретро-платформа для тестов
В отличие от большинства тестовых платформ, которые мы используем, мы намеренно решили избежать самых передовых и производительных компонентов. Мы сдули пыли со старых комплектующих возрастом два-три года: материнская плата Intel DG965WH, процессор Core 2 Duo E6700 (65 нм) со штатным кулером, две 512-Мбайт планки памяти Kingston DDR2-533 ValueRAM и 250-Гбайт жёсткий диск Maxtor MaXLine III. Мы установили на эту конфигурацию Windows Vista SP1.
Опять же, мы хотели приблизиться к массовой конфигурации, которая сегодня работает у большинства пользователей. Как правило, пользователи желают выжать максимум из своего компьютера. А переход на Core i7 или новейшую модель Phenom приведёт к трате нескольких сотен долларов. Впрочем, наш среднестатистический пользователь, любитель MP3 и мобильного видео, всё же может потратить около $150 на видеокарту, если CUDA обеспечит прирост производительность 10x или 100x.
Нажмите на картинку для увеличения.
Мы выбрали две видеокарты, которые может себе позволить средний пользователь. Первая – GeForce 9600 GT с 1 Гбайт памяти GDDR3, которую сегодня можно найти в продаже примерно за $120 (от 3,5 тыс. рублей в России). Вторая видеокарта – GeForce 9800 GTX, которая сегодня активно заменяется GeForce 9800 GTX+/GeForce GTS 250 (на $30 дороже, если нужен 1 Гбайт памяти, от 5 тыс. рублей в России). Конечно, вы можете получить CUDA и на видеокарте 8600 GT за $75 (от 1500 руб. в России), но мы всё же рекомендуем меньший техпроцесс, более высокие тактовые частоты и большее число потоковых процессоров у карт более нового поколения.
Действительно, если у 8600 GT присутствует 32 потоковых процессора (унифицированных, программируемых блоков шейдеров), то у 9600 GT их уже 64, а у 9800 GTX – все 128. Эти потоковые процессоры могут вычислять все задачи CUDA параллельно, причём каждый может одновременно работать над многими операциями CUDA. Будет интересно посмотреть, как разница в 1,5 тыс. рублей и 64 потоковых процессора покажет себя в реальных условиях.
SETI@home
Если вы смотрели фильм “Контакт/Contact”, то наверняка знаете суть программы SETI. Программа “Search for Extraterrestrial Intelligence/Поиск внеземных цивилизаций” использует радиоастрономию для поиска радиосигналов из космоса, которые, по своей природе, можно было бы отнести к разумным существам за пределами Земли. Исходные данные собираются в широкой полосе 2,5 МГц и отсылаются на основную базу SETI@home в Беркли. Как показано в фильме, большая часть радиоданных (если не вся) представляет собой случайный шум, подобно статическому шуму на фоне реликтового излучения. Программа SETI@home выполняет анализ этих данных в поисках неслучайных фрагментов, таких как пульсирующие сигналы и всплески амплитуды. Чем большая вычислительная мощность с плавающей запятой будет доступна для обработки данных, тем шире можно взять спектр и тем более чувствительным будет анализ. Именно здесь параллелизм многопоточной обработки и CUDA оправдывают себя.
Нажмите на картинку для увеличения.
Сотрудники в Беркли разделяют данные на одночастотные рабочие блоки по 0,35 Мбайт или 107 секунд. Сервер SETI@home затем распределяет работу по домашним компьютерам, на которых, как правило, работает клиент SETI@home в качестве скринсейвера. Когда проект SETI@home был запущен в мае 1999 года, его целью было сочетание вычислительной мощности 100 000 компьютеров. Сегодня в проекте участвуют более 300 000 активных компьютеров из 210 стран.
В тестах SETI@home нужно использовать один и тот же рабочий блок, чтобы получить надёжный результат. Мы обнаружили это только через несколько часов тестов, когда результаты были неповторяющимися. Лаборатория nVidia специально подготовила скрипт и пакетные файлы для тестирования SETI@home. Тест нужно запускать из командной строки, а не через красивый графический интерфейс. nVidia выслала нам все необходимые файлы, после чего картина производительности прояснилась довольно чётко.
Если вы думали, что кодирование видео отнимает больше всего времени, посмотрите на программу поиска внеземных цивилизаций. Простая обработка одного 373-кбайт файла на современном двуядерном CPU заняла полтора часа времени, то есть соотношение количества информации ко времени обработки составило примерно 1:50. По умолчанию тест SETI@home использует один рабочий блок на процессор. На двуядерном чипе каждое ядро будет выполнять 50% нагрузки; на четырёхъядерном – 25 процентов. Однако нам хотелось посмотреть полную загрузку, поэтому мы использовали команду “benchcpu.bat 2”, которая запускает два рабочих блока на процессор, полностью нагружая оба ядра.
Как вы можете заметить, время вычисления при использовании только CPU на 9800 GTX чуть меньше, чем на 9600 GT. Однако разница находится в пределах погрешности. Дополнительные прогоны показали немного отличающиеся результаты, поэтому, в среднем, они будут одинаковые.
По результатам можно сделать два важных вывода. Во-первых, обратите внимание на существенное снижение времени вычисления, которая даёт технология CUDA по сравнению с обработкой только на CPU, когда 9600 GT потребовалось 17% времени, а 9800 GTX – всего 11%. Интересно, сколько лет понадобится, чтобы такое же снижение времени вычислений дала эволюция CPU?
Во-вторых, мы явно видим преимущества дополнительных потоковых процессоров 9800 GTX. 9800 GTX даёт на 50% лучшую производительность по сравнению с 9600 GT в тестах с использованием только GPU. Для небольшой разницы в цене прирост просто огромен.
Поскольку данный тест больше синтетический, мы не отслеживали нагрузку на CPU во время теста GPU. Но если вам интересно, запуск теста SETI@home только на CPU привёл, как и следовало ожидать, к 100% нагрузке. Запуск теста на GPU привёл к нагрузке на CPU от 50% до 60%.
Если вам больше нравится искать лекарство от болезней, чем инопланетные цивилизации, то мы рекомендуем запустить клиента Folding@home. Если вы хотите провести тесты Folding@home, то nVidia рекомендуем воспользоваться новой утилитой OpenMM, доступной здесь.
Следует отметить, что проект SETI@home сегодня находится под угрозой закрытия. Радиотелескоп Аресибо/Aricebo, самый большой радиотелескоп в мире (из использующих одну апертуру), расположен в Пуэрто-Рико и с 1999 года обеспечивает все данные для проекта SETI@home. Исследования на радиотелескопе проводятся Корнельским университетом, причём проект финансируется из разных источников, как частных, так и общественных. К сожалению, ограничения бюджета заставили Национальный научный фонд США заявить о закрытии Аресибо в 2011 году, что, вероятно, приведёт и к закрытию проекта SETI@home, если не будут найдены средства.
CyberLink PowerDirector 7
В мире рабочих станций от CUDA могут выигрывать приложения визуализации, но в потребительском мире основным применением CUDA является перекодирование. Если не считать клиентов Folding@home и SETI@home, все остальные потребительские применения CUDA включают монтаж видео или перекодирование. Если побродить по сайту nVidia CUDA Zone, то можно найти и другие проекты, обещающие хорошее будущее для CUDA в областях распознавания речи, цифровых систем наблюдения, монтажа/микширования аудио и игр (достаточно посмотреть на UT3 PhysX mod pack с тремя ускоренными CUDA уровнями – Lighthouse, Tornado и HeatRay). На данный момент есть только видео. Будем надеяться, что мы можем экстраполировать полученные тестовые результаты на другие схожие приложения, ожидая их появление в будущем.
Будем надеяться… CUDA – это не волшебная палочка, ускоряющая всё, что угодно. Даже в специфической области перекодирования только определённый тип операций, такие как компенсация движения и дискретное косинусное преобразование (DCT) хорошо подвергаются распараллеливанию. Многие функции параллельно запустить не получится. Разработчики не могут просто взять и написать код для CUDA, получив 20x прирост производительности через две или три недели. Приложение должно содержать функции, которые могут использовать параллельную обработку так, как её поддерживает архитектура CUDA.
Нажмите на картинку для увеличения.
Программа CyberLink PowerDirector 7 стала первой, использующей библиотеку CUDA Video Encoder Library. На сегодняшний день библиотека поддерживает только кодирование H.264 – важный момент, как мы вскоре увидим. Превосходство кодека H.264 отмечают многие, поскольку он легко обходит тот же MPEG-2 по эффективности и качеству картинки. Но за это приходится расплачиваться тем, что кодирование и декодирование с помощью H.264 требует существенной вычислительной мощности. Именно поэтому встроенные графические ядра до последнего времени не имели аппаратной поддержки H.264. Нагрузка декодирования во время воспроизведения соответствующе закодированных дисков Blu-ray ложилась на CPU, что в той или иной степени нагружало систему. Теперь вас вряд ли удивит, что перекодирование рипа Blu-ray в формат MPEG-4/H.264 может занять целый день.
Конечно, формат H.264 полезен только в том случае, если вы сможете воспроизводить файлы в формате MPEG-4/H.264, например, на iPod или на PC. Производители подразумевают, что вы будете использовать кодирование H.264 для незащищённых домашних видеофильмов, и некоторые пользователи уже перешли на этот формат. Но, в любом случае, уже многие обзавелись телевизорами высокого разрешения, так что дни старых добрых DVD сочтены. И способов воспроизведения HD-видео будет всё больше. Если сегодня вам подобный перекодировщик не так и нужен, он может потребоваться завтра. В будущем кодек H.264 будет играть значимую роль.
PowerDirector 7 включает 10 эффектов, которые могут использовать ускорение CUDA во время рендеринга. Если вы новичок в области монтажа, то вкратце поясним суть этого процесса: вы берёте исходный видеоролик, располагаете его на временной шкале монтажа, добавляете эффекты (размытие, обрезка, удаление “шума” и т.д.), после чего записываете проект в нужном формате. В итоге вы получите обработанный ролик в одном файле. Звучит просто, но наложение эффектов на видео требует серьёзной вычислительной мощности. На самом деле, монтаж традиционно являлся уделом специализированных студий, так как на рендеринг видео на потребительских системах могут уйти многие часы, что вызывает сомнения в эффективности всего процесса. Размер файлов может меняться, но даже сегодня монтаж видео дома является очень ресурсоёмким занятием.
Время экспорта, рендеринг с помощью GPU.
Время экспорта, рендеринг без помощи GPU.
Нагрузка на CPU, рендеринг с помощью GPU.
Нагрузка на CPU, рендеринг без помощи GPU.
Взяв для тестов 30-секундный тестовый ролик 720×480 MPEG-2, мы добавили к нему эффект Pen Ink, для вычисления которого используется CUDA, после чего сохранили ролик в формате MPEG-2. С активной технологией CUDA время рендеринга на обеих видеокартах оказалось менее половины от времени, когда рендеринг выполнялся полностью на CPU. Но здесь следует отметить две особенности. В отличие от SETI@home мы наблюдаем мизерное преимущество (сводящееся к нулю) от дополнительных потоковых процессоров 9800 GTX. Кроме того, использование CUDA смогло снизить нагрузку на CPU всего на 3-5%, то есть процессор по-прежнему максимально нагружен рендерингом. В данном тесте технология CUDA помогла ускорить процесс рендеринга, но CPU был нагружен так, что запуск других приложений в это время смысла всё равно не имеет.
Время экспорта, перекодирование в MPEG-2 с помощью GPU.
Время экспорта, перекодирование в MPEG-2 без помощи GPU.
Нагрузка на CPU, перекодирование в MPEG-2 с помощью GPU.
Нагрузка на CPU, перекодирование в MPEG-2 без помощи GPU.
Во втором тесте мы взяли крупный ролик 1080 H.264 из передачи HDNet Get Out!, который мы затем экспортировали с помощью PowerDirector в форматы MPEG-2, AVCHD 720 x 480 и AVCHD 1920 x 1080. Опять же, мы наблюдаем мизерную разницу в производительности между 9600 GT и 9800 GTX. Кроме того, обратите внимание, экспорт в формат MPEG-2 не даёт разницы, используем мы GPU или нет, поскольку библиотека nVidia поддерживает только кодирование H.264, а не MPEG-2. Вывод таков: если перекодируете фильмы в формат MPEG-2 для просмотра на устройстве, которое не поддерживает H.264, то технология CUDA будет бесполезна.
Время экспорта, перекодирование в AVCHD 720 x 480 с помощью GPU.
Время экспорта, перекодирование в AVCHD 720 x 480 без помощи GPU.
Нагрузка на CPU, перекодирование в AVCHD 720 x 480 с помощью GPU.
Нагрузка на CPU, перекодирование в AVCHD 720 x 480 без помощи GPU.
В данном случае CUDA даёт 100% улучшение при перекодировании в формат с 480 строчками и почти 300% снижение времени в случае формата с 1080 строчками. А теперь увеличьте исходный ролик до полнометражного фильма – и вы поймёте, сколько времени может сэкономить CUDA.
Время экспорта, перекодирование в AVCHD 1920 x 1080 с помощью GPU.
Время экспорта, перекодирование в AVCHD 1920 x 1080 без помощи GPU.
Нагрузка на CPU, перекодирование в AVCHD 1920 x 1080 с помощью GPU.
Нагрузка на CPU, перекодирование в AVCHD 1920 x 1080 без помощи GPU.
Tsunami TMPGEnc
Долгое время самой популярной программой перекодирования признавалась Tsunami MPEG Encoder или TMPGEnc, которой теперь владеет японская компания Pegasys. В сообществе киноманов TMPGEnc считается одной из самых качественных программ перекодирования, пусть и не самой быстрой. Мы использовали TMPGEnc 4.0 Xpress с 15-секундным клипом 1440×1080, предоставленным Pegasys.
Нажмите на картинку для увеличения.
В отличие от некоторых других перекодировщиков, TMPGEnc использует CUDA только для ускорения эффектов. Сам процесс кодирования GPU не ускоряется. Поэтому преимущества от использования CUDA будут видны только в том случае, если процесс перекодирования включает фильтры/эффекты, такие как повышение резкости, устранение “шума” и т.д. Именно поэтому нужно аккуратно изучить все детали, прежде чем вкладывать деньги в ускорение приложений посредством GPU. Убедитесь, что CUDA не только поддерживается приложением, но и при этом ускоряются те функции, которые вы будете использовать.
Для наших тестов мы использовали основной профиль MPEG-4 AVC, добавляя фильтры устранения “шума” и цветовой коррекции. Единственным исключением стала обработка передачи Get Out! высокого разрешения без фильтров, когда мы хотели оценить нагрузку на CPU. Как можно видеть, GPU снимает значительную долю нагрузки с CPU при выводе в формате MPEG-2, но это не означает ускорение перекодирования. Видеокарта 9600 GT оказалась даже медленнее при записи в формат MPEG-2 с активным ускорением GPU. Довольно необычно видеть, что ускорение через GPU помогает 9800 GTX, но ухудшает результаты 9600 GT.
Время экспорта, перекодирование с двумя фильтрами в MPEG-2 с помощью GPU.
Время экспорта, перекодирование с двумя фильтрами в MPEG-2 без помощи GPU.
Нагрузка на CPU, перекодирование с двумя фильтрами в MPEG-2 с помощью GPU.
Нагрузка на CPU, перекодирование с двумя фильтрами в MPEG-2 без помощи GPU.
Но вернёмся к кодированию в AVC. На нашем 15-секундном тестовом файле 1440×1080 можно видеть, что CUDA даёт 19% преимущество по времени на видеокарте 9600 GT и 45% преимущество на 9800 GTX. Есть и кое-что интересное. TMPGEnc разделяет среднюю нагрузку между CPU и GPU во время кодирования с помощью GPU. На 9600 GT разделение средней нагрузки составило 52% на GPU и 48% на CPU, пусть даже максимальная нагрузка CPU в Windows Resource Monitor составила 96%. Но у 9800 GTX разделение составило 11% для CPU и 89% для GPU. Это показывает, что приложение может использовать дополнительные потоковые процессоры.
Время экспорта, перекодирование с двумя фильтрами в AVC с помощью GPU.
Время экспорта, перекодирование с двумя фильтрами в AVC без помощи GPU.
Нагрузка на CPU, перекодирование с двумя фильтрами в AVC с помощью GPU.
Нагрузка на CPU, перекодирование с двумя фильтрами в AVC без помощи GPU.
Чтобы на практике проверить заявление об ускорении только фильтров, мы провели прогон перекодирования клипа Get Out! 1440×1080 без фильтров и увидели то, что и предполагали: небольшое увеличение производительности после включения поддержки GPU, но никакого серьёзного прироста, так как технология CUDA не работает. Без CUDA нагрузка распределилась у обеих карт 92% на CPU и 8% на GPU.
А теперь давайте посмотрим, как изменится производительность при наложении двух фильтров на ролик 1440×1080.
Время экспорта, перекодирование с двумя фильтрами в AVC 1080 с помощью GPU.
Время экспорта, перекодирование с двумя фильтрами в AVC 1080 без помощи GPU.
Нагрузка на CPU, перекодирование с двумя фильтрами в AVC 1080 с помощью GPU.
Нагрузка на CPU, перекодирование с двумя фильтрами в AVC 1080 без помощи GPU.
При наложении двух фильтров на ролик Get Out! мы получили вполне достойный результат. На видеокарте 9600 GT при помощи CUDA время рендеринга снизилось на пять минут – 20% ускорение. На видеокарте 9800 GTX время снизилось на восемь минут – 32% улучшение.
Честно говоря, было бы неплохо, если бы Pegasys более эффективно использовала CUDA для перекодирования, а не только для ускорения фильтров. Среди обычных пользователей перекодирование всё же популярнее, нежели обработка видео с помощью фильтров. Но результаты всё равно доказывают потенциал CUDA, пусть даже другие приложения могут раскрыть его более полно.
Super LoiLoScope
Помните фильм “Особое мнение/Minority Report”, где Том Круз работал с компьютером с помощью жестов на прозрачном экране? Подобный пользовательский интерфейс настолько привлёк к себе внимание, что его начали копировать и в других фильмах и даже в рекламе. А теперь совместите обычный редактор видео с пользовательским интерфейсом “Особого мнения”, после чего добавьте Nintendo 64. И вы получите Super LoiLoScope, а “MARS” – это кодовое название новой версии с поддержкой CUDA. Нет, MARS – это не Adobe Premiere. Это даже не Premiere Elements. И не PowerDirector 7. Но эта программа очень простая в работе благодаря своему графическому и интуитивно понятному интерфейсу. Что ещё лучше, она поддерживает CUDA при кодировании, декодировании и воспроизведении H.264, в результате чего данная реализация CUDA сегодня может считаться одной из лучших.
nVidia и LoiLo (компания-создатель SuperLoiLoScope) ожидают от своего проекта немалого. Обе компании подчёркивают, что если четырёхъядерный CPU может вычислять со скоростью 100 GFLOPS, то 240-ядерный GPU, подобный GTX 280, даёт скорость 900 GFLOPS. Поэтому можно ожидать серьёзного прироста производительности на видеокарте GTX 280. Конечно, наши результаты с видеокартами 9600 GT и 9800 GTX должны оказаться ниже, но если смотреть на процентное соотношение, то более эффективная реализация CUDA должна оставить TMPGEnc далеко позади.
Нажмите на картинку для увеличения.
Перед тем, как мы перейдём к результатам, позвольте отвлечь ваше внимание на небольшое интервью. Легко забыть, что приложения создаются обычными людьми со своими увлечениями и интересами, которые хотят сделать мир вычислений лучше. Нам удалось пообщаться с Ритаро Сагиямой (Ryutaro Sugiyama), одним из двух братьев, основавших LoiLo, Inc.
Нажмите на картинку для увеличения.
THG. Когда вы впервые профессионально занялись играми?
Ритаро Сагияма. Я начал изучать компьютерную графику и анимацию ещё в университете. Моя карьера началась с работы в телевизионной компании, но затем судьба приводила меня во много разных мест, но везде я работал с платформой Visual Jockey, которой мы с братом занялись ещё в школе. Создание программ для компьютерной графики и изобразительного искусства всегда было моим хобби. В принципе, это мало чем отличается от того, чем я занимаюсь сейчас. Но мои инструменты и умения помогли мне получить работу в SEGA в качестве игрового дизайнера.
THG. Чем вы занимались в SEGA?
Ритаро Сагияма. Я был шефом игровых эффектов и создавал ролики с Соником.
THG. Неудивительно, что программа Super LoiLoScope выглядит подобно игре. Сегодня, когда разные программы от монтажа, от Windows Movie Maker до Adobe Premiere наводнили рынок, нужен ли пользователям ещё один другой редактор видео?
Ритаро Сагияма. Наша целевая аудитория – новички и те, кто не смог справиться с традиционными программами монтажа видео. На сегодняшний момент только немногие пользователи выполняют редактирование фотографий и монтаж видео, хотя очень многие обзавелись устройствами съёмки: сотовые телефоны, цифровые камеры и т.д. То есть каждый может снимать фотографии, но мало кто затем их редактирует. Современные программы часто слишком сложные, производительность невысока, да и ограничений слишком много. Мы думали о том, что люди обычно делают дальше, и наш пользовательский интерфейс создан так, чтобы предугадывать действия пользователя.
Благодаря совместной работе Visual Jockey и движка GPGPU мы можем выполнять все операции на скоростях, которые раньше были немыслимы – мы называем наш движок “ecou engine”. Именно он позволил создать наш пользовательский интерфейс.
THG. Насколько я понимаю, Visual Jockey – платформа микширования видео и наложения эффектов в реальном времени, подобно Adobe After Effects без слова “After”. Получается, вы взяли эту платформу и смешали её с игрой? Насколько распространён такой подход в мире программного обеспечения, или это ваше ноу-хау?
Ритаро Сагияма. Да, это наш уникальный стиль. Занимаясь профессиональным монтажом, я всегда мечтал о рабочем пространстве, где можно свободно располагать исходные материалы, подобно бесконечному рабочему столу. И LoiLoScope предоставляет такую возможность. Но это только самая основа нашего интерфейса.
THG. Что вам не нравится в традиционном монтаже видео, и что вы сделали, чтобы исправить положение?
Ритаро Сагияма. Монтаж без рендеринга! С помощью LoiLoScope вы можете редактировать фильмы без рендеринга. Обычно после монтажа вам приходится ждать процесса рендеринга, прежде чем вы сможете увидеть результат, но LoiLoScope позволяет проигрывать и монтировать видео одновременно. Другими словами, вы можете сосредоточиться на творчестве, ни на что не отвлекаясь. Работа в таких условиях намного более увлекательна и интересна.
Нажмите на картинку для увеличения.
Первое, что хотелось бы сказать по поводу результатов MARS – вы действительно можете освободить такты CPU. На низких разрешениях разница в нагрузке меньше, но наш тест 1920×1080 с двухминутным роликом Pirates 2 XviD на видеокарте 9600 GT наглядно показал, что CUDA помогает. Максимальная нагрузка на CPU упала с 95% до 74%, что удобно, если вам нужно выполнить какую-либо параллельную работу, такую как чтение почты в Outlook или резервирование системы, но при этом и время обработки снизилось на 81%. У ролика 320×240 время обработки уменьшилось на 92 процента. Действительно, великолепный результат, который может ощутимо повлиять на повседневную работу по преобразованию фильмов, если вы будете пользоваться данной программой.
Время экспорта, перекодирование в H.264 320×240 с помощью GPU.
Время экспорта, перекодирование в H.264 320×240 без помощи GPU.
Нагрузка на CPU, перекодирование в H.264 320×240 с помощью GPU.
Нагрузка на CPU, перекодирование в H.264 320×240 без помощи GPU.
Время экспорта, перекодирование в H.264 1920×1080 с помощью GPU.
Время экспорта, перекодирование в H.264 1920×1080 без помощи GPU.
Нагрузка на CPU, перекодирование в H.264 1920×1080 с помощью GPU.
Нагрузка на CPU, перекодирование в H.264 1920×1080 без помощи GPU.
Нам было весьма любопытно попробовать MARS на полнометражном видео, поэтому мы взяли 4-Гбайт домашний фильм в формате MPEG-4 и решили переконвертировать его в профиль MARS iPod. Улучшение производительности оказалось не таким значительным, как в случае ролика Pirates, но оно есть. Ускорение составило более 60%, то есть время конвертирования уменьшилось более чем в два раза. Неплохо.
Время экспорта, перекодирование 4 Гбайт MPEG-4 в формат iPod с помощью GPU.
Время экспорта, перекодирование 4 Гбайт MPEG-4 в формат iPod без помощи GPU.
Нагрузка на CPU, перекодирование 4 Гбайт MPEG-4 в формат iPod с помощью GPU.
Нагрузка на CPU, перекодирование 4 Гбайт MPEG-4 в формат iPod без помощи GPU.
Что интересно, здесь мы не наблюдаем ожидаемого улучшения результата при переходе на 9800 GTX. Да, есть некоторые улучшения в тесте HD Pirates, и мы смогли сбросить пару минут в тесте перекодирования 4 Гбайт, но тест 320×240 не показал никакого прироста вообще. Наибольшее влияние оказало просто наличие ускорения CUDA, а не число потоковых процессоров, которые были доступны.
Badaboom
Пионером nVidia в мире CUDA стал конвертор Badaboom, довольно простая утилита от Elemental Technologies, призванная нейтрализовать шумиху вокруг AMD ATI Avivo Video Converter. По сути, вы можете импортировать видео практически любого типа (даже .m2ts с рипов Blu-ray), выбирать целевое устройство (от YouTube до BlackBerry Bold), после чего вы получите оптимизированный файл .mp4. Всё максимально просто, вряд ли можно было сделать перекодировщик видео ещё более доступным. Следует отдать должное Elemental и Nvidia за добавление функциональности multi-GPU. Вы не можете распределить одну работу CUDA по нескольким GPU, но вы можете запустить по одной программе Badaboom 1.1 для каждого GPU в системе с поддержкой CUDA – удобная функция, если вам нужно переконвертировать много файлов.
Нажмите на картинку для увеличения.
Если вам нужно только перекодирование, а монтаж не требуется, то утилита Badaboom станет самым оптимальным вариантом. Многие обзоры оценивали сравнительное качество кодирования Badaboom, поэтому мы не будем повторяться. Достаточно сказать, что результаты, в целом, выглядят хорошо, а Badaboom нагружает CPU меньше, чем большинство кодировщиков. В конце концов, мало у кого есть компьютеры, выделенные для обработки видео, тем более в нашем приближении к обычным пользователям. В целом, чем выше качество кодирования, тем сильнее Badaboom нагружает GPU, оставляя CPU заниматься своей работой. И это, помимо тестов, говорить в пользу приложения как реального решения. Во время кодирования вы наверняка захотите заниматься другой работой, поэтому кодирование не должно отнимать все ресурсы компьютера в ущерб остальным приложениям.
К данному моменту вы наверняка знаете, что перекодирование с CUDA выполняется намного быстрее, чем без этой технологии. У Badaboom нет возможности отключить ускорение CUDA, поэтому давайте просто сравним работу двух наших GPU между собой.
Время экспорта, перекодирование в формат iPhone с помощью GPU.
Нагрузка на CPU, перекодирование в формат iPhone с помощью GPU.
Как можно видеть, ролик Pirates 2 был на 9600 GT перекодирован за 28 секунд. Та же самая операция заняла 44 секунды у перекодировщика iPodifier 1.5 без поддержки CUDA. Поскольку профили кодирования различаются, напрямую результаты всё же сравнивать не следует. Но это всё равно показывает, что вы можете сэкономить 30% или больше времени, если будете кодировать с помощью приложений, поддерживающих CUDA, таких как Badaboom.
Время экспорта, перекодирование в формат YouTube с помощью GPU.
Нагрузка на CPU, перекодирование в формат YouTube с помощью GPU.
Мы провели четыре теста Badaboom, два из них с роликом Pirates 2, в низком разрешении и в HD. Затем мы решили переконвертировать ролик Get Out! в формат iPod Nano. Наконец, мы взяли коллекцию VOB-файлов на 4,26 Гбайт из DVD-рипа и преобразовали её с помощью Badaboom в один файл MPEG-4 высокого качества.
Время экспорта, перекодирование в формат iPod Nano с помощью GPU.
Нагрузка на CPU, перекодирование в формат iPod Nano с помощью GPU.
При перекодировании ролика Pirates 2 низкого разрешения, видеокарта 9800 GTX даёт 17% преимущество. Что касается высокого разрешения, то разница составила 50%. На клипе Get Out! мы наблюдаем 56% преимущество 9800 GTX. И, наконец, при перекодировании VOB-файлов 9800 GTX отрывается от 9600 GT на 75%.
Время экспорта, перекодирование в формат MPEG-4 с помощью GPU.
Нагрузка на CPU, перекодирование в формат MPEG-4 с помощью GPU.
Заключение
Каковы же будут наши наблюдения? В целом, если у вас есть программа, которая может выиграть от CUDA, то вы получите улучшение производительности по мере увеличения числа потоковых процессоров. Есть некоторые таинственные исключения, подобные Super LoiLoScope, но рядовая ситуация близка к Badaboom. Если сравнивать 9600 GT и 9800 GTX, то всего $30 (1,5 тыс. рублей в России) отделяют в два раза большее число потоковых процессоров, поэтому смысла экономить мы не видим.
Нажмите на картинку для увеличения.
Сегодня уже не возникает вопросов по поводу того, что может обеспечить CUDA, причём даже на самых дешёвых картах. Было бы интересно провести ещё одну серию тестов и посмотреть, будут ли схожие результаты наблюдаться на мобильных GPU nVidia (или даже на недавно выпущенной платформе Ion), но мы ожидаем, что ситуация будет схожей.
AMD теперь придётся довольно сложно. Скоро должно выйти следующее поколение драйверов ATI Stream, но сможет ли AMD дать схожее или даже лучшее улучшение производительности на решениях GPGPU во всех ценовых сегментах? Мы знаем, что ключевой особенностью новых драйверов является повышение качества картинки кодировщика, а не масштабирование производительности. В то же время мы знаем, что компания планирует продемонстрировать решения своих партнёров, которые используют её архитектуру.
Одно понятно: данное исследование производительности является всего лишь верхушкой айсберга. В ближайшие недели мы представим вторую статью, где рассмотрим решения конкурента. Нам самим очень интересно будет узнать, в чью пользу обернётся игра. И независимо от того, чья архитектура окажется быстрее, энтузиасты в любом случае станут победителями.