Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so
Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so
我是 运行 一个 python 脚本,我得到了这个错误:
Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.
这两个文件都存在于 anaconda2/lib 目录中。我该如何解决这个错误?谢谢。
如果您使用 conda,请尝试使用这两个命令:
conda install nomkl numpy scipy scikit-learn numexpr
conda remove mkl mkl-service
它应该可以解决您的问题。
只是想注意默认情况下启用 mkl 的 Anaconda 4.0.0 存在此问题。
问题确实出在 Anaconda 上,因为它可以通过下面的简单 python 测试重现。
实际问题是 Anaconda 与 mkl 链接,但未与 libmkl_core.so 链接,因此它缺少符号,可以通过 运行:
看到
$ 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,因为我想提高性能,所以我找到了一个对我有用的解决方法 - 在执行前预加载 libmkl_core.so。
$ 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'
$
我运行在安装anaconda3(版本4.2.0)后遇到这个问题。对我来说修复很简单,我可以继续使用 mkl。只需更新到最新的 numpy 版本。
conda update numpy
想补充 Valilutzik 和 Zaikun Xu 的帖子。我还没有足够的积分,无法添加评论。
conda install nomkl numpy scipy scikit-learn numexpr
无需删除 mkl 和 mkl-service 即可为我工作。
如果 nomkl
会变慢,则添加 Lee 问题的答案:
mkl 是英特尔数学内核库,针对英特尔 CPU 进行了手动优化。 nomkl 根据这个使用 OpenBlas:https://docs.continuum.io/mkl-optimizations/
似乎 mkl 在英特尔 cpus 的许多矩阵运算上要快得多(参见 https://software.intel.com/en-us/articles/performance-comparison-of-openblas-and-intel-math-kernel-library-in-r)
我看到有人说 nomkl 对于 AMD cpus 更快(可能是因为 mkl 在 AMD 中不能正常工作?)
上面提供的所有解决方案都不适合我,但我找到了一个很好的折衷方案:
对于有同样错误并希望将 Anaconda 保留在他的计算机上并且 steel 使用 mkl 以获得(numpy 和 scipy)良好进程性能的人,我建议的解决方案:
编辑您的 .bashrc
文件。
在文件中查找类似 export PATH="/home/anaconda2/bin:$PATH"
的内容。
在开头加上一个#
,以便从脚本中对其进行注释:
#export PATH="/home/anaconda2/bin:$PATH"
打开一个新的终端,你应该运行基础python安装。
对我有用,希望对你有帮助。
遇到同样的问题,使用命令解决:
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。但我能够找到基于 this thread: Adding 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
to my ~/.bashrc
causes the problem to disappear. It's super hacky, and I'd be lying if I said I knew exactly what it's doing (but this is helpful) 的解决方法,所以我希望重新编译 numpy 是一个更清晰的修复。但至少它有效。
请注意,使用 mkl 的这些软件包的版本在性能方面会更好。安装 nomkl 版本是一种解决方法,但不是真正的解决方案。
万一有人遇到类似的问题并得到无法找到libmkl_p4m.so或libmkl_p4.so的错误(这发生在我调用某些 numpy 函数时),我尝试重新安装/更新不同的 python 模块并恢复/更新到各种版本的 Anaconda,但都没有用。
但是我发现完全卸载 anaconda 并重新安装它(到版本 4.4.10)解决了这个问题。
以下对我有用
conda install -f numpy
None 以上答案对我有用。就我而言,@Nehal J Wani
在 OP 问题下方的评论导致了解决方案:如 linked Intel support document 中所述,单个动态库可用于 link 到 MKL.
编辑项目的 Makefile 以替换以下库后
-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
和
-lmkl_rt
并重新构建,错误消失。
尝试 export LD_DEBUG=libs
并再次执行您的程序。
它会告诉您哪个 .so
导致了问题。
然后你可以做点什么,例如升级包。
对我来说,我发现升级 numexpr
很有用,因为它会在错误之前打印以下消息:
calling init: xxxxx/python3.6/site-packages/numexpr/interpreter.cpython-36m-x86_64-linux-gnu.so
也有可能您 运行 Python 在一个不存在的文件夹中。
解决办法就是转到另一个文件夹。
看到这个问题:sh: 0: getcwd() failed: No such file or directory on cited drive
对我来说,降级 mkl 解决了它:
conda install mkl=2021.2.0
(Ubuntu 21.04, Python 3.8)
通过重新安装解决:
pip 安装 tensorflow
我是 运行 一个 python 脚本,我得到了这个错误:
Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.
这两个文件都存在于 anaconda2/lib 目录中。我该如何解决这个错误?谢谢。
如果您使用 conda,请尝试使用这两个命令:
conda install nomkl numpy scipy scikit-learn numexpr
conda remove mkl mkl-service
它应该可以解决您的问题。
只是想注意默认情况下启用 mkl 的 Anaconda 4.0.0 存在此问题。 问题确实出在 Anaconda 上,因为它可以通过下面的简单 python 测试重现。
实际问题是 Anaconda 与 mkl 链接,但未与 libmkl_core.so 链接,因此它缺少符号,可以通过 运行:
看到$ 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,因为我想提高性能,所以我找到了一个对我有用的解决方法 - 在执行前预加载 libmkl_core.so。
$ 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'
$
我运行在安装anaconda3(版本4.2.0)后遇到这个问题。对我来说修复很简单,我可以继续使用 mkl。只需更新到最新的 numpy 版本。
conda update numpy
想补充 Valilutzik 和 Zaikun Xu 的帖子。我还没有足够的积分,无法添加评论。
conda install nomkl numpy scipy scikit-learn numexpr
无需删除 mkl 和 mkl-service 即可为我工作。
如果 nomkl
会变慢,则添加 Lee 问题的答案:
mkl 是英特尔数学内核库,针对英特尔 CPU 进行了手动优化。 nomkl 根据这个使用 OpenBlas:https://docs.continuum.io/mkl-optimizations/
似乎 mkl 在英特尔 cpus 的许多矩阵运算上要快得多(参见 https://software.intel.com/en-us/articles/performance-comparison-of-openblas-and-intel-math-kernel-library-in-r)
我看到有人说 nomkl 对于 AMD cpus 更快(可能是因为 mkl 在 AMD 中不能正常工作?)
上面提供的所有解决方案都不适合我,但我找到了一个很好的折衷方案:
对于有同样错误并希望将 Anaconda 保留在他的计算机上并且 steel 使用 mkl 以获得(numpy 和 scipy)良好进程性能的人,我建议的解决方案:
编辑您的 .bashrc
文件。
在文件中查找类似 export PATH="/home/anaconda2/bin:$PATH"
的内容。
在开头加上一个#
,以便从脚本中对其进行注释:
#export PATH="/home/anaconda2/bin:$PATH"
打开一个新的终端,你应该运行基础python安装。
对我有用,希望对你有帮助。
遇到同样的问题,使用命令解决:
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。但我能够找到基于 this thread: Adding 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
to my ~/.bashrc
causes the problem to disappear. It's super hacky, and I'd be lying if I said I knew exactly what it's doing (but this is helpful) 的解决方法,所以我希望重新编译 numpy 是一个更清晰的修复。但至少它有效。
请注意,使用 mkl 的这些软件包的版本在性能方面会更好。安装 nomkl 版本是一种解决方法,但不是真正的解决方案。
万一有人遇到类似的问题并得到无法找到libmkl_p4m.so或libmkl_p4.so的错误(这发生在我调用某些 numpy 函数时),我尝试重新安装/更新不同的 python 模块并恢复/更新到各种版本的 Anaconda,但都没有用。 但是我发现完全卸载 anaconda 并重新安装它(到版本 4.4.10)解决了这个问题。
以下对我有用
conda install -f numpy
None 以上答案对我有用。就我而言,@Nehal J Wani
在 OP 问题下方的评论导致了解决方案:如 linked Intel support document 中所述,单个动态库可用于 link 到 MKL.
编辑项目的 Makefile 以替换以下库后
-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
和
-lmkl_rt
并重新构建,错误消失。
尝试 export LD_DEBUG=libs
并再次执行您的程序。
它会告诉您哪个 .so
导致了问题。
然后你可以做点什么,例如升级包。
对我来说,我发现升级 numexpr
很有用,因为它会在错误之前打印以下消息:
calling init: xxxxx/python3.6/site-packages/numexpr/interpreter.cpython-36m-x86_64-linux-gnu.so
也有可能您 运行 Python 在一个不存在的文件夹中。
解决办法就是转到另一个文件夹。
看到这个问题:sh: 0: getcwd() failed: No such file or directory on cited drive
对我来说,降级 mkl 解决了它:
conda install mkl=2021.2.0
(Ubuntu 21.04, Python 3.8)
通过重新安装解决: pip 安装 tensorflow