您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-20
后台-插件-广告管理-内容页头部广告(手机)

一、问题描述

跑了点神经网络的代码,想画几个激活函数的图像,代码如下:
绘制激活函数图像
运行后报了以下错误:
错误信息
翻译如下:
错误信息翻译
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'
  • 1
  • 2

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

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 ↩︎

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索