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.
Files changed (488) hide show
  1. _numba_cuda_redirector.pth +4 -0
  2. _numba_cuda_redirector.py +89 -0
  3. numba_cuda/VERSION +1 -0
  4. numba_cuda/__init__.py +6 -0
  5. numba_cuda/_version.py +11 -0
  6. numba_cuda/numba/cuda/__init__.py +70 -0
  7. numba_cuda/numba/cuda/_internal/cuda_bf16.py +16394 -0
  8. numba_cuda/numba/cuda/_internal/cuda_fp16.py +8112 -0
  9. numba_cuda/numba/cuda/api.py +577 -0
  10. numba_cuda/numba/cuda/api_util.py +76 -0
  11. numba_cuda/numba/cuda/args.py +72 -0
  12. numba_cuda/numba/cuda/bf16.py +397 -0
  13. numba_cuda/numba/cuda/cache_hints.py +287 -0
  14. numba_cuda/numba/cuda/cext/__init__.py +2 -0
  15. numba_cuda/numba/cuda/cext/_devicearray.cp313-win_amd64.pyd +0 -0
  16. numba_cuda/numba/cuda/cext/_devicearray.cpp +159 -0
  17. numba_cuda/numba/cuda/cext/_devicearray.h +29 -0
  18. numba_cuda/numba/cuda/cext/_dispatcher.cp313-win_amd64.pyd +0 -0
  19. numba_cuda/numba/cuda/cext/_dispatcher.cpp +1098 -0
  20. numba_cuda/numba/cuda/cext/_hashtable.cpp +532 -0
  21. numba_cuda/numba/cuda/cext/_hashtable.h +135 -0
  22. numba_cuda/numba/cuda/cext/_helperlib.c +71 -0
  23. numba_cuda/numba/cuda/cext/_helperlib.cp313-win_amd64.pyd +0 -0
  24. numba_cuda/numba/cuda/cext/_helpermod.c +82 -0
  25. numba_cuda/numba/cuda/cext/_pymodule.h +38 -0
  26. numba_cuda/numba/cuda/cext/_typeconv.cp313-win_amd64.pyd +0 -0
  27. numba_cuda/numba/cuda/cext/_typeconv.cpp +206 -0
  28. numba_cuda/numba/cuda/cext/_typeof.cpp +1159 -0
  29. numba_cuda/numba/cuda/cext/_typeof.h +19 -0
  30. numba_cuda/numba/cuda/cext/capsulethunk.h +111 -0
  31. numba_cuda/numba/cuda/cext/mviewbuf.c +385 -0
  32. numba_cuda/numba/cuda/cext/mviewbuf.cp313-win_amd64.pyd +0 -0
  33. numba_cuda/numba/cuda/cext/typeconv.cpp +212 -0
  34. numba_cuda/numba/cuda/cext/typeconv.hpp +101 -0
  35. numba_cuda/numba/cuda/cg.py +67 -0
  36. numba_cuda/numba/cuda/cgutils.py +1294 -0
  37. numba_cuda/numba/cuda/cloudpickle/__init__.py +21 -0
  38. numba_cuda/numba/cuda/cloudpickle/cloudpickle.py +1598 -0
  39. numba_cuda/numba/cuda/cloudpickle/cloudpickle_fast.py +17 -0
  40. numba_cuda/numba/cuda/codegen.py +541 -0
  41. numba_cuda/numba/cuda/compiler.py +1396 -0
  42. numba_cuda/numba/cuda/core/analysis.py +758 -0
  43. numba_cuda/numba/cuda/core/annotations/__init__.py +0 -0
  44. numba_cuda/numba/cuda/core/annotations/pretty_annotate.py +288 -0
  45. numba_cuda/numba/cuda/core/annotations/type_annotations.py +305 -0
  46. numba_cuda/numba/cuda/core/base.py +1332 -0
  47. numba_cuda/numba/cuda/core/boxing.py +1411 -0
  48. numba_cuda/numba/cuda/core/bytecode.py +728 -0
  49. numba_cuda/numba/cuda/core/byteflow.py +2346 -0
  50. numba_cuda/numba/cuda/core/caching.py +744 -0
  51. numba_cuda/numba/cuda/core/callconv.py +392 -0
  52. numba_cuda/numba/cuda/core/codegen.py +171 -0
  53. numba_cuda/numba/cuda/core/compiler.py +199 -0
  54. numba_cuda/numba/cuda/core/compiler_lock.py +85 -0
  55. numba_cuda/numba/cuda/core/compiler_machinery.py +497 -0
  56. numba_cuda/numba/cuda/core/config.py +650 -0
  57. numba_cuda/numba/cuda/core/consts.py +124 -0
  58. numba_cuda/numba/cuda/core/controlflow.py +989 -0
  59. numba_cuda/numba/cuda/core/entrypoints.py +57 -0
  60. numba_cuda/numba/cuda/core/environment.py +66 -0
  61. numba_cuda/numba/cuda/core/errors.py +917 -0
  62. numba_cuda/numba/cuda/core/event.py +511 -0
  63. numba_cuda/numba/cuda/core/funcdesc.py +330 -0
  64. numba_cuda/numba/cuda/core/generators.py +387 -0
  65. numba_cuda/numba/cuda/core/imputils.py +509 -0
  66. numba_cuda/numba/cuda/core/inline_closurecall.py +1787 -0
  67. numba_cuda/numba/cuda/core/interpreter.py +3617 -0
  68. numba_cuda/numba/cuda/core/ir.py +1812 -0
  69. numba_cuda/numba/cuda/core/ir_utils.py +2638 -0
  70. numba_cuda/numba/cuda/core/optional.py +129 -0
  71. numba_cuda/numba/cuda/core/options.py +262 -0
  72. numba_cuda/numba/cuda/core/postproc.py +249 -0
  73. numba_cuda/numba/cuda/core/pythonapi.py +1859 -0
  74. numba_cuda/numba/cuda/core/registry.py +46 -0
  75. numba_cuda/numba/cuda/core/removerefctpass.py +123 -0
  76. numba_cuda/numba/cuda/core/rewrites/__init__.py +26 -0
  77. numba_cuda/numba/cuda/core/rewrites/ir_print.py +91 -0
  78. numba_cuda/numba/cuda/core/rewrites/registry.py +104 -0
  79. numba_cuda/numba/cuda/core/rewrites/static_binop.py +41 -0
  80. numba_cuda/numba/cuda/core/rewrites/static_getitem.py +189 -0
  81. numba_cuda/numba/cuda/core/rewrites/static_raise.py +100 -0
  82. numba_cuda/numba/cuda/core/sigutils.py +68 -0
  83. numba_cuda/numba/cuda/core/ssa.py +498 -0
  84. numba_cuda/numba/cuda/core/targetconfig.py +330 -0
  85. numba_cuda/numba/cuda/core/tracing.py +231 -0
  86. numba_cuda/numba/cuda/core/transforms.py +956 -0
  87. numba_cuda/numba/cuda/core/typed_passes.py +867 -0
  88. numba_cuda/numba/cuda/core/typeinfer.py +1950 -0
  89. numba_cuda/numba/cuda/core/unsafe/__init__.py +0 -0
  90. numba_cuda/numba/cuda/core/unsafe/bytes.py +67 -0
  91. numba_cuda/numba/cuda/core/unsafe/eh.py +67 -0
  92. numba_cuda/numba/cuda/core/unsafe/refcount.py +98 -0
  93. numba_cuda/numba/cuda/core/untyped_passes.py +1979 -0
  94. numba_cuda/numba/cuda/cpython/builtins.py +1153 -0
  95. numba_cuda/numba/cuda/cpython/charseq.py +1218 -0
  96. numba_cuda/numba/cuda/cpython/cmathimpl.py +560 -0
  97. numba_cuda/numba/cuda/cpython/enumimpl.py +103 -0
  98. numba_cuda/numba/cuda/cpython/iterators.py +167 -0
  99. numba_cuda/numba/cuda/cpython/listobj.py +1326 -0
  100. numba_cuda/numba/cuda/cpython/mathimpl.py +499 -0
  101. numba_cuda/numba/cuda/cpython/numbers.py +1475 -0
  102. numba_cuda/numba/cuda/cpython/rangeobj.py +289 -0
  103. numba_cuda/numba/cuda/cpython/slicing.py +322 -0
  104. numba_cuda/numba/cuda/cpython/tupleobj.py +456 -0
  105. numba_cuda/numba/cuda/cpython/unicode.py +2865 -0
  106. numba_cuda/numba/cuda/cpython/unicode_support.py +1597 -0
  107. numba_cuda/numba/cuda/cpython/unsafe/__init__.py +0 -0
  108. numba_cuda/numba/cuda/cpython/unsafe/numbers.py +64 -0
  109. numba_cuda/numba/cuda/cpython/unsafe/tuple.py +92 -0
  110. numba_cuda/numba/cuda/cuda_paths.py +691 -0
  111. numba_cuda/numba/cuda/cudadecl.py +556 -0
  112. numba_cuda/numba/cuda/cudadrv/__init__.py +14 -0
  113. numba_cuda/numba/cuda/cudadrv/devicearray.py +951 -0
  114. numba_cuda/numba/cuda/cudadrv/devices.py +249 -0
  115. numba_cuda/numba/cuda/cudadrv/driver.py +3222 -0
  116. numba_cuda/numba/cuda/cudadrv/drvapi.py +435 -0
  117. numba_cuda/numba/cuda/cudadrv/dummyarray.py +558 -0
  118. numba_cuda/numba/cuda/cudadrv/enums.py +613 -0
  119. numba_cuda/numba/cuda/cudadrv/error.py +48 -0
  120. numba_cuda/numba/cuda/cudadrv/libs.py +220 -0
  121. numba_cuda/numba/cuda/cudadrv/linkable_code.py +184 -0
  122. numba_cuda/numba/cuda/cudadrv/mappings.py +14 -0
  123. numba_cuda/numba/cuda/cudadrv/ndarray.py +26 -0
  124. numba_cuda/numba/cuda/cudadrv/nvrtc.py +193 -0
  125. numba_cuda/numba/cuda/cudadrv/nvvm.py +756 -0
  126. numba_cuda/numba/cuda/cudadrv/rtapi.py +13 -0
  127. numba_cuda/numba/cuda/cudadrv/runtime.py +34 -0
  128. numba_cuda/numba/cuda/cudaimpl.py +995 -0
  129. numba_cuda/numba/cuda/cudamath.py +149 -0
  130. numba_cuda/numba/cuda/datamodel/__init__.py +7 -0
  131. numba_cuda/numba/cuda/datamodel/cuda_manager.py +66 -0
  132. numba_cuda/numba/cuda/datamodel/cuda_models.py +1446 -0
  133. numba_cuda/numba/cuda/datamodel/cuda_packer.py +224 -0
  134. numba_cuda/numba/cuda/datamodel/cuda_registry.py +22 -0
  135. numba_cuda/numba/cuda/datamodel/cuda_testing.py +153 -0
  136. numba_cuda/numba/cuda/datamodel/manager.py +11 -0
  137. numba_cuda/numba/cuda/datamodel/models.py +9 -0
  138. numba_cuda/numba/cuda/datamodel/packer.py +9 -0
  139. numba_cuda/numba/cuda/datamodel/registry.py +11 -0
  140. numba_cuda/numba/cuda/datamodel/testing.py +11 -0
  141. numba_cuda/numba/cuda/debuginfo.py +903 -0
  142. numba_cuda/numba/cuda/decorators.py +294 -0
  143. numba_cuda/numba/cuda/descriptor.py +35 -0
  144. numba_cuda/numba/cuda/device_init.py +158 -0
  145. numba_cuda/numba/cuda/deviceufunc.py +1021 -0
  146. numba_cuda/numba/cuda/dispatcher.py +2463 -0
  147. numba_cuda/numba/cuda/errors.py +72 -0
  148. numba_cuda/numba/cuda/extending.py +697 -0
  149. numba_cuda/numba/cuda/flags.py +178 -0
  150. numba_cuda/numba/cuda/fp16.py +357 -0
  151. numba_cuda/numba/cuda/include/12/cuda_bf16.h +5118 -0
  152. numba_cuda/numba/cuda/include/12/cuda_bf16.hpp +3865 -0
  153. numba_cuda/numba/cuda/include/12/cuda_fp16.h +5363 -0
  154. numba_cuda/numba/cuda/include/12/cuda_fp16.hpp +3483 -0
  155. numba_cuda/numba/cuda/include/13/cuda_bf16.h +5118 -0
  156. numba_cuda/numba/cuda/include/13/cuda_bf16.hpp +3865 -0
  157. numba_cuda/numba/cuda/include/13/cuda_fp16.h +5363 -0
  158. numba_cuda/numba/cuda/include/13/cuda_fp16.hpp +3483 -0
  159. numba_cuda/numba/cuda/initialize.py +24 -0
  160. numba_cuda/numba/cuda/intrinsic_wrapper.py +41 -0
  161. numba_cuda/numba/cuda/intrinsics.py +382 -0
  162. numba_cuda/numba/cuda/itanium_mangler.py +214 -0
  163. numba_cuda/numba/cuda/kernels/__init__.py +2 -0
  164. numba_cuda/numba/cuda/kernels/reduction.py +265 -0
  165. numba_cuda/numba/cuda/kernels/transpose.py +65 -0
  166. numba_cuda/numba/cuda/libdevice.py +3386 -0
  167. numba_cuda/numba/cuda/libdevicedecl.py +20 -0
  168. numba_cuda/numba/cuda/libdevicefuncs.py +1060 -0
  169. numba_cuda/numba/cuda/libdeviceimpl.py +88 -0
  170. numba_cuda/numba/cuda/locks.py +19 -0
  171. numba_cuda/numba/cuda/lowering.py +1951 -0
  172. numba_cuda/numba/cuda/mathimpl.py +374 -0
  173. numba_cuda/numba/cuda/memory_management/__init__.py +4 -0
  174. numba_cuda/numba/cuda/memory_management/memsys.cu +99 -0
  175. numba_cuda/numba/cuda/memory_management/memsys.cuh +22 -0
  176. numba_cuda/numba/cuda/memory_management/nrt.cu +212 -0
  177. numba_cuda/numba/cuda/memory_management/nrt.cuh +48 -0
  178. numba_cuda/numba/cuda/memory_management/nrt.py +390 -0
  179. numba_cuda/numba/cuda/memory_management/nrt_context.py +438 -0
  180. numba_cuda/numba/cuda/misc/appdirs.py +594 -0
  181. numba_cuda/numba/cuda/misc/cffiimpl.py +24 -0
  182. numba_cuda/numba/cuda/misc/coverage_support.py +43 -0
  183. numba_cuda/numba/cuda/misc/dump_style.py +41 -0
  184. numba_cuda/numba/cuda/misc/findlib.py +75 -0
  185. numba_cuda/numba/cuda/misc/firstlinefinder.py +96 -0
  186. numba_cuda/numba/cuda/misc/gdb_hook.py +240 -0
  187. numba_cuda/numba/cuda/misc/literal.py +28 -0
  188. numba_cuda/numba/cuda/misc/llvm_pass_timings.py +412 -0
  189. numba_cuda/numba/cuda/misc/special.py +94 -0
  190. numba_cuda/numba/cuda/models.py +56 -0
  191. numba_cuda/numba/cuda/np/arraymath.py +5130 -0
  192. numba_cuda/numba/cuda/np/arrayobj.py +7635 -0
  193. numba_cuda/numba/cuda/np/extensions.py +11 -0
  194. numba_cuda/numba/cuda/np/linalg.py +3087 -0
  195. numba_cuda/numba/cuda/np/math/__init__.py +0 -0
  196. numba_cuda/numba/cuda/np/math/cmathimpl.py +558 -0
  197. numba_cuda/numba/cuda/np/math/mathimpl.py +487 -0
  198. numba_cuda/numba/cuda/np/math/numbers.py +1461 -0
  199. numba_cuda/numba/cuda/np/npdatetime.py +969 -0
  200. numba_cuda/numba/cuda/np/npdatetime_helpers.py +217 -0
  201. numba_cuda/numba/cuda/np/npyfuncs.py +1808 -0
  202. numba_cuda/numba/cuda/np/npyimpl.py +1027 -0
  203. numba_cuda/numba/cuda/np/numpy_support.py +798 -0
  204. numba_cuda/numba/cuda/np/polynomial/__init__.py +4 -0
  205. numba_cuda/numba/cuda/np/polynomial/polynomial_core.py +242 -0
  206. numba_cuda/numba/cuda/np/polynomial/polynomial_functions.py +380 -0
  207. numba_cuda/numba/cuda/np/ufunc/__init__.py +4 -0
  208. numba_cuda/numba/cuda/np/ufunc/decorators.py +203 -0
  209. numba_cuda/numba/cuda/np/ufunc/sigparse.py +68 -0
  210. numba_cuda/numba/cuda/np/ufunc/ufuncbuilder.py +65 -0
  211. numba_cuda/numba/cuda/np/ufunc_db.py +1282 -0
  212. numba_cuda/numba/cuda/np/unsafe/__init__.py +0 -0
  213. numba_cuda/numba/cuda/np/unsafe/ndarray.py +84 -0
  214. numba_cuda/numba/cuda/nvvmutils.py +254 -0
  215. numba_cuda/numba/cuda/printimpl.py +126 -0
  216. numba_cuda/numba/cuda/random.py +308 -0
  217. numba_cuda/numba/cuda/reshape_funcs.cu +156 -0
  218. numba_cuda/numba/cuda/serialize.py +267 -0
  219. numba_cuda/numba/cuda/simulator/__init__.py +63 -0
  220. numba_cuda/numba/cuda/simulator/_internal/__init__.py +4 -0
  221. numba_cuda/numba/cuda/simulator/_internal/cuda_bf16.py +2 -0
  222. numba_cuda/numba/cuda/simulator/api.py +179 -0
  223. numba_cuda/numba/cuda/simulator/bf16.py +4 -0
  224. numba_cuda/numba/cuda/simulator/compiler.py +38 -0
  225. numba_cuda/numba/cuda/simulator/cudadrv/__init__.py +11 -0
  226. numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +462 -0
  227. numba_cuda/numba/cuda/simulator/cudadrv/devices.py +122 -0
  228. numba_cuda/numba/cuda/simulator/cudadrv/driver.py +66 -0
  229. numba_cuda/numba/cuda/simulator/cudadrv/drvapi.py +7 -0
  230. numba_cuda/numba/cuda/simulator/cudadrv/dummyarray.py +7 -0
  231. numba_cuda/numba/cuda/simulator/cudadrv/error.py +10 -0
  232. numba_cuda/numba/cuda/simulator/cudadrv/libs.py +10 -0
  233. numba_cuda/numba/cuda/simulator/cudadrv/linkable_code.py +61 -0
  234. numba_cuda/numba/cuda/simulator/cudadrv/nvrtc.py +11 -0
  235. numba_cuda/numba/cuda/simulator/cudadrv/nvvm.py +32 -0
  236. numba_cuda/numba/cuda/simulator/cudadrv/runtime.py +22 -0
  237. numba_cuda/numba/cuda/simulator/dispatcher.py +11 -0
  238. numba_cuda/numba/cuda/simulator/kernel.py +320 -0
  239. numba_cuda/numba/cuda/simulator/kernelapi.py +509 -0
  240. numba_cuda/numba/cuda/simulator/memory_management/__init__.py +4 -0
  241. numba_cuda/numba/cuda/simulator/memory_management/nrt.py +21 -0
  242. numba_cuda/numba/cuda/simulator/reduction.py +19 -0
  243. numba_cuda/numba/cuda/simulator/tests/support.py +4 -0
  244. numba_cuda/numba/cuda/simulator/vector_types.py +65 -0
  245. numba_cuda/numba/cuda/simulator_init.py +18 -0
  246. numba_cuda/numba/cuda/stubs.py +635 -0
  247. numba_cuda/numba/cuda/target.py +505 -0
  248. numba_cuda/numba/cuda/testing.py +347 -0
  249. numba_cuda/numba/cuda/tests/__init__.py +62 -0
  250. numba_cuda/numba/cuda/tests/benchmarks/__init__.py +0 -0
  251. numba_cuda/numba/cuda/tests/benchmarks/test_kernel_launch.py +119 -0
  252. numba_cuda/numba/cuda/tests/cloudpickle_main_class.py +9 -0
  253. numba_cuda/numba/cuda/tests/core/serialize_usecases.py +113 -0
  254. numba_cuda/numba/cuda/tests/core/test_itanium_mangler.py +83 -0
  255. numba_cuda/numba/cuda/tests/core/test_serialize.py +371 -0
  256. numba_cuda/numba/cuda/tests/cudadrv/__init__.py +9 -0
  257. numba_cuda/numba/cuda/tests/cudadrv/test_array_attr.py +147 -0
  258. numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +161 -0
  259. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_array_slicing.py +397 -0
  260. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_auto_context.py +24 -0
  261. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +180 -0
  262. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +313 -0
  263. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +187 -0
  264. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +621 -0
  265. numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +247 -0
  266. numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +100 -0
  267. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +198 -0
  268. numba_cuda/numba/cuda/tests/cudadrv/test_events.py +53 -0
  269. numba_cuda/numba/cuda/tests/cudadrv/test_host_alloc.py +72 -0
  270. numba_cuda/numba/cuda/tests/cudadrv/test_init.py +138 -0
  271. numba_cuda/numba/cuda/tests/cudadrv/test_inline_ptx.py +43 -0
  272. numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py +15 -0
  273. numba_cuda/numba/cuda/tests/cudadrv/test_linkable_code.py +58 -0
  274. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +348 -0
  275. numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +128 -0
  276. numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +301 -0
  277. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +174 -0
  278. numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +28 -0
  279. numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +185 -0
  280. numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py +39 -0
  281. numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py +23 -0
  282. numba_cuda/numba/cuda/tests/cudadrv/test_reset_device.py +38 -0
  283. numba_cuda/numba/cuda/tests/cudadrv/test_runtime.py +48 -0
  284. numba_cuda/numba/cuda/tests/cudadrv/test_select_device.py +44 -0
  285. numba_cuda/numba/cuda/tests/cudadrv/test_streams.py +127 -0
  286. numba_cuda/numba/cuda/tests/cudapy/__init__.py +9 -0
  287. numba_cuda/numba/cuda/tests/cudapy/cache_usecases.py +231 -0
  288. numba_cuda/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py +50 -0
  289. numba_cuda/numba/cuda/tests/cudapy/cg_cache_usecases.py +36 -0
  290. numba_cuda/numba/cuda/tests/cudapy/complex_usecases.py +116 -0
  291. numba_cuda/numba/cuda/tests/cudapy/enum_usecases.py +59 -0
  292. numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +62 -0
  293. numba_cuda/numba/cuda/tests/cudapy/jitlink.ptx +28 -0
  294. numba_cuda/numba/cuda/tests/cudapy/overload_usecases.py +33 -0
  295. numba_cuda/numba/cuda/tests/cudapy/recursion_usecases.py +104 -0
  296. numba_cuda/numba/cuda/tests/cudapy/test_alignment.py +47 -0
  297. numba_cuda/numba/cuda/tests/cudapy/test_analysis.py +1122 -0
  298. numba_cuda/numba/cuda/tests/cudapy/test_array.py +344 -0
  299. numba_cuda/numba/cuda/tests/cudapy/test_array_alignment.py +268 -0
  300. numba_cuda/numba/cuda/tests/cudapy/test_array_args.py +203 -0
  301. numba_cuda/numba/cuda/tests/cudapy/test_array_methods.py +63 -0
  302. numba_cuda/numba/cuda/tests/cudapy/test_array_reductions.py +360 -0
  303. numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +1815 -0
  304. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +599 -0
  305. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +377 -0
  306. numba_cuda/numba/cuda/tests/cudapy/test_blackscholes.py +160 -0
  307. numba_cuda/numba/cuda/tests/cudapy/test_boolean.py +27 -0
  308. numba_cuda/numba/cuda/tests/cudapy/test_byteflow.py +98 -0
  309. numba_cuda/numba/cuda/tests/cudapy/test_cache_hints.py +210 -0
  310. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +683 -0
  311. numba_cuda/numba/cuda/tests/cudapy/test_casting.py +265 -0
  312. numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +42 -0
  313. numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +718 -0
  314. numba_cuda/numba/cuda/tests/cudapy/test_complex.py +370 -0
  315. numba_cuda/numba/cuda/tests/cudapy/test_complex_kernel.py +23 -0
  316. numba_cuda/numba/cuda/tests/cudapy/test_const_string.py +142 -0
  317. numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +178 -0
  318. numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +193 -0
  319. numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +131 -0
  320. numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +438 -0
  321. numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +94 -0
  322. numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +101 -0
  323. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +105 -0
  324. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +889 -0
  325. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +476 -0
  326. numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +500 -0
  327. numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +820 -0
  328. numba_cuda/numba/cuda/tests/cudapy/test_enums.py +152 -0
  329. numba_cuda/numba/cuda/tests/cudapy/test_errors.py +111 -0
  330. numba_cuda/numba/cuda/tests/cudapy/test_exception.py +170 -0
  331. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +1088 -0
  332. numba_cuda/numba/cuda/tests/cudapy/test_extending_types.py +71 -0
  333. numba_cuda/numba/cuda/tests/cudapy/test_fastmath.py +265 -0
  334. numba_cuda/numba/cuda/tests/cudapy/test_flow_control.py +1433 -0
  335. numba_cuda/numba/cuda/tests/cudapy/test_forall.py +57 -0
  336. numba_cuda/numba/cuda/tests/cudapy/test_freevar.py +34 -0
  337. numba_cuda/numba/cuda/tests/cudapy/test_frexp_ldexp.py +69 -0
  338. numba_cuda/numba/cuda/tests/cudapy/test_globals.py +62 -0
  339. numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +474 -0
  340. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py +167 -0
  341. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py +92 -0
  342. numba_cuda/numba/cuda/tests/cudapy/test_idiv.py +39 -0
  343. numba_cuda/numba/cuda/tests/cudapy/test_inline.py +170 -0
  344. numba_cuda/numba/cuda/tests/cudapy/test_inspect.py +255 -0
  345. numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +1219 -0
  346. numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +263 -0
  347. numba_cuda/numba/cuda/tests/cudapy/test_ir.py +598 -0
  348. numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +276 -0
  349. numba_cuda/numba/cuda/tests/cudapy/test_iterators.py +101 -0
  350. numba_cuda/numba/cuda/tests/cudapy/test_lang.py +68 -0
  351. numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +123 -0
  352. numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py +194 -0
  353. numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +220 -0
  354. numba_cuda/numba/cuda/tests/cudapy/test_localmem.py +173 -0
  355. numba_cuda/numba/cuda/tests/cudapy/test_make_function_to_jit_function.py +364 -0
  356. numba_cuda/numba/cuda/tests/cudapy/test_mandel.py +47 -0
  357. numba_cuda/numba/cuda/tests/cudapy/test_math.py +842 -0
  358. numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +76 -0
  359. numba_cuda/numba/cuda/tests/cudapy/test_minmax.py +78 -0
  360. numba_cuda/numba/cuda/tests/cudapy/test_montecarlo.py +25 -0
  361. numba_cuda/numba/cuda/tests/cudapy/test_multigpu.py +145 -0
  362. numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py +39 -0
  363. numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py +82 -0
  364. numba_cuda/numba/cuda/tests/cudapy/test_nondet.py +53 -0
  365. numba_cuda/numba/cuda/tests/cudapy/test_operator.py +504 -0
  366. numba_cuda/numba/cuda/tests/cudapy/test_optimization.py +93 -0
  367. numba_cuda/numba/cuda/tests/cudapy/test_overload.py +402 -0
  368. numba_cuda/numba/cuda/tests/cudapy/test_powi.py +128 -0
  369. numba_cuda/numba/cuda/tests/cudapy/test_print.py +193 -0
  370. numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py +37 -0
  371. numba_cuda/numba/cuda/tests/cudapy/test_random.py +117 -0
  372. numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +614 -0
  373. numba_cuda/numba/cuda/tests/cudapy/test_recursion.py +130 -0
  374. numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +94 -0
  375. numba_cuda/numba/cuda/tests/cudapy/test_retrieve_autoconverted_arrays.py +83 -0
  376. numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +86 -0
  377. numba_cuda/numba/cuda/tests/cudapy/test_slicing.py +40 -0
  378. numba_cuda/numba/cuda/tests/cudapy/test_sm.py +457 -0
  379. numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py +233 -0
  380. numba_cuda/numba/cuda/tests/cudapy/test_ssa.py +454 -0
  381. numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +56 -0
  382. numba_cuda/numba/cuda/tests/cudapy/test_sync.py +277 -0
  383. numba_cuda/numba/cuda/tests/cudapy/test_tracing.py +200 -0
  384. numba_cuda/numba/cuda/tests/cudapy/test_transpose.py +90 -0
  385. numba_cuda/numba/cuda/tests/cudapy/test_typeconv.py +333 -0
  386. numba_cuda/numba/cuda/tests/cudapy/test_typeinfer.py +538 -0
  387. numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +585 -0
  388. numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +42 -0
  389. numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +485 -0
  390. numba_cuda/numba/cuda/tests/cudapy/test_vectorize.py +312 -0
  391. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_complex.py +23 -0
  392. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +183 -0
  393. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_device.py +40 -0
  394. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_scalar_arg.py +40 -0
  395. numba_cuda/numba/cuda/tests/cudapy/test_warning.py +206 -0
  396. numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +331 -0
  397. numba_cuda/numba/cuda/tests/cudasim/__init__.py +9 -0
  398. numba_cuda/numba/cuda/tests/cudasim/support.py +9 -0
  399. numba_cuda/numba/cuda/tests/cudasim/test_cudasim_issues.py +111 -0
  400. numba_cuda/numba/cuda/tests/data/__init__.py +2 -0
  401. numba_cuda/numba/cuda/tests/data/cta_barrier.cu +28 -0
  402. numba_cuda/numba/cuda/tests/data/cuda_include.cu +10 -0
  403. numba_cuda/numba/cuda/tests/data/error.cu +12 -0
  404. numba_cuda/numba/cuda/tests/data/include/add.cuh +8 -0
  405. numba_cuda/numba/cuda/tests/data/jitlink.cu +28 -0
  406. numba_cuda/numba/cuda/tests/data/jitlink.ptx +49 -0
  407. numba_cuda/numba/cuda/tests/data/warn.cu +12 -0
  408. numba_cuda/numba/cuda/tests/doc_examples/__init__.py +9 -0
  409. numba_cuda/numba/cuda/tests/doc_examples/ffi/__init__.py +2 -0
  410. numba_cuda/numba/cuda/tests/doc_examples/ffi/functions.cu +54 -0
  411. numba_cuda/numba/cuda/tests/doc_examples/ffi/include/mul.cuh +8 -0
  412. numba_cuda/numba/cuda/tests/doc_examples/ffi/saxpy.cu +14 -0
  413. numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +86 -0
  414. numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +68 -0
  415. numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +81 -0
  416. numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +141 -0
  417. numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +160 -0
  418. numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +180 -0
  419. numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +119 -0
  420. numba_cuda/numba/cuda/tests/doc_examples/test_random.py +66 -0
  421. numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +80 -0
  422. numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +206 -0
  423. numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +53 -0
  424. numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +76 -0
  425. numba_cuda/numba/cuda/tests/nocuda/__init__.py +9 -0
  426. numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +391 -0
  427. numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py +48 -0
  428. numba_cuda/numba/cuda/tests/nocuda/test_import.py +63 -0
  429. numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +252 -0
  430. numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py +59 -0
  431. numba_cuda/numba/cuda/tests/nrt/__init__.py +9 -0
  432. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +387 -0
  433. numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +124 -0
  434. numba_cuda/numba/cuda/tests/support.py +900 -0
  435. numba_cuda/numba/cuda/typeconv/__init__.py +4 -0
  436. numba_cuda/numba/cuda/typeconv/castgraph.py +137 -0
  437. numba_cuda/numba/cuda/typeconv/rules.py +63 -0
  438. numba_cuda/numba/cuda/typeconv/typeconv.py +121 -0
  439. numba_cuda/numba/cuda/types/__init__.py +233 -0
  440. numba_cuda/numba/cuda/types/__init__.pyi +167 -0
  441. numba_cuda/numba/cuda/types/abstract.py +9 -0
  442. numba_cuda/numba/cuda/types/common.py +9 -0
  443. numba_cuda/numba/cuda/types/containers.py +9 -0
  444. numba_cuda/numba/cuda/types/cuda_abstract.py +533 -0
  445. numba_cuda/numba/cuda/types/cuda_common.py +110 -0
  446. numba_cuda/numba/cuda/types/cuda_containers.py +971 -0
  447. numba_cuda/numba/cuda/types/cuda_function_type.py +230 -0
  448. numba_cuda/numba/cuda/types/cuda_functions.py +798 -0
  449. numba_cuda/numba/cuda/types/cuda_iterators.py +120 -0
  450. numba_cuda/numba/cuda/types/cuda_misc.py +569 -0
  451. numba_cuda/numba/cuda/types/cuda_npytypes.py +690 -0
  452. numba_cuda/numba/cuda/types/cuda_scalars.py +280 -0
  453. numba_cuda/numba/cuda/types/ext_types.py +101 -0
  454. numba_cuda/numba/cuda/types/function_type.py +11 -0
  455. numba_cuda/numba/cuda/types/functions.py +9 -0
  456. numba_cuda/numba/cuda/types/iterators.py +9 -0
  457. numba_cuda/numba/cuda/types/misc.py +9 -0
  458. numba_cuda/numba/cuda/types/npytypes.py +9 -0
  459. numba_cuda/numba/cuda/types/scalars.py +9 -0
  460. numba_cuda/numba/cuda/typing/__init__.py +19 -0
  461. numba_cuda/numba/cuda/typing/arraydecl.py +939 -0
  462. numba_cuda/numba/cuda/typing/asnumbatype.py +130 -0
  463. numba_cuda/numba/cuda/typing/bufproto.py +70 -0
  464. numba_cuda/numba/cuda/typing/builtins.py +1209 -0
  465. numba_cuda/numba/cuda/typing/cffi_utils.py +219 -0
  466. numba_cuda/numba/cuda/typing/cmathdecl.py +47 -0
  467. numba_cuda/numba/cuda/typing/collections.py +138 -0
  468. numba_cuda/numba/cuda/typing/context.py +782 -0
  469. numba_cuda/numba/cuda/typing/ctypes_utils.py +125 -0
  470. numba_cuda/numba/cuda/typing/dictdecl.py +63 -0
  471. numba_cuda/numba/cuda/typing/enumdecl.py +74 -0
  472. numba_cuda/numba/cuda/typing/listdecl.py +147 -0
  473. numba_cuda/numba/cuda/typing/mathdecl.py +158 -0
  474. numba_cuda/numba/cuda/typing/npdatetime.py +322 -0
  475. numba_cuda/numba/cuda/typing/npydecl.py +749 -0
  476. numba_cuda/numba/cuda/typing/setdecl.py +115 -0
  477. numba_cuda/numba/cuda/typing/templates.py +1446 -0
  478. numba_cuda/numba/cuda/typing/typeof.py +301 -0
  479. numba_cuda/numba/cuda/ufuncs.py +746 -0
  480. numba_cuda/numba/cuda/utils.py +724 -0
  481. numba_cuda/numba/cuda/vector_types.py +214 -0
  482. numba_cuda/numba/cuda/vectorizers.py +260 -0
  483. numba_cuda-0.21.1.dist-info/METADATA +109 -0
  484. numba_cuda-0.21.1.dist-info/RECORD +488 -0
  485. numba_cuda-0.21.1.dist-info/WHEEL +5 -0
  486. numba_cuda-0.21.1.dist-info/licenses/LICENSE +26 -0
  487. numba_cuda-0.21.1.dist-info/licenses/LICENSE.numba +24 -0
  488. 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