Введение
Если вы читали нашу предыдущую статью о платформе nVidia CUDA, то наверняка знакомы с состоянием GPGPU, то есть вычислений на GPU. И вы наверняка знаете, что ATI Stream, помимо CUDA, сегодня является одной из двух преобладающих вычислительных платформ на GPU. Идея вычислений на GPU кроется в том, чтобы перенести выполнение высоко параллельных задач с CPU на GPU, которые при этом будут работать быстрее и эффективнее. Программируемые блоки шейдеров очень хорошо подходят для расчётов с плавающей запятой. Каждый блок шейдеров обладает своего рода собственным вычислительным ядром, поэтому вместо четырёх или восьми потоков, работающих параллельно на CPU, вы можете получить 64 или 320 или другое количество потоковых процессоров, которые выполняют работу параллельно на GPU. Вполне понятно, что программа должна быть запрограммирована соответствующим образом, а операции должны содержать большое количество арифметических инструкций по отношению к запросам в память, чтобы результаты получились приличными.
Нажмите на картинку для увеличения.
Когда архитектура Stream была объявлена в прошлом декабре, AMD использовала её только для ускорения кодирования в форматы MPEG-2 и H.264. И ускорение действительно было. Однако AMD не учла, что её будут критиковать за качество кодирования. Впрочем, с выходом майского драйвера Catalyst 9.5 проблемы качества были решены, и теперь мы получили более полный конвейер ускорения, содержащий декодирование MPEG-2 и H.264, а также изменение разрешения. Он как раз и показан на иллюстрации выше.
Но, конечно, сразу же возникает вопрос: как Stream выглядит по сравнению с конкурирующей технологией? Оправдывает ли Stream ожидания? Конечно, мы постараемся ответить на все эти вопросы, но сначала позвольте посмотреть на ситуацию с дальней перспективы.
История GPGPU
С выпуском драйвера ATI Catalyst 8.12 в декабре 2008 года AMD официально предоставила доступ к Stream для массовых пользователей, а чтобы показать возможности технологий, AMD превратила ATI Avivo Video Converter в Stream-совместимый. Событие действительно было значимым, а AMD предлагала технологию всем, кто ей интересовался. К сожалению, программа была “сырая”. Изначальные положительные впечатления от прироста производительности быстро исчезали из-за критических проблем с выводом, и Stream “ушла в подполье” примерно на пять месяцев.
Мы ожидали, что AMD последует за лидером nVidia, представив совместимые предложения. Всё это казалось разумным, учитывая, что в презентации Catalyst 8.12 в ноябре 2008 AMD представила слайд, в котором были указаны разработчики, готовые поддержать объявление Stream – включая довольно крупных игроков. У Adobe даже был отдельный слайд с Acrobat Reader, Photoshop CS4 Extended, After Effects CS4 и Flash 10. Microsoft тоже получила свой слайд с Vista, Expression Encoder, PowerPoint 2007 и Silverlight.
Нажмите на картинку для увеличения.
Что же мы получили сегодня? Кто из разработчиков поддержал технологию Stream на самом деле? Это CyberLink, с программами PowerDirector 7 и MediaShow Espresso, а также ArcSoft с плагином SimHD для плеера TotalMedia Theatre 3. И всё. Разработчик LoiLo, который присутствовал в нашей недавней статье по поводу CUDA, был и в презентации AMD Stream, но компания пока ещё дописывает код с оптимизациями Stream для своего редактора видео. Предпросмотр видео в LoiLoScope получил UVD-ускорение ещё в январе, но это всё же несколько другое, нежели ускорение Stream. Прошло не так много времени, и презентация повторного объявления Stream была изменена с активным присутствием Espresso и почти полным игнорированием PowerDirector 7. Почему? Просто CyberLink ещё не обновил движок PD7. В приложении по-прежнему только ускоряется кодирование, как и было со старым драйвером Catalyst. То же самое касается и собственного продукта AMD – ATI Avivo Video Converter. Чтобы получить полный выигрыш от Stream, нужно запускать Espresso. На данный момент это единственное приложение с полной поддержкой конвейера Stream.
“MediaShow Espresso получает полное преимущество от нового движка кодирования Stream при перекодировании форматов MPEG-2 или AVC в MPEG-2 или AVC,” сказа Том Воган (Tom Vaughan), директор отдела развития бизнеса в CyberLink. “Так, с новым конвейером мы можем перекладывать больше процессов на GPU. Иногда преимущества производительности с новым конвейером Stream проявляются в меньшей нагрузке на CPU, в зависимости от вашего GPU, вашего CPU и других факторов”.
Avivo Video Converter
Что интересно, ATI Avivo Video Converter сейчас является опциональной программной для скачивания, а не частью стандартного пакета Catalyst. Как уже упоминалось, для повторного запуска Stream он не претерпел каких-либо изменений. AMD говорит о программе как об “эталонном дизайне для партнёров-разработчиков” и не упоминает о приложении в конце своей презентации вместе с другими Stream-совместимыми программами. Как и многие другие полезные утилиты, интерфейс Converter нельзя назвать интуитивным или эргономичным. Пользовательский интерфейс скрыт внутри Catalyst Control Center, добраться до него можно через одну из двух или трёх базовых процедур в меню. Вы выбираете исходный файл, меняете целевую папку, если нужно, а также выбираете из списка фиксированные профили, такие как iPod или H.264 720p. В принципе, ничего сложного, пусть даже интерфейс можно назвать спартанским и ограниченным.
Нажмите на картинку для увеличения.
Во времена, когда приложений с поддержкой платформы Stream столь мало, решение AMD убрать со сцены Video Converter кажется странным. Однако легко представить, что за последние пять месяцев у AMD был выбор: будем ли мы инвестировать больше времени и ресурсов в разработку Converter, или мы должны оставить его как есть и помогать партнёрам, таким как CyberLink, поддержать платформу Stream? Ответ очевиден. AMD теперь уже не занимается производством чипов, а в написание программного обеспечения компания была вовлечена ещё меньше. Как нам кажется, AMD вообще в ближайшие месяцы тихо уберёт Converter в тень. В конце концов, у nVidia нет бесплатного перекодировщика, так зачем AMD нужно предоставлять таковой? Ранние и многочисленные сравнения Converter с намного более доработанной утилитой Badaboom приводили к очевидному выводу. И AMD явно не имело особого смысла поддерживать подобную ситуацию и в будущем.
Хотели бы мы увидеть продолжение разработки Converter? Конечно. Полнофункциональная бесплатная утилита с поддержкой ATI Stream стала бы конкурентным преимуществом AMD, пока не подтянутся партнёры. Да и Converter не исчезла на самом деле. Вы можете скачать утилиту и использовать её. Но это далеко не Espresso, да и AMD не очень нравится то, в каком виде существует утилита.
Сбалансированная платформа
Несмотря на то, что фраза “сбалансированная платформа” кажется продуктом отдела маркетинга, на ней всё же стоит остановиться, чтобы понять видение AMD. Если вы вернётесь к нашему обзору CUDA, то в нём одно из самых больших преимуществ Badaboom кроется в довольно низкой нагрузке CPU по сравнению с конкурирующими кодировщиками CUDA: около 60% вместо привычного уровня 95%. Перекодирование требует очень серьёзных вычислительных ресурсов, а разработчики программного обеспечения хотят сделать свои продукты максимально быстрыми. Если это приведёт к полной загрузке CPU и GPU, вытесняя все остальные задачи, то разработчики всё равно пойдут на такой шаг. В целом, нам ещё предстоит увидеть приложения Stream или CUDA, у которых будет возможность изменять уровень использования ресурсов.
Но это не значит, что производители “железа” желают идти таким же путём. Концепция “сбалансированной платформы” у AMD пытается уравнять несколько основных компонентов системы и распределить нагрузку настолько равномерно, насколько это возможно, при этом выполняя прежнее количество работы в прежнее количество времени, но обеспечивая достаточный запас для других приложений, чтобы они работали нормально. Звучит красиво, но насколько хорошо такая концепция работает в реальной жизни?
Нажмите на картинку для увеличения.
Мы получили прекрасный пример сбалансированной платформы, когда работали над самым первым тестом Espresso, в котором бралось HD-видео YouTube (MPEG-4, 1280×720) и перекодировалось в профиль iPhone 640×360, тоже H.264 MPEG-4. На двух скриншотах ниже приведена производительность в системе с HD 4890. Сверху вы видите тест без ускорения на GPU, а снизу – с активной поддержкой Stream. Можно видеть, что при кодировании только на CPU все четыре ядра нашего Phenom II загружены фактически на максимум, а GPU-Z указывает довольно стабильную нагрузку на GPU на минимуме 6%, то есть во время перекодирования используются некоторые элементы конвейера UVD. В случае ускорения на GPU ситуация меняется. Ядро 2 остаётся нагруженным на максимум (мы не знаем, почему столь многие утилиты перекодирования нагружают именно это ядро), однако нагрузка ядер 1, 3 и 4 падает до уровня ниже 50%, а нагрузка на GPU возрастает.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Возникает вполне законный вопрос: а nVidia, без так называемой “сбалансированной платформы”, обеспечит такие же результаты с CUDA? На этот вопрос ответить не так просто, поскольку утилита GPU-Z отказалась отображать нагрузку на GPU после установки видеокарты nVidia. Но мы можем получить некоторую информацию по результатам нагрузки на CPU и финальной производительности. Можно заметить, что выше, когда используется только CPU, процессор довольно сильно нагружен – аналогично случаю с видеокартой AMD. Когда мы добавляем поддержку CUDA (ниже), то нагрузка на CPU почти не меняется.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Работает ли CUDA вообще? Да. Вы получите 35% снижение времени перекодирования с включённым ускорением GPU, так что CUDA действительно помогает. Но вот что интересно: системы AMD и Nvidia показывают одинаковое время кодирования в режиме “только CPU”, но поддержка Stream даёт 108% прирост производительности, легко обгоняя преимущество CUDA, и при этом нагрузка на CPU оказывается на 40% меньше, чем под CUDA.
Как мы увидим далее, подобный результат наблюдается не везде. Иногда CUDA показывает себя лучше. Но тесты, подобные приведённому выше, доказывают, что концепция “сбалансированной платформы” AMD даёт реальные преимущества, это не просто маркетинговый термин, чтобы продавать больше процессоров.
CyberLink MediaShow Espresso
Поскольку на сей раз мы рассматриваем технологию ATI Stream, то следует начать с топового приложения для этой платформы – CyberLink MediaShow Espresso. В прошлом году утилита Badaboom выставила верхнюю планку среди приложений перекодирования. В этом году Espresso переносит её ещё на более высокий уровень. Espresso содержит всё, что нужно от перекодировщика: простоту интерфейса, мощные технологии внутри, широкую совместимость и высокую скорость. Приложение продаётся за $39,95, и если вы часто выполняете перенос мультимедийных файлов между разными платформами, то оно себя полностью окупает. CyberLink оптимизировала Espresso под Stream, CUDA и многопоточность Core i7.
В основной области пользовательского интерфейса отображаются иконки ваших видеофайлов. В левой верхней части есть значки для добавления файлов или папок, но нам было удобнее просто перетаскивать файлы из папок в Espresso. После того, как у вас будут собраны все нужные файлы, просто выберите те из них, которые желаете преобразовать, и нажмите на нужный значок в правой верхней части экрана. Там присутствуют значки для устройств Apple, Sony, Microsoft, для YouTube и других форматов (Other Formats). Выберите любой значок, после чего вы получите окно Convert с выбором типа устройства (например, Sony PSP или PS3), целевого разрешения и формата кадра (4:3 или 16:9), имени файла, формата аудио, целевой папки и возможности использования ускорения на GPU. У устройств есть профиль “Smart Fit”, который содержит рекомендованные настройки, если вы не знаете о выходных параметрах. Если профили устройств не удовлетворяют вашим потребностям, то вы можете перейти на экран “Other Formats” и настроить выходные профили по своему вкусу.
Нажмите на картинку для увеличения.
Одна из привлекательных функций Espresso заключается в пакетной обработке. Большинство перекодировщиков недостаточно оптимизированы, чтобы использовать многопоточность и обрабатывать больше одного файла одновременно. Но Espresso может конвертировать до четырёх файлов одновременно. И здесь возникает интересный момент насчёт нагрузки на GPU. Во всех наших тестах в статье мы перекодировали по одному файлу в одно время. Как сообщает GPU-Z, это привело к максимальной нагрузке на GPU на нашей карте HD 4890 примерно от 28 до 33 процентов. Почему же Stream столь слабо использует ресурсы GPU? Как говорит AMD, это позволяет оставить ресурсы для дополнительных одновременных задач, например, если вы хотите ускорять 10 задач кодирования видео одновременно. Вполне честный ответ, хотя логично подойти и с другой стороны: если вы работаете над одним заданием, то пусть оно выполняется максимально быстро. А если заданий несколько, то можно распределить нагрузку так, как это нужно.
Мы выбрали каталог с DVD-рипом в Espresso и выполнили пакетный экспорт в классический профиль iPod. Ниже приведён скришнот во время выполнения задания. Нагрузка на CPU менялась между 70 и 90 процентами, а нагрузка на GPU поднималась до почти 50 процентов. Возможно, действительно нужно выполнять 10 работ одновременно, чтобы нагрузить процессор по максимуму, хотя, как нам кажется, производительность упрётся в CPU задолго до GPU.
Нажмите на картинку для увеличения.
Среди других привлекательных функций Espresso можно отметить автоматическую синхронизацию преобразованных видео с iTunes, а также встроенную возможность закачивать ролики на YouTube под вашей учётной записью. Нам нравятся программы, которые упрощают жизнь, поэтому Espresso занимает в списке нужных приложений довольно высокое место.
Помните, что Espresso может импортировать больше 20 форматов видео, однако экспортировать программа может только в четыре базовых формата: MPEG-2, MPEG-4, MPEG-4 AVC и WMV. Кроме того, AMD и Nvidia ускоряют только исходный материал в формате MPEG-4, layer 10, более широко известном как AVC или H.264. Его не следует путать с MPEG-4, layer 2, который известен своими реализациями в виде Nero Digital, DivX и Xvid. Среди целевых форматов тоже есть те, которые ускоряются, а также и те, которые не ускоряются. Формат H.264/AVC получает ускорение, но MPEG-4, layer 2 уже нет. MPEG-2 ускоряется под Stream, но не под CUDA. В общем, шпаргалка бы не помешала.
Но в Espresso тоже не всё идеально. Если вы достаточно много поработали с кодировщиками, и при этом вы либо архивируете DVD-рипы, либо смотрите их на различных устройствах без оптического привода, то знаете, насколько удобно в качестве источника указать папку с несколькими файлами VOB, а кодировщик выдаст один файл с фильмом в нужном формате. В качестве примера можно привести программу Corel DVD Copy, которая в этом преуспела, хотя у неё нет одновременного пакетного кодирования (есть только очередь для нескольких работ), да и ускорение через GPU не поддерживается. По информации CyberLink конвертация образов DVD должна появиться в следующей версии Espresso.
Тесты
Теперь, когда мы рассмотрели функциональность программы, настало время перейти к результатам Espresso. Для тестовой системы мы использовали процессор Phenom II X4 955 (3,2 ГГц) на штатных тактовых частотах, работающий на материнской плате MSI DKA790GX Platinum с 2 x 1 Гбайт памяти Corsair 6400C3 и блоком питания PC Power & Cooling Turbo-Cool 860. С видеокартой AMD ATI Radeon HD 4890 мы использовали драйвер Catalyst 9.5 (hotfix), а с видеокартой GeForce GTX 280 – драйвер GeForce 185.85.
Вы уже видели выше описание первого теста, когда мы переводили поток MPEG-4 из высокого разрешения в низкое. На следующих диаграммах приведены численные результаты. Здесь можно говорить об очевидной победе AMD, особенно если принять во внимание нагрузку на CPU.
Мы провели второй похожий тест, увеличив размер файла исходного видео (ещё один HD-ролик с YouTube), а также и разрешение целевого потока MPEG-4 (720×480). Это позволило несколько выровнять влияние различных факторов теста. Мы вновь видим, как AMD уверенно обходит nVidia, пусть на этот раз и не так значительно. Наши тесты “только CPU” являются отправной точкой. Добавление ускорения GPU обеспечивает улучшение на 91% вместе с CUDA, но 142% улучшение в паре со Stream – это меньший прирост, чем в первом тесте, но всё равно система AMD оказалась быстрее nVidia.
Как насчёт нагрузки на CPU? Всё по-прежнему. Обе системы дали нагрузку более 90% при проведении тестов “только CPU”. После включения CUDA нагрузка составила от 80% до 90% по всем четырём ядрам, а технология Stream обеспечила снижение нагрузки на CPU до уровня 40%, при этом второе ядро нагружалось сильнее остальных, а нагрузка на GPU составляла 20-24%.
Результат теста таков: 2 очка в пользу AMD и 0 очков Nvidia.
В следующих двух тестах мы изменили нагрузку. На первой диаграмме мы взяли 22-Мбайт HD-ролик с YouTube и понизили его до разрешения 856×480 для Xbox. Конечно, Xbox использует WMV, а не MPEG-4, поэтому от ускорения на GPU многого ждать не приходится. Когда мы включили опцию “Enable hardware encode”, система на HD 4890 вместе с технологией Stream смогла выиграть только 11 секунд по сравнению с прогоном “только CPU”, на который ушло 5 минут и 27 секунд. Однако подобные результаты больше связаны со случайными факторами, чем с перекладыванием нагрузки на GPU, поскольку мы получили на 3% меньшую нагрузку на GPU после включения аппаратной поддержки. У видеокарты GTX 280 опция аппаратной поддержки вообще была недоступна, поэтому никакой путаницы не возникнет, если формат не ускоряется CUDA. nVidia следует всё же лучше поработать над поддержкой форматов.
Как насчёт “антикварных” роликов в формате MPEG-1, которые по-прежнему можно встретить? Мы взяли 86-Мбайт ролик 640×480, который был снят карманной камерой, после чего преобразовали его в профиль YouTube MPEG-4 480×360. Опять же, время кодирования “только GPU” было почти идентичным. При кодировании в MPEG-4, layer 10 мы должны обнаружить приличный эффект от ускорения на GPU на обеих видеокартах, но Stream не очень хорошо показала себя в этом тесте, дав выигрыш всего на 10%. Между тем работа технологии CUDA смогла на 34% сократить время кодирования. Почему произошла смена ролей? Мы не в курсе, но победа есть победа.
Два очка в пользу AMD, одно очко в пользу nVidia.
Если вам интересно, какой ролик “Пиратов Карибского моря 2” мы использовали в статье CUDA, то поясним: Pirates of the Caribbean: Dead Man’s Chest, объём 71 Мбайт, разрешение 1280×528 (с чёрными полосами) в формате DivX AVI. Давайте рассмотрим сценарий просмотра этого ролика на PlayStation 3. В качестве целевого мы выбрали профиль 720×480. Результаты теста ожидаемы, поскольку ни одна видеокарта не поддерживает ускорение декодирования источника, но оба обеспечивают ускорение целевого потока.
Результат получился странным по двум причинам. Во-первых, мы наблюдаем довольно сильное неравенство времени кодирования “только CPU”, хотя 7,6% разница на трёхминутном ролике не представляет ничего страшного. Во-вторых, пусть даже у nVidia время кодирование “только CPU” оказалось больше, после включения ускорения на GPU nVidia обошла AMD на 11 секунд или на 13,5% процентов, что противоречит предыдущим результатам.
Следующий тест должен, предположительно, показать преимущество AMD, поскольку мы выбрали источник MPEG-2, который Stream ускоряет, а CUDA – нет, после чего преобразовали его в формат AVC для iPod Touch. Данный тест можно считать одним из самых важных, поскольку мы выбрали 298-Мбайт VOB-файл – промо-ролик DVD-фильма “Mr. and Mrs. Smith/Мистер и миссис Смит”, то есть тест позволяет оценить производительность кодирования DVD-рипа в формат H.264. Если видеокарта AMD ускоряет обе части перекодирования, то nVidia – только кодирование. И результаты это как раз отражают. Обе карты показали близкое время кодирования “только CPU”, но если включение поддержки CUDA дало преимущество на 35,5%, то у Stream прирост увеличился до 108%. На наш взгляд, данный тест отражает наибольший выигрыш от Stream.
Да, этот тест изначально должен был показать преимущество AMD, но это не меняет тот факт, что Stream умеет делать то, что не умеет CUDA. Три балла в пользу AMD, два – в пользу nVidia.
Перекодирование 1080
Один сценарий, который мы пока не учитывали, касается перекодирования в формат высокого разрешения 1080. Мы провели несколько тестов, которые включают изменение разрешения с низкого на высокое. Некоторым пользователям такой сценарий кажется привлекательным, поскольку плеер Blu-ray выполняет такой же процесс масштабирования для DVD, и результат выглядит лучше, не так ли? Разница кроется в том, что у плееров Blu-ray и других систем масштабирования используется большое количество фильтров, в результате которых интерполированная картинка выглядит более естественной. Если же вы заставите кодировщик сделать больше пикселей из меньшего числа, то он просто будет увеличивать пиксели, а вы получите неприятную картинку с “лесенками” и артефактами. Да и больший по размеру файл. Так что имеет ли смысл подобный сценарий?
AMD спорила с нами, указывая, что вряд ли кто-то будет заниматься подобным масштабированием, и мы полагаем, что они во многом правы. Но у AMD были свои причины для убеждения. Как показали результаты тестов, технология CUDA даёт значительно преимущество на таких операциях. Но мы всё же отбросили подобные тесты. Логика у AMD верная, и мы приведём отрывок из переписки с компанией.
Цели перекодирования в реальных условиях следующие.
- Снижение размера файла на жёстком диске, пытаясь сохранить при этом максимально возможное качество. Этого можно добиться двумя путями.
- Снизить разрешение видео, например, перейдя с 1080p на 720p или SD.
- Использовать более эффективный алгоритм сжатия, сохранив прежнее разрешение, например, преобразуя MPEG-2 HD в H.264 HD.
- Перекодирование с HD, SD в формат, который поддерживает плеер портативного устройства.
- Перекодирование с HD, SD в формат, который поддерживают сайты.
- Для DVD это означает конвертацию в формат MPEG-2 SD из HD или SD.
- Для BD это означает конвертацию в формат MPEG-2 HD, H.264 HD или VC-1.
Список почти полный. Однако в нём есть существенное упущение. Мы взяли 115-Мбайт ролик “Terminator 2” в формате WMV HD, который отображается в разрешении 1440×1080 с чёрными полосами, после чего перекодировали его в профиль Espresso MPEG-4 1920×1080. Поскольку H.264 становится форматом де-факто для видео высокого разрешения, многие пользователи захотят перевести свои файлы HD из других форматов в данный.
Ни одна из технологий GPU не поддерживает ускорение декодирования WMV, но обе ускоряют кодирование MPEG-4, и мы получили очень близкие результаты времени кодирования “только CPU”, так что тест должен быть честным. Обе системы показали впечатляющий прирост производительности при помощи вычислений на GPU. Это вновь наглядно демонстрирует, какую экономию времени вы получите при перекодировании множества файлов. Но лидером в данном случае стала технология CUDA, которая обогнала Stream на две минуты. Если бы мы в качестве источника взяли файл MPEG-2 HD вместо WMV HD, то наверняка Stream вышла бы победителем. Так что помните об этом, подбирая технологию под свои нужды.
Финальный результат будет таков: 3 очка в пользу AMD, 3 очка в пользу nVidia. Впрочем, одинаковыми результаты назвать можно только с натяжкой, поскольку аппаратное ускорение декодирования MPEG-2 может быть актуальным в некоторых сценариях. Если вам оно требуется, и мы говорим о производительности, то технологию Stream можно назвать победителем. Если вам поддержка декодирования MPEG-2 не нужна, но хочется получить поддержку более широкого ассортимента приложений GPGPU, то сегодня пальму первенства держит CUDA.
SimHD
При подготовке этой статьи мы подготовили несколько иллюстраций, показывающих (плохую) работу ArcSoft SimHD за $19,95. Мы использовали файл 720×480 MPEG-2 (демонстрационный клип ATI Avivo), который с помощью SimHD масштабировался до разрешения 1920×1080. Собственно, для этой цели плагин и нужен. Он добавляется аддоном к плееру TotalMedia Theatre 3. TMT3 воспроизводит фильм, а SimHD призван сделать картинку более качественной на телевизорах и дисплеях HD. Как утверждает ArcSoft, SimHD использует технологию CUDA (и, вероятно, ATI Stream, если компания соизволит обновить информацию о продукте) и “не только обеспечивает серьёзные преимущества по производительности, но и экономит производительность CPU для других нужд”. Довольно странное заявление, поскольку мы не знаем, как можно получить большую производительность в данном плеере (разве что когда вы будете выполнять масштабирование upscale со скоростью воспроизведения выше 1,0x). Да и насчёт экономии производительности CPU для других нужд возникают сомнения, поскольку HD-фильмы обычно смотрят на полном экране, и пользователь погружён в просмотр, а не в другие виды деятельности.
Фактически, единственное, что мы бы хотели получить от SimHD – улучшение качества видео SD, а каким способ это достигается, нам не так и важно. Проблема же в том, что качество не повышается. На наш взгляд, получающаяся картинка выглядит хуже оригинальной. Позвольте привести один пример.
Нажмите на картинку для увеличения.
SimHD поддерживает функцию разделения экрана на две части, поэтому вы можете наблюдать оригинальную картинку слева и вариант с масштабированием upscale справа. Просьба игнорировать некоторую вертикальную полосатость, поскольку нам пришлось фотографировать монитор – другого способа захвата картинки не было. У TMT3 есть клавиша захвата кадра, но она была неактивна в данном режиме. Два зелёных овала показывают участки, в которых, на наш взгляд, SimHD улучшает картинку. Если вы будете просматривать картинку на хорошем мониторе, то в большом зелёном овале заметите чуть больше деталей, полученных на тёмном фоне. Кроме того, наблюдается больше деталей на чашечке цветка.
Красные овалы показывают места, где по нашему мнению качество картинки визуально ухудшилось. На краях появились заметные “лесенки”. В тенях сильнее заметны полосы и “шум”. А на светлых областях детали размываются. Повышение контрастности оправдывает себя в тенях, но не слишком хорошо сказывается на светлых областях.
Мы хотели раскритиковать SimHD и для сравнения взяли копию PowerDVD 9 от CyberLink, где есть функция TrueTheater HD – похожая на SimHD технология масштабирования upscale. Что же мы обнаружили? Улучшение цветов TrueTheater действительно выполняется эффективнее, чем в SimHD, но всё равно появляются “лесенки” на кромках, да и “шум” от компрессии на увеличенной версии картинки сильнее проявляет себя при настройках по умолчанию.
Нажмите на картинку для увеличения.
Настройка эффекта TTHD улучшает картинку, и наш контакт в CyberLink выслал скриншот, подтверждающий это. Если найти правильные настройки для соответствующего фильма, то вы можете получить лучший результат. Впрочем, как с файлом Avivo MPEG-2, так и с DVD-фильмом “Matrix Revolutions”, которые мы тестировали, всё равно создавалось впечатление, что программное масштабирование upscale больше вредит, нежели помогает. Возможно, эту сферу должна улучшить поддержка GPGPU в будущем (возможно, в ближайшем будущем), но, на наш взгляд, до реальных улучшений технология должна пройти поколение или два.
Интервью с AMD
Не нужно сильно углубляться в сферу GPGPU, особенно после повторного запуска ATI Stream, прежде чем начнут появляться вопросы. Несколько представителей команды бывшей ATI в AMD смогли ответить на несколько наших довольно острых вопросов. Ниже мы приведём самые актуальные вопросы и ответы.
THG. Программное обеспечение Stream (известное тогда как CTM, close-to-metal) было объявлено в ноябре 2006. Но мы не увидели реализации этой технологии в драйвере Catalyst до появления в версии в декабре 2008, а также 9.5 hotfix в мае 2009. Время разработки кажется слишком уж долгим.
AMD. Мы попытаемся прояснить этот вопрос и выделить разные компоненты.
ATI Stream является окружением GPGPU как в аппаратной, так и программной части, включая ускорение задач помимо обычного рендеринга в играх или воспроизведения видео.
Есть два компонента ATI Stream: окружение разработки, которое включает высокоуровневый язык под названием Brook+, а также исполнительный компонент под названием Compute Abstraction Layer (CAL). CAL как раз был унифицирован после выхода драйверов Catalyst в декабре 2008. До декабря 2008 существовало две разных версии драйвера: одна с CAL, а вторая – обычные драйверы Catalyst. Большинство приложений ATI Stream до конца 2008 года были коммерческими, такими как высокопроизводительные вычисления (HPC), приложения для нефтегазовой отрасли, научные исследования и корпоративные видеоконференции. Им не требовалось регулярное обновление драйвера, поскольку они и так работали в очень стабильных окружениях, как по части “железа” (FireStream) так и ПО.
Нажмите на картинку для увеличения.
Причина унификации драйверов заключается в том, чтобы представить инфраструктуру для потребителей, чтобы они могли получить преимущества от ATI Stream на обычных видеокартах ATI Radeon. Как вы можете видеть, мы провели естественный переход с высокопроизводительных вычислений на массовый рынок после 2006 года. Кроме того, драйверы ATI Stream будут работать без особых проблем и для упомянутых коммерческих приложений. GPGPU – новая модель программирования, которая требует не только инфраструктур драйверов, но также обучение производителей ПО в масштабе компьютерной индустрии, чтобы они могли получить преимущество от GPGPU.
Точно так же мы ожидаем естественный переход индустрии на вычислительные шейдеры OpenCL и DirectX 11 к концу 2009 или к 2010 году, поскольку разработчики ПО получат языки программирования и API, не зависящие от аппаратной платформы, что снизит затраты на разработку и облегчит поддержку кода.
Что касается промежутка с декабря прошлого года по май нынешнего, то причина задержки кроется в обновлении, над которым работала наша команда разработки ПО помимо исправления приложения (ATI Video Converter). Они добавляли поддержку новой среды перекодирования в ATI Stream. Работа выполнялась объединёнными усилиями разных команд в Торонто и Силиконовой долине, помимо тесной работы с нашим партнёром CyberLink в Тайбэе. И всё это нужно было делать, обеспечивая стабильность драйверов. Задача была довольно серьёзной, учитывая влияние, которое каждое изменение может оказать на стабильную работу.
THG. Мы знаем, что вы не можете говорить за nVidia, но почему в Stream и CUDA мы видим ускорение только MPEG-4, layer 10. При этом игнорируются все пользователи таких форматов, как DivX и Xvid. Почему так незаслуженно забыт MPEG-4, layer 2? И не мешало бы добавить поддержку ускорения Windows и WMV?
AMD. Вопрос нужно разбить на две части: ускорение приложений Microsoft и кодеки, поддерживающиеся системой перекодирования ATI Stream. Если я правильно помню из материалов ноября прошлого года, мы добавили приложения Microsoft, такие как PowerPoint или Microsoft Expression, которые используют ускорение GPU в своей работе. И это не относится конкретно к перекодированию. Что же касается кодеков, которые поддержаны в окружении перекодирования ATI Stream, нам нужно было сделать выбор, чтобы наиболее эффективно сфокусировать наши усилия, а также покрыть наиболее актуальные области в первой итерации.
Почему AVC для ускорения GPGPU были выбраны MPEG-2 и MPEG-4? Мы подходили следующим образом: со стороны исходного потока и со стороны целевого потока.
Исходный поток.
- DVD: MPEG-2 SD;
- Blu-ray: MPEG-2 HD, MPEG-4 AVC, VC-1;
- цифровое вещание: MPEG-2 (SD и HD);
- цифровые видеокамеры;
- HDV (вариант MPEG-2 в разрешении 1440×1080);
- AVCHD для новых видеокамер.
Целевой поток.
- Портативные устройства: H.264 (MPEG-4) и WMV;
- авторинг DVD: MPEG-2 SD;
- авторинг Blu-ray: MPEG-2 HD, MPEG-4 AVC, VC-1;
- архивация фильмов с высоким соотношением качества и коэффициента сжатия: MPEG-4 AVC, DivX, Xvid;
- YouTube: H.264.
Как вы можете видеть, поддержав два кодека MPEG-4 и MPEG-2, мы закрыли большинство сценариев. Есть ли почва для улучшения? Конечно, и мы будем работать над обновлениями в будущем.
Примечание по поводу DivX и Xvid: формат DivX является пропиетарным, и мы бы рады предложить поддержку ускорения GPGPU для DivX, но это решение должен принимать собственник формата. Что касается Xvid, то это формат с открытым исходным кодом, и команда ATI Stream приглашает разработчиков на наш сайт amd.com, чтобы связаться с нами и получить поддержку, если им интересно разрабатывать версию с ускорением ATI Stream.
Нажмите на картинку для увеличения.
THG. Насколько мы знаем, Adobe поддерживает ускорение через OpenGL. И мы ничего не слышали о поддержке Stream. В презентации, посвящённой первому объявлению Stream, были показаны Acrobat Reader, Photoshop CS4, After Effects CS4 и Flash 10 как программы с поддержкой Stream. Что же случилось?
AMD. Как мы уже упоминали выше, ATI Stream является окружением как для “железа”, так и для программ, которое позволяет ускорить задачи помимо привычного рендеринга в играх или ускорения воспроизведения видео. В случае приложений Adobe, которые вы упомянули, они стали поддерживать аппаратные возможности для ускорения обработки.
THG. Аппаратное ускорение, да. Но это ведь не то же самое, что ускорение Stream?
AMD. Всё, что использует ускорение через GPU, является ATI Stream, будь то компонент DirectX, OpenGL или ATI Stream.
THG. Всё? Не слишком ли широко сказано?
AMD. Для языка параллельных вычислений критически важно тесно интегрироваться с графическим API. OpenCL будет тесно интегрирован с OpenGL. Ещё один пример – DirectX 11, где вычислительные шейдеры тесно привязаны к конвейеру рендеринга. В обоих случаях API рендеринга дополняет язык вычислений в OpenCL или DirectX 11.
По мере того, как параллельные вычисления становятся более стандартизованными (с ратификацией и выходом OpenCL и вычислительных шейдеров DirectX) окружение “ATI Stream” начинает в большей степени определяться не нижележащими механизмами, которые специально привязаны к нему, а типами задач, которые ускоряются GPU. При этом Stream будет восприниматься применительно к задачам, ускоряющимся через GPU, которые выходят за пределы традиционного 3D-рендеринга, ранее ассоциировавшегося с обработкой GPU. Некоторые приложения продуктивности уже используют более традиционное ускорение API 3D для некоторых задач, и мы рассматриваем это как пример обработки Stream.
Нажмите на картинку для увеличения.
THG. Но достаточно допроса с пристрастием. Давайте посмотрим на перспективу. Можно ли ожидать работу технологии Stream и GPGPU в потребительской сфере за пределами сегодняшних приложений по перекодированию, проигрыванию и монтажу видео?
AMD. Да, и наверняка. Приложения, подобные симуляции физики, искусственному интеллекту, обработке видео – это те сферы, которые вполне естественно ускоряются через Stream/GPGPU/параллельные технологии. Ключевая проблема заключается в том, чтобы программисты стали использовать “железо” и языки программирования/API, доступные им, для правильного моделирования вычислительных проблем. OpenCL и вычислительные шейдеры DirectX 11 являются существенным шагом вперёд в отношении того, как программист может использовать вычислительную мощность современных GPU.
THG. Мы даже встречали предсказания, что GPU когда-нибудь победят CPU. Но те преимущества GPGPU, которые мы проверили на деле, действительно радуют. Учитывая неминуемое появление Fusion и продолжающуюся эволюцию Stream, каково мнение AMD по поводу перспектив вычислений на GPU?
AMD. Это просто неверно и даже в чём-то корыстно, когда компании утверждают, что GPU является самым важным процессором в ПК. Это примерно такое же заблуждение, как если бы стали утверждать, что процессоры x86 являются самыми эффективными для решения всех вычислительных проблем. Правильный ответ: “смотря для чего”. Нагрузка или вычислительная проблема являются определяющим фактором в том, какой процессор лучше всего подойдёт для выполнения данной нагрузки или решения вычислительной проблемы. CPU хорошо подходят для линейных/внеочередных/непредсказуемых вычислительных проблем, а GPU прекрасно справляются с параллельными нагрузками, подобными обработке видео, симуляции физики или искусственному интеллекту. Пытаться модифицировать или адаптировать вычислительную проблему для лучшего соответствия “железу”, которое компания продаёт – это не самый лучший путь.
Кроме того, можно легко забыть о третьем классе процессоров – с фиксированными функциями. Блоки с фиксированными функциями сегодня часто обходят вниманием, поскольку они “не модные”. Люди почему-то считают, что устройства общего назначения являются панацеей от всех бед. Ерунда. Блоки с фиксированными функциями, предназначенные для таких задач, как декодирование видео или тесселяция, хороши не только с точки зрения энергопотребления, но они также хорошо масштабируются с продуктов верхнего уровня на самый низ. Продукты, которые содержат только блоки общего назначения, не такие эффективные по энергопотреблению, да и они масштабируются не так хорошо, как процессоры, соблюдающие баланс между фиксированными функциями и операциями общего назначения. Наконец, блоки с фиксированными функциями лучше всего подходят для решения вычислительных проблем, которые не выполняются эффективно ни на CPU, ни на GPU, подобно вычислению обратной энтропии при декодировании H.264.
Лучшим решением будет правильный баланс x86 CPU, современного GPU и блоков с фиксированными функциями. Сбалансированная платформа станет лучшим решением для среднего потребителя, поскольку она будет содержать все вычислительные элементы. И продукты AMD Fusion как раз смогут сбалансировать все три типа процессоров. А опора на один только быстрый CPU или GPU сегодня не актуальна.
THG. Учитывая недавний выпуск hotfix и обновление Stream, как AMD может охарактеризовать Stream по сравнению с CUDA по критериям качества и производительности?
AMD. Обычно мы предпочитаем предоставлять “железо” и ПО, чтобы вы могли провести тесты самостоятельно и составить собственное мнение. Но объективно мы считаем, что окружение перекодирования ATI Stream значительно обошло окружение перекодирования CUDA с выходом упомянутого обновления как по производительности, так и по качеству. Мы упомянули “объективно”, поскольку впервые у нас под рукой есть приложение (MediaShow Espresso), которое работает с обеими технологиями и позволяет сделать прямое сравнение.
Нажмите на картинку для увеличения.