Разработчики проекта 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

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии