Как стать автором
Обновить

Комментарии 12

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

Не могу согласиться, что sin и cos редко используются, тем более в математической библиотеке. Даже больше скажу, в моём текущем проекте по результатам профилирования большую часть времени как раз занимает формирование вектора комплексной экспоненты, даже с учётом реализации с помощью Intel-овской библиотеки IPP.

Троттлинг всего процессора был в первом поколении с AVX512 (Skylake?) и это было действительно неприятно. Сейчас, вроде, они это поведение исправили и снижают частоту только у ядра, на котором используются эти инстукции.

Мне кажется, что интеграция и освоение этого набора инструкций задерживается из-за долгой реализации только в серверных CPU.

Мне кажется что у Вас что-то довольно узкоспецифическое, не могу пока представить где нужно такое количество синусов и косинусов считать чтобы это было критично для быстродействия.

Сейчас Intel вообще принципиально убрала поддержку AVX-512 из будущих Alder Lake :(

В любой цифровой обработке сигналов нужна комплексная экспонента, а если её делать в реальном времени — оно становится критичным для быстродействия.

Да, это я тоже видел, очень и очень жаль, хотя с микроэлектронной точки зрения скорее всего смогли обосновать избыточным потреблением площади кристалла.

Для FFT это просто не нужно, для FIR / IIR один раз рассчитывается ядро которое потом применяется много раз уже без вычислений синусов. Или я что-то упускаю из вида?

У Alder Lake проблема в том что они ее гибридной сделали, с несколькими большими ядрами и несколькими маленькими. В маленькие ядра AVX-512 не лезло, а поствить его поддержку только в большие — обеспечить эпическую головную боль для разработчиков которым пришлось бы как-то заранее проверять использует ли поток/приложение AVX-512 и если использует — то следить чтобы этот поток/все потоки приложения запускались только на «больших» ядрах.

Перенос спектра сигнала (цифровой гетеродин) реализуется именно умножением на экспоненту. Можно сделать через NCO и таблицу, но по бенчмаркам на x86 этот подход не даёт сильного выигрыша относительно полноценной реализации на IPP.

Да, это отличный пример

Как я понимаю, речь идёт об ускорении функций, для которых нет аппаратной реализации.


А вопросы у меня следующие:


  1. Правильно ли я понимаю, что в numpy вообще не использовались векторные вычисления для этих функций? Тогда подобное ускорение неудивительно.


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



К слову, посмотреть эти реализации можно тут:
https://github.com/numpy/SVML/tree/main/linux/avx512

Также мне интересно, почему Intel решила обидеть тех, у кого есть только обычный AVX?
Очевидно, чтобы пользователи AMD не получили ускорения.

Это тем более звучит странно, потому что в Zen4 AVX-512 будет.

Может, PR сделали раньше, чем появилась эта информация.
Любопытно, что Intel убрала блок инструкций AVX-512 из новых процессоров 12-го поколения Alder Lake. Возможно потому, что он занимает очень много места на микросхеме
Или они таки прислушались к мнению Линуса. :-)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий