“OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.”解决方法总结

一、问题描述

跑了点神经网络的代码,想画几个激活函数的图像,代码如下:
绘制激活函数图像
运行后报了以下错误:
错误信息
翻译如下:
错误信息翻译
OMP:错误 #15:正在初始化 libiomp5md.dll,但发现 libiomp5md.dll 已经初始化。
OMP:提示 这意味着 OpenMP 运行时的多个副本已链接到程序中。 这很危险,因为它会降低性能或导致不正确的结果。 最好的办法是确保只有一个 OpenMP 运行时链接到进程中,例如 通过避免在任何库中静态链接 OpenMP 运行时。 作为一种不安全、不受支持、未记录的解决方法,您可以设置环境变量 KMP_DUPLICATE_LIB_OK=TRUE 以允许程序继续执行,但这可能会导致崩溃或静默产生不正确的结果。 有关详细信息,请参阅 http://www.intel.com/software/products/support/。

二、原因分析

  1. 将绘图代码注释后不再报错,不知是何原因。
  2. 通过错误信息来看,应该是要初始化一个新的libiomp5md.dll,但libiomp5md.dll已经存在,在anaconda的目录下搜索该文件发现目录下确实有多个该配置文件。但哪个能删哪个有用也说不好,遂于CSDN查找答案。

三、解决方案

1. 情况一:numpy或其他

(1)将numpy降级1
(2)根据第二条提示信息,可以设置环境变量 KMP_DUPLICATE_LIB_OK=TRUE。添加以下代码, 该语句建议放在文件的顶部2,保证前后顺序,不要在这两个语句之间插入其他语句。

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

但“治标不治本”,每个文件都要添加,且可能对某些情况是暂时可用的,也有可能导致崩溃或者产生错误结果。

2.情况二: 之前无任何下载安装等其他异常操作,但使用时报错。

根据python interpreter的路径,删除其目录下多余的libiomp5md.dll记得备份文件和存储路径),不过可能会造成其他未知的问题。

  • 如果是在Anaconda的base环境下,删除…\anaconda3\Library\bin\libiomp5md.dll(目录中的第二个,第一个是torch下的);
  • 如果是在某个env(例如名为work)下:删除…\Anaconda3\envs\work\Library\bin\libiomp5md.dll
    我的是在Anaconda的base环境下,所以删了第二个
  • 删除文件需要谨慎

三个文件重复

3.情况三:使用matplotlib导致

(1)可能是该库被影响了,那么可以尝试一下conda install nomkl 对该包进行安装,但这种方式似乎只适用于Max OS,我用不了。
nomkl的错误信息
(2)如果Python是基本于Conda安装的,则Conda上的numpy包中的mkl很容易与系统内库发生冲突,可选择update numpy package in Conda或者设置为系统库3(但只是针对macOS用户,其他用户则需自行找出冲突包并选择其中之一)。

四、参考资料


  1. OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialize问题解决 ↩︎

  2. 总结该问题解决方案:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized ↩︎

  3. Lightgbm运行 OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialize ↩︎

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年3月5日 下午12:57
下一篇 2023年3月5日 下午12:58

相关推荐