Разработчики проекта FFmpeg добились 100х производительности в rangedetect8_avx512, благодаря ассемблерному коду

Разработчики проекта FFmpeg добились 100х производительности в rangedetect8_avx512, благодаря ассемблерному коду

Разработчики открытого мультимедиа‑пакета FFmpeg заявили, что смогли добиться 100-кратной производительности в работе функции rangedetect8_avx512, благодаря новому патчу и искусству рукописного ассемблерного кода.

Исходный код фильтра был переписан с использованием концепции обработки SIMD (Single Instruction, Multiple Data) для значительно улучшенной параллельной обработки на современных мощных процессорах. Очевидно, что компиляторы — программы, которые берут код на языке высокого уровня и выдают ассемблерный (машинный) код — всё ещё не могут конкурировать с рукописным ассемблером. Или, как написали в команде FFmpeg, можно сказать: «распределитель регистров — отстой для компиляторов».

В ноябре 2024 года разработчики проекта FFmpeg сообщили о реализации новых ассемблерных оптимизаций, в которых, благодаря применению набора инструкций AVX-512, удалось ускорить в 94 раза некоторые операции, применяемые при декодировании видео, по сравнению базовой реализацией, написанной на языке C без использования SIMD‑инструкций. Инструкции AVX-512 доступны в процессорах AMD на базе микроархитектур Zen 4 и 5, и в процессорах Intel на базе таких микроархитектур, как Skylake‑X, Ice Lake, Tiger Lake и Rocket Lake.

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

Next Post

Релиз FFmpeg 7.1 Péter

В конце сентября 2024 года состоялся релиз открытого мультимедиа-пакета релиз FFmpeg 7.1 под кодовым названием Péter для Linux, Windows и macOS. Предыдущая стабильная версия проекта FFmpeg 7.0 Dijkstra вышла в апреле 2024 года. В FFmpeg 7.1 входит набор приложений и коллекция библиотек для операций над различными мультимедиа-форматами (запись, преобразование и […]