60 votes

Intel MKL FATAL ERROR : Impossible de charger libmkl_avx2.so ou libmkl_def.so

J'exécute un script de python et j'obtiens cette erreur :

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

Les deux fichiers sont présents dans le répertoire anaconda2/lib. Comment puis-je corriger cette erreur ? Merci.

0 votes

1 votes

FYI - J'ai également eu cette erreur, mais elle se produisait dans un environnement Conda lorsque je lançais n'importe quelle commande, même les commandes ls ou git. D'une manière ou d'une autre, le répertoire dans lequel je me trouvais a été considéré comme supprimé après un checkout git où il existait encore ( ?), et j'ai résolu le problème en sortant du répertoire et en y retournant.

0 votes

@Starman merci ! J'ai résolu le problème en sortant du répertoire et en y revenant. C'est bizarre !

121voto

Zaikun Xu Points 954

Si vous utilisez conda, essayez avec ces deux commandes :

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

Cela devrait régler votre problème.

10 votes

Le site nomkl seront plus lentes ?

14 votes

Comment avez-vous su cela ? Vous êtes un génie, mon Dieu.

10 votes

Ridiculement obscure et utile.

34voto

Drew Swartz Points 271

J'ai rencontré ce problème après avoir installé anaconda3 (version 4.2.0). La solution pour moi était simple, et j'ai pu continuer à utiliser mkl. Il suffit de mettre à jour la dernière version de numpy.

conda update numpy

0 votes

A travaillé avec anaconda2 (conda version 4.3.16) également.

0 votes

Succès de anaconda2 version 4.3.14. Voir aussi ici github.com/ContinuumIO/anaconda-issues/issues/720 pour obtenir des informations sur ce correctif : essayez de réinstaller numpy avec conda install -f numpy avant de retirer mkl.

1 votes

Juste conda install -f numpy a fonctionné pour moi (sans avoir à supprimer mkl)

16voto

yanir Points 121

Je voulais juste signaler qu'Anaconda 4.0.0, livré avec mkl activé par défaut, a ce problème. Le problème est effectivement avec Anaconda, comme il peut être reproduit avec le simple test python ci-dessous.

Le problème réel est qu'Anaconda a lié avec mkl, mais pas avec libmkl_core.so, donc il a un symbole manquant, et peut être vu en exécutant :

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

Je ne voulais pas désinstaller mkl, car j'aimerais bénéficier de l'augmentation des performances, alors j'ai trouvé une solution de contournement qui a fonctionné pour moi - précharger libmkl_core.so avant l'exécution.

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

0 votes

La très bonne explication de la cause, et la solution ont du sens, car MKL est un compilateur natif d'Intel, et bien connu pour avoir de meilleures performances que GCC. Oui, la désinstallation m'a donné plus de problèmes.

4 votes

Merci pour cela - cela a fonctionné pour moi une fois que j'ai ajouté une deuxième bibliothèque : LD_PRELOAD=$CONDA_PREFIX/lib/libmkl_core.so:$CONDA_PREFIX/li‌​b/libmkl_sequential.‌​so python ... .

0 votes

Merci. Cela a fonctionné pour moi. C'est tellement plus facile que de naviguer dans les dépendances des paquets de Conda...

6voto

pvlkmrv Points 247

J'ai eu ce même problème en utilisant scikit-learn 0.19 et numpy 1.13.3 lors de l'exécution de MLPRegressor (et aussi avec un paquet appelé pyearth exécutant un algorithme appelé MARS). Je pense que la racine du problème était que notre python fait partie d'une installation Anaconda, mais scikit-learn et numpy ont été installés via pip, et leurs attentes pour mkl ne doivent pas correspondre.

Malheureusement, mon cadre est géré par des administrateurs de l'entreprise, pas par moi, et je n'ai donc pas encore demandé à mes collaborateurs d'essayer de recompiler numpy. Mais j'ai pu trouver une solution de contournement basée sur ce fil : Ajout de 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 à mon ~/.bashrc fait disparaître le problème. C'est très compliqué, et je mentirais si je disais que je sais exactement ce que ça fait ( mais ceci est utile ), donc j'espère qu'une recompilation de numpy sera une solution plus propre. Mais au moins, ça marche.

Notez qu'il est plus performant d'avoir les versions de ces paquets qui utilisent mkl. Installer les versions nomkl est une solution de contournement mais pas une vraie solution.

5voto

Masud Points 41

J'ai eu le même problème et je l'ai résolu en utilisant la commande :

conda install nomkl

J'ai trouvé la solution dans cette discussion https://github.com/BVLC/caffe/issues/3884

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X