> > > > В приложениях с использованием Intel MKL результаты AMD CPU часто выглядят заниженными

В приложениях с использованием Intel MKL результаты AMD CPU часто выглядят заниженными

Опубликовано:

intelСо вчерашнего дня горячо обсуждается тема, что приложения, использующие библиотеки Intel Math Kernel Library (MKL), "подтормаживают" на других процессорах. Здесь в сторону Intel вновь звучат обвинения, в том числе и по той причине, что Intel рекомендует тестерам выполнять бенчмарки с использованием соответствующих версий ПО.

В частности, результаты видны по Matlab. У диспетчера CPU явно наблюдаются проблемы, поскольку только с процессором Intel задействуются все доступные инструкции. Если процессор Intel отсутствует, то работают только SSE1, несмотря на поддержку инструкций SSE3, SSE4 или AVX1/2 на CPU. Поддерживает процессор любые из упомянутых более свежих наборов инструкций или нет - роли не играет. Например, у процессоров Ryzen на основе ядер Zen 2 есть поддержка AVX2.

Впрочем, подобные ограничения встречались и раньше. "Дискриминация" процессоров не-Intel наблюдалась в программах Matlab, NumPy и SymPy. Соответствующие процедуры в MKL или приложениях приводили к падению результатов AMD.

Причем никто не мешает Matlab или MKL задействовать свежие наборы инструкций и на процессорах AMD. В посте Reddit содержится соответствующее руководство. И приведены результаты сравнительных тестов некоторых операций Matlab на библиотеках MKL с оптимизацией и без таковой. Еще одна ветка Reddit содержит дополнительные результаты.

Итог очевиден: прирост от использования AVX2 составляет от 17 до 258%. Его можно назвать весьма существенным. Поэтому тесты на данных бенчмарках смысла не имеют, поскольку не задействуют полный потенциал CPU. Лишь недавно Intel подвергли критике за использование предположительно неоптимизированного софта в сравнительных тестах HPC. Впрочем, AMD тоже не безгрешна. Во время предварительной демонстрации новых процессоров EPYC были проведены несколько тестов NAMD (Nanoscale Molecular Dynamics Program). Там на процессорах Intel запускалась версия, не использующая инструкции AVX 512, то есть не оптимизированная под процессоры Xeon.

Причем изменения, которые необходимо внести в Matlab для использования AVX2, это всего несколько строчек кода. Что можно сделать за считанные минуты. Кроме руководства под Windows есть и инструкция для пользователей Linux. По поводу отсутствия оптимизаций сейчас идут горячие споры.

Подписывайтесь на группы Hardwareluxx ВКонтакте и Facebook, а также на наш канал в Telegram (@hardwareluxxrussia).