numba-cuda 0.21.1__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- _numba_cuda_redirector.pth +4 -0
- _numba_cuda_redirector.py +89 -0
- numba_cuda/VERSION +1 -0
- numba_cuda/__init__.py +6 -0
- numba_cuda/_version.py +11 -0
- numba_cuda/numba/cuda/__init__.py +70 -0
- numba_cuda/numba/cuda/_internal/cuda_bf16.py +16394 -0
- numba_cuda/numba/cuda/_internal/cuda_fp16.py +8112 -0
- numba_cuda/numba/cuda/api.py +577 -0
- numba_cuda/numba/cuda/api_util.py +76 -0
- numba_cuda/numba/cuda/args.py +72 -0
- numba_cuda/numba/cuda/bf16.py +397 -0
- numba_cuda/numba/cuda/cache_hints.py +287 -0
- numba_cuda/numba/cuda/cext/__init__.py +2 -0
- numba_cuda/numba/cuda/cext/_devicearray.cp313-win_amd64.pyd +0 -0
- numba_cuda/numba/cuda/cext/_devicearray.cpp +159 -0
- numba_cuda/numba/cuda/cext/_devicearray.h +29 -0
- numba_cuda/numba/cuda/cext/_dispatcher.cp313-win_amd64.pyd +0 -0
- numba_cuda/numba/cuda/cext/_dispatcher.cpp +1098 -0
- numba_cuda/numba/cuda/cext/_hashtable.cpp +532 -0
- numba_cuda/numba/cuda/cext/_hashtable.h +135 -0
- numba_cuda/numba/cuda/cext/_helperlib.c +71 -0
- numba_cuda/numba/cuda/cext/_helperlib.cp313-win_amd64.pyd +0 -0
- numba_cuda/numba/cuda/cext/_helpermod.c +82 -0
- numba_cuda/numba/cuda/cext/_pymodule.h +38 -0
- numba_cuda/numba/cuda/cext/_typeconv.cp313-win_amd64.pyd +0 -0
- numba_cuda/numba/cuda/cext/_typeconv.cpp +206 -0
- numba_cuda/numba/cuda/cext/_typeof.cpp +1159 -0
- numba_cuda/numba/cuda/cext/_typeof.h +19 -0
- numba_cuda/numba/cuda/cext/capsulethunk.h +111 -0
- numba_cuda/numba/cuda/cext/mviewbuf.c +385 -0
- numba_cuda/numba/cuda/cext/mviewbuf.cp313-win_amd64.pyd +0 -0
- numba_cuda/numba/cuda/cext/typeconv.cpp +212 -0
- numba_cuda/numba/cuda/cext/typeconv.hpp +101 -0
- numba_cuda/numba/cuda/cg.py +67 -0
- numba_cuda/numba/cuda/cgutils.py +1294 -0
- numba_cuda/numba/cuda/cloudpickle/__init__.py +21 -0
- numba_cuda/numba/cuda/cloudpickle/cloudpickle.py +1598 -0
- numba_cuda/numba/cuda/cloudpickle/cloudpickle_fast.py +17 -0
- numba_cuda/numba/cuda/codegen.py +541 -0
- numba_cuda/numba/cuda/compiler.py +1396 -0
- numba_cuda/numba/cuda/core/analysis.py +758 -0
- numba_cuda/numba/cuda/core/annotations/__init__.py +0 -0
- numba_cuda/numba/cuda/core/annotations/pretty_annotate.py +288 -0
- numba_cuda/numba/cuda/core/annotations/type_annotations.py +305 -0
- numba_cuda/numba/cuda/core/base.py +1332 -0
- numba_cuda/numba/cuda/core/boxing.py +1411 -0
- numba_cuda/numba/cuda/core/bytecode.py +728 -0
- numba_cuda/numba/cuda/core/byteflow.py +2346 -0
- numba_cuda/numba/cuda/core/caching.py +744 -0
- numba_cuda/numba/cuda/core/callconv.py +392 -0
- numba_cuda/numba/cuda/core/codegen.py +171 -0
- numba_cuda/numba/cuda/core/compiler.py +199 -0
- numba_cuda/numba/cuda/core/compiler_lock.py +85 -0
- numba_cuda/numba/cuda/core/compiler_machinery.py +497 -0
- numba_cuda/numba/cuda/core/config.py +650 -0
- numba_cuda/numba/cuda/core/consts.py +124 -0
- numba_cuda/numba/cuda/core/controlflow.py +989 -0
- numba_cuda/numba/cuda/core/entrypoints.py +57 -0
- numba_cuda/numba/cuda/core/environment.py +66 -0
- numba_cuda/numba/cuda/core/errors.py +917 -0
- numba_cuda/numba/cuda/core/event.py +511 -0
- numba_cuda/numba/cuda/core/funcdesc.py +330 -0
- numba_cuda/numba/cuda/core/generators.py +387 -0
- numba_cuda/numba/cuda/core/imputils.py +509 -0
- numba_cuda/numba/cuda/core/inline_closurecall.py +1787 -0
- numba_cuda/numba/cuda/core/interpreter.py +3617 -0
- numba_cuda/numba/cuda/core/ir.py +1812 -0
- numba_cuda/numba/cuda/core/ir_utils.py +2638 -0
- numba_cuda/numba/cuda/core/optional.py +129 -0
- numba_cuda/numba/cuda/core/options.py +262 -0
- numba_cuda/numba/cuda/core/postproc.py +249 -0
- numba_cuda/numba/cuda/core/pythonapi.py +1859 -0
- numba_cuda/numba/cuda/core/registry.py +46 -0
- numba_cuda/numba/cuda/core/removerefctpass.py +123 -0
- numba_cuda/numba/cuda/core/rewrites/__init__.py +26 -0
- numba_cuda/numba/cuda/core/rewrites/ir_print.py +91 -0
- numba_cuda/numba/cuda/core/rewrites/registry.py +104 -0
- numba_cuda/numba/cuda/core/rewrites/static_binop.py +41 -0
- numba_cuda/numba/cuda/core/rewrites/static_getitem.py +189 -0
- numba_cuda/numba/cuda/core/rewrites/static_raise.py +100 -0
- numba_cuda/numba/cuda/core/sigutils.py +68 -0
- numba_cuda/numba/cuda/core/ssa.py +498 -0
- numba_cuda/numba/cuda/core/targetconfig.py +330 -0
- numba_cuda/numba/cuda/core/tracing.py +231 -0
- numba_cuda/numba/cuda/core/transforms.py +956 -0
- numba_cuda/numba/cuda/core/typed_passes.py +867 -0
- numba_cuda/numba/cuda/core/typeinfer.py +1950 -0
- numba_cuda/numba/cuda/core/unsafe/__init__.py +0 -0
- numba_cuda/numba/cuda/core/unsafe/bytes.py +67 -0
- numba_cuda/numba/cuda/core/unsafe/eh.py +67 -0
- numba_cuda/numba/cuda/core/unsafe/refcount.py +98 -0
- numba_cuda/numba/cuda/core/untyped_passes.py +1979 -0
- numba_cuda/numba/cuda/cpython/builtins.py +1153 -0
- numba_cuda/numba/cuda/cpython/charseq.py +1218 -0
- numba_cuda/numba/cuda/cpython/cmathimpl.py +560 -0
- numba_cuda/numba/cuda/cpython/enumimpl.py +103 -0
- numba_cuda/numba/cuda/cpython/iterators.py +167 -0
- numba_cuda/numba/cuda/cpython/listobj.py +1326 -0
- numba_cuda/numba/cuda/cpython/mathimpl.py +499 -0
- numba_cuda/numba/cuda/cpython/numbers.py +1475 -0
- numba_cuda/numba/cuda/cpython/rangeobj.py +289 -0
- numba_cuda/numba/cuda/cpython/slicing.py +322 -0
- numba_cuda/numba/cuda/cpython/tupleobj.py +456 -0
- numba_cuda/numba/cuda/cpython/unicode.py +2865 -0
- numba_cuda/numba/cuda/cpython/unicode_support.py +1597 -0
- numba_cuda/numba/cuda/cpython/unsafe/__init__.py +0 -0
- numba_cuda/numba/cuda/cpython/unsafe/numbers.py +64 -0
- numba_cuda/numba/cuda/cpython/unsafe/tuple.py +92 -0
- numba_cuda/numba/cuda/cuda_paths.py +691 -0
- numba_cuda/numba/cuda/cudadecl.py +556 -0
- numba_cuda/numba/cuda/cudadrv/__init__.py +14 -0
- numba_cuda/numba/cuda/cudadrv/devicearray.py +951 -0
- numba_cuda/numba/cuda/cudadrv/devices.py +249 -0
- numba_cuda/numba/cuda/cudadrv/driver.py +3222 -0
- numba_cuda/numba/cuda/cudadrv/drvapi.py +435 -0
- numba_cuda/numba/cuda/cudadrv/dummyarray.py +558 -0
- numba_cuda/numba/cuda/cudadrv/enums.py +613 -0
- numba_cuda/numba/cuda/cudadrv/error.py +48 -0
- numba_cuda/numba/cuda/cudadrv/libs.py +220 -0
- numba_cuda/numba/cuda/cudadrv/linkable_code.py +184 -0
- numba_cuda/numba/cuda/cudadrv/mappings.py +14 -0
- numba_cuda/numba/cuda/cudadrv/ndarray.py +26 -0
- numba_cuda/numba/cuda/cudadrv/nvrtc.py +193 -0
- numba_cuda/numba/cuda/cudadrv/nvvm.py +756 -0
- numba_cuda/numba/cuda/cudadrv/rtapi.py +13 -0
- numba_cuda/numba/cuda/cudadrv/runtime.py +34 -0
- numba_cuda/numba/cuda/cudaimpl.py +995 -0
- numba_cuda/numba/cuda/cudamath.py +149 -0
- numba_cuda/numba/cuda/datamodel/__init__.py +7 -0
- numba_cuda/numba/cuda/datamodel/cuda_manager.py +66 -0
- numba_cuda/numba/cuda/datamodel/cuda_models.py +1446 -0
- numba_cuda/numba/cuda/datamodel/cuda_packer.py +224 -0
- numba_cuda/numba/cuda/datamodel/cuda_registry.py +22 -0
- numba_cuda/numba/cuda/datamodel/cuda_testing.py +153 -0
- numba_cuda/numba/cuda/datamodel/manager.py +11 -0
- numba_cuda/numba/cuda/datamodel/models.py +9 -0
- numba_cuda/numba/cuda/datamodel/packer.py +9 -0
- numba_cuda/numba/cuda/datamodel/registry.py +11 -0
- numba_cuda/numba/cuda/datamodel/testing.py +11 -0
- numba_cuda/numba/cuda/debuginfo.py +903 -0
- numba_cuda/numba/cuda/decorators.py +294 -0
- numba_cuda/numba/cuda/descriptor.py +35 -0
- numba_cuda/numba/cuda/device_init.py +158 -0
- numba_cuda/numba/cuda/deviceufunc.py +1021 -0
- numba_cuda/numba/cuda/dispatcher.py +2463 -0
- numba_cuda/numba/cuda/errors.py +72 -0
- numba_cuda/numba/cuda/extending.py +697 -0
- numba_cuda/numba/cuda/flags.py +178 -0
- numba_cuda/numba/cuda/fp16.py +357 -0
- numba_cuda/numba/cuda/include/12/cuda_bf16.h +5118 -0
- numba_cuda/numba/cuda/include/12/cuda_bf16.hpp +3865 -0
- numba_cuda/numba/cuda/include/12/cuda_fp16.h +5363 -0
- numba_cuda/numba/cuda/include/12/cuda_fp16.hpp +3483 -0
- numba_cuda/numba/cuda/include/13/cuda_bf16.h +5118 -0
- numba_cuda/numba/cuda/include/13/cuda_bf16.hpp +3865 -0
- numba_cuda/numba/cuda/include/13/cuda_fp16.h +5363 -0
- numba_cuda/numba/cuda/include/13/cuda_fp16.hpp +3483 -0
- numba_cuda/numba/cuda/initialize.py +24 -0
- numba_cuda/numba/cuda/intrinsic_wrapper.py +41 -0
- numba_cuda/numba/cuda/intrinsics.py +382 -0
- numba_cuda/numba/cuda/itanium_mangler.py +214 -0
- numba_cuda/numba/cuda/kernels/__init__.py +2 -0
- numba_cuda/numba/cuda/kernels/reduction.py +265 -0
- numba_cuda/numba/cuda/kernels/transpose.py +65 -0
- numba_cuda/numba/cuda/libdevice.py +3386 -0
- numba_cuda/numba/cuda/libdevicedecl.py +20 -0
- numba_cuda/numba/cuda/libdevicefuncs.py +1060 -0
- numba_cuda/numba/cuda/libdeviceimpl.py +88 -0
- numba_cuda/numba/cuda/locks.py +19 -0
- numba_cuda/numba/cuda/lowering.py +1951 -0
- numba_cuda/numba/cuda/mathimpl.py +374 -0
- numba_cuda/numba/cuda/memory_management/__init__.py +4 -0
- numba_cuda/numba/cuda/memory_management/memsys.cu +99 -0
- numba_cuda/numba/cuda/memory_management/memsys.cuh +22 -0
- numba_cuda/numba/cuda/memory_management/nrt.cu +212 -0
- numba_cuda/numba/cuda/memory_management/nrt.cuh +48 -0
- numba_cuda/numba/cuda/memory_management/nrt.py +390 -0
- numba_cuda/numba/cuda/memory_management/nrt_context.py +438 -0
- numba_cuda/numba/cuda/misc/appdirs.py +594 -0
- numba_cuda/numba/cuda/misc/cffiimpl.py +24 -0
- numba_cuda/numba/cuda/misc/coverage_support.py +43 -0
- numba_cuda/numba/cuda/misc/dump_style.py +41 -0
- numba_cuda/numba/cuda/misc/findlib.py +75 -0
- numba_cuda/numba/cuda/misc/firstlinefinder.py +96 -0
- numba_cuda/numba/cuda/misc/gdb_hook.py +240 -0
- numba_cuda/numba/cuda/misc/literal.py +28 -0
- numba_cuda/numba/cuda/misc/llvm_pass_timings.py +412 -0
- numba_cuda/numba/cuda/misc/special.py +94 -0
- numba_cuda/numba/cuda/models.py +56 -0
- numba_cuda/numba/cuda/np/arraymath.py +5130 -0
- numba_cuda/numba/cuda/np/arrayobj.py +7635 -0
- numba_cuda/numba/cuda/np/extensions.py +11 -0
- numba_cuda/numba/cuda/np/linalg.py +3087 -0
- numba_cuda/numba/cuda/np/math/__init__.py +0 -0
- numba_cuda/numba/cuda/np/math/cmathimpl.py +558 -0
- numba_cuda/numba/cuda/np/math/mathimpl.py +487 -0
- numba_cuda/numba/cuda/np/math/numbers.py +1461 -0
- numba_cuda/numba/cuda/np/npdatetime.py +969 -0
- numba_cuda/numba/cuda/np/npdatetime_helpers.py +217 -0
- numba_cuda/numba/cuda/np/npyfuncs.py +1808 -0
- numba_cuda/numba/cuda/np/npyimpl.py +1027 -0
- numba_cuda/numba/cuda/np/numpy_support.py +798 -0
- numba_cuda/numba/cuda/np/polynomial/__init__.py +4 -0
- numba_cuda/numba/cuda/np/polynomial/polynomial_core.py +242 -0
- numba_cuda/numba/cuda/np/polynomial/polynomial_functions.py +380 -0
- numba_cuda/numba/cuda/np/ufunc/__init__.py +4 -0
- numba_cuda/numba/cuda/np/ufunc/decorators.py +203 -0
- numba_cuda/numba/cuda/np/ufunc/sigparse.py +68 -0
- numba_cuda/numba/cuda/np/ufunc/ufuncbuilder.py +65 -0
- numba_cuda/numba/cuda/np/ufunc_db.py +1282 -0
- numba_cuda/numba/cuda/np/unsafe/__init__.py +0 -0
- numba_cuda/numba/cuda/np/unsafe/ndarray.py +84 -0
- numba_cuda/numba/cuda/nvvmutils.py +254 -0
- numba_cuda/numba/cuda/printimpl.py +126 -0
- numba_cuda/numba/cuda/random.py +308 -0
- numba_cuda/numba/cuda/reshape_funcs.cu +156 -0
- numba_cuda/numba/cuda/serialize.py +267 -0
- numba_cuda/numba/cuda/simulator/__init__.py +63 -0
- numba_cuda/numba/cuda/simulator/_internal/__init__.py +4 -0
- numba_cuda/numba/cuda/simulator/_internal/cuda_bf16.py +2 -0
- numba_cuda/numba/cuda/simulator/api.py +179 -0
- numba_cuda/numba/cuda/simulator/bf16.py +4 -0
- numba_cuda/numba/cuda/simulator/compiler.py +38 -0
- numba_cuda/numba/cuda/simulator/cudadrv/__init__.py +11 -0
- numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +462 -0
- numba_cuda/numba/cuda/simulator/cudadrv/devices.py +122 -0
- numba_cuda/numba/cuda/simulator/cudadrv/driver.py +66 -0
- numba_cuda/numba/cuda/simulator/cudadrv/drvapi.py +7 -0
- numba_cuda/numba/cuda/simulator/cudadrv/dummyarray.py +7 -0
- numba_cuda/numba/cuda/simulator/cudadrv/error.py +10 -0
- numba_cuda/numba/cuda/simulator/cudadrv/libs.py +10 -0
- numba_cuda/numba/cuda/simulator/cudadrv/linkable_code.py +61 -0
- numba_cuda/numba/cuda/simulator/cudadrv/nvrtc.py +11 -0
- numba_cuda/numba/cuda/simulator/cudadrv/nvvm.py +32 -0
- numba_cuda/numba/cuda/simulator/cudadrv/runtime.py +22 -0
- numba_cuda/numba/cuda/simulator/dispatcher.py +11 -0
- numba_cuda/numba/cuda/simulator/kernel.py +320 -0
- numba_cuda/numba/cuda/simulator/kernelapi.py +509 -0
- numba_cuda/numba/cuda/simulator/memory_management/__init__.py +4 -0
- numba_cuda/numba/cuda/simulator/memory_management/nrt.py +21 -0
- numba_cuda/numba/cuda/simulator/reduction.py +19 -0
- numba_cuda/numba/cuda/simulator/tests/support.py +4 -0
- numba_cuda/numba/cuda/simulator/vector_types.py +65 -0
- numba_cuda/numba/cuda/simulator_init.py +18 -0
- numba_cuda/numba/cuda/stubs.py +635 -0
- numba_cuda/numba/cuda/target.py +505 -0
- numba_cuda/numba/cuda/testing.py +347 -0
- numba_cuda/numba/cuda/tests/__init__.py +62 -0
- numba_cuda/numba/cuda/tests/benchmarks/__init__.py +0 -0
- numba_cuda/numba/cuda/tests/benchmarks/test_kernel_launch.py +119 -0
- numba_cuda/numba/cuda/tests/cloudpickle_main_class.py +9 -0
- numba_cuda/numba/cuda/tests/core/serialize_usecases.py +113 -0
- numba_cuda/numba/cuda/tests/core/test_itanium_mangler.py +83 -0
- numba_cuda/numba/cuda/tests/core/test_serialize.py +371 -0
- numba_cuda/numba/cuda/tests/cudadrv/__init__.py +9 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_array_attr.py +147 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +161 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_array_slicing.py +397 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_auto_context.py +24 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +180 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +313 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +187 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +621 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +247 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +100 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +198 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_events.py +53 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_host_alloc.py +72 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_init.py +138 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_inline_ptx.py +43 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py +15 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_linkable_code.py +58 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +348 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +128 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +301 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +174 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +28 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +185 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py +39 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py +23 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_reset_device.py +38 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_runtime.py +48 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_select_device.py +44 -0
- numba_cuda/numba/cuda/tests/cudadrv/test_streams.py +127 -0
- numba_cuda/numba/cuda/tests/cudapy/__init__.py +9 -0
- numba_cuda/numba/cuda/tests/cudapy/cache_usecases.py +231 -0
- numba_cuda/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py +50 -0
- numba_cuda/numba/cuda/tests/cudapy/cg_cache_usecases.py +36 -0
- numba_cuda/numba/cuda/tests/cudapy/complex_usecases.py +116 -0
- numba_cuda/numba/cuda/tests/cudapy/enum_usecases.py +59 -0
- numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +62 -0
- numba_cuda/numba/cuda/tests/cudapy/jitlink.ptx +28 -0
- numba_cuda/numba/cuda/tests/cudapy/overload_usecases.py +33 -0
- numba_cuda/numba/cuda/tests/cudapy/recursion_usecases.py +104 -0
- numba_cuda/numba/cuda/tests/cudapy/test_alignment.py +47 -0
- numba_cuda/numba/cuda/tests/cudapy/test_analysis.py +1122 -0
- numba_cuda/numba/cuda/tests/cudapy/test_array.py +344 -0
- numba_cuda/numba/cuda/tests/cudapy/test_array_alignment.py +268 -0
- numba_cuda/numba/cuda/tests/cudapy/test_array_args.py +203 -0
- numba_cuda/numba/cuda/tests/cudapy/test_array_methods.py +63 -0
- numba_cuda/numba/cuda/tests/cudapy/test_array_reductions.py +360 -0
- numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +1815 -0
- numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +599 -0
- numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +377 -0
- numba_cuda/numba/cuda/tests/cudapy/test_blackscholes.py +160 -0
- numba_cuda/numba/cuda/tests/cudapy/test_boolean.py +27 -0
- numba_cuda/numba/cuda/tests/cudapy/test_byteflow.py +98 -0
- numba_cuda/numba/cuda/tests/cudapy/test_cache_hints.py +210 -0
- numba_cuda/numba/cuda/tests/cudapy/test_caching.py +683 -0
- numba_cuda/numba/cuda/tests/cudapy/test_casting.py +265 -0
- numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +42 -0
- numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +718 -0
- numba_cuda/numba/cuda/tests/cudapy/test_complex.py +370 -0
- numba_cuda/numba/cuda/tests/cudapy/test_complex_kernel.py +23 -0
- numba_cuda/numba/cuda/tests/cudapy/test_const_string.py +142 -0
- numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +178 -0
- numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +193 -0
- numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +131 -0
- numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +438 -0
- numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +94 -0
- numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +101 -0
- numba_cuda/numba/cuda/tests/cudapy/test_debug.py +105 -0
- numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +889 -0
- numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +476 -0
- numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +500 -0
- numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +820 -0
- numba_cuda/numba/cuda/tests/cudapy/test_enums.py +152 -0
- numba_cuda/numba/cuda/tests/cudapy/test_errors.py +111 -0
- numba_cuda/numba/cuda/tests/cudapy/test_exception.py +170 -0
- numba_cuda/numba/cuda/tests/cudapy/test_extending.py +1088 -0
- numba_cuda/numba/cuda/tests/cudapy/test_extending_types.py +71 -0
- numba_cuda/numba/cuda/tests/cudapy/test_fastmath.py +265 -0
- numba_cuda/numba/cuda/tests/cudapy/test_flow_control.py +1433 -0
- numba_cuda/numba/cuda/tests/cudapy/test_forall.py +57 -0
- numba_cuda/numba/cuda/tests/cudapy/test_freevar.py +34 -0
- numba_cuda/numba/cuda/tests/cudapy/test_frexp_ldexp.py +69 -0
- numba_cuda/numba/cuda/tests/cudapy/test_globals.py +62 -0
- numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +474 -0
- numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py +167 -0
- numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py +92 -0
- numba_cuda/numba/cuda/tests/cudapy/test_idiv.py +39 -0
- numba_cuda/numba/cuda/tests/cudapy/test_inline.py +170 -0
- numba_cuda/numba/cuda/tests/cudapy/test_inspect.py +255 -0
- numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +1219 -0
- numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +263 -0
- numba_cuda/numba/cuda/tests/cudapy/test_ir.py +598 -0
- numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +276 -0
- numba_cuda/numba/cuda/tests/cudapy/test_iterators.py +101 -0
- numba_cuda/numba/cuda/tests/cudapy/test_lang.py +68 -0
- numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +123 -0
- numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py +194 -0
- numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +220 -0
- numba_cuda/numba/cuda/tests/cudapy/test_localmem.py +173 -0
- numba_cuda/numba/cuda/tests/cudapy/test_make_function_to_jit_function.py +364 -0
- numba_cuda/numba/cuda/tests/cudapy/test_mandel.py +47 -0
- numba_cuda/numba/cuda/tests/cudapy/test_math.py +842 -0
- numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +76 -0
- numba_cuda/numba/cuda/tests/cudapy/test_minmax.py +78 -0
- numba_cuda/numba/cuda/tests/cudapy/test_montecarlo.py +25 -0
- numba_cuda/numba/cuda/tests/cudapy/test_multigpu.py +145 -0
- numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py +39 -0
- numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py +82 -0
- numba_cuda/numba/cuda/tests/cudapy/test_nondet.py +53 -0
- numba_cuda/numba/cuda/tests/cudapy/test_operator.py +504 -0
- numba_cuda/numba/cuda/tests/cudapy/test_optimization.py +93 -0
- numba_cuda/numba/cuda/tests/cudapy/test_overload.py +402 -0
- numba_cuda/numba/cuda/tests/cudapy/test_powi.py +128 -0
- numba_cuda/numba/cuda/tests/cudapy/test_print.py +193 -0
- numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py +37 -0
- numba_cuda/numba/cuda/tests/cudapy/test_random.py +117 -0
- numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +614 -0
- numba_cuda/numba/cuda/tests/cudapy/test_recursion.py +130 -0
- numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +94 -0
- numba_cuda/numba/cuda/tests/cudapy/test_retrieve_autoconverted_arrays.py +83 -0
- numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +86 -0
- numba_cuda/numba/cuda/tests/cudapy/test_slicing.py +40 -0
- numba_cuda/numba/cuda/tests/cudapy/test_sm.py +457 -0
- numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py +233 -0
- numba_cuda/numba/cuda/tests/cudapy/test_ssa.py +454 -0
- numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +56 -0
- numba_cuda/numba/cuda/tests/cudapy/test_sync.py +277 -0
- numba_cuda/numba/cuda/tests/cudapy/test_tracing.py +200 -0
- numba_cuda/numba/cuda/tests/cudapy/test_transpose.py +90 -0
- numba_cuda/numba/cuda/tests/cudapy/test_typeconv.py +333 -0
- numba_cuda/numba/cuda/tests/cudapy/test_typeinfer.py +538 -0
- numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +585 -0
- numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +42 -0
- numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +485 -0
- numba_cuda/numba/cuda/tests/cudapy/test_vectorize.py +312 -0
- numba_cuda/numba/cuda/tests/cudapy/test_vectorize_complex.py +23 -0
- numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +183 -0
- numba_cuda/numba/cuda/tests/cudapy/test_vectorize_device.py +40 -0
- numba_cuda/numba/cuda/tests/cudapy/test_vectorize_scalar_arg.py +40 -0
- numba_cuda/numba/cuda/tests/cudapy/test_warning.py +206 -0
- numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +331 -0
- numba_cuda/numba/cuda/tests/cudasim/__init__.py +9 -0
- numba_cuda/numba/cuda/tests/cudasim/support.py +9 -0
- numba_cuda/numba/cuda/tests/cudasim/test_cudasim_issues.py +111 -0
- numba_cuda/numba/cuda/tests/data/__init__.py +2 -0
- numba_cuda/numba/cuda/tests/data/cta_barrier.cu +28 -0
- numba_cuda/numba/cuda/tests/data/cuda_include.cu +10 -0
- numba_cuda/numba/cuda/tests/data/error.cu +12 -0
- numba_cuda/numba/cuda/tests/data/include/add.cuh +8 -0
- numba_cuda/numba/cuda/tests/data/jitlink.cu +28 -0
- numba_cuda/numba/cuda/tests/data/jitlink.ptx +49 -0
- numba_cuda/numba/cuda/tests/data/warn.cu +12 -0
- numba_cuda/numba/cuda/tests/doc_examples/__init__.py +9 -0
- numba_cuda/numba/cuda/tests/doc_examples/ffi/__init__.py +2 -0
- numba_cuda/numba/cuda/tests/doc_examples/ffi/functions.cu +54 -0
- numba_cuda/numba/cuda/tests/doc_examples/ffi/include/mul.cuh +8 -0
- numba_cuda/numba/cuda/tests/doc_examples/ffi/saxpy.cu +14 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +86 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +68 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +81 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +141 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +160 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +180 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +119 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_random.py +66 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +80 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +206 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +53 -0
- numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +76 -0
- numba_cuda/numba/cuda/tests/nocuda/__init__.py +9 -0
- numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +391 -0
- numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py +48 -0
- numba_cuda/numba/cuda/tests/nocuda/test_import.py +63 -0
- numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +252 -0
- numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py +59 -0
- numba_cuda/numba/cuda/tests/nrt/__init__.py +9 -0
- numba_cuda/numba/cuda/tests/nrt/test_nrt.py +387 -0
- numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +124 -0
- numba_cuda/numba/cuda/tests/support.py +900 -0
- numba_cuda/numba/cuda/typeconv/__init__.py +4 -0
- numba_cuda/numba/cuda/typeconv/castgraph.py +137 -0
- numba_cuda/numba/cuda/typeconv/rules.py +63 -0
- numba_cuda/numba/cuda/typeconv/typeconv.py +121 -0
- numba_cuda/numba/cuda/types/__init__.py +233 -0
- numba_cuda/numba/cuda/types/__init__.pyi +167 -0
- numba_cuda/numba/cuda/types/abstract.py +9 -0
- numba_cuda/numba/cuda/types/common.py +9 -0
- numba_cuda/numba/cuda/types/containers.py +9 -0
- numba_cuda/numba/cuda/types/cuda_abstract.py +533 -0
- numba_cuda/numba/cuda/types/cuda_common.py +110 -0
- numba_cuda/numba/cuda/types/cuda_containers.py +971 -0
- numba_cuda/numba/cuda/types/cuda_function_type.py +230 -0
- numba_cuda/numba/cuda/types/cuda_functions.py +798 -0
- numba_cuda/numba/cuda/types/cuda_iterators.py +120 -0
- numba_cuda/numba/cuda/types/cuda_misc.py +569 -0
- numba_cuda/numba/cuda/types/cuda_npytypes.py +690 -0
- numba_cuda/numba/cuda/types/cuda_scalars.py +280 -0
- numba_cuda/numba/cuda/types/ext_types.py +101 -0
- numba_cuda/numba/cuda/types/function_type.py +11 -0
- numba_cuda/numba/cuda/types/functions.py +9 -0
- numba_cuda/numba/cuda/types/iterators.py +9 -0
- numba_cuda/numba/cuda/types/misc.py +9 -0
- numba_cuda/numba/cuda/types/npytypes.py +9 -0
- numba_cuda/numba/cuda/types/scalars.py +9 -0
- numba_cuda/numba/cuda/typing/__init__.py +19 -0
- numba_cuda/numba/cuda/typing/arraydecl.py +939 -0
- numba_cuda/numba/cuda/typing/asnumbatype.py +130 -0
- numba_cuda/numba/cuda/typing/bufproto.py +70 -0
- numba_cuda/numba/cuda/typing/builtins.py +1209 -0
- numba_cuda/numba/cuda/typing/cffi_utils.py +219 -0
- numba_cuda/numba/cuda/typing/cmathdecl.py +47 -0
- numba_cuda/numba/cuda/typing/collections.py +138 -0
- numba_cuda/numba/cuda/typing/context.py +782 -0
- numba_cuda/numba/cuda/typing/ctypes_utils.py +125 -0
- numba_cuda/numba/cuda/typing/dictdecl.py +63 -0
- numba_cuda/numba/cuda/typing/enumdecl.py +74 -0
- numba_cuda/numba/cuda/typing/listdecl.py +147 -0
- numba_cuda/numba/cuda/typing/mathdecl.py +158 -0
- numba_cuda/numba/cuda/typing/npdatetime.py +322 -0
- numba_cuda/numba/cuda/typing/npydecl.py +749 -0
- numba_cuda/numba/cuda/typing/setdecl.py +115 -0
- numba_cuda/numba/cuda/typing/templates.py +1446 -0
- numba_cuda/numba/cuda/typing/typeof.py +301 -0
- numba_cuda/numba/cuda/ufuncs.py +746 -0
- numba_cuda/numba/cuda/utils.py +724 -0
- numba_cuda/numba/cuda/vector_types.py +214 -0
- numba_cuda/numba/cuda/vectorizers.py +260 -0
- numba_cuda-0.21.1.dist-info/METADATA +109 -0
- numba_cuda-0.21.1.dist-info/RECORD +488 -0
- numba_cuda-0.21.1.dist-info/WHEEL +5 -0
- numba_cuda-0.21.1.dist-info/licenses/LICENSE +26 -0
- numba_cuda-0.21.1.dist-info/licenses/LICENSE.numba +24 -0
- numba_cuda-0.21.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: BSD-2-Clause
|
|
3
|
+
|
|
4
|
+
import platform
|
|
5
|
+
import sys
|
|
6
|
+
import os
|
|
7
|
+
import re
|
|
8
|
+
import shutil
|
|
9
|
+
import warnings
|
|
10
|
+
import traceback
|
|
11
|
+
|
|
12
|
+
# YAML needed to use file based Numba config
|
|
13
|
+
try:
|
|
14
|
+
import yaml
|
|
15
|
+
|
|
16
|
+
_HAVE_YAML = True
|
|
17
|
+
except ImportError:
|
|
18
|
+
_HAVE_YAML = False
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
import llvmlite.binding as ll
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
IS_WIN32 = sys.platform.startswith("win32")
|
|
25
|
+
IS_OSX = sys.platform.startswith("darwin")
|
|
26
|
+
MACHINE_BITS = tuple.__itemsize__ * 8
|
|
27
|
+
IS_32BITS = MACHINE_BITS == 32
|
|
28
|
+
# Python version in (major, minor) tuple
|
|
29
|
+
PYVERSION = sys.version_info[:2]
|
|
30
|
+
|
|
31
|
+
# this is the name of the user supplied configuration file
|
|
32
|
+
_config_fname = ".numba_config.yaml"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _parse_cc(text):
|
|
36
|
+
"""
|
|
37
|
+
Parse CUDA compute capability version string.
|
|
38
|
+
"""
|
|
39
|
+
if not text:
|
|
40
|
+
return None
|
|
41
|
+
else:
|
|
42
|
+
m = re.match(r"(\d+)\.(\d+)", text)
|
|
43
|
+
if not m:
|
|
44
|
+
raise ValueError(
|
|
45
|
+
"Compute capability must be specified as a "
|
|
46
|
+
'string of "major.minor" where major '
|
|
47
|
+
"and minor are decimals"
|
|
48
|
+
)
|
|
49
|
+
grp = m.groups()
|
|
50
|
+
return int(grp[0]), int(grp[1])
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _os_supports_avx():
|
|
54
|
+
"""
|
|
55
|
+
Whether the current OS supports AVX, regardless of the CPU.
|
|
56
|
+
|
|
57
|
+
This is necessary because the user may be running a very old Linux
|
|
58
|
+
kernel (e.g. CentOS 5) on a recent CPU.
|
|
59
|
+
"""
|
|
60
|
+
if not sys.platform.startswith("linux") or platform.machine() not in (
|
|
61
|
+
"i386",
|
|
62
|
+
"i586",
|
|
63
|
+
"i686",
|
|
64
|
+
"x86_64",
|
|
65
|
+
):
|
|
66
|
+
return True
|
|
67
|
+
# Executing the CPUID instruction may report AVX available even though
|
|
68
|
+
# the kernel doesn't support it, so parse /proc/cpuinfo instead.
|
|
69
|
+
try:
|
|
70
|
+
f = open("/proc/cpuinfo", "r")
|
|
71
|
+
except OSError:
|
|
72
|
+
# If /proc isn't available, assume yes
|
|
73
|
+
return True
|
|
74
|
+
with f:
|
|
75
|
+
for line in f:
|
|
76
|
+
head, _, body = line.partition(":")
|
|
77
|
+
if head.strip() == "flags" and "avx" in body.split():
|
|
78
|
+
return True
|
|
79
|
+
else:
|
|
80
|
+
return False
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class _OptLevel(int):
|
|
84
|
+
"""This class holds the "optimisation level" set in `NUMBA_OPT`. As this env
|
|
85
|
+
var can be an int or a string, but is almost always interpreted as an int,
|
|
86
|
+
this class subclasses int so as to get the common behaviour but stores the
|
|
87
|
+
actual value as a `_raw_value` member. The value "max" is a special case
|
|
88
|
+
and the property `is_opt_max` can be queried to find if the optimisation
|
|
89
|
+
level (supplied value at construction time) is "max"."""
|
|
90
|
+
|
|
91
|
+
def __new__(cls, *args, **kwargs):
|
|
92
|
+
assert len(args) == 1
|
|
93
|
+
(value,) = args
|
|
94
|
+
_int_value = 3 if value == "max" else int(value)
|
|
95
|
+
# the int ctor is always called with an appropriate integer value
|
|
96
|
+
new = super().__new__(cls, _int_value, **kwargs)
|
|
97
|
+
# raw value is max or int
|
|
98
|
+
new._raw_value = value if value == "max" else _int_value
|
|
99
|
+
return new
|
|
100
|
+
|
|
101
|
+
@property
|
|
102
|
+
def is_opt_max(self):
|
|
103
|
+
"""Returns True if the the optimisation level is "max" False
|
|
104
|
+
otherwise."""
|
|
105
|
+
return self._raw_value == "max"
|
|
106
|
+
|
|
107
|
+
def __repr__(self):
|
|
108
|
+
if isinstance(self._raw_value, str):
|
|
109
|
+
arg = f"'{self._raw_value}'"
|
|
110
|
+
else:
|
|
111
|
+
arg = self._raw_value
|
|
112
|
+
return f"_OptLevel({arg})"
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _process_opt_level(opt_level):
|
|
116
|
+
if opt_level not in ("0", "1", "2", "3", "max"):
|
|
117
|
+
msg = (
|
|
118
|
+
"Environment variable `NUMBA_OPT` is set to an unsupported "
|
|
119
|
+
f"value '{opt_level}', supported values are 0, 1, 2, 3, and "
|
|
120
|
+
"'max'"
|
|
121
|
+
)
|
|
122
|
+
raise ValueError(msg)
|
|
123
|
+
else:
|
|
124
|
+
return _OptLevel(opt_level)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class _EnvReloader(object):
|
|
128
|
+
def __init__(self):
|
|
129
|
+
self.reset()
|
|
130
|
+
|
|
131
|
+
def reset(self):
|
|
132
|
+
self.old_environ = {}
|
|
133
|
+
self.update(force=True)
|
|
134
|
+
|
|
135
|
+
def update(self, force=False):
|
|
136
|
+
new_environ = {}
|
|
137
|
+
|
|
138
|
+
# first check if there's a .numba_config.yaml and use values from that
|
|
139
|
+
if os.path.exists(_config_fname) and os.path.isfile(_config_fname):
|
|
140
|
+
if not _HAVE_YAML:
|
|
141
|
+
msg = (
|
|
142
|
+
"A Numba config file is found but YAML parsing "
|
|
143
|
+
"capabilities appear to be missing. "
|
|
144
|
+
"To use this feature please install `pyyaml`. e.g. "
|
|
145
|
+
"`conda install pyyaml`."
|
|
146
|
+
)
|
|
147
|
+
warnings.warn(msg)
|
|
148
|
+
else:
|
|
149
|
+
with open(_config_fname, "rt") as f:
|
|
150
|
+
y_conf = yaml.safe_load(f)
|
|
151
|
+
if y_conf is not None:
|
|
152
|
+
for k, v in y_conf.items():
|
|
153
|
+
new_environ["NUMBA_" + k.upper()] = v
|
|
154
|
+
|
|
155
|
+
# clobber file based config with any locally defined env vars
|
|
156
|
+
for name, value in os.environ.items():
|
|
157
|
+
if name.startswith("NUMBA_"):
|
|
158
|
+
new_environ[name] = value
|
|
159
|
+
# We update the config variables if at least one NUMBA environment
|
|
160
|
+
# variable was modified. This lets the user modify values
|
|
161
|
+
# directly in the config module without having them when
|
|
162
|
+
# reload_config() is called by the compiler.
|
|
163
|
+
if force or self.old_environ != new_environ:
|
|
164
|
+
self.process_environ(new_environ)
|
|
165
|
+
# Store a copy
|
|
166
|
+
self.old_environ = dict(new_environ)
|
|
167
|
+
|
|
168
|
+
self.validate()
|
|
169
|
+
|
|
170
|
+
def validate(self):
|
|
171
|
+
global CUDA_USE_NVIDIA_BINDING
|
|
172
|
+
|
|
173
|
+
if CUDA_USE_NVIDIA_BINDING: # noqa: F821
|
|
174
|
+
try:
|
|
175
|
+
import cuda # noqa: F401
|
|
176
|
+
except ImportError as ie:
|
|
177
|
+
msg = (
|
|
178
|
+
"CUDA Python bindings requested (the environment "
|
|
179
|
+
"variable NUMBA_CUDA_USE_NVIDIA_BINDING is set), "
|
|
180
|
+
f"but they are not importable: {ie.msg}."
|
|
181
|
+
)
|
|
182
|
+
warnings.warn(msg)
|
|
183
|
+
|
|
184
|
+
CUDA_USE_NVIDIA_BINDING = False
|
|
185
|
+
|
|
186
|
+
if CUDA_PER_THREAD_DEFAULT_STREAM: # noqa: F821
|
|
187
|
+
warnings.warn(
|
|
188
|
+
"PTDS support is handled by CUDA Python when "
|
|
189
|
+
"using the NVIDIA binding. Please set the "
|
|
190
|
+
"environment variable "
|
|
191
|
+
"CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM to 1 "
|
|
192
|
+
"instead."
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
def process_environ(self, environ):
|
|
196
|
+
def _readenv(name, ctor, default):
|
|
197
|
+
value = environ.get(name)
|
|
198
|
+
if value is None:
|
|
199
|
+
return default() if callable(default) else default
|
|
200
|
+
try:
|
|
201
|
+
return ctor(value)
|
|
202
|
+
except Exception:
|
|
203
|
+
warnings.warn(
|
|
204
|
+
f"Environment variable '{name}' is defined but "
|
|
205
|
+
f"its associated value '{value}' could not be "
|
|
206
|
+
"parsed.\nThe parse failed with exception:\n"
|
|
207
|
+
f"{traceback.format_exc()}",
|
|
208
|
+
RuntimeWarning,
|
|
209
|
+
)
|
|
210
|
+
return default
|
|
211
|
+
|
|
212
|
+
def optional_str(x):
|
|
213
|
+
return str(x) if x is not None else None
|
|
214
|
+
|
|
215
|
+
# developer mode produces full tracebacks, disables help instructions
|
|
216
|
+
DEVELOPER_MODE = _readenv("NUMBA_DEVELOPER_MODE", int, 0)
|
|
217
|
+
|
|
218
|
+
# disable performance warnings, will switch of the generation of
|
|
219
|
+
# warnings of the class NumbaPerformanceWarning
|
|
220
|
+
DISABLE_PERFORMANCE_WARNINGS = _readenv(
|
|
221
|
+
"NUMBA_DISABLE_PERFORMANCE_WARNINGS", int, 0
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
# Flag to enable full exception reporting
|
|
225
|
+
FULL_TRACEBACKS = _readenv("NUMBA_FULL_TRACEBACKS", int, DEVELOPER_MODE)
|
|
226
|
+
|
|
227
|
+
# Show help text when an error occurs
|
|
228
|
+
SHOW_HELP = _readenv("NUMBA_SHOW_HELP", int, 0)
|
|
229
|
+
|
|
230
|
+
# The color scheme to use for error messages, default is no color
|
|
231
|
+
# just bold fonts in use.
|
|
232
|
+
COLOR_SCHEME = _readenv("NUMBA_COLOR_SCHEME", str, "no_color")
|
|
233
|
+
|
|
234
|
+
# Whether to globally enable bounds checking. The default None means
|
|
235
|
+
# to use the value of the flag to @njit. 0 or 1 overrides the flag
|
|
236
|
+
# globally.
|
|
237
|
+
BOUNDSCHECK = _readenv("NUMBA_BOUNDSCHECK", int, None)
|
|
238
|
+
|
|
239
|
+
# Whether to always warn about potential uninitialized variables
|
|
240
|
+
# because static controlflow analysis cannot find a definition
|
|
241
|
+
# in one or more of the incoming paths.
|
|
242
|
+
ALWAYS_WARN_UNINIT_VAR = _readenv(
|
|
243
|
+
"NUMBA_ALWAYS_WARN_UNINIT_VAR",
|
|
244
|
+
int,
|
|
245
|
+
0,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
# Whether to warn about kernel launches where the grid size will
|
|
249
|
+
# under utilize the GPU due to low occupancy. On by default.
|
|
250
|
+
CUDA_LOW_OCCUPANCY_WARNINGS = _readenv(
|
|
251
|
+
"NUMBA_CUDA_LOW_OCCUPANCY_WARNINGS", int, 1
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
# Whether to use the official CUDA Python API Bindings
|
|
255
|
+
CUDA_USE_NVIDIA_BINDING = _readenv(
|
|
256
|
+
"NUMBA_CUDA_USE_NVIDIA_BINDING", int, 0
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
# Debug flag to control compiler debug print
|
|
260
|
+
DEBUG = _readenv("NUMBA_DEBUG", int, 0)
|
|
261
|
+
|
|
262
|
+
# DEBUG print IR after pass names
|
|
263
|
+
DEBUG_PRINT_AFTER = _readenv("NUMBA_DEBUG_PRINT_AFTER", str, "none")
|
|
264
|
+
|
|
265
|
+
# DEBUG print IR before pass names
|
|
266
|
+
DEBUG_PRINT_BEFORE = _readenv("NUMBA_DEBUG_PRINT_BEFORE", str, "none")
|
|
267
|
+
|
|
268
|
+
# DEBUG print IR before and after pass names
|
|
269
|
+
DEBUG_PRINT_WRAP = _readenv("NUMBA_DEBUG_PRINT_WRAP", str, "none")
|
|
270
|
+
|
|
271
|
+
# Highlighting in intermediate dumps
|
|
272
|
+
HIGHLIGHT_DUMPS = _readenv("NUMBA_HIGHLIGHT_DUMPS", int, 0)
|
|
273
|
+
|
|
274
|
+
# JIT Debug flag to trigger IR instruction print
|
|
275
|
+
DEBUG_JIT = _readenv("NUMBA_DEBUG_JIT", int, 0)
|
|
276
|
+
|
|
277
|
+
# Enable debugging of front-end operation
|
|
278
|
+
# (up to and including IR generation)
|
|
279
|
+
DEBUG_FRONTEND = _readenv("NUMBA_DEBUG_FRONTEND", int, 0)
|
|
280
|
+
|
|
281
|
+
# Enable debug prints in nrtdynmod and use of "safe" API functions
|
|
282
|
+
DEBUG_NRT = _readenv("NUMBA_DEBUG_NRT", int, 0)
|
|
283
|
+
|
|
284
|
+
# Enable NRT statistics counters
|
|
285
|
+
NRT_STATS = _readenv("NUMBA_NRT_STATS", int, 0)
|
|
286
|
+
|
|
287
|
+
# How many recently deserialized functions to retain regardless
|
|
288
|
+
# of external references
|
|
289
|
+
FUNCTION_CACHE_SIZE = _readenv("NUMBA_FUNCTION_CACHE_SIZE", int, 128)
|
|
290
|
+
|
|
291
|
+
# Maximum tuple size that parfors will unpack and pass to
|
|
292
|
+
# internal gufunc.
|
|
293
|
+
PARFOR_MAX_TUPLE_SIZE = _readenv(
|
|
294
|
+
"NUMBA_PARFOR_MAX_TUPLE_SIZE", int, 100
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
# Enable logging of cache operation
|
|
298
|
+
DEBUG_CACHE = _readenv("NUMBA_DEBUG_CACHE", int, DEBUG)
|
|
299
|
+
|
|
300
|
+
# Redirect cache directory
|
|
301
|
+
# Contains path to the directory
|
|
302
|
+
CACHE_DIR = _readenv("NUMBA_CACHE_DIR", str, "")
|
|
303
|
+
|
|
304
|
+
# Enable tracing support
|
|
305
|
+
TRACE = _readenv("NUMBA_TRACE", int, 0)
|
|
306
|
+
|
|
307
|
+
# Enable chrome tracing support
|
|
308
|
+
CHROME_TRACE = _readenv("NUMBA_CHROME_TRACE", str, "")
|
|
309
|
+
|
|
310
|
+
# Enable debugging of type inference
|
|
311
|
+
DEBUG_TYPEINFER = _readenv("NUMBA_DEBUG_TYPEINFER", int, 0)
|
|
312
|
+
|
|
313
|
+
# Configure compilation target to use the specified CPU name
|
|
314
|
+
# and CPU feature as the host information.
|
|
315
|
+
# Note: this overrides "host" option for AOT compilation.
|
|
316
|
+
CPU_NAME = _readenv("NUMBA_CPU_NAME", optional_str, None)
|
|
317
|
+
CPU_FEATURES = _readenv(
|
|
318
|
+
"NUMBA_CPU_FEATURES",
|
|
319
|
+
optional_str,
|
|
320
|
+
("" if str(CPU_NAME).lower() == "generic" else None),
|
|
321
|
+
)
|
|
322
|
+
# Optimization level
|
|
323
|
+
OPT = _readenv("NUMBA_OPT", _process_opt_level, _OptLevel(3))
|
|
324
|
+
|
|
325
|
+
# Force dump of Python bytecode
|
|
326
|
+
DUMP_BYTECODE = _readenv("NUMBA_DUMP_BYTECODE", int, DEBUG_FRONTEND)
|
|
327
|
+
|
|
328
|
+
# Force dump of control flow graph
|
|
329
|
+
DUMP_CFG = _readenv("NUMBA_DUMP_CFG", int, DEBUG_FRONTEND)
|
|
330
|
+
|
|
331
|
+
# Force dump of Numba IR
|
|
332
|
+
DUMP_IR = _readenv("NUMBA_DUMP_IR", int, DEBUG_FRONTEND)
|
|
333
|
+
|
|
334
|
+
# Force dump of Numba IR in SSA form
|
|
335
|
+
DUMP_SSA = _readenv(
|
|
336
|
+
"NUMBA_DUMP_SSA", int, DEBUG_FRONTEND or DEBUG_TYPEINFER
|
|
337
|
+
)
|
|
338
|
+
|
|
339
|
+
# print debug info of analysis and optimization on array operations
|
|
340
|
+
DEBUG_ARRAY_OPT = _readenv("NUMBA_DEBUG_ARRAY_OPT", int, 0)
|
|
341
|
+
|
|
342
|
+
# insert debug stmts to print information at runtime
|
|
343
|
+
DEBUG_ARRAY_OPT_RUNTIME = _readenv(
|
|
344
|
+
"NUMBA_DEBUG_ARRAY_OPT_RUNTIME", int, 0
|
|
345
|
+
)
|
|
346
|
+
|
|
347
|
+
# print stats about parallel for-loops
|
|
348
|
+
DEBUG_ARRAY_OPT_STATS = _readenv("NUMBA_DEBUG_ARRAY_OPT_STATS", int, 0)
|
|
349
|
+
|
|
350
|
+
# prints user friendly information about parallel
|
|
351
|
+
PARALLEL_DIAGNOSTICS = _readenv("NUMBA_PARALLEL_DIAGNOSTICS", int, 0)
|
|
352
|
+
|
|
353
|
+
# print debug info of inline closure pass
|
|
354
|
+
DEBUG_INLINE_CLOSURE = _readenv("NUMBA_DEBUG_INLINE_CLOSURE", int, 0)
|
|
355
|
+
|
|
356
|
+
# Force dump of LLVM IR
|
|
357
|
+
DUMP_LLVM = _readenv("NUMBA_DUMP_LLVM", int, DEBUG)
|
|
358
|
+
|
|
359
|
+
# Force dump of Function optimized LLVM IR
|
|
360
|
+
DUMP_FUNC_OPT = _readenv("NUMBA_DUMP_FUNC_OPT", int, DEBUG)
|
|
361
|
+
|
|
362
|
+
# Force dump of Optimized LLVM IR
|
|
363
|
+
DUMP_OPTIMIZED = _readenv("NUMBA_DUMP_OPTIMIZED", int, DEBUG)
|
|
364
|
+
|
|
365
|
+
# Force disable loop vectorize
|
|
366
|
+
LOOP_VECTORIZE = _readenv("NUMBA_LOOP_VECTORIZE", int, 1)
|
|
367
|
+
|
|
368
|
+
# Enable superword-level parallelism vectorization, default is off
|
|
369
|
+
# since #8705 (miscompilation).
|
|
370
|
+
SLP_VECTORIZE = _readenv("NUMBA_SLP_VECTORIZE", int, 0)
|
|
371
|
+
|
|
372
|
+
# Force dump of generated assembly
|
|
373
|
+
DUMP_ASSEMBLY = _readenv("NUMBA_DUMP_ASSEMBLY", int, DEBUG)
|
|
374
|
+
|
|
375
|
+
# Force dump of type annotation
|
|
376
|
+
ANNOTATE = _readenv("NUMBA_DUMP_ANNOTATION", int, 0)
|
|
377
|
+
|
|
378
|
+
# Dump IR in such as way as to aid in "diff"ing.
|
|
379
|
+
DIFF_IR = _readenv("NUMBA_DIFF_IR", int, 0)
|
|
380
|
+
|
|
381
|
+
# Dump type annotation in html format
|
|
382
|
+
def fmt_html_path(path):
|
|
383
|
+
if path is None:
|
|
384
|
+
return path
|
|
385
|
+
else:
|
|
386
|
+
return os.path.abspath(path)
|
|
387
|
+
|
|
388
|
+
HTML = _readenv("NUMBA_DUMP_HTML", fmt_html_path, None)
|
|
389
|
+
|
|
390
|
+
# x86-64 specific
|
|
391
|
+
# Enable AVX on supported platforms where it won't degrade performance.
|
|
392
|
+
def avx_default():
|
|
393
|
+
if not _os_supports_avx():
|
|
394
|
+
return False
|
|
395
|
+
else:
|
|
396
|
+
# There are various performance issues with AVX and LLVM
|
|
397
|
+
# on some CPUs (list at
|
|
398
|
+
# http://llvm.org/bugs/buglist.cgi?quicksearch=avx).
|
|
399
|
+
# For now we'd rather disable it, since it can pessimize code
|
|
400
|
+
cpu_name = CPU_NAME or ll.get_host_cpu_name()
|
|
401
|
+
disabled_cpus = {
|
|
402
|
+
"corei7-avx",
|
|
403
|
+
"core-avx-i",
|
|
404
|
+
"sandybridge",
|
|
405
|
+
"ivybridge",
|
|
406
|
+
}
|
|
407
|
+
# Disable known baseline CPU names that virtual machines may
|
|
408
|
+
# incorrectly report as having AVX support.
|
|
409
|
+
# This can cause problems with the SVML-pass's use of AVX512.
|
|
410
|
+
# See https://github.com/numba/numba/issues/9582
|
|
411
|
+
disabled_cpus |= {"nocona"}
|
|
412
|
+
return cpu_name not in disabled_cpus
|
|
413
|
+
|
|
414
|
+
ENABLE_AVX = _readenv("NUMBA_ENABLE_AVX", int, avx_default)
|
|
415
|
+
|
|
416
|
+
# if set and SVML is available, it will be disabled
|
|
417
|
+
# By default, it's disabled on 32-bit platforms.
|
|
418
|
+
DISABLE_INTEL_SVML = _readenv(
|
|
419
|
+
"NUMBA_DISABLE_INTEL_SVML", int, IS_32BITS
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
# Disable jit for debugging
|
|
423
|
+
DISABLE_JIT = _readenv("NUMBA_DISABLE_JIT", int, 0)
|
|
424
|
+
|
|
425
|
+
# choose parallel backend to use
|
|
426
|
+
THREADING_LAYER_PRIORITY = _readenv(
|
|
427
|
+
"NUMBA_THREADING_LAYER_PRIORITY",
|
|
428
|
+
lambda string: string.split(),
|
|
429
|
+
["tbb", "omp", "workqueue"],
|
|
430
|
+
)
|
|
431
|
+
THREADING_LAYER = _readenv("NUMBA_THREADING_LAYER", str, "default")
|
|
432
|
+
|
|
433
|
+
# CUDA Configs
|
|
434
|
+
|
|
435
|
+
# Whether to warn about kernel launches where a host array
|
|
436
|
+
# is used as a parameter, forcing a copy to and from the device.
|
|
437
|
+
# On by default.
|
|
438
|
+
CUDA_WARN_ON_IMPLICIT_COPY = _readenv(
|
|
439
|
+
"NUMBA_CUDA_WARN_ON_IMPLICIT_COPY", int, 1
|
|
440
|
+
)
|
|
441
|
+
|
|
442
|
+
# Force CUDA compute capability to a specific version
|
|
443
|
+
FORCE_CUDA_CC = _readenv("NUMBA_FORCE_CUDA_CC", _parse_cc, None)
|
|
444
|
+
|
|
445
|
+
# The default compute capability to target when compiling to PTX.
|
|
446
|
+
CUDA_DEFAULT_PTX_CC = _readenv(
|
|
447
|
+
"NUMBA_CUDA_DEFAULT_PTX_CC", _parse_cc, (5, 0)
|
|
448
|
+
)
|
|
449
|
+
|
|
450
|
+
# Disable CUDA support
|
|
451
|
+
DISABLE_CUDA = _readenv(
|
|
452
|
+
"NUMBA_DISABLE_CUDA", int, int(MACHINE_BITS == 32)
|
|
453
|
+
)
|
|
454
|
+
|
|
455
|
+
# Enable CUDA simulator
|
|
456
|
+
ENABLE_CUDASIM = _readenv("NUMBA_ENABLE_CUDASIM", int, 0)
|
|
457
|
+
|
|
458
|
+
# CUDA logging level
|
|
459
|
+
# Any level name from the *logging* module. Case insensitive.
|
|
460
|
+
# Defaults to CRITICAL if not set or invalid.
|
|
461
|
+
# Note: This setting only applies when logging is not configured.
|
|
462
|
+
# Any existing logging configuration is preserved.
|
|
463
|
+
CUDA_LOG_LEVEL = _readenv("NUMBA_CUDA_LOG_LEVEL", str, "")
|
|
464
|
+
|
|
465
|
+
# Include argument values in the CUDA Driver API logs
|
|
466
|
+
CUDA_LOG_API_ARGS = _readenv("NUMBA_CUDA_LOG_API_ARGS", int, 0)
|
|
467
|
+
|
|
468
|
+
# Maximum number of pending CUDA deallocations (default: 10)
|
|
469
|
+
CUDA_DEALLOCS_COUNT = _readenv(
|
|
470
|
+
"NUMBA_CUDA_MAX_PENDING_DEALLOCS_COUNT", int, 10
|
|
471
|
+
)
|
|
472
|
+
|
|
473
|
+
# Maximum ratio of pending CUDA deallocations to capacity (default: 0.2)
|
|
474
|
+
CUDA_DEALLOCS_RATIO = _readenv(
|
|
475
|
+
"NUMBA_CUDA_MAX_PENDING_DEALLOCS_RATIO", float, 0.2
|
|
476
|
+
)
|
|
477
|
+
|
|
478
|
+
CUDA_ARRAY_INTERFACE_SYNC = _readenv(
|
|
479
|
+
"NUMBA_CUDA_ARRAY_INTERFACE_SYNC", int, 1
|
|
480
|
+
)
|
|
481
|
+
|
|
482
|
+
# Path of the directory that the CUDA driver libraries are located
|
|
483
|
+
CUDA_DRIVER = _readenv("NUMBA_CUDA_DRIVER", str, "")
|
|
484
|
+
|
|
485
|
+
# Buffer size for logs produced by CUDA driver operations (e.g.
|
|
486
|
+
# linking)
|
|
487
|
+
CUDA_LOG_SIZE = _readenv("NUMBA_CUDA_LOG_SIZE", int, 1024)
|
|
488
|
+
|
|
489
|
+
# Whether to generate verbose log messages when JIT linking
|
|
490
|
+
CUDA_VERBOSE_JIT_LOG = _readenv("NUMBA_CUDA_VERBOSE_JIT_LOG", int, 1)
|
|
491
|
+
|
|
492
|
+
# Whether the default stream is the per-thread default stream
|
|
493
|
+
CUDA_PER_THREAD_DEFAULT_STREAM = _readenv(
|
|
494
|
+
"NUMBA_CUDA_PER_THREAD_DEFAULT_STREAM", int, 0
|
|
495
|
+
)
|
|
496
|
+
|
|
497
|
+
CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY = _readenv(
|
|
498
|
+
"NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY", int, 0
|
|
499
|
+
)
|
|
500
|
+
|
|
501
|
+
# Location of the CUDA include files
|
|
502
|
+
if IS_WIN32:
|
|
503
|
+
cuda_path = os.environ.get("CUDA_PATH")
|
|
504
|
+
if cuda_path:
|
|
505
|
+
default_cuda_include_path = os.path.join(cuda_path, "include")
|
|
506
|
+
else:
|
|
507
|
+
default_cuda_include_path = "cuda_include_not_found"
|
|
508
|
+
else:
|
|
509
|
+
default_cuda_include_path = os.path.join(
|
|
510
|
+
os.sep, "usr", "local", "cuda", "include"
|
|
511
|
+
)
|
|
512
|
+
CUDA_INCLUDE_PATH = _readenv(
|
|
513
|
+
"NUMBA_CUDA_INCLUDE_PATH", str, default_cuda_include_path
|
|
514
|
+
)
|
|
515
|
+
|
|
516
|
+
# Threading settings
|
|
517
|
+
|
|
518
|
+
# The default number of threads to use.
|
|
519
|
+
def num_threads_default():
|
|
520
|
+
try:
|
|
521
|
+
sched_getaffinity = os.sched_getaffinity
|
|
522
|
+
except AttributeError:
|
|
523
|
+
pass
|
|
524
|
+
else:
|
|
525
|
+
return max(1, len(sched_getaffinity(0)))
|
|
526
|
+
|
|
527
|
+
cpu_count = os.cpu_count()
|
|
528
|
+
if cpu_count is not None:
|
|
529
|
+
return max(1, cpu_count)
|
|
530
|
+
|
|
531
|
+
return 1
|
|
532
|
+
|
|
533
|
+
NUMBA_DEFAULT_NUM_THREADS = num_threads_default()
|
|
534
|
+
|
|
535
|
+
# Numba thread pool size (defaults to number of CPUs on the system).
|
|
536
|
+
_NUMBA_NUM_THREADS = _readenv(
|
|
537
|
+
"NUMBA_NUM_THREADS", int, NUMBA_DEFAULT_NUM_THREADS
|
|
538
|
+
)
|
|
539
|
+
if (
|
|
540
|
+
"NUMBA_NUM_THREADS" in globals()
|
|
541
|
+
and globals()["NUMBA_NUM_THREADS"] != _NUMBA_NUM_THREADS
|
|
542
|
+
):
|
|
543
|
+
from numba.cuda.np.ufunc import parallel
|
|
544
|
+
|
|
545
|
+
if parallel._is_initialized:
|
|
546
|
+
raise RuntimeError(
|
|
547
|
+
"Cannot set NUMBA_NUM_THREADS to a "
|
|
548
|
+
"different value once the threads have been "
|
|
549
|
+
"launched (currently have %s, "
|
|
550
|
+
"trying to set %s)"
|
|
551
|
+
% (_NUMBA_NUM_THREADS, globals()["NUMBA_NUM_THREADS"])
|
|
552
|
+
)
|
|
553
|
+
|
|
554
|
+
NUMBA_NUM_THREADS = _NUMBA_NUM_THREADS
|
|
555
|
+
del _NUMBA_NUM_THREADS
|
|
556
|
+
|
|
557
|
+
# sys.monitoring support
|
|
558
|
+
ENABLE_SYS_MONITORING = _readenv("NUMBA_ENABLE_SYS_MONITORING", int, 0)
|
|
559
|
+
|
|
560
|
+
# Profiling support
|
|
561
|
+
|
|
562
|
+
# Indicates if a profiler detected. Only VTune can be detected for now
|
|
563
|
+
RUNNING_UNDER_PROFILER = "VS_PROFILER" in os.environ
|
|
564
|
+
|
|
565
|
+
# Enables jit events in LLVM to support profiling of dynamic code
|
|
566
|
+
ENABLE_PROFILING = _readenv(
|
|
567
|
+
"NUMBA_ENABLE_PROFILING", int, int(RUNNING_UNDER_PROFILER)
|
|
568
|
+
)
|
|
569
|
+
|
|
570
|
+
# Debug Info
|
|
571
|
+
|
|
572
|
+
# The default value for the `debug` flag
|
|
573
|
+
DEBUGINFO_DEFAULT = _readenv("NUMBA_DEBUGINFO", int, ENABLE_PROFILING)
|
|
574
|
+
CUDA_DEBUGINFO_DEFAULT = _readenv("NUMBA_CUDA_DEBUGINFO", int, 0)
|
|
575
|
+
|
|
576
|
+
EXTEND_VARIABLE_LIFETIMES = _readenv(
|
|
577
|
+
"NUMBA_EXTEND_VARIABLE_LIFETIMES", int, 0
|
|
578
|
+
)
|
|
579
|
+
|
|
580
|
+
# gdb binary location
|
|
581
|
+
def which_gdb(path_or_bin):
|
|
582
|
+
gdb = shutil.which(path_or_bin)
|
|
583
|
+
return gdb if gdb is not None else path_or_bin
|
|
584
|
+
|
|
585
|
+
GDB_BINARY = _readenv("NUMBA_GDB_BINARY", which_gdb, "gdb")
|
|
586
|
+
|
|
587
|
+
# CUDA Memory management
|
|
588
|
+
CUDA_MEMORY_MANAGER = _readenv(
|
|
589
|
+
"NUMBA_CUDA_MEMORY_MANAGER", str, "default"
|
|
590
|
+
)
|
|
591
|
+
|
|
592
|
+
# Experimental refprune pass
|
|
593
|
+
LLVM_REFPRUNE_PASS = _readenv(
|
|
594
|
+
"NUMBA_LLVM_REFPRUNE_PASS",
|
|
595
|
+
int,
|
|
596
|
+
1,
|
|
597
|
+
)
|
|
598
|
+
LLVM_REFPRUNE_FLAGS = _readenv(
|
|
599
|
+
"NUMBA_LLVM_REFPRUNE_FLAGS",
|
|
600
|
+
str,
|
|
601
|
+
"all" if LLVM_REFPRUNE_PASS else "",
|
|
602
|
+
)
|
|
603
|
+
|
|
604
|
+
# llvmlite memory manager
|
|
605
|
+
USE_LLVMLITE_MEMORY_MANAGER = _readenv(
|
|
606
|
+
"NUMBA_USE_LLVMLITE_MEMORY_MANAGER", int, None
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
# Timing support.
|
|
610
|
+
|
|
611
|
+
# LLVM_PASS_TIMINGS enables LLVM recording of pass timings.
|
|
612
|
+
LLVM_PASS_TIMINGS = _readenv(
|
|
613
|
+
"NUMBA_LLVM_PASS_TIMINGS",
|
|
614
|
+
int,
|
|
615
|
+
0,
|
|
616
|
+
)
|
|
617
|
+
|
|
618
|
+
# Coverage support.
|
|
619
|
+
|
|
620
|
+
# JIT_COVERAGE (bool) controls whether the compiler report compiled
|
|
621
|
+
# lines to coverage tools. Defaults to off.
|
|
622
|
+
JIT_COVERAGE = _readenv(
|
|
623
|
+
"NUMBA_JIT_COVERAGE",
|
|
624
|
+
int,
|
|
625
|
+
0,
|
|
626
|
+
)
|
|
627
|
+
|
|
628
|
+
# Inject the configuration values into the module globals
|
|
629
|
+
for name, value in locals().copy().items():
|
|
630
|
+
if name.isupper():
|
|
631
|
+
globals()[name] = value
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
_env_reloader = _EnvReloader()
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
def reload_config():
|
|
638
|
+
"""
|
|
639
|
+
Reload the configuration from environment variables, if necessary.
|
|
640
|
+
"""
|
|
641
|
+
_env_reloader.update()
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
# use numba.core.config if available, otherwise use numba.cuda.core.config
|
|
645
|
+
try:
|
|
646
|
+
import numba.core.config as _config
|
|
647
|
+
|
|
648
|
+
sys.modules[__name__] = _config
|
|
649
|
+
except ImportError:
|
|
650
|
+
pass
|