- PVSM.RU - https://www.pvsm.ru -
Архитектура процессоров Intel становится все более ориентированной на ГП, что открывает удивительные возможности для резкого повышения производительности просто за счет разгрузки обработки мультимедиа с ЦП на ГП. Существует немало инструментов, доступных разработчикам для повышения производительности мультимедиа приложений. В числе этих инструментов есть бесплатные и простые в использовании.
В этой публикации вы найдете:
Если вы испытываете потребность повысить производительность обработки мультимедиа, но не знаете, с чего начать, начните с FFmpeg. Измерьте производительность при программной обработке, затем просто включите аппаратное ускорение и проверьте, насколько изменилась производительность. Затем добавьте использование Intel Media SDK и снова сравнивайте при использовании разных кодеков и в разных конфигурациях.
Чтобы оценить важность развития ГП, давайте начнем с истории совершенствования архитектуры ЦП.
Вернемся в девяностые годы. Первый серьезный этап в развитии — появление суперскалярной архитектуры, в которой была достигнута высокая пропускная способность за счет параллельной обработки на уровне инструкций в пределах одного процессора.
Рисунок 1. Суперскалярная архитектура
Затем, в начале нулевых, появилась многоядерная архитектура (когда в составе одного процессора может быть более одного вычислительного ядра). Однородные ядра (все полностью идентичные) позволяли выполнять одновременно несколько потоков (параллельная обработка на уровне потоков).
При этом производительность многоядерной архитектуры была ограничена из-за целого ряда препятствий.
Рисунок 2. Многоядерная архитектура
В разнородной архитектуре может быть несколько процессоров, использующих общий конвейер данных, которые можно оптимизировать для отдельных функций кодирования, декодирования, преобразования, масштабирования, применения чересстрочной развертки и т. д.
Другими словами, благодаря этой архитектуре мы получили ощутимые преимущества как в области производительности, так и в области потребления электроэнергии, недоступные ранее. На рис. 3 показано развитие ГП за пять последних поколений: графические процессоры приобретают все более важное значение. И при использовании h.264, и при переходе на самые современные кодеки h.265 графические процессоры предоставляют значительную вычислительную мощность, благодаря которой обработка видео с разрешением 4K и даже с более высоким разрешением не только становится возможной, но и выполняется достаточно быстро.
Рисунок 3. Развитие разнородной архитектуры
На рис. 4 показано резкое повышение вычислительной мощности всего за несколько поколений, в которых графические процессоры конструктивно размещались на одном кристалле с ЦП. Если в вашем приложении используется обработка мультимедиа, необходимо задействовать разгрузку на ГП, чтобы добиться ускорения в 5 раз или более (в зависимости от возраста и конфигурации системы).
Рисунок 4. Усовершенствование обработки графики в каждом поколении процессоров Intel
На шаге 1 обычно измеряется производительность H.264, чтобы можно было в дальнейшем оценивать изменение производительности по мере доработки кода. FFmpeg часто используется для измерения производительности и для сравнения скорости при использовании аппаратного ускорения. FFmpeg — очень мощный, но при этом достаточно простой в использовании инструмент.
На шаге 2 проводится тестирование с разными кодеками и в разных конфигурациях. Можно включить аппаратное ускорение, просто заменив кодек (замените libx264 на h264_qsv) на использующий Intel Quick Sync Video [3].
На шаге 3 добавлено использование Intel Media SDK.
Примечание. В этой публикации рассматривается использование этих инструментов в операционной системе Windows*. Если вас интересует реализация для Linux*, см. Доступ к Intel Media Server Studio для кодеков Linux с помощью FFmpeg [4].
Начните с H.264 (AVC), поскольку h264: libx264 является программной реализацией в FFmpeg по умолчанию и выдает высокое качество исключительно программными средствами. Создайте собственный тест, затем снова измерьте производительность, сменив кодек с libx264 на h264_qsv. Позднее мы поговорим о кодеках H.265.
Следует отметить, что при работе с видеопотоками приходится выбирать между качеством и скоростью. При более быстрой обработке практически всегда снижается качество и возрастает размер файлов. Вам придется найти собственный приемлемый уровень качества, основываясь на количестве времени, необходимого для кодирования. Существует 11 предустановок для выбора определенного сочетания качества и скорости — от «Самой быстрой» до «Самой медленной». Существует несколько алгоритмов управления скоростью данных:
Intel Quick Sync Video поддерживает декодирование и кодирование с помощью ЦП Intel и интегрированного ГП1. Обратите внимание, что процессор Intel должен быть совместимым с Quick Sync Video и с OpenCL*. Дополнительные сведения см. в Заметках о выпуске Intel SDK для приложений OpenCL* [5]. Поддержка декодирования и кодирования встроена в FFmpeg с помощью кодеков с суффиксом _qsv. В настоящее время Quick Sync Video поддерживается следующими кодеками: видео MPEG2, VC1 (только декодирование), H.264 и H.265.
Если вы хотите поэкспериментировать с Quick Sync Video в FFmpeg, необходимо добавить libmfx. Самый простой способ установить эту библиотеку — использовать версию libmfx [6], упакованную разработчиком lu_zero.
Пример кодирования с аппаратным ускорением Quick Sync Video:
ffmpeg -I INPUT -c:v h264_qsv -preset:v faster out.qsv.mp4
FFmpeg также может использовать аппаратное ускорение [7] при декодировании с помощью параметра -hwaccel.
Кодек h264_qsv работает очень быстро, но видно, что даже самый медленный режим работы с аппаратным ускорением значительно быстрее только программного кодирования при самом низком качестве и самой высокой скорости.
При тестировании с кодеками H.265 вам потребуется либо получить доступ к сборке с поддержкой libx265, либо собрать собственную версию согласно инструкциям в Руководстве по кодированию для FFmpeg и H.265 [8] или в документации X265 [9].
Пример H.265:
ffmpeg -I input -c:v libx265 - preset medium -x265-params crf=28 -c:a aac -strict experimental -b:a 128k output.mp4
Дополнительные сведения об использовании FFmpeg и Quick Sync Video см. в разделе Облачные вычисления Intel QuickSync Video и FFmpeg [10].
Для дальнейшего повышения производительности при использовании FFmpeg необходимо оптимизировать приложение с помощью Intel Media SDK. Media SDK — это межплатформенный интерфейс API для разработки и оптимизации мультимедиа приложений таким образом, чтобы использовать аппаратное ускорение блоков Intel с фиксированными функциями.
Чтобы начать работать с Intel Media SDK, достаточно выполнить несколько простых действий:
Команды аналогичны командам FFmpeg. Примеры:
VideoTranscoding_folder_binx64>sample_multi_transcode.exe -hw -i::h264 in.mpeg2 -o::h264 out.h264
VideoTranscoding_folder_binx64>sample_multi_transcode.exe -hw -i::h265 in.mpeg2 -o::h265 out.h265
Обратите внимание, что для использования аппаратного ускорения необходимо указать параметр -hw в списке аргументов.
Этот пример также работает с декодером и кодировщиком HEVC (h.265), но его необходимо устанавливать из выпуска Intel Media Server Studio Pro.
Существует множество параметров, которые можно указывать в командной строке. С помощью параметра -u <quality, speed, balanced> можно задать целевое использование (TU), как при использовании предустановок FFmpeg. TU = 4 используется по умолчанию. На рис. 5 показаны показатели производительности при разных настройках TU.
Рисунок 5. Примеры характеристик производительности H264 по отношению к целевому использованию
Используйте другие программные средства Intel
Для дальнейшей доработки кода можно использовать средства оптимизации и профилирования Intel, в том числе Intel Graphics Performance Analyzer [17] (GPA) и Intel VTune Amplifier [18]. Кроме того, инструменты Intel Video Pro Analyzer [19] и Intel Stress Bitstreams and Encoder [20] помогут добиться высокого качества видео и поточной передачи, улучшить работу кодировщиков и декодеров, а также ускорить проверку, чтобы можно было быстрее выпускать решения на рынок.
Компьютерная архитектура претерпела значительные изменения за последние 20 лет, причем ее развитие лишь в течение последних пяти лет дало существенный рост производительности. Теперь ЦП Intel могут обрабатывать мультимедиа непосредственно на ГП, благодаря чему становятся доступными новые модели использования как для конечных потребителей, так и для компаний.
Вы можете самостоятельно измерить повышение производительности с помощью FFmpeg, а также дополнительно оптимизировать код с помощью бесплатных интерфейсов API Intel Media SDK. Переход от программной обработки к аппаратному ускорению повышает производительность системы и снижает расход электроэнергии (и затраты), а также предоставляет дополнительные вычислительные ресурсы, достаточные, чтобы со временем перейти на семейство кодеков H.265.
Автор: Intel
Источник [28]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/126403
Ссылки в тексте:
[1] Intel Media SDK: https://software.intel.com/en-us/media-sdk
[2] Intel Media Server Studio: https://software.intel.com/en-us/intel-media-server-studio
[3] Intel Quick Sync Video: http://www.intel.com/content/www/us/en/architecture-and-technology/quick-sync-video/quick-sync-video-general.html?wapkw=intel+quick+sync+video
[4] Доступ к Intel Media Server Studio для кодеков Linux с помощью FFmpeg: https://software.intel.com/en-us/articles/accessing-intel-media-server-studio-for-linux-codecs-with-ffmpeg
[5] Заметках о выпуске Intel SDK для приложений OpenCL*: http://http/www.intel.com/content/www/us/en/architecture-and-technology/quick-sync-video/quick-sync-video-general.html https:/software.intel.com/en-us/articles/intel-sdk-for-opencl-applications-2013-release-notes
[6] версию libmfx: https://github.com/lu-zero/mfx_dispatch
[7] аппаратное ускорение: https://trac.ffmpeg.org/wiki/HWAccelIntro
[8] Руководстве по кодированию для FFmpeg и H.265: http://trac.ffmpeg.org/wiki/Encode/H.265
[9] документации X265: http://x265.readthedocs.org/en/default/introduction.html
[10] Облачные вычисления Intel QuickSync Video и FFmpeg: http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/cloud-computing-quicksync-video-ffmpeg-white-paper.pdf
[11] загрузить бесплатно: https://registrationcenter.intel.com/en/forms/?productid=2602
[12] бесплатный выпуск Community Edition: https://registrationcenter.intel.com/RegCenter/comform.aspx?productid=2411
[13] Essentials и Professional: https://software.intel.com/en-us/intel-media-server-studio/try-buy
[14] Intel Media SDK: https://software.intel.com/en-us/articles/installing-and-running-intel-media-sdk-2014-on-windows
[15] руководство по установке для Linux: https://software.intel.com/sites/default/files/media_server_studio_getting_started_guide.pdf
[16] образец кода SDK: https://software.intel.com/en-us/intel-media-server-studio-support/code-samples
[17] Intel Graphics Performance Analyzer: https://software.intel.com/en-us/gpa
[18] Intel VTune Amplifier: https://software.intel.com/en-us/intel-vtune-amplifier-xe
[19] Intel Video Pro Analyzer: https://software.intel.com/en-us/intel-video-pro-analyzer
[20] Intel Stress Bitstreams and Encoder: https://software.intel.com/en-us/intel-stress-bitstreams-and-encoder
[21] FFMPEG.ORG: http://ffmpeg.org/
[22] Интеграция Intel Media SDK с FFMPEG для операций мультиплексирования, демультиплексирования, кодирования и декодирования звука: https://software.intel.com/en-us/articles/integrating-intel-media-sdk-with-ffmpeg-for-muxdemuxing-and-audio-encodedecode-usages
[23] Учебные руководства по Intel Media SDK для клиентов и серверов: https://software.intel.com/en-us/articles/media-sdk-tutorials-for-client-and-server
[24] Ускорение приложений на основе FFmpeg с помощью Intel Quick Sync Video: https://communities.intel.com/community/itpeernetwork/datastack/blog/2016/02/25/accelerating-your-ffmpeg-based-applications-with-intel-quick-sync-video
[25] Intel QuickSync Video и FFmpeg*: http://http//www.intel.com/content/dam/www/public/us/en/documents/white-papers/cloud-computing-quicksync-video-ffmpeg-white-paper.pdf
[26] Intel QuickSync Video и FFmpeg: установка и проверка: http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/quicksync-video-ffmpeg-install-valid.pdf
[27] Значение кодека HEVC (H.265): https://software.intel.com/en-us/blogs/2015/12/11/codecs-are-they-slowing-you-down
[28] Источник: https://habrahabr.ru/post/301698/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.