Skip to content

Commit add5d4d

Browse files
committed
PKG: Suppress error when two version of OpenMP are loaded
1 parent b855938 commit add5d4d

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/diptest/__init__.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,30 @@
11
from __future__ import annotations
22

33
import importlib.metadata
4+
import os
45

56
from diptest.diptest import dipstat, diptest
67
from diptest.lib import _diptest_core as _diptest
78
from diptest.lib._diptest_core import _has_openmp_support
89

10+
# Setting the following environment variable allows multiple OpenMP
11+
# libraries to be loaded. This is also used without issue by Scikit-learn.
12+
# OpenMP error msg:
13+
# /* OMP: Error #15: Initializing libomp.dylib, but found libomp.dylib already initialized.
14+
# * OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program.
15+
# * That is dangerous, since it can degrade performance or cause incorrect results.
16+
# * The best thing to do is to ensure that only a single OpenMP runtime is linked into the process,
17+
# * e.g. by avoiding static linking of the OpenMP runtime in any library.
18+
# * As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE
19+
# * to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results.
20+
# * For more information, please see http://openmp.llvm.org/
21+
# */
22+
os.environ.setdefault("KMP_DUPLICATE_LIB_OK", "True")
23+
24+
# Workaround issue discovered in intel-openmp 2019.5:
25+
# https://github.com/ContinuumIO/anaconda-issues/issues/11294
26+
os.environ.setdefault("KMP_INIT_AT_FORK", "FALSE")
27+
928
__version__ = importlib.metadata.version("diptest")
1029

1130
__all__ = ["dipstat", "diptest", "_diptest", "_has_openmp_support", "__version__"]

0 commit comments

Comments
 (0)