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.
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.
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.
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'
$
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.
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/lib/libmkl_sequential.so python ...
.
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.
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 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.
0 votes
software.intel.com/en-us/articles/
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 !