The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование в FFmpeg инструкций AVX-512 позволило в 94 раза ускорить некоторые операции

05.11.2024 10:34

Разработчики проекта FFmpeg сообщили о реализации новых ассемблерных оптимизаций, в которых, благодаря применению набора инструкций AVX-512, удалось ускорить некоторые операции, применяемые при декодировании видео. Прирост производительности ассемблерного кода с инструкциями AVX-512 составил 94, 44, 64 и 4.24 раза по сравнению базовой реализацией, написанной на языке Си без использования SIMD-инструкций. В ассемблерном коде с оптимизациями на базе инструкций AVX-2 прирост составлял 67, 27, 55 и 4.38 раз, соответственно, а на основе инструкций SSSE3 - 40, 21, 29 и 2.49 раз. Изменения добавлены в состав библиотеки dav1d, предлагающей альтернативный декодировщик для формата кодирования видео AV1. Инструкции AVX-512 доступны в процессорах AMD на базе микроархитектур Zen 4 и 5, и в процессорах Intel на базе таких микроархитектур, как Skylake-X, Ice Lake, Tiger Lake и Rocket Lake.



  1. Главная ссылка к новости (https://www.tomshardware.com/p...)
  2. OpenNews: Выпуск мультимедиа-пакета FFmpeg 7.1
  3. OpenNews: Проект FFMpeg представил собственную реализацию декодировщика xHE-AAC
  4. OpenNews: Основатель QEMU и FFmpeg опубликовал звуковой кодек TSAC
  5. OpenNews: Выпуск dav1d 1.0, декодировщика AV1 от проектов VideoLAN и FFmpeg
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62177-ffmeg
Ключевые слова: ffmeg, avx, optimization, video
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Мохнонос (?), 11:03, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +19 +/
    Молодцы! Вот есть же разработчики, которые кроме обвеса плюшками и раскабанивания ПО ведут его непосредственную тщательную полировку
     
     
  • 2.31, Аноним (31), 13:24, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    AVX512 инструкции появились в 2016 году 8 лет назад внимание вопрос. Это так долго до разработчиков доходила весть что инструкции появились? Они так долго копили на проц с поддержкой данных инструкций? Они 8 лет разрабатывали алгоритм? Ответ на любой вопрос показывает что разрабы у ффмпег не очень скажем так.
     
     
  • 3.34, Аноним (34), 13:29, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    когда тебе денег за работу не платят, то выбираешь сам когда и что делать по мере возможностей и желания.
     
     
  • 4.36, Аноним (31), 13:31, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Справедливо Интел должна доплачивать чтобы кто-то юзал их лишние инструкции.
     
     
  • 5.41, Юрий (??), 13:49, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так интел уже официально не поддерживает AVX-512.
     
  • 3.39, Anony (?), 13:40, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты думаешь что все пользователи и все сервера сразу же в 2016 году обновились на новые процессоры с поддержкой AVX-512? Серьезно?
     
  • 3.40, Аноним (40), 13:49, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На 12400 попытались появиться, но интел быстренько резанули это дело. А проц 22-го года, если что.
     

  • 1.3, dim4k (ok), 11:04, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Ассемблер стреляет тогда - когда этого никто не ждёт😏😏😏
     
     
  • 2.16, КО (?), 12:09, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Осталось только найти что конкретно сломали, лол
     
  • 2.19, Ник (??), 12:18, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нужно было писать на Java, там же волшебный jit который сам весь код оптимизирует!
     

  • 1.4, Аноним (4), 11:06, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Avx всё так же режет частоту процессора? Кто-нибудь уже составил сравнительную табличку того, чем придётся жертвовать при задействовании?
     
     
  • 2.7, dalco (ok), 11:13, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вроде как, урезание частот при включенном AVX относилось только к ранним моделям "синих".
     
     
  • 3.10, Аноним (4), 11:17, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они там повторяли с каждым новым avx.
     
  • 2.11, Cykooz (ok), 11:25, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    В моих реализациях для AVX2, с использованием fixed-point арифметики, какой либо выигрыш перед наивной реализацией на float-ах, без AVX-а, полностью исчезает при выполнении задачи уже в 7-8 параллельных потоках.
    Так что если нужна именно однопоточная скорость, то SIMD дают заметный выигрыш. А в многопоточке, чем больше потоков, тем меньше выигрыш. Я полагаю, что это из-за снижения частоты ядер процессора при использовании SIMD.

    PS: У меня AMD Ryzen 9 5950X, в нём нет AVX-512.

     
     
  • 3.21, ryoken (ok), 12:31, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>наивной реализацией
     
     
  • 4.27, Аноним (27), 12:42, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может быть, он даже не ошибся. Называют же, например, реализацию преобразования Фурье в лоб, как по формуле, наивной.
     
  • 2.22, Аноним (22), 12:33, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На нормальных материнских платах можно регулировать оффсет частоты при выполнении AVX-инструкций, в т.ч. и ставить его в 0.
     

  • 1.8, _kp (ok), 11:14, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Время перекодирования или только "некоторые операции"? ;)


    Ps: и сравнение не с предудущим вариантом, а
    "по сравнению с кодом на языке Си", то есть вообще без avx/sse.
    Если б сравнили с i386, то прирост был бы еще больше.

     
     
  • 2.12, Андрей (??), 11:32, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по скрину - некоторые операции... которые являются по сути базовыми для операций кодирования. Цельный результат оценить сложнее и скорее всего совокупный прирост небольшой, т.к. медленные операции того же чтения с диска быстрее не стали, да и в случае векторных расширений интересно на самом деле то, что там вообще кроме непосредственно одновременных вычислений есть куча расширений чисто для улучшения работы с кэшем, те же базовые load/store и вот тут предположу большую часть вклада внесли именно оптимизации работы кэша, а вычисления скорее довеском стали ибо будучи казалось бы более быстрыми они имеют высокие задержки и длятся дольше, ввиду чего задерживают конвеер не давая линейного прироста скорости.
     
  • 2.14, Аноним (14), 11:54, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Время перекодирования или только "некоторые операции"? ;)

    Отдельные функции.

    > Если б сравнили с i386, то прирост был бы еще больше.

    Сравнили с тем, что использовалось до этого.

     

  • 1.13, Big Robert TheTables (?), 11:50, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вроде бы удаляли эти инструкции, но вообще интересно, для каких именно разработчиков эти наборы инструкций добавляли. Ибо авторы ффмпег сейчас совсем как мы, сторонние программисты - мы зашли в магазин автозапчастей и увидели, что на прилавке есть двигатель, который подойдет на замену нашему. Но ведь изначально-то движок был для какой-то другой ракеты, был разработан, сбалансирован, проверен для иного использования.
    В идеале авторы кодеков должны делать брейншторм с авторами CPU. Если этого не делается, значит, с чипмейкерами брейнштормит кто-то другой.
     
     
  • 2.20, Аноним (20), 12:22, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > мы зашли в магазин автозапчастей и увидели, что на прилавке есть двигатель, который...

    Нет, мы взяли котёнка по кличке "ядро", у которого есть дверцы разного размера (от 64 до 512) и попробовали самую большую. Получилось хорошо.

    > Но ведь изначально-то движок был для какой-то другой ракеты

    Нет, это универсальные дверцы для любых законных целей.

    > должны делать брейншторм с авторами CPU

    Тебе должны? Откуда уверенность, что им не хватает новой специальной дверцы?

    > Вроде бы удаляли эти инструкции

    Только в интелах с E-котятами, потому у этих малых котят нет 512-дверцы. Дверцы малым и большим котятам положено иметь одинаковые.

     
     
  • 3.33, Аноним (31), 13:28, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Поэтому компания Интел и находится на грани банкротства с убытками 16 миллиардов в квартал. В квартал, Карл!
     

  • 1.17, Аноним (17), 12:10, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Чует моё сердце, что тут 100 пудово есть какой-нить "нюанс", типа всё делаем в однопотоке или ещё чего-нить подобное.
     
     
  • 2.37, Rodegast (ok), 13:31, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нюанс в том что не везде он теперь будет работать.
     

  • 1.26, Аноним (26), 12:42, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я надеюсь они пользовались GNU assembler с синтаксисом AT&T.
     
     
  • 2.30, Аноним (27), 12:51, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Надеюсь, с синтаксисом Intel.
     
     
  • 3.35, Аноним (31), 13:30, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Надеюсь на раст.
     

  • 1.29, Аноним (29), 12:50, 05/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    кхм. а скомпилировать из си с использование указанных инструкций?
     
     
  • 2.32, BeLord (ok), 13:26, 05/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А компилятор смогёт?-))
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру