我如何修复“OMP:Error#15:初始化libiomp5.dylib,但发现已经初始化了libomp.dylib”的错误?

3

当我在控制台中运行Python 3.6 Jupyter笔记本时,出现以下错误:

OMP:错误#15:正在初始化libiomp5.dylib,但已发现已经初始化了libomp.dylib。

OMP:提示 这意味着将多个OpenMP运行时副本链接到程序中。这是很危险的,因为它可能会降低性能或导致不正确的结果。最好的方法是确保只有一个OpenMP运行时链接到进程中,例如通过避免在任何库中静态链接OpenMP运行时。作为不安全、不受支持和未经记录的解决方法,您可以设置环境变量KMP_DUPLICATE_LIB_OK=TRUE,以允许程序继续执行,但这可能会导致崩溃或悄悄地产生不正确的结果。有关更多信息,请参见http://www.intel.com/software/products/support/

我有几个不同版本的ligomp

(µ_env) jespinozlt-osx:lib jespinoz$ pwd
/Users/jespinoz/anaconda/envs/µ_env/lib
(µ_env) jespinozlt-osx:lib jespinoz$ ls -lhtr | grep "omp"
-rw-rw-r--    4 jespinoz  tigr   165B Oct 28  2016 libgomp.spec
-rw-rw-r--    4 jespinoz  tigr   108K Oct 28  2016 libgomp.a
-rwxrwxr-x   11 jespinoz  tigr    62K Oct 28  2016 libgomp.1.dylib
-rwxrwxr-x    6 jespinoz  tigr   489K Oct 27 17:30 libomp.dylib
-rwxrwxr-x    5 jespinoz  tigr   176K Mar 14 13:10 libiompstubs5.dylib
-rwxrwxr-x    5 jespinoz  tigr   296K Mar 14 13:10 libiomp5_db.dylib
-rwxrwxr-x    5 jespinoz  tigr   2.7M Mar 14 13:10 libiomp5.dylib
lrwxr-xr-x    1 jespinoz  tigr    15B Apr 10 14:51 libgomp.dylib -> libgomp.1.dylib

一个快速的补丁如下:
import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'

我该如何正确修复这个问题?我需要删除整个conda并重新开始吗?

请展示如何在控制台中运行笔记本。您使用了哪些使用OpenMP的库?您是如何安装这些库的? - darthbith
libiomp5是英特尔OpenMP运行时(而非GCC的)。libomp是LLVM OpenMP运行时(实际上与英特尔的相同,它们共享相同的源代码)。因此,看起来您正在使用由LLVM编译的OpenMP代码和由英特尔编译的代码(可能在不同的库中)。您可以通过使这两个库之一成为另一个库的符号链接来解决此问题,或者只是不要打开警告 :-) - Jim Cownie
错误仅在运行“pandas”和“matplotlib”时发生,但也可能是其他原因。特别是,“pd.concat”和“plt.annotate / plt.text”函数。 - O.rka
2个回答

1
我遇到了这个问题,并尝试了一些在https://github.com/dmlc/xgboost/issues/1715上描述的解决方案。
Alex Evers(1ps0于2019年2月16日发表的评论)对我有用。
brew uninstall libiomp clamp-omp  
conda uninstall intel-openmp -n base  
conda install -c intel openmp -n myenv  
conda install nomkl -n myenv

这对我有用,而且不需要覆盖警告。 - Ron I

-1

我从相同的来源https://github.com/dmlc/xgboost/issues/1715找到了解决方案。

这似乎是macOS特定的问题。

对我有效的是在开头添加以下代码行。

import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'

PS. 我在运行Keras神经网络时遇到了这个问题。


请查看我发布的问题的最后一部分。我已经在那里加入了那行代码。 - O.rka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接