Ошибка Интел МКЛ фатальная ошибка: не может libmkl нагрузки поддержкой AVX2.так или libmkl деф.так

Я запускаю скрипт python, и я получаю эту ошибку:

Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

оба файла присутствуют в каталоге anaconda2/lib. Как исправить эту ошибку? Спасибо.

8 ответов


Если вы используете conda, попробуйте использовать эти две команды:

conda install nomkl numpy scipy scikit-learn numexpr
conda remove mkl mkl-service

это должно решить вашу проблему.


я столкнулся с этой проблемой после установки anaconda3 (версия 4.2.0). Исправление для меня было простым, и я смог продолжать использовать mkl. Просто обновите до последней версии numpy.

conda update numpy

просто хотел отметить, что Anaconda 4.0.0, поставляемый с включенным mkl по умолчанию, имеет эту проблему. Проблема действительно в Anaconda, так как она может быть воспроизведена с помощью простого теста python ниже.

фактическая проблема заключается в том, что Anaconda связана с mkl, но не с libmkl_core.Итак, таким образом, он имеет отсутствующий символ, и его можно увидеть, запустив:

$ LD_DEBUG=symbols python -c 'import sklearn.linear_model.tests.test_randomized_l1' 2>&1 | grep -i error
      2200:     /opt/anaconda/lib/python2.7/site-packages/scipy/special/../../../../libmkl_avx.so: error: symbol lookup error: undefined symbol: mkl_dft_fft_fix_twiddle_table_32f (fatal)

Я не хотел удалять mkl, так как я хотел бы повысить производительность, поэтому я нашел обходной путь, который работал для me-предварительная загрузка libmkl_core.так что перед казнью.

$ python -c 'import sklearn.linear_model.tests.test_randomized_l1'
Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so.
$
$ LD_PRELOAD=/opt/anaconda/lib/libmkl_core.so python -c 'import sklearn.linear_model.tests.test_randomized_l1'
$

получил ту же проблему и решил с помощью команды:

conda install nomkl

Я получил решение из этого обсуждения https://github.com/BVLC/caffe/issues/3884


у меня была такая же проблема с использованием scikit-learn 0.19 и numpy 1.13.3 при запуске MLPRegressor (а также с пакетом pyearth, выполняющим алгоритм под названием MARS). Я считаю, что корень проблемы в том, что наш python является частью установки Anaconda, но scikit-learn и numpy были установлены через pip, и их ожидания для mkl не должны совпадать.

к сожалению, моя структура управляется некоторыми преданными администраторами компании, а не мной, поэтому я не получил своего парня, чтобы попробовать перекомпиляции библиотеки numpy еще. Но я смог найти обходной путь, основанный на этой теме добавление export LD_PRELOAD=/path/to/anaconda/lib/libmkl_def.so:/path/to/anaconda/lib/libmkl_avx.so:/path/to/anaconda/lib/libmkl_core.so:/path/to/anaconda/lib/libmkl_intel_lp64.so:/path/to/anaconda/lib/libmkl_intel_thread.so:/path/to/anaconda/lib/libiomp5.so мой ~/.bashrc вызывает исчезновение проблемы. Это супер хаки, и я бы солгал, если бы сказал, что точно знаю, что он делает (но это полезно), поэтому я надеюсь, что перекомпиляция numpy является более чистым исправлением. Но по крайней мере это работает.

обратите внимание, что лучше иметь версии этих пакетов, которые используют mkl. Установка nomkl версий обходной путь, но не истинное решение.


хотел добавить нить Valilutzik и Zaikun Xu. Я не могу добавлять комментарии, так как у меня еще недостаточно очков.
conda install nomkl numpy scipy scikit-learn numexpr работал для меня, не удаляя mkl и mkl-service.

добавление ответа на вопрос Ли, Если nomkl будет медленнее: mkl-это библиотека ядра Intel math и оптимизирована вручную для процессоров intel. nomkl использует OpenBlas в соответствии с этим:https://docs.continuum.io/mkl-optimizations/ Кажется, что mkl довольно быстрее на многих матричные операции для процессоров intel (см. https://software.intel.com/en-us/articles/performance-comparison-of-openblas-and-intel-math-kernel-library-in-r)
Я видел, как кто-то говорил, что nomkl быстрее для процессоров AMD (может быть, потому, что mkl не работает правильно в AMD?)


все решения, представленные выше, не сработали для меня, но я нашел хороший компромисс:

для тех, кто имеет ту же ошибку и хочет сохранить Anaconda на своем компьютере, а сталь использовать mkl для (numpy и scipy) хорошей производительности процесса, решение, которое я предлагаю:

редактировать .

искать что-то вроде export PATH="/home/anaconda2/bin:$PATH" в файле.

поставить # в начале прокомментировать его из скрипта: #export PATH="/home/anaconda2/bin:$PATH"

открыть новый терминал, и вы должны запустить базовую установку python.

это сработало для меня, надеюсь, это будет полезно.


в случае, если у кого есть как проблема и получает ошибки, которые libmkl_p4m.так или libmkl_p4.так что не удается найти (это произошло для меня при вызове определенных функций numpy), я попытался переустановить / обновить различные модули python и вернуть / обновить до различных версий Anaconda, и ни один не работал. Однако я обнаружил, что полностью удалить anaconda и переустановить его (до версии 4.4.10) решил проблему.