|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
3 | 3 | import importlib.metadata
|
| 4 | +import os |
4 | 5 |
|
5 | 6 | from diptest.diptest import dipstat, diptest
|
6 | 7 | from diptest.lib import _diptest_core as _diptest
|
7 | 8 | from diptest.lib._diptest_core import _has_openmp_support
|
8 | 9 |
|
| 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 | + |
9 | 28 | __version__ = importlib.metadata.version("diptest")
|
10 | 29 |
|
11 | 30 | __all__ = ["dipstat", "diptest", "_diptest", "_has_openmp_support", "__version__"]
|
0 commit comments