> > > > Matlab R2020a - дискриминация процессоров AMD закончилась

Matlab R2020a - дискриминация процессоров AMD закончилась

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

matlabВ прошлом году стало известно, что в приложениях, использующих Math Kernel Library (MKL), процессоры AMD Ryzen существенно проигрывают из-за плохой оптимизации. И производительность оказывается ниже ожидаемого уровня. Впрочем, MKL разработана Intel, поэтому оптимизация под собственные CPU чипового гиганта не удивляет.

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

Между тем появилось обходное решение. Увеличение производительности после его применения составило от 17 до 258% (с инструкциями AVX2). Конечно, такой прирост можно назвать весьма существенным. Matlab в новой версии R2020a использует MKL версии 2019.3 (хотя Intel выпустила уже MKL 2019 Update 4). И уже специальная процедура определяет поддерживаемые процессором инструкции с помощью CPU ID и Feature Set, после чего библиотека MKL на процессорах AMD вызывается в режиме Debug Mode с соответствующими активными функциями. Поэтому обходное решение для Matlab R2020a больше не требуется.

От нового решения особенно выигрывают процессоры Ryzen Threadripper, содержащие 32 или даже 64 ядра, поскольку у них есть поддержка AVX2. Так что если у вас имеется процессор AMD, и вы пользуетесь библиотекой MatLab, то следует перейти на R2020a. Проверку использования AVX2 в MatLab можно выполнить с помощью команды "getenv MKL_DEBUG_CPU_TYPE". Если она возвращает значение "5", то все настроено корректно.

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

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