Intel vs Nvidia: сравниваем кодирование на графических ускорителях
Транскодирование видео — очень ресурсоемкая задача. Иногда выполнять её за счет ЦП довольно дорого, и, чтобы сэкономить ресурсы, используют графические ускорители. Особенно это актуально в ОТТ вещании, когда на один канал приходится множество профилей.
Для начала определимся с графикой, которую будем сравнивать. Рассматривать будем только стабильные решения для работы 24/7: в телевещании иначе нельзя. У Intel все просто: возьмем поколение Xeon процессоров Coffee Lake со встроенной графикой Intel® UHD Graphics P630, процессор Intel® Xeon® E-2246G. У Nvidia же с выбором видеокарты для транскодирования все немного сложнее. Мы выбрали Quadro RTX 4000 (8GB) — это серверный аналог GeForce RTX 2070 Super (8GB). В отличие от RTX, она не имеет официальных ограничений в одновременной обработке больше 3 потоков. Это ограничение можно снять, установив созданный умельцами патч, но, как мы уже отметили, будем рассматривать только проверенные и официальные решения. Более ранние версии видеокарт отмели сразу: они проигрывают при работе с HEVC, так как не имеют возможности кодирования B-кадров.
Теперь подберем платформы с выбранными графическими решениями.
Максимальное количество транскодируемых каналов
Итак, перейдем к цифрам. Проведем нагрузочный тест на максимально возможное количество транскодируемых каналов (режим fastest) на одном сервере.
В этом сравнении Nvidia в два раза производительнее Intel при AVC транскодировании и практически не уступает в кодировании HEVC.
Цена за 1 канал с учетом затрат на сервер
Теперь мы знаем максимально возможное количество каналов FHD (1920*1080) разрешения на один сервер со встроенной графикой Intel и видеокартой Nvidia, а значит, сможем вычислить цену за 1 канал FHD.
Получается, что для AVC по цене разницы нет. В случае c HEVC Nvidia гораздо дороже по цене за канал на платформу, если рассчитывать максимальное количество каналов (то есть использовать самые быстрые алгоритмы кодирования, жертвуя качеством).
На этом моменте прервем вычисления и перейдем к вопросу о качестве, так как гораздо честнее будет сравнить одинаково приемлемое качество, а не получаемое в быстрых режимах.
Качество выходного потока по сравнению с исходным
Рассмотрим еще один немаловажный вопрос — качество сжатия видео. Ведь нет никакого смысла в количестве каналов, если их невозможно смотреть.
Ниже представлен график сравнения качества по метрике PSNR: Intel AVC с исходным потоком (синяя линия) / Nvidia AVC с исходным потоком (красная линия).
Исходя из графика видим, что качество получаемых потоков близкое по значению PSNR. Давайте сравним с помощью VMAF метрики.
В следующем графике рассмотрим сравнение Intel HEVC с исходным потоком (синяя линия) / Nvidia HEVC с исходным потоком (красная линия).
По графику видим, что наше сравнение было не совсем корректным, так как максимальное количество кодируемых каналов Nvidia =14, и их качество почти на 2 dB выше чем, 13 каналов на Intel.
Поэтому мы провели еще несколько изменений, и при максимально возможном качестве на Nvidia и на Intel в режиме GAcc (GPU Accelerated — когда кодирование происходит не только на графике, но подключается и ЦП) получили следующий результат. Intel HEVC GAcc с исходным потоком (синяя линия) / Nvidia HEVC с исходным потоком (красная линия):
Качество кодирования практически совпало, но производительность обеих систем упала в разы. Теперь Nvidia кодировала всего 4 канала FHD HEVC, а Intel всего 2.
Пересчитаем цену за канал исходя из новых данных:
- 1500/2=750 за один транскодируемый HEVC канал на Intel;
- 3000/4=750 за один транскодируемый HEVC канал на Nvidia.
И, собственно, мы получили то же соотношение по цене за канал, что и в ситуации с AVC.
Энергопотребление при равной нагрузке
Рассмотрим еще один важный момент при обслуживании рабочей системы: это потребляемая мощность платформы. Из наших тестов при максимальной нагрузке платформ транскодированием мы получили следующие значения.
- Потребление платформы с Nvidia: около 200 Вт.
- Потребление платформы с Intel: около 75 Вт. Поскольку на Intel каналов в 2 раза меньше, значение умножим на 2 — итого около 150 Вт.
Получается, что при равно выполняемой работе платформа с Nvidia потребляет на 50 Вт больше.
Занимаемое место в серверной стойке
При больших объемах транскодируемых каналов, часто возникает вопрос размещения серверов.
Для Intel предусмотрены специальные платформы blade-сервер, где в одном 3U сервере умещается от 8 до 14 лезвий (полноценных серверов, измененного форм-фактора). В одной 3U платформе можно транскодировать до 168 FHD AVC каналов. Если же использовать не blade-сервер, а обычный rack-сервер, то на такое количество каналов понадобится высота в 14U.
Для Nvidia в этом плане немного сложнее: сами карты занимают дополнительное место в платформе. Можно размещать по 1 карте в 1U сервер, тогда занимаемое место на 168 FHD AVC каналов будет составлять 7U. Можно на одной платформе разместить несколько видеокарт, что позволяет сэкономить на цене за платформы, но выиграть место вряд ли получится: чтобы разместить 2–3 карты, потребуется платформа 3, а то и 4U.
Решение специфических задач
Помимо транскодирования видео, существуют такие задачи, как декодирование видео для визуального мониторинга и кодирование с карты захвата SDI/NDI. В таких случаях решение Intel подходит лучше: эти задачи зачастую не объемные, а значит и использовать все ресурсы Nvidia не получится. Даже если нужно кодировать SDI, то скорее всего это будет несколько каналов — сложно найти проект, где требуется кодировать до 24 сигналов. Кроме того, в 1U платформу довольно сложно уместить SDI карту захвата PCI и видео карту PCI, нужно либо выбирать платформу с другой высотой, либо подбирать платформу с достаточным местом для двух карт, что встречается довольно редко.
Имеется и техническое ограничение. Процесс декодирования менее затратный, чем транскодирование, и в теории на Nvidia можно визуально мониторить больше 24 каналов FHD AVC. На самом деле, количество каналов ограничено до 8, так как невозможно передать больший объем декодированного (несжатого) видео через PCI шину. С Intel же такой проблемы нет, так как графика встроена в процессор.
Справедливости ради стоит отметить, что Nvidia более привлекательна для решения транскодирования контента высокого разрешения UHD, поскольку на одной карте можно развернуть многопрофильное транскодирование. Intel же не может транскодировать UHD контент в несколько профилей на одном графическом ядре, и приходится включать систему распределения потока между серверами — такое решение называется распределенным транскодированием.
Выводы
После сравнения частного кейса можно выделить основные преимущества обоих решений.
Итак, сравнив графические решения по всем интересующим нас параметрам, можно сделать вывод, что решения близкие по конкурентным характеристикам и сложно однозначно выделить фаворита.
Решающим фактором при выборе аппаратного комплекса на транскодирование может стать поставщик программного обеспечения. Для выбора важно, как реализовано использование инструментов, предлагаемых компаниями Intel/Nvidia, какие дополнительные функции сможет выполнять программно-аппаратный комплекс. Играют роль и такие моменты, как цена за ПАК, функционал ПО, гарантия, успешные проекты, возможность доработки под конкретную задачу, возможность обеспечения SLA, компетенции сопровождающих инженеров и т. д. Например, зачастую ПАК с Nvidia включает в себя не программную реализацию инструментов, предоставленную Nvidia, а встроенный в ПО тестовый образец или же открытая реализация. С одной стороны, это неплохо; с другой стороны open-source проект несет за собой свои минусы, например, невозможно добавить функционал или исправить выявленный баг, поскольку техническая поддержка у таких реализаций отсутствует.
Автор
Вадим Блинов
Менеджер продукта Elecard CodecWorks c 2016 года. Опыт работы в сфере видеокодирования более 4 лет.