Pull to refresh
234.69
ITSumma
Эксперты в производительности

Intel оптимизировала библиотеку Numpy под AVX-512, ускорив вычисления Python в 14—32 раза

Reading time3 min
Views12K

Расположение векторного регистрового файла (жёлтый) и целочисленного регистрового файла (красный) на процессорах Skylake. Блок векторных регистров AVX-512 зашит в жёлтой области

Компания Intel представила патч к библиотеке Numpy с оптимизациями, которые используют фирменный набор инструкций AVX-512.

Numpy — библиотека с открытым исходным кодом для языка программирования Python c поддержкой многомерных массивов (включая матрицы) и высокоуровневых математических функций. Numpy активно используется сообществом Python для реализации вычислительных алгоритмов — и эту библиотеку можно рассматривать в каком-то смысле как свободную альтернативу Matlab.

В комментариях к патчу в файле doc/release/upcoming_changes/19478.performance.rst написано, что векторизация модуля umath с использованием AVX-512 означает применение библиотеки Intel Short Vector Math Library (SVML) для векторизации 18 функций umath (exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh) как одинарной, так и двойной точности.

«В настоящее время это изменение включено только для пользователей Linux и на процессорах с набором инструкций AVX-512. Оно обеспечивает среднее ускорение в 32x и 14x для функций одинарной и двойной точности соответственно», — сказано в комментарии.



На самом деле первоначальный код AVX-512 для Numpy компания Intel выложила ещё летом. На прошлой неделе его, наконец, приняли. Как написано в комментарии выше, он основан на библиотеке Intel Short Vector Math Library (SVML). Судя по всему, основная часть кода взята оттуда. Intel также разрабатывает версию Numpy на базе SVML в качестве отдельного форка.

Первоначальная реализация AVX-512 предлагала оптимизированные версии 44 математических функций — практически всех основных математических функций Numpy, причём в режиме одинарной, так и двойной точности. Однако в финальной версии к слиянию приняли код только для 18 функций, перечисленных выше.

Инженеры Intel проверили и обнаружили, что даже на старых процессорах Intel Skylake X такая оптимизация Numpy даёт ускорение до 55х в отдельных функциях. Среднее ускорение составило 14x для двойной точности и 32x для одинарной.

Cтоль грандиозное ускорение достигается не только благодаря инструкциям AVX-512, но во многом благодаря оптимизированному коду SVML. К сожалению, Intel не открывает полностью исходный код этой библиотеки, иначе его бы уже давно добавили в Numpy.

Справка. Набор инструкций AVX-512 расширяет систему команд AVX до векторов длиной 512 бит при помощи кодировки с префиксом EVEX. Расширение AVX-512 вводит 32 векторных регистра (ZMM), каждый по 512 бит, 8 регистров масок, 512-разрядные упакованные форматы для целых и дробных чисел и операции над ними, тонкое управление режимами округления (позволяет переопределить глобальные настройки), операции broadcast (рассылка информации из одного элемента регистра в другие), подавление ошибок в операциях с дробными числами, операции gather/scatter (сборка и рассылка элементов векторного регистра в/из нескольких адресов памяти), быстрые математические операции, компактное кодирование больших смещений.

Блок AVX-512 реализован в следующих процессорах: Intel Xeon Phi x200 и x205 (в сопроцессорах Knights Landing и Knights Mill), а также в семействах Skylake-SP, Skylake-X, Cannon Lake, Cascade Lake, Cooper Lake, Ice Lake, Rocket Lake, Tiger Lake, Sapphire Rapids.

Любопытно, что Intel убрала блок инструкций AVX-512 из новых процессоров 12-го поколения Alder Lake. Возможно потому, что он занимает очень много места на микросхеме (см. фотографию вверху). А вот компания AMD, наоборот, по слухам, собирается добавить блок AVX-512 в будущие процессоры Zen 4. Вероятно, более продвинутый техпроцесс с уменьшенным размером узлов позволяет это сделать.

Так что нынешний коммит Intel в библиотеку Numpy — это своеобразный подарок AMD на будущее.
Tags:
Hubs:
Total votes 39: ↑39 and ↓0+39
Comments12

Other news

Information

Website
www.itsumma.ru
Registered
Founded
Employees
101–200 employees
Location
Россия
Representative
ITSumma