Комментарии 12
Не могу согласиться, что sin и cos редко используются, тем более в математической библиотеке. Даже больше скажу, в моём текущем проекте по результатам профилирования большую часть времени как раз занимает формирование вектора комплексной экспоненты, даже с учётом реализации с помощью Intel-овской библиотеки IPP.
Троттлинг всего процессора был в первом поколении с AVX512 (Skylake?) и это было действительно неприятно. Сейчас, вроде, они это поведение исправили и снижают частоту только у ядра, на котором используются эти инстукции.
Мне кажется, что интеграция и освоение этого набора инструкций задерживается из-за долгой реализации только в серверных CPU.
Сейчас Intel вообще принципиально убрала поддержку AVX-512 из будущих Alder Lake :(
В любой цифровой обработке сигналов нужна комплексная экспонента, а если её делать в реальном времени — оно становится критичным для быстродействия.
Да, это я тоже видел, очень и очень жаль, хотя с микроэлектронной точки зрения скорее всего смогли обосновать избыточным потреблением площади кристалла.
У Alder Lake проблема в том что они ее гибридной сделали, с несколькими большими ядрами и несколькими маленькими. В маленькие ядра AVX-512 не лезло, а поствить его поддержку только в большие — обеспечить эпическую головную боль для разработчиков которым пришлось бы как-то заранее проверять использует ли поток/приложение AVX-512 и если использует — то следить чтобы этот поток/все потоки приложения запускались только на «больших» ядрах.
Как я понимаю, речь идёт об ускорении функций, для которых нет аппаратной реализации.
А вопросы у меня следующие:
Правильно ли я понимаю, что в numpy вообще не использовались векторные вычисления для этих функций? Тогда подобное ускорение неудивительно.
Также мне интересно, почему Intel решила обидеть тех, у кого есть только обычный AVX? Ведь принципиально реализации для AVX и AVX-512 ничего не отличаются, а выигрыш все равно будет огромный.
К слову, посмотреть эти реализации можно тут:
https://github.com/numpy/SVML/tree/main/linux/avx512
Intel оптимизировала библиотеку Numpy под AVX-512, ускорив вычисления Python в 14—32 раза