错误#15:初始化libiomp5.dylib,但发现libiomp5.dylib已经初始化

gca*_*rgo 20 python macos matplotlib

使用matplotlib时收到错误消息:

错误#15:初始化libiomp5.dylib,但发现libiomp5.dylib已初始化OMP:提示:这意味着OpenMP运行时的多个副本已链接到程序中.这很危险,因为它会降低性能或导致错误的结果.最好的办法是确保只有一个OpenMP运行时链接到进程中,例如通过避免在任何库中静态链接OpenMP运行时.作为不安全,不受支持,未记录的变通方法,您可以将环境变量KMP_DUPLICATE_LIB_OK = TRUE设置为允许程序继续执行,但这可能会导致崩溃或无声地产生不正确的结果.有关详细信息,请访问 http://www.intel.com/software/products/support/.

gca*_*rgo 34

这似乎是一个MacOS问题.执行以下操作以解决问题:

import os

os.environ['KMP_DUPLICATE_LIB_OK']='True'
Run Code Online (Sandbox Code Playgroud)

答案发现于:https://github.com/dmlc/xgboost/issues/1715

  • 有没有证据表明在MacOS上这样做会以某种方式避免"默默地产生不正确的结果",因为OpenMP开发意味着可能会这样做? (10认同)
  • 这与其说是一种解决方案,不如说是一种解决方法,并且可能会导致严重的问题。Tensorflow 的 conda 版本在 macOS 上已损坏。将其删除并直接使用 pip install tensorflow 重新安装。 (3认同)
  • 绝对不是与 Mac 隔离......我在我的 Windows 10 机器上经历过这种情况。 (3认同)

J.E*_*E.K 33

我在 macOS 上遇到了同样的问题,并发现以下原因:

问题:

我有一个安装了 Numpy、SciPy 和 TensorFlow 的 conda 环境。

Conda 正在使用 Intel(R) MKL 优化,请参阅文档

Anaconda 已将一些最流行的数值/科学 Python 库的 MKL 驱动的二进制版本打包到 MKL 优化中,以提高性能。

英特尔 MKL 函数(例如 FFT、LAPACK、BLAS)采用 OpenMP 技术进行线程化。

但是在 macOS 上你不需要 MKL,因为 Accelerate Framework 自带优化算法并且已经使用 OpenMP。这就是错误消息的原因:OMP Error #15: ...

解决方法

您应该安装所有没有 MKL 支持的软件包:

conda install nomkl

然后使用

conda install numpy scipy pandas tensorflow

其次是

conda remove mkl mkl-service

有关更多信息,请参阅conda MKL 优化

  • 如果由于“UnsatisfiableError:以下规范...”而无法安装“nomkl”,则必须先卸载所有这些规范。一个快速解决方案,可卸载所有当前安装的软件包 `conda install --revision 0`。然后继续JEK的回答。 (2认同)
  • 感谢您的回答,这应该是聊天中投票最多的问题,因为它正确解决了问题并且性能不受影响。 (2认同)

kil*_*les 10

对我来说,当我在 numpy 之后导入 pytorch 时就出现了这个问题。按此顺序导入它们解决了我的问题:

import torch
import numpy as np
Run Code Online (Sandbox Code Playgroud)


小智 9

如果适用,这是一个更好的解决方案。否则,gcamargo的解决方案很可能会起作用。但是,它带有警告“可能会导致崩溃或以静默方式产生不正确的结果”

我在Mac上使用numpy,keras和matplotlib的python程序遇到相同的错误。我解决了

conda install nomkl

在以下位置找到答案:https : //github.com/dmlc/xgboost/issues/1715


小智 7

我在安装了 TensorFlow 的 conda 环境中遇到了同样的问题。做完之后

  • pip uninstall tensorflow
  • pip install tensorflow

问题就解决了。

  • 我遇到了同样的问题,但是使用 PyTorch...遵循这个想法解决了我的问题。谢谢。 (4认同)

小智 5

使用 conda 将 tensoflow 更新到 1.13 时,在 OSX 中遇到了同样的问题。

  • 解决方案 1:/gcamargo 可以工作,但每个训练周期慢 3 倍。
  • 解决方案 2:/sjcoding 工作并消除了严重警告,但训练速度也慢了 3 倍。
  • 解决方案 3:恢复的性能是:在新的 conda env 中安装 pip 并使用 pip 安装 tensorflow。使用 conda-forge 也可以,但 tf 的版本很旧。

显然,对于 OSX tensorflow,Anaconda 中新的 Intel-MKL 优化被破坏了。