Настройка Anaconda для AMD Ryzen без MKL

Как и многие другие, я купил себе новый процессор Ryzen. Мне нужно использовать Anaconda Python для моей докторской степени (вместе с Tensorflow и т. д.). Поскольку Anaconda теперь поставляется с предварительно упакованным MKL, который работает медленно на процессорах AMD, как лучше всего настроить среду Anaconda с openblas и связать numpy и scikit-learn, сохраняя при этом все остальные пакеты одинаковыми?

Я нашел следующие сообщения, которые так или иначе указывают на установку некоторых пакетов.

https://anaconda.org/anaconda/nomkl

https://anaconda.org/anaconda/openblas

Как установить scipy без mkl


person stevew    schedule 17.07.2019    source источник
comment
Я бы предложил использовать канал conda-forge для установки ваших зависимостей. Создайте новую среду с помощью conda create -n name-of-env -c conda-forge scipy <other dependencies>.   -  person darthbith    schedule 17.07.2019
comment
Спасибо за ваш ответ. Похоже, что нет scipy в conda-forge без mkl (см. github.com/conda-forge /numpy-feedstock/issues/153). Итак, я собираюсь попробовать github.com/fo40225/Anaconda-Windows-AMD.   -  person stevew    schedule 18.07.2019
comment
Вы на винде? Из вашего вопроса это было неясно...   -  person darthbith    schedule 18.07.2019
comment
Да, извините, я на Windows 10   -  person stevew    schedule 19.07.2019


Ответы (2)


Этот пост с Reddit содержит гораздо более подробное объяснение того, что происходит, но это всего лишь одна строчка в вашем терминале, чтобы заставить MKL думать, что вы являетесь системой Intel, поскольку MKL делает неприятные вещи с устройствами, отличными от Intel: https://www.reddit.com/r/MachineLearning/comments/f2pbvz/discussion_workaround_for_mkl_on_amd/

ОКНА:

откройте командную строку (CMD) с правами admin и введите:

setx /M MKL_DEBUG_CPU_TYPE 5

Это сделает изменение постоянным и доступным для ВСЕХ программ, использующих MKL в вашей системе, пока вы снова не удалите запись из переменных.

ЛИНУКС:

Просто введите терминал:

export MKL_DEBUG_CPU_TYPE=5 

перед запуском вашего скрипта из того же экземпляра терминала.

Постоянное решение для Linux:

echo 'export MKL_DEBUG_CPU_TYPE=5' >> ~/.profile

применит настройку ко всему профилю.

Некоторые основные моменты, так как я полагаю, что вы можете щелкнуть ссылку, чтобы прочитать все это, если интересно:

«Однако числовая библиотека, которая поставляется со многими вашими пакетами по умолчанию, — это Intel MKL. MKL работает очень медленно на процессорах AMD для некоторых операций. Это связано с тем, что Intel MKL использует различающий диспетчер ЦП, который не использует эффективный кодовый путь в соответствии с для поддержки SIMD ЦП, но на основе результата запроса строки поставщика.Если ЦП от AMD, MKL не использует расширения SSE3-SSE4 или AVX1/2, а возвращается к SSE независимо от того, поддерживает ли ЦП AMD более эффективные расширения SIMD, такие как AVX2 или нет.

Представленный здесь метод обеспечивает поддержку AVX2 в MKL, независимо от результата строки поставщика, и его применение занимает менее минуты. Если у вас есть процессор AMD на базе Zen/Zen+/Zen2 µArch Ryzen/Threadripper, это значительно повысит вашу производительность».

person user2415706    schedule 04.06.2020

В качестве альтернативы отказу от MKL можно просто заставить его работать намного быстрее на процессоре Ryzen, указав MKL использовать более совместимый с Ryzen набор инструкций. При выполнении

conda install mkl -c intel --no-update-deps
set MKL_DEBUG_CPU_TYPE=5

Я видел примерно 15-кратное ускорение с использованием numpy/theano/PyMC3 на моем процессоре Ryzen под Windows 10 по сравнению с начальной установкой miniconda по умолчанию.

person Jonathan Roy    schedule 08.12.2019
comment
Нужно ли запускать установку таким образом (с настройкой параметров) каждый раз, когда вы хотите использовать свою среду Python, или это происходит только один раз, позволяя вашей среде оставаться фиксированной? (извините, если это кажется очевидным, но в настоящее время я пытаюсь создать рабочий стол, похожий на OP, и не хочу быть узким местом с AMD) - person antonio_zeus; 04.05.2020
comment
как это соотносится с текущим выпуском процессора Intel (по той же цене)? есть документальное сравнение? Я собираюсь приобрести новый компьютер, и это соображение мешает моему решению. Я не хочу покупать новый компьютер и в конечном итоге работать медленнее в стране питонов - основная причина покупки ... - person IamSierraCharlie; 28.05.2020
comment
re: @SteveCarter ЦП AMD последних нескольких поколений, как правило, примерно в два раза больше ядер при 70% цены и вдвое меньшем энергопотреблении (читайте счет за электроэнергию). Производительность на ядро ​​более или менее одинакова, а иногда и лучше, проверьте обзоры отдельных процессоров. Кроме того, предполагается, что материнские платы AM4 будут совместимы с новыми процессорами в течение нескольких лет, по сравнению с Intel, заставляющей пользователей приобретать новые процессоры для каждого поколения. Материнские платы могут быть дорогими. - person user2415706; 04.06.2020