`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Давид и Голиаф: GPU против CPU в обработке видео

Статья опубликована в №47 (664) от 9 декабря

+44
голоса

Обработка и кодирование видео по праву считается одной из наиболее ресурсоемких задач, и потому производители CPU при выходе новых продуктов не зря постоянно делают упор на уменьшение затрат времени на подобную работу. Однако недавно появилась возможность переложить отдельные тяжелые операции с центрального процессора на GPU, вычислительная мощность которого значительно превосходит показатели любых CPU.

Давид и Голиаф GPU против CPU в обработке видео

Благодаря принципу, положенному в основу создания современных графических процессоров (массив из очень большого числа относительно примитивных вычислительных блоков), выполнение ряда задач проходит намного быстрее – за счет параллельного запуска на исполнение десятков, а то и сотен одновременных потоков. В результате при использовании соответствующим образом написанного и адаптированного ПО GPU достигают уровней производительности, ранее доступных только в суперкомпьютерах и кластерах. Например, наиболее мощные на сегодня графические процессоры NVIDIA и ATI обеспечивают около 1 TFLOPs при одинарной точности. Естественно, было бы удивительно, если бы разработчики ПО, требующего значительных ресурсов процессора, не обратили внимания на такие возможности. Среди них не последнее место занимают и продукты для работы с видео.

Технология AMD Stream имеет значительные преимущества над NVIDIA CUDA: она основана на открытом языке Brook+, над развитием которого работают несколько университетов и крупных организаций, поддерживает новый индустриальный стандарт OpenCL, призванный объединить и заменить собой OpenGL и OpenAL. Но на данный момент, несмотря на заметно превосходящую конкурента вычислительную мощь GPU ATI RV770, программ, способных использовать их для расчетов посредством технологии AMD Stream, почти нет. Ситуация должна измениться в течение полугода, так как в ближайшее время выйдет новая версия Stream SDK и транскодер AVIVO Video Converter. Это будет бесплатный, ориентированный сугубо на домашнее применение пакет, способный быстро преобразовывать видеофайл практически любого формата в подходящий по битрейту и разрешению для воспроизведения на различных устройствах, вроде портативных проигрывателей или домашних ТВ-приставок. Кроме того, в I квартале 2009 г. обновления своих пакетов для работы с видео выпустят Cyberlink и Arcsoft, а в дальнейшем – и другие компании, специализирующиеся на соответствующем ПО.

В теории

Давид и Голиаф GPU против CPU в обработке видео
Загрузка ядер CPU Intel Core i7 3,8 ГГц в TMPGEnc XPress 4.6 без использования CUDA и с ним

NVIDIA уже обзавелась значительным арсеналом программ для собственной реализации GP-GPU, называемой CUDA, однако подавляющее большинство продуктов – это научные, технические и медицинские пакеты для визуализации данных. Но и кодирование видео также не осталось в стороне – NVIDIA спонсирует скандинавскую Elemental Technologies, пытающуюся разработать кодек стандарта H.264, использующий GP-GPU. На сегодня Elemental уже выпустила два продукта (правда, фактически это одно и то же, но в разной «упаковке»). Первый – транскодер Badaboom Media Converter, аналогичный вышеупомянутому AVIVO. Второй – плагин RapiHD для Adobe Premiere Pro. Недостаток обоих в том, что на данный момент они поддерживают только Baseline-профиль H.264, не реализующий основное достоинство этого кодека – высокое качеством кодирования при сравнительно низком битрейте. Существующая разработка Elemental не поддерживает ни CABAC, ни CAVLC, что не позволяет использовать ее для какой-либо серьезной работы с видео, в отличие от существующих кодировщиков на базе CPU. В частности, бесплатный кодек x.264 обеспечивает значительно лучшее изображение при одинаковом размере конечного файла и со сравнимой производительностью.

Проблема при переводе кодировщиков на обработку посредством GPU состоит в том, что для высокого качества итогового видео необходимо разбивать кадр на множество макроблоков и в каждом из них проводить ряд ресурсоемких операций, таких как определение движения и энтропийное кодирование. Центральный процессор при этом просто последовательно обрабатывает все макроблоки, анализируя поток, а потом на основе полученных векторов движения сжимает кадры, обеспечивая в результате высококачественное видео. Для обработки же с помощью GPU придется либо заменить анализ кадра по блокам на покадровый (однопотоковое вычисление, нуждающееся в большом объеме кэша для хранения и анализа), либо пожертвовать углубленным анализом и итоговым соотношением битрейт/качество в угоду скорости кодирования. Именно вторым путем пока идет Elemental.

Реализовать же комплексный алгоритм кодирования с помощью GPU очень сложно. Каждому из вычислительных блоков (Stream Multiprocessors по терминологии NVIDIA) придется постоянно обмениваться данными о векторах движения с другими, а всему GPU – с центральным процессором, что в условиях высокой латентности и малых объемов кэшей в GPU может оказаться попросту неэффективным. Возможно, ситуация изменится с появлением так называемых APU – комплексных вычислительных блоков, состоящих из CPU и GPU на одном кристалле, вроде AMD Fusion, так как там будет устранена причина латентности – шина PCI Express.

Кроме того, создание ПО, оперирующего большим количеством исполняемых потоков одновременно, – задача нетривиальная даже при наличии хорошо документированного SDK, такого как NVIDIA CUDA, и поддержки со стороны его разработчика. По отзывам одного из создателей x.264, на реализацию их продукта для GPU придется затратить очень много усилий и средств, так как даже при C-подобном синтаксисе потоковая модель CUDA сложна в освоении и реализации. Фактически речь идет не о портировании существующего кода или написании для него некого транслятора, а об абсолютно новом кодировщике под принципиально иное аппаратное обеспечение, не совместимое с x86. В этом плане весьма перспективным представляется Larrabee – проектируемый Intel графический процессор, состоящий из большого числа x86-совместимых ядер. Однако если обратить внимание на довольно неспешное развитие ПО, использующего многопоточность даже на CPU, вряд ли стоит ждать какого-либо прорыва в ближайшее время.

На практике

Впрочем, работа с видео не сводится только к кодированию. Внимание акцентируется именно на сопутствующих основной обработке операциях: наложении фильтров и эффектов, монтаже и т. п. Так, первая серьезная заявка на участие GPU в этом процессе сделана в новой версии продукта Pegasys – TMPGEnc XPress 4.6. Этот программный пакет позволяет перекодировать исходный видеофайл как в подготовленный к записи образ диска VCD, DVD или Blu-ray, так и в отдельный файл с использованием большого числа кодеков и форматов. Новая версия отличается тем, что в ней реализована возможность исполнения некоторых ресурсоемких фильтров посредством CUDA (сама компрессия все же исполняется на CPU). Кроме того, декодирование файлов HD также можно перенести на графический процессор, что уменьшает суммарное время обработки при слабом CPU. Поддерживаются все видеокарты NVIDIA, начиная с GeForce 8800, необходимо лишь установить свежую версию драйверов и в настройках программы активировать CUDA.

Мы решили проверить, насколько эффективна подобная реализация, благо лицензионная версия утилиты входит в комплект поставки тестируемых видеокарт GeForce GTX 260 и GTX 280 производства MSI. Сразу отметим, что для чистоты эксперимента имитировалась довольно тяжелая нагрузка – кодирование 5-минутного отрезка HD-видео формата 1920×1080i, 29,97 fps (битрейт 16 Мб/с). Ролик преобразовывался в формат 1280×720p MPEG-4/ AVC с помощью H.264-кодека Mainconcept с профилем High, алгоритмом энтропийного кодирования CABAC посредством двухпроходной компрессии со средним битрейтом 6 Мб/с. Для оценки эффективности CUDA были активированы три фильтра: преобразование развертки в прогрессивную, устранение шумов на видео с максимальным диапазоном и адаптивная подстройка резкости. Мы намеренно использовали HD-контент, так как при преобразовании в форматы для портативных устройств с сильным снижением разрешения фильтры в принципе не нужны – на маленьком экране огрехи не заметны, а на большом при сжатии в низкое разрешение они не спасут. Для сравнения с традиционной системой, использующей для вычислений центральный процессор, мы собрали тестовый стенд на базе разогнанного до 3,8 ГГц Intel Core i7.

Обработка каждого кадра перед его сжатием занимает много процессорного времени, в итоге при выполнении всей задачи силами CPU одно ядро оказывается загруженным на 100%, а три других (или семь виртуальных, в случае Core i7 с активным Hyper-Threading) работают над непосредственным сжатием потока примерно с 30%-ной загрузкой. Разумеется, назвать это эффективным никак нельзя – скорость не поднимается выше 3–4 кадров в секунду, а весь процесс занимает почти два часа. Учитывая, что некоторые фильтры попросту не поддаются параллелизации, зачастую четырехъядерный CPU оказывается бесполезным, и можно обойтись двухъядерным: пока одно ядро обрабатывает кадр фильтром, второе успеет сжать предыдущую порцию.

Выводы

Результаты тестирования показывают, что разработчики ПО не зря обратили взоры на GP-GPU. Значительного ускорения процесса обработки и кодирования потока по сравнению с Intel Core i7 с частотой 3,8 ГГц мы не наблюдаем только с одним графическим процессором – это сверхбюджетная модель GeForce 9400 GT, стоимость которой составляет всего $70. Правда, как мы уже упоминали, прямого сравнения в данном случае нет, т.к. видеокарта просто забирает часть нагрузки у CPU, предоставляя тому возможность сжимать поток, как только появляются доступные обработанные данные. Таким образом, можно сказать, что ядро NVIDIA G96, оборудованное 16 потоковыми процессорами (всего одним кластером из двух мультипроцессоров), в рассмотренных задачах может сравниться с одним ядром Nehalem. Естественно, этого все равно мало: при сжатии видео CPU задействуется всего на 35%. Максимальная загрузка наблюдается при использовании GeForce GTX 280 и достигает 80% – следовательно, в случае топовых видеокарт хватило бы даже неразогнанного процессора. SLI из двух видеокарт не приносит дивидендов – TMPGEnc использует только одну. Также из графика видно, что для эффективной работы этого ПО достаточно GPU с 64 процессорами (SP) и 256-битовой шиной памяти: разница между GeForce 9600 GT с 64 SP и GeForce 9800 GT со 112 SP практически не заметна. Отрыв GPU NVIDIA GT200 от предыдущих поколений связан с архитектурными улучшениями: наличием кэша, увеличенным файлом регистра и поддержкой dual-issue. Разница между GeForce GTX 280 и GTX 260 коррелирует с различиями в тактовых частотах, а не с количеством процессоров в GPU.

Общее впечатление от TMPGEnc XPress 4.6, первой серьезной утилиты для обработки видео, использующей NVIDIA CUDA, весьма положительное. Почти трехкратная разница в быстродействии между системой с CUDA и вариантом без нее – впечатляющее зрелище. Это свидетельствует о том, что не за горами время, когда любая видеокарта среднего класса сможет обеспечить достаточное ускорение для обработки и рендеринга видео в домашних условиях. Остается надеяться на то, что разработчики кодеков все же преодолеют трудности и реализуют качественные режимы сжатия посредством GPU, и мы получим возможность справляться за час с задачами, на которые ранее требовалось несколько часов.

Оборудование предоставлено
Процессоры Intel Core i7 965 Extreme Представительство Intel
Материнская плата ASUS P6T Deluxe/OC Palm Представительство ASUS
Оперативная память Quimonda IMSHIGU03AIFIC-10F Представительство Intel
Видеокарты MSI N280GTX-T2D1G Представительство MSI
MSI N260GTX-T2D896 Представительство MSI
MSI N9600GT Diamond Представительство MSI
ASUS EN9800GT HybridPower Представительство ASUS
ASUS EN9400GT Silent Представительство ASUS
Gainward GeForce 9500GT GDDR3 512 MB «Рома»
Дисплей LG Flatron W3000H Представительство LG
Жесткий диск Seagate Barracuda 7200.10 ST3250410AS 250 GB SATA-II AHCI East Side Consulting
Блок питания Zalman ZM1000-HP 1000 Вт Nevada
Операционная система Microsoft Windows Vista Ultimate SP1 32-bit
Драйверы Intel Chipset Software Utility 9.1.0.1007, NVIDIA ForceWare 180.48

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

+44
голоса

Напечатать Отправить другу

Читайте также

Коли в онлайн з'явиться повна версія статті?

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT