【问题标题】:Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized错误 #15:正在初始化 libiomp5.dylib,但发现 libiomp5.dylib 已经初始化
【发布时间】:2018-10-26 18:20:16
【问题描述】:

使用matplotlib时得到错误信息:

错误 #15:初始化 libiomp5.dylib,但找到 libiomp5.dylib 已经初始化 OMP:提示:这意味着 OpenMP 运行时的多个副本已链接到程序中。这很危险,因为它可以 降低性能或导致不正确的结果。最好的事情 是确保只有一个 OpenMP 运行时链接到 过程,例如通过避免 OpenMP 运行时的任何静态链接 图书馆。作为不安全、不受支持、未记录的解决方法,您可以 设置环境变量 KMP_DUPLICATE_LIB_OK=TRUE 以允许 程序继续执行,但这可能会导致崩溃或静默 产生不正确的结果。欲了解更多信息,请参阅 http://www.intel.com/software/products/support/.

【问题讨论】:

标签: python macos matplotlib


【解决方案1】:

执行以下操作来解决问题:

import os

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

答案在:https://github.com/dmlc/xgboost/issues/1715

注意潜在的副作用:

但这可能会导致崩溃或默默地产生不正确的结果。

【讨论】:

  • 是否有任何证据表明在 MacOS 上执行此操作会以某种方式避免“默默地产生 [ing] 不正确的结果”,正如 OpenMP 开发人员暗示的那样?
  • 这与其说是一种解决方案,不如说是一种变通方法,可能会导致严重的问题。 TensorFlow 的 conda 版本在 macOS 上已损坏。删除后直接用 pip install tensorflow 重新安装。
  • 绝对不是孤立于 Mac... 我在我的 windows 10 机器上体验到了这一点。
【解决方案2】:

如果适用,这是一个更好的解决方案。否则,无论如何 gcamargo 的解决方案可能会奏效。但是,它带有警告“它可能会导致崩溃或默默地产生不正确的结果”

我在 Mac 上使用 numpy、keras 和 matplotlib 的 python 程序时遇到了同样的错误。我用

解决了

conda install nomkl

答案在:https://github.com/dmlc/xgboost/issues/1715

【讨论】:

  • 对我来说效果很好。
  • 为我工作,但不知道为什么。
  • 在 keras 2.2.4 上遇到了同样的问题,这个解决方案有效。谢谢
  • MacOS Catalina 上的干净救星
  • 对我也很好
【解决方案3】:

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

问题:

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

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

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 Optimizations

【讨论】:

  • 如果因为UnsatisfiableError: The following specifications...而无法安装nomkl,则必须先卸载所有这些规范。卸载所有当前安装的软件包conda install --revision 0 的快速解决方案。然后继续 J.E.K 的回答。
  • 这对我很有帮助。在此之前我已经尝试了一切!谢谢!
  • 感谢您的回答,这应该是聊天中投票率最高的问题,因为它可以正确解决问题并且不会影响性能。
  • 这也解决了我对 R 的 spacyr 包的问题。与其让spacyr 创建一个conda 环境并从R 安装spacy,我必须首先在conda 中创建一个新的spacy 环境,然后安装nomkl,然后是spacy,最后指向@ 987654338@ 在那个环境中。
【解决方案4】:

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

  • pip uninstall tensorflow
  • pip install tensorflow

问题消失了。

【讨论】:

  • 我遇到了同样的问题,但是使用 PyTorch ......遵循这个想法解决了我的问题。谢谢。
  • 重新安装 pytorch 并不能解决我的问题
  • 与 pytorch 有同样的问题,但令人惊讶的是卸载和安装 tensorflow 解决了这个问题。
【解决方案5】:

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

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

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

【讨论】:

  • conda remove tensorflowpip install tensorflow 之后,conda install keras 想重新安装 conda 版本的 tensorflow。您是否使用 pip 安装了任何需要 tensorflow 以避免获得 conda 版本的东西?
  • 我在使用 pip 而不是 conda 时得到了这个:"Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA"。它似乎也解决了这个问题。
  • 对我来说,使用 conda-forge 安装 TensorFlow 并不能解决问题
  • 这是正确的答案。 Conda 安装了一个损坏的 tensorflow 版本。只需使用 pip 安装即可。
  • 是的,使用 pip3 uninstall tensorflowpip3 install tensorflow 成功了。
【解决方案6】:

检查您的环境 (anaconda) 中是否有 mkl 包的更新。

我可以通过更新 mkl 来解决我的问题。

conda install -c intel mkl

(macOS Catalina 10.15.5)

【讨论】:

    【解决方案7】:

    所以,对于那些在 lightgbm 上遇到同样问题的人,我在 the documentation 中发现你可以

    1. pip uninstall lightgbm
    2. pip install lightgbm
    3. 在 anaconda environmnet 中运行以下命令(如果您正在运行 Conda)
    ln -sf `ls -d "$(brew --cellar libomp)"/*/lib`/* $CONDA_PREFIX/lib
    

    这三件事对我有用。

    【讨论】:

      【解决方案8】:

      尝试更改matplotlib的后端。

      例如,Tkagg 后端在我的情况下会导致此问题。我改成Qt5Agg

      matplotlib.use('Qt5Agg') 
      

      它有帮助。

      【讨论】:

        【解决方案9】:

        面对相同的错误 #15,尽管有帮助,但迄今为止(2021 年 2 月 5 日)没有一个解决方案完全有效。然而,我确实设法解决了这个问题,同时避免:使用dylib 库进行抖动、从源代码安装或设置环境变量KMP_DUPLICATE_LIB_OK=TRUE 及其作为“不安全、不受支持、未记录的解决方法”的缺点及其潜在的“崩溃或默默地产生错误的结果”。

        问题在于,尽管加载了 nomkl 包,但 conda 并没有选择非 mkl 构建的 tensorflow (v2.0.0)。最终使该解决方案发挥作用的是:

        • 确保我是从defaults 频道加载包(即从具有非 mkl 版本的 tensorflow 的频道。截至 2021 年 2 月 5 日,conda-forge 没有 2.0 的 tensorflow 版本或 更大)。
        • 指定我想要的 tensorflow 版本的精确构建:tensorflow>=2.*=eigen_py37h153756e_0。如果没有这个,conda 会继续加载包的 mkl_... 版本,尽管 nomkl 包也正在加载。

        我使用以下 environment.yml 文件(根据 conda documentation for managing environments)创建了一个 conda 环境:

        name: tf_nomkl
        channels:
          - conda-forge
          - defaults
        dependencies:
          - nomkl
          - python>=3.7
          - numpy
          - scipy
          - pandas
          - jupyter
          - jupyterlab
          - nb_conda
          - nb_conda_kernels
          - ipykernel
          - pathlib
          - matplotlib
          - seaborn
          - tensorflow>=2.*=eigen_py37h153756e_0
        

        你可以尝试在没有 environment.yml 文件的情况下做同样的事情,但如果可以的话,最好一次性在一个环境中加载你想要的所有包。 此解决方案适用于 MacOS Big Sur v11.1。

        【讨论】:

          【解决方案10】:

          conda install --revision 0 无法为我解决 UnsatisfiableError: The following specifications...。所以我在 Anaconda-Navigator 环境中手动安装 nomkl 并删除 mklmil-service,它对我来说非常有用!

          【讨论】:

            【解决方案11】:

            当我在我的 macOS Monterey 上使用 Tensorflow 运行代码时,我遇到了与原始问题中提到的相同的错误。我尝试按照以前的许多答案中的建议安装 nomkl 并删除 mkl 。然而,这给我运行 pandas 的 readcsv 模块和来自不同包的许多其他模块带来了麻烦。一位朋友告诉我,新版本的 macOS 与通常的 Tensorflow 有问题,因此 pypi 推出了一个名为 tf-nightly 的特殊版本的 TF。

            https://pypi.org/project/tf-nightly/#description

            这个安装解决了我的问题。

            【讨论】:

              猜你喜欢
              • 2019-05-07
              • 1970-01-01
              • 1970-01-01
              • 2013-12-31
              • 1970-01-01
              • 2020-12-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多