it-swarm.com.de

Intel MKL FATAL ERROR: Libmkl_avx2.so oder libmkl_def.so können nicht geladen werden

Ich führe ein Python-Skript aus und erhalte folgende Fehlermeldung: 

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

Beide Dateien befinden sich im Verzeichnis anaconda2/lib. Wie kann ich diesen Fehler beheben? Vielen Dank. 

46
Chris Parry

Wenn Sie conda verwenden, versuchen Sie es mit diesen beiden Befehlen:

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

Es sollte Ihr Problem beheben.

93
Zaikun Xu

Nach der Installation von anaconda3 (Version 4.2.0) bin ich auf dieses Problem gestoßen. Der Fix für mich war einfach und ich konnte mkl weiter benutzen. Aktualisieren Sie einfach auf die neueste numpy-Version.

conda update numpy
33
Drew Swartz

Ich wollte nur anmerken, dass Anaconda 4.0.0, das standardmäßig mit mkl ausgeliefert wird, dieses Problem aufweist .. Das Problem liegt tatsächlich bei Anaconda, da es mit dem unten beschriebenen einfachen Python-Test reproduziert werden kann.

Das eigentliche Problem ist, dass Anaconda mit mkl verbunden ist, aber nicht mit libmkl_core.so, daher fehlt ein Symbol und es kann durch Ausführen von:

$ 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)

Ich wollte mkl nicht deinstallieren, da ich die Leistung steigern möchte. Daher habe ich eine Problemumgehung gefunden, die für mich funktioniert hat - libmkl_core.so vor der Ausführung laden.

$ 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'
$
13
yanir

Ich habe das gleiche Problem und mit dem Befehl gelöst:

conda install nomkl

Ich habe die Lösung aus dieser Diskussion erhalten https://github.com/BVLC/caffe/issues/3884

4
Masud

Ich hatte das gleiche Problem mit scikit-learn 0.19 und numpy 1.13.3 beim MLPRegressor (und auch mit einem Paket namens pyearth, das einen Algorithmus namens MARS ausführt). Ich glaube, die Wurzel des Problems war, dass unser Python Teil einer Anaconda-Installation ist, aber Scikit-Learn und Numpy wurden über pip installiert, und ihre Erwartungen an mkl müssen nicht übereinstimmen.

Leider wird mein Framework von einigen engagierten Firmenadmins verwaltet, nicht von mir, daher habe ich meinen Mann noch nicht dazu gebracht, numpy neu zu kompilieren. Ich konnte jedoch eine Problemumgehung finden, die auf diesem Thread basiert: Durch das Hinzufügen von 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 zu meinem ~/.bashrc verschwindet das Problem. Es ist super hackig, und ich würde lügen, wenn ich sagen würde, dass ich genau wüsste, was es tut ( aber das ist hilfreich ). Ich hoffe, eine Neukompilierung von Numpy ist eine saubere Lösung. Aber zumindest funktioniert es.

Beachten Sie, dass es besser ist, die Versionen dieser Pakete zu verwenden, die mkl verwenden. Das Installieren der Nomkl-Versionen ist eine Problemumgehung, jedoch keine echte Lösung.

3
Pavel Komarov

Alle oben genannten Lösungen funktionierten nicht für mich, aber ich fand einen guten Kompromiss:

für jemanden, der den gleichen Fehler hat und Anaconda auf seinem Computer behalten möchte, und Steel mkl für (numpy und scipy) gute Prozessleistung verwendet, meine Lösung:

Bearbeiten Sie Ihre .bashrc-Datei.

Suchen Sie nach etwas wie export PATH="/home/anaconda2/bin:$PATH" in der Datei.

Fügen Sie einen # am Anfang ein, um ihn aus dem Skript zu kommentieren: #export PATH="/home/anaconda2/bin:$PATH"

Öffnen Sie ein neues Terminal und Sie sollten die Basis-Python-Installation ausführen.

Es hat für mich funktioniert, hoffe es wird hilfreich sein.

1
Klipiklop

Wollte Valilutzik und Zaikun Xus Thread hinzufügen. Ich kann keine Kommentare hinzufügen, da ich noch nicht genug Punkte habe.
conda install nomkl numpy scipy scikit-learn numexpr hat für mich funktioniert, ohne mkl und mkl-service entfernen zu müssen.

Hinzufügen einer Antwort zu Lees Frage, wenn nomkl langsamer ist: Mkl ist eine Intel-Mathematik-Kernel-Bibliothek und von Hand optimiert für Intel-CPU. nomkl verwendet OpenBlas wie folgt: https://docs.continuum.io/mkl-optimizations/ .__ Es scheint, dass mkl auf vielen Matrixoperationen für Intel-CPU ziemlich viel schneller ist (siehe https: // software.intel.com/de-de/articles/performance-vergleichen-von-openblas-und-intel-math-kernel-library-in-r )
Ich habe jemanden gesehen, der sagt, Nomkl sei schneller für AMD-CPU (vielleicht, weil mkl in AMD nicht richtig funktioniert?)

1
libphy

Falls jemand ein similar - Problem hat und Fehlermeldungen erhalten, dass libmkl_p4m.so oder libmkl_p4.so nicht gefunden werden konnte (dies trat für mich beim Aufruf bestimmter numpy-Funktionen auf), versuchte ich, verschiedene Python-Module und neu zu installieren/zu aktualisieren Wiederherstellen/Aktualisieren auf verschiedene Versionen von Anaconda, und beide haben nicht funktioniert. Allerdings fand ich, dass die vollständige Deinstallation von Anaconda und das erneute Installieren (auf Version 4.4.10) das Problem behoben hat.

0
KamKam