Рост производительности FFmpeg до 94 раз после внедрения ассемблерного кода AVX-512

Современные языки программирования высокого уровня и продвинутые компиляторы значительно упрощают разработку программного обеспечения и снижают ее стоимость. Однако этот способ программирования может скрыть возможности производительности современного оборудования, отчасти из-за неэффективности интерфейсов прикладного программирования (API). По-видимому, старый добрый путь ассемблерного кода может повысить производительность от трех до 94 раз, в зависимости от рабочей нагрузки, согласно FFmpeg. Оборудование, на котором была достигнута эта многократно увеличенная производительность, не было раскрыто.

FFmpeg — это проект декодирования видео с открытым исходным кодом, разработанный добровольцами, которые вносят вклад в его кодовую базу, исправляют ошибки и добавляют новые функции. Проект возглавляет небольшая группа основных разработчиков и сопровождающих, которые контролируют его направление и обеспечивают соответствие вкладов определенным стандартам. Они координируют циклы разработки и выпуска проекта, объединяя вклады других разработчиков. Эта группа разработчиков попыталась реализовать рукописный путь кода сборки AVX512, что редко делалось ранее, по крайней мере, в видеоиндустрии.

Разработчики создали оптимизированный путь кода с использованием набора инструкций AVX-512 для ускорения определенных функций в библиотеке обработки мультимедиа FFmpeg. Используя AVX-512, они смогли добиться значительного повышения производительности — от трех до 94 раз быстрее — по сравнению со стандартными реализациями. AVX-512 позволяет обрабатывать большие фрагменты данных параллельно с использованием 512-битных регистров, которые могут обрабатывать до 16 FLOPS одинарной точности или 8 FLOPS двойной точности за одну операцию. Такая оптимизация идеально подходит для задач с большими вычислительными затратами в целом, но в случае обработки видео и изображений в частности.

Результаты бенчмаркинга показывают, что новый рукописный кодовый путь AVX-512 работает значительно быстрее других реализаций, включая базовый код C и наборы инструкций SIMD с более низкими характеристиками, такие как AVX2 и SSSE3. В некоторых случаях обновленный кодовый путь AVX-512 достигает ускорения почти в 94 раза по сравнению с базовым, что подчеркивает эффективность оптимизированного вручную ассемблерного кода для AVX-512.

Эта разработка особенно ценна для пользователей, работающих на высокопроизводительном оборудовании с поддержкой AVX-512, позволяя им обрабатывать медиаконтент гораздо эффективнее. Однако есть проблема: Intel отключила AVX-512 для своих процессоров Core 12-го, 13-го и 14-го поколений, оставив владельцев этих процессоров без них. С другой стороны, процессоры AMD серии Ryzen 9000 оснащены полностью включенным FPU AVX-512, поэтому владельцы этих процессоров могут воспользоваться достижением FFmpeg.

К сожалению, из-за сложности и специализированной природы AVX-512 такие оптимизации обычно применяются для приложений, критичных к производительности, и требуют знаний в области низкоуровневого программирования и микроархитектуры процессора.

Источник: Tomshardware.com

Подписаться на обновления Новости / Технологии
Зарегистрируйтесь на сайте, чтобы отключить рекламу

ℹ️ Помощь от ИИ

В статье есть ошибки или у вас есть вопрос? Попробуйте спросить нашего ИИ-помощника в комментариях и он постарается помочь!

⚠️ Важно:

• AI Rutab читает ваши комментарии и готов вам помочь.
• Просто задайте вопрос 👍
• ИИ может давать неточные ответы!
• ИИ не скажет «Я не знаю», но вместо этого может дать ошибочный ответ.
• Всегда проверяйте информацию и не полагайтесь на него как на единственный источник.
• К ИИ-помощнику можно обратиться по имени Rutab или Рутаб.

Топ дня 🌶️


0 комментариев

Оставить комментарий


Все комментарии - Технологии