Thanks for the response @stuartarchibald and for the suggestions!
Perhaps OpenMP used to work and now is does not?
Does numba
automatically log which threading layer was used without explicitly checking numba.threading_layer()
? Given that it might be something changing in the OS level, itās not obvious how we might recover the threading layer that was used in the āworking caseā. See below.
Iām not sure how to go about this. The āworking caseā happened on Github Actions a week ago and now I only have the option to āre-run all jobsā. In doing so, the related tests are now failing even though the code/commit has not changed. I can certainly do numba -s
using that commit but it wonāt tell me what the Python environment+package contents was like in the āworking caseā. It would only tell me what the failing/erroring environment is like. Is numba -s
still going to be useful in this regard? Anyhow, here is the result from the currently failing case:
System info:
--------------------------------------------------------------------------------
__Time Stamp__
Report started (local time) : 2022-11-03 00:26:42.195959
UTC start time : 2022-11-03 00:26:42.195966
Running time (s) : 6.873599
__Hardware Information__
Machine : x86_64
CPU Name : ivybridge
CPU Count : 3
Number of accessible CPUs : ?
List of accessible CPUs cores : ?
CFS Restrictions (CPUs worth of runtime) : None
CPU Features : 64bit aes avx cmov cx16 cx8 f16c
fsgsbase fxsr mmx pclmul popcnt
rdrnd sahf sse sse2 sse3 sse4.1
sse4.2 ssse3 xsave
Memory Total (MB) : 14336
Memory Available (MB) : 11451
__OS Information__
Platform Name : macOS-10.16-x86_64-i386-64bit
Platform Release : 21.6.0
OS Name : Darwin
OS Version : Darwin Kernel Version 21.6.0: Thu Sep 29 20:12:57 PDT 2022; root:xnu-8020.240.7~1/RELEASE_X86_64
OS Specific Version : 10.16 x86_64
Libc Version : ?
__Python Information__
Python Compiler : Clang 12.0.0 (clang-1200.0.32.29)
Python Implementation : CPython
Python Version : 3.9.14
Python Locale : en_US.UTF-8
__Numba Toolchain Versions__
Numba Version : 0.56.3
llvmlite Version : 0.39.1
__LLVM Information__
LLVM Version : 11.1.0
__CUDA Information__
CUDA Device Initialized : False
CUDA Driver Version : ?
CUDA Runtime Version : ?
CUDA NVIDIA Bindings Available : ?
CUDA NVIDIA Bindings In Use : ?
CUDA Detect Output:
None
CUDA Libraries Test Output:
None
__NumPy Information__
NumPy Version : 1.23.4
NumPy Supported SIMD features : ('MMX', 'SSE', 'SSE2', 'SSE3', 'SSSE3', 'SSE41', 'POPCNT', 'SSE42', 'AVX', 'F16C')
NumPy Supported SIMD dispatch : ('SSSE3', 'SSE41', 'POPCNT', 'SSE42', 'AVX', 'F16C', 'FMA3', 'AVX2', 'AVX512F', 'AVX512CD', 'AVX512_KNL', 'AVX512_SKX', 'AVX512_CLX', 'AVX512_CNL', 'AVX512_ICL')
NumPy Supported SIMD baseline : ('SSE', 'SSE2', 'SSE3')
NumPy AVX512_SKX support detected : False
__SVML Information__
SVML State, config.USING_SVML : False
SVML Library Loaded : False
llvmlite Using SVML Patched LLVM : True
SVML Operational : False
__Threading Layer Information__
TBB Threading Layer Available : False
+--> Disabled due to Unknown import problem.
OpenMP Threading Layer Available : False
+--> Disabled due to Unknown import problem.
Workqueue Threading Layer Available : True
+-->Workqueue imported successfully.
__Numba Environment Variable Information__
None found.
__Conda Information__
Conda Build : not installed
Conda Env : 4.12.0
Conda Platform : osx-64
Conda Python Version : 3.9.12.final.0
Conda Root Writable : True
__Installed Packages__
brotlipy 0.7.0 py39h9ed2024_1003
ca-certificates 2022.3.29 hecd8cb5_1
certifi 2021.10.8 py39hecd8cb5_2
cffi 1.15.0 py39hc55c11b_1
charset-normalizer 2.0.4 pyhd3eb1b0_0
colorama 0.4.4 pyhd3eb1b0_0
conda 4.12.0 py39hecd8cb5_0
conda-content-trust 0.1.1 pyhd3eb1b0_0
conda-package-handling 1.8.1 py39hca72f7f_0
cryptography 36.0.0 py39hf6deb26_0
idna 3.3 pyhd3eb1b0_0
libcxx 12.0.0 h2f01273_0
libffi 3.3 hb1e8313_2
ncurses 6.3 hca72f7f_2
openssl 1.1.1n hca72f7f_0
pip 21.2.4 py39hecd8cb5_0
pycosat 0.6.3 py39h9ed2024_0
pycparser 2.21 pyhd3eb1b0_0
pyopenssl 22.0.0 pyhd3eb1b0_0
pysocks 1.7.1 py39hecd8cb5_0
python 3.9.12 hdfd78df_0
python.app 3 py39hca72f7f_0
readline 8.1.2 hca72f7f_1
requests 2.27.1 pyhd3eb1b0_0
ruamel_yaml 0.15.100 py39h9ed2024_0
setuptools 61.2.0 py39hecd8cb5_0
six 1.16.0 pyhd3eb1b0_1
sqlite 3.38.2 h707629a_0
tk 8.6.11 h7bc2e8c_0
tqdm 4.63.0 pyhd3eb1b0_0
tzdata 2022a hda174b7_0
urllib3 1.26.8 pyhd3eb1b0_0
wheel 0.37.1 pyhd3eb1b0_0
xz 5.2.5 h1de35cc_0
yaml 0.2.5 haf1e3a3_0
zlib 1.2.12 h4dc903c_1
No errors reported.
__Warning log__
Warning (cuda): CUDA driver library cannot be found or no CUDA enabled devices are present.
Exception class: <class 'numba.cuda.cudadrv.error.CudaSupportError'>
--------------------------------------------------------------------------------
If requested, please copy and paste the information between
the dashed (----) lines, or from a given specific section as
appropriate.
=============================================================
IMPORTANT: Please ensure that you are happy with sharing the
contents of the information present, any information that you
wish to keep private you should remove before sharing.
=============================================================
I noticed that a lot of the packages that Iāve installed (e.g., numpy, scipy, and even numba) are not in the list of __Installed Packages__
since I used pip install
when setting my my environment in Github Actions.
Additionally, since the parallel function is being āsubmittedā to dask
and we wait for an asynchronous future
result to be returned, which is then processed when complete. So, it isnāt clear how to retrieve the numba.threading_layer()
within the dask
workerās thread(s). Right now, if I try to print the numba.threading_layer
right after the dask.submit
call then I get:
print(numba.threading_layer())
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
def threading_layer():
"""
Get the name of the threading layer in use for parallel CPU targets
"""
if _threading_layer is None:
> raise ValueError("Threading layer is not initialized.")
E ValueError: Threading layer is not initialized.
Iām guessing itās because the threading layer is being handled within dask
and it is opaque to the parent calling function.
Also, I have now isolated the issue to a single unit test. However, that unit test doesnāt fail after it is executed once. Instead, it errors out after calling the same test 501 consecutive times (i.e., it passes the same test 500 times right before failure).