numba-cuda 0.22.0__cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.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 (487) 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 +580 -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.cpp +159 -0
  16. numba_cuda/numba/cuda/cext/_devicearray.cpython-313-aarch64-linux-gnu.so +0 -0
  17. numba_cuda/numba/cuda/cext/_devicearray.h +29 -0
  18. numba_cuda/numba/cuda/cext/_dispatcher.cpp +1098 -0
  19. numba_cuda/numba/cuda/cext/_dispatcher.cpython-313-aarch64-linux-gnu.so +0 -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.cpython-313-aarch64-linux-gnu.so +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.cpp +206 -0
  27. numba_cuda/numba/cuda/cext/_typeconv.cpython-313-aarch64-linux-gnu.so +0 -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.cpython-313-aarch64-linux-gnu.so +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 +543 -0
  112. numba_cuda/numba/cuda/cudadrv/__init__.py +14 -0
  113. numba_cuda/numba/cuda/cudadrv/devicearray.py +954 -0
  114. numba_cuda/numba/cuda/cudadrv/devices.py +249 -0
  115. numba_cuda/numba/cuda/cudadrv/driver.py +3238 -0
  116. numba_cuda/numba/cuda/cudadrv/drvapi.py +435 -0
  117. numba_cuda/numba/cuda/cudadrv/dummyarray.py +562 -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 +983 -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 +997 -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 +155 -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/intrinsics.py +531 -0
  161. numba_cuda/numba/cuda/itanium_mangler.py +214 -0
  162. numba_cuda/numba/cuda/kernels/__init__.py +2 -0
  163. numba_cuda/numba/cuda/kernels/reduction.py +265 -0
  164. numba_cuda/numba/cuda/kernels/transpose.py +65 -0
  165. numba_cuda/numba/cuda/libdevice.py +3386 -0
  166. numba_cuda/numba/cuda/libdevicedecl.py +20 -0
  167. numba_cuda/numba/cuda/libdevicefuncs.py +1060 -0
  168. numba_cuda/numba/cuda/libdeviceimpl.py +88 -0
  169. numba_cuda/numba/cuda/locks.py +19 -0
  170. numba_cuda/numba/cuda/lowering.py +1980 -0
  171. numba_cuda/numba/cuda/mathimpl.py +374 -0
  172. numba_cuda/numba/cuda/memory_management/__init__.py +4 -0
  173. numba_cuda/numba/cuda/memory_management/memsys.cu +99 -0
  174. numba_cuda/numba/cuda/memory_management/memsys.cuh +22 -0
  175. numba_cuda/numba/cuda/memory_management/nrt.cu +212 -0
  176. numba_cuda/numba/cuda/memory_management/nrt.cuh +48 -0
  177. numba_cuda/numba/cuda/memory_management/nrt.py +390 -0
  178. numba_cuda/numba/cuda/memory_management/nrt_context.py +438 -0
  179. numba_cuda/numba/cuda/misc/appdirs.py +594 -0
  180. numba_cuda/numba/cuda/misc/cffiimpl.py +24 -0
  181. numba_cuda/numba/cuda/misc/coverage_support.py +43 -0
  182. numba_cuda/numba/cuda/misc/dump_style.py +41 -0
  183. numba_cuda/numba/cuda/misc/findlib.py +75 -0
  184. numba_cuda/numba/cuda/misc/firstlinefinder.py +96 -0
  185. numba_cuda/numba/cuda/misc/gdb_hook.py +240 -0
  186. numba_cuda/numba/cuda/misc/literal.py +28 -0
  187. numba_cuda/numba/cuda/misc/llvm_pass_timings.py +412 -0
  188. numba_cuda/numba/cuda/misc/special.py +94 -0
  189. numba_cuda/numba/cuda/models.py +56 -0
  190. numba_cuda/numba/cuda/np/arraymath.py +5130 -0
  191. numba_cuda/numba/cuda/np/arrayobj.py +7635 -0
  192. numba_cuda/numba/cuda/np/extensions.py +11 -0
  193. numba_cuda/numba/cuda/np/linalg.py +3087 -0
  194. numba_cuda/numba/cuda/np/math/__init__.py +0 -0
  195. numba_cuda/numba/cuda/np/math/cmathimpl.py +558 -0
  196. numba_cuda/numba/cuda/np/math/mathimpl.py +487 -0
  197. numba_cuda/numba/cuda/np/math/numbers.py +1461 -0
  198. numba_cuda/numba/cuda/np/npdatetime.py +969 -0
  199. numba_cuda/numba/cuda/np/npdatetime_helpers.py +217 -0
  200. numba_cuda/numba/cuda/np/npyfuncs.py +1808 -0
  201. numba_cuda/numba/cuda/np/npyimpl.py +1027 -0
  202. numba_cuda/numba/cuda/np/numpy_support.py +798 -0
  203. numba_cuda/numba/cuda/np/polynomial/__init__.py +4 -0
  204. numba_cuda/numba/cuda/np/polynomial/polynomial_core.py +242 -0
  205. numba_cuda/numba/cuda/np/polynomial/polynomial_functions.py +380 -0
  206. numba_cuda/numba/cuda/np/ufunc/__init__.py +4 -0
  207. numba_cuda/numba/cuda/np/ufunc/decorators.py +203 -0
  208. numba_cuda/numba/cuda/np/ufunc/sigparse.py +68 -0
  209. numba_cuda/numba/cuda/np/ufunc/ufuncbuilder.py +65 -0
  210. numba_cuda/numba/cuda/np/ufunc_db.py +1282 -0
  211. numba_cuda/numba/cuda/np/unsafe/__init__.py +0 -0
  212. numba_cuda/numba/cuda/np/unsafe/ndarray.py +84 -0
  213. numba_cuda/numba/cuda/nvvmutils.py +254 -0
  214. numba_cuda/numba/cuda/printimpl.py +126 -0
  215. numba_cuda/numba/cuda/random.py +308 -0
  216. numba_cuda/numba/cuda/reshape_funcs.cu +156 -0
  217. numba_cuda/numba/cuda/serialize.py +267 -0
  218. numba_cuda/numba/cuda/simulator/__init__.py +63 -0
  219. numba_cuda/numba/cuda/simulator/_internal/__init__.py +4 -0
  220. numba_cuda/numba/cuda/simulator/_internal/cuda_bf16.py +2 -0
  221. numba_cuda/numba/cuda/simulator/api.py +179 -0
  222. numba_cuda/numba/cuda/simulator/bf16.py +4 -0
  223. numba_cuda/numba/cuda/simulator/compiler.py +38 -0
  224. numba_cuda/numba/cuda/simulator/cudadrv/__init__.py +11 -0
  225. numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +462 -0
  226. numba_cuda/numba/cuda/simulator/cudadrv/devices.py +122 -0
  227. numba_cuda/numba/cuda/simulator/cudadrv/driver.py +66 -0
  228. numba_cuda/numba/cuda/simulator/cudadrv/drvapi.py +7 -0
  229. numba_cuda/numba/cuda/simulator/cudadrv/dummyarray.py +7 -0
  230. numba_cuda/numba/cuda/simulator/cudadrv/error.py +10 -0
  231. numba_cuda/numba/cuda/simulator/cudadrv/libs.py +10 -0
  232. numba_cuda/numba/cuda/simulator/cudadrv/linkable_code.py +61 -0
  233. numba_cuda/numba/cuda/simulator/cudadrv/nvrtc.py +11 -0
  234. numba_cuda/numba/cuda/simulator/cudadrv/nvvm.py +32 -0
  235. numba_cuda/numba/cuda/simulator/cudadrv/runtime.py +22 -0
  236. numba_cuda/numba/cuda/simulator/dispatcher.py +11 -0
  237. numba_cuda/numba/cuda/simulator/kernel.py +320 -0
  238. numba_cuda/numba/cuda/simulator/kernelapi.py +509 -0
  239. numba_cuda/numba/cuda/simulator/memory_management/__init__.py +4 -0
  240. numba_cuda/numba/cuda/simulator/memory_management/nrt.py +21 -0
  241. numba_cuda/numba/cuda/simulator/reduction.py +19 -0
  242. numba_cuda/numba/cuda/simulator/tests/support.py +4 -0
  243. numba_cuda/numba/cuda/simulator/vector_types.py +65 -0
  244. numba_cuda/numba/cuda/simulator_init.py +18 -0
  245. numba_cuda/numba/cuda/stubs.py +624 -0
  246. numba_cuda/numba/cuda/target.py +505 -0
  247. numba_cuda/numba/cuda/testing.py +347 -0
  248. numba_cuda/numba/cuda/tests/__init__.py +62 -0
  249. numba_cuda/numba/cuda/tests/benchmarks/__init__.py +0 -0
  250. numba_cuda/numba/cuda/tests/benchmarks/test_kernel_launch.py +119 -0
  251. numba_cuda/numba/cuda/tests/cloudpickle_main_class.py +9 -0
  252. numba_cuda/numba/cuda/tests/core/serialize_usecases.py +113 -0
  253. numba_cuda/numba/cuda/tests/core/test_itanium_mangler.py +83 -0
  254. numba_cuda/numba/cuda/tests/core/test_serialize.py +371 -0
  255. numba_cuda/numba/cuda/tests/cudadrv/__init__.py +9 -0
  256. numba_cuda/numba/cuda/tests/cudadrv/test_array_attr.py +147 -0
  257. numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +161 -0
  258. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_array_slicing.py +397 -0
  259. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_auto_context.py +24 -0
  260. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +180 -0
  261. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +313 -0
  262. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +191 -0
  263. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +621 -0
  264. numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +247 -0
  265. numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +100 -0
  266. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +200 -0
  267. numba_cuda/numba/cuda/tests/cudadrv/test_events.py +53 -0
  268. numba_cuda/numba/cuda/tests/cudadrv/test_host_alloc.py +72 -0
  269. numba_cuda/numba/cuda/tests/cudadrv/test_init.py +138 -0
  270. numba_cuda/numba/cuda/tests/cudadrv/test_inline_ptx.py +43 -0
  271. numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py +15 -0
  272. numba_cuda/numba/cuda/tests/cudadrv/test_linkable_code.py +58 -0
  273. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +348 -0
  274. numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +128 -0
  275. numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +301 -0
  276. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +174 -0
  277. numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +28 -0
  278. numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +185 -0
  279. numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py +39 -0
  280. numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py +23 -0
  281. numba_cuda/numba/cuda/tests/cudadrv/test_reset_device.py +38 -0
  282. numba_cuda/numba/cuda/tests/cudadrv/test_runtime.py +48 -0
  283. numba_cuda/numba/cuda/tests/cudadrv/test_select_device.py +44 -0
  284. numba_cuda/numba/cuda/tests/cudadrv/test_streams.py +127 -0
  285. numba_cuda/numba/cuda/tests/cudapy/__init__.py +9 -0
  286. numba_cuda/numba/cuda/tests/cudapy/cache_usecases.py +231 -0
  287. numba_cuda/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py +50 -0
  288. numba_cuda/numba/cuda/tests/cudapy/cg_cache_usecases.py +36 -0
  289. numba_cuda/numba/cuda/tests/cudapy/complex_usecases.py +116 -0
  290. numba_cuda/numba/cuda/tests/cudapy/enum_usecases.py +59 -0
  291. numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +62 -0
  292. numba_cuda/numba/cuda/tests/cudapy/jitlink.ptx +28 -0
  293. numba_cuda/numba/cuda/tests/cudapy/overload_usecases.py +33 -0
  294. numba_cuda/numba/cuda/tests/cudapy/recursion_usecases.py +104 -0
  295. numba_cuda/numba/cuda/tests/cudapy/test_alignment.py +47 -0
  296. numba_cuda/numba/cuda/tests/cudapy/test_analysis.py +1122 -0
  297. numba_cuda/numba/cuda/tests/cudapy/test_array.py +344 -0
  298. numba_cuda/numba/cuda/tests/cudapy/test_array_alignment.py +268 -0
  299. numba_cuda/numba/cuda/tests/cudapy/test_array_args.py +203 -0
  300. numba_cuda/numba/cuda/tests/cudapy/test_array_methods.py +63 -0
  301. numba_cuda/numba/cuda/tests/cudapy/test_array_reductions.py +360 -0
  302. numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +1815 -0
  303. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +599 -0
  304. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +377 -0
  305. numba_cuda/numba/cuda/tests/cudapy/test_blackscholes.py +160 -0
  306. numba_cuda/numba/cuda/tests/cudapy/test_boolean.py +27 -0
  307. numba_cuda/numba/cuda/tests/cudapy/test_byteflow.py +98 -0
  308. numba_cuda/numba/cuda/tests/cudapy/test_cache_hints.py +210 -0
  309. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +683 -0
  310. numba_cuda/numba/cuda/tests/cudapy/test_casting.py +265 -0
  311. numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +42 -0
  312. numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +718 -0
  313. numba_cuda/numba/cuda/tests/cudapy/test_complex.py +370 -0
  314. numba_cuda/numba/cuda/tests/cudapy/test_complex_kernel.py +23 -0
  315. numba_cuda/numba/cuda/tests/cudapy/test_const_string.py +142 -0
  316. numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +178 -0
  317. numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +193 -0
  318. numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +131 -0
  319. numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +438 -0
  320. numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +94 -0
  321. numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +101 -0
  322. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +105 -0
  323. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +978 -0
  324. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +476 -0
  325. numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +500 -0
  326. numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +820 -0
  327. numba_cuda/numba/cuda/tests/cudapy/test_enums.py +152 -0
  328. numba_cuda/numba/cuda/tests/cudapy/test_errors.py +111 -0
  329. numba_cuda/numba/cuda/tests/cudapy/test_exception.py +170 -0
  330. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +1088 -0
  331. numba_cuda/numba/cuda/tests/cudapy/test_extending_types.py +71 -0
  332. numba_cuda/numba/cuda/tests/cudapy/test_fastmath.py +265 -0
  333. numba_cuda/numba/cuda/tests/cudapy/test_flow_control.py +1433 -0
  334. numba_cuda/numba/cuda/tests/cudapy/test_forall.py +57 -0
  335. numba_cuda/numba/cuda/tests/cudapy/test_freevar.py +34 -0
  336. numba_cuda/numba/cuda/tests/cudapy/test_frexp_ldexp.py +69 -0
  337. numba_cuda/numba/cuda/tests/cudapy/test_globals.py +62 -0
  338. numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +474 -0
  339. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py +167 -0
  340. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py +92 -0
  341. numba_cuda/numba/cuda/tests/cudapy/test_idiv.py +39 -0
  342. numba_cuda/numba/cuda/tests/cudapy/test_inline.py +170 -0
  343. numba_cuda/numba/cuda/tests/cudapy/test_inspect.py +255 -0
  344. numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +1219 -0
  345. numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +263 -0
  346. numba_cuda/numba/cuda/tests/cudapy/test_ir.py +598 -0
  347. numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +276 -0
  348. numba_cuda/numba/cuda/tests/cudapy/test_iterators.py +101 -0
  349. numba_cuda/numba/cuda/tests/cudapy/test_lang.py +68 -0
  350. numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +123 -0
  351. numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py +194 -0
  352. numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +220 -0
  353. numba_cuda/numba/cuda/tests/cudapy/test_localmem.py +173 -0
  354. numba_cuda/numba/cuda/tests/cudapy/test_make_function_to_jit_function.py +364 -0
  355. numba_cuda/numba/cuda/tests/cudapy/test_mandel.py +47 -0
  356. numba_cuda/numba/cuda/tests/cudapy/test_math.py +842 -0
  357. numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +76 -0
  358. numba_cuda/numba/cuda/tests/cudapy/test_minmax.py +78 -0
  359. numba_cuda/numba/cuda/tests/cudapy/test_montecarlo.py +25 -0
  360. numba_cuda/numba/cuda/tests/cudapy/test_multigpu.py +145 -0
  361. numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py +39 -0
  362. numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py +82 -0
  363. numba_cuda/numba/cuda/tests/cudapy/test_nondet.py +53 -0
  364. numba_cuda/numba/cuda/tests/cudapy/test_operator.py +504 -0
  365. numba_cuda/numba/cuda/tests/cudapy/test_optimization.py +93 -0
  366. numba_cuda/numba/cuda/tests/cudapy/test_overload.py +402 -0
  367. numba_cuda/numba/cuda/tests/cudapy/test_powi.py +128 -0
  368. numba_cuda/numba/cuda/tests/cudapy/test_print.py +193 -0
  369. numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py +37 -0
  370. numba_cuda/numba/cuda/tests/cudapy/test_random.py +117 -0
  371. numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +614 -0
  372. numba_cuda/numba/cuda/tests/cudapy/test_recursion.py +130 -0
  373. numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +94 -0
  374. numba_cuda/numba/cuda/tests/cudapy/test_retrieve_autoconverted_arrays.py +83 -0
  375. numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +86 -0
  376. numba_cuda/numba/cuda/tests/cudapy/test_slicing.py +40 -0
  377. numba_cuda/numba/cuda/tests/cudapy/test_sm.py +457 -0
  378. numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py +233 -0
  379. numba_cuda/numba/cuda/tests/cudapy/test_ssa.py +454 -0
  380. numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +56 -0
  381. numba_cuda/numba/cuda/tests/cudapy/test_sync.py +277 -0
  382. numba_cuda/numba/cuda/tests/cudapy/test_tracing.py +200 -0
  383. numba_cuda/numba/cuda/tests/cudapy/test_transpose.py +90 -0
  384. numba_cuda/numba/cuda/tests/cudapy/test_typeconv.py +333 -0
  385. numba_cuda/numba/cuda/tests/cudapy/test_typeinfer.py +538 -0
  386. numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +585 -0
  387. numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +42 -0
  388. numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +485 -0
  389. numba_cuda/numba/cuda/tests/cudapy/test_vectorize.py +312 -0
  390. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_complex.py +23 -0
  391. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +183 -0
  392. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_device.py +40 -0
  393. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_scalar_arg.py +40 -0
  394. numba_cuda/numba/cuda/tests/cudapy/test_warning.py +206 -0
  395. numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +446 -0
  396. numba_cuda/numba/cuda/tests/cudasim/__init__.py +9 -0
  397. numba_cuda/numba/cuda/tests/cudasim/support.py +9 -0
  398. numba_cuda/numba/cuda/tests/cudasim/test_cudasim_issues.py +111 -0
  399. numba_cuda/numba/cuda/tests/data/__init__.py +2 -0
  400. numba_cuda/numba/cuda/tests/data/cta_barrier.cu +28 -0
  401. numba_cuda/numba/cuda/tests/data/cuda_include.cu +10 -0
  402. numba_cuda/numba/cuda/tests/data/error.cu +12 -0
  403. numba_cuda/numba/cuda/tests/data/include/add.cuh +8 -0
  404. numba_cuda/numba/cuda/tests/data/jitlink.cu +28 -0
  405. numba_cuda/numba/cuda/tests/data/jitlink.ptx +49 -0
  406. numba_cuda/numba/cuda/tests/data/warn.cu +12 -0
  407. numba_cuda/numba/cuda/tests/doc_examples/__init__.py +9 -0
  408. numba_cuda/numba/cuda/tests/doc_examples/ffi/__init__.py +2 -0
  409. numba_cuda/numba/cuda/tests/doc_examples/ffi/functions.cu +54 -0
  410. numba_cuda/numba/cuda/tests/doc_examples/ffi/include/mul.cuh +8 -0
  411. numba_cuda/numba/cuda/tests/doc_examples/ffi/saxpy.cu +14 -0
  412. numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +86 -0
  413. numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +68 -0
  414. numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +81 -0
  415. numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +141 -0
  416. numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +160 -0
  417. numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +180 -0
  418. numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +119 -0
  419. numba_cuda/numba/cuda/tests/doc_examples/test_random.py +66 -0
  420. numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +80 -0
  421. numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +206 -0
  422. numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +53 -0
  423. numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +76 -0
  424. numba_cuda/numba/cuda/tests/nocuda/__init__.py +9 -0
  425. numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +452 -0
  426. numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py +48 -0
  427. numba_cuda/numba/cuda/tests/nocuda/test_import.py +63 -0
  428. numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +252 -0
  429. numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py +59 -0
  430. numba_cuda/numba/cuda/tests/nrt/__init__.py +9 -0
  431. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +387 -0
  432. numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +124 -0
  433. numba_cuda/numba/cuda/tests/support.py +900 -0
  434. numba_cuda/numba/cuda/typeconv/__init__.py +4 -0
  435. numba_cuda/numba/cuda/typeconv/castgraph.py +137 -0
  436. numba_cuda/numba/cuda/typeconv/rules.py +63 -0
  437. numba_cuda/numba/cuda/typeconv/typeconv.py +121 -0
  438. numba_cuda/numba/cuda/types/__init__.py +233 -0
  439. numba_cuda/numba/cuda/types/__init__.pyi +167 -0
  440. numba_cuda/numba/cuda/types/abstract.py +9 -0
  441. numba_cuda/numba/cuda/types/common.py +9 -0
  442. numba_cuda/numba/cuda/types/containers.py +9 -0
  443. numba_cuda/numba/cuda/types/cuda_abstract.py +533 -0
  444. numba_cuda/numba/cuda/types/cuda_common.py +110 -0
  445. numba_cuda/numba/cuda/types/cuda_containers.py +971 -0
  446. numba_cuda/numba/cuda/types/cuda_function_type.py +230 -0
  447. numba_cuda/numba/cuda/types/cuda_functions.py +798 -0
  448. numba_cuda/numba/cuda/types/cuda_iterators.py +120 -0
  449. numba_cuda/numba/cuda/types/cuda_misc.py +569 -0
  450. numba_cuda/numba/cuda/types/cuda_npytypes.py +690 -0
  451. numba_cuda/numba/cuda/types/cuda_scalars.py +280 -0
  452. numba_cuda/numba/cuda/types/ext_types.py +101 -0
  453. numba_cuda/numba/cuda/types/function_type.py +11 -0
  454. numba_cuda/numba/cuda/types/functions.py +9 -0
  455. numba_cuda/numba/cuda/types/iterators.py +9 -0
  456. numba_cuda/numba/cuda/types/misc.py +9 -0
  457. numba_cuda/numba/cuda/types/npytypes.py +9 -0
  458. numba_cuda/numba/cuda/types/scalars.py +9 -0
  459. numba_cuda/numba/cuda/typing/__init__.py +19 -0
  460. numba_cuda/numba/cuda/typing/arraydecl.py +939 -0
  461. numba_cuda/numba/cuda/typing/asnumbatype.py +130 -0
  462. numba_cuda/numba/cuda/typing/bufproto.py +70 -0
  463. numba_cuda/numba/cuda/typing/builtins.py +1209 -0
  464. numba_cuda/numba/cuda/typing/cffi_utils.py +219 -0
  465. numba_cuda/numba/cuda/typing/cmathdecl.py +47 -0
  466. numba_cuda/numba/cuda/typing/collections.py +138 -0
  467. numba_cuda/numba/cuda/typing/context.py +782 -0
  468. numba_cuda/numba/cuda/typing/ctypes_utils.py +125 -0
  469. numba_cuda/numba/cuda/typing/dictdecl.py +63 -0
  470. numba_cuda/numba/cuda/typing/enumdecl.py +74 -0
  471. numba_cuda/numba/cuda/typing/listdecl.py +147 -0
  472. numba_cuda/numba/cuda/typing/mathdecl.py +158 -0
  473. numba_cuda/numba/cuda/typing/npdatetime.py +322 -0
  474. numba_cuda/numba/cuda/typing/npydecl.py +749 -0
  475. numba_cuda/numba/cuda/typing/setdecl.py +115 -0
  476. numba_cuda/numba/cuda/typing/templates.py +1446 -0
  477. numba_cuda/numba/cuda/typing/typeof.py +301 -0
  478. numba_cuda/numba/cuda/ufuncs.py +746 -0
  479. numba_cuda/numba/cuda/utils.py +724 -0
  480. numba_cuda/numba/cuda/vector_types.py +214 -0
  481. numba_cuda/numba/cuda/vectorizers.py +260 -0
  482. numba_cuda-0.22.0.dist-info/METADATA +109 -0
  483. numba_cuda-0.22.0.dist-info/RECORD +487 -0
  484. numba_cuda-0.22.0.dist-info/WHEEL +6 -0
  485. numba_cuda-0.22.0.dist-info/licenses/LICENSE +26 -0
  486. numba_cuda-0.22.0.dist-info/licenses/LICENSE.numba +24 -0
  487. numba_cuda-0.22.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,594 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2005-2010 ActiveState Software Inc.
2
+ # SPDX-FileCopyrightText: Copyright (c) 2013 Eddy Petrișor
3
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
4
+ # SPDX-License-Identifier: The MIT License (MIT)
5
+
6
+ """Utilities for determining application-specific dirs.
7
+
8
+ See <http://github.com/ActiveState/appdirs> for details and usage.
9
+ """
10
+ # Dev Notes:
11
+ # - MSDN on where to store app data files:
12
+ # http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120
13
+ # - Mac OS X: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html
14
+ # - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
15
+
16
+ __version_info__ = (1, 4, 1)
17
+ __version__ = ".".join(map(str, __version_info__))
18
+
19
+
20
+ import sys
21
+ import os
22
+
23
+ unicode = str
24
+
25
+ if sys.platform.startswith("java"):
26
+ import platform
27
+
28
+ os_name = platform.java_ver()[3][0]
29
+ if os_name.startswith("Windows"): # "Windows XP", "Windows 7", etc.
30
+ system = "win32"
31
+ elif os_name.startswith("Mac"): # "Mac OS X", etc.
32
+ system = "darwin"
33
+ else: # "Linux", "SunOS", "FreeBSD", etc.
34
+ # Setting this to "linux2" is not ideal, but only Windows or Mac
35
+ # are actually checked for and the rest of the module expects
36
+ # *sys.platform* style strings.
37
+ system = "linux2"
38
+ else:
39
+ system = sys.platform
40
+
41
+
42
+ def user_data_dir(appname=None, appauthor=None, version=None, roaming=False):
43
+ r"""Return full path to the user-specific data dir for this application.
44
+
45
+ "appname" is the name of application.
46
+ If None, just the system directory is returned.
47
+ "appauthor" (only used on Windows) is the name of the
48
+ appauthor or distributing body for this application. Typically
49
+ it is the owning company name. This falls back to appname. You may
50
+ pass False to disable it.
51
+ "version" is an optional version path element to append to the
52
+ path. You might want to use this if you want multiple versions
53
+ of your app to be able to run independently. If used, this
54
+ would typically be "<major>.<minor>".
55
+ Only applied when appname is present.
56
+ "roaming" (boolean, default False) can be set True to use the Windows
57
+ roaming appdata directory. That means that for users on a Windows
58
+ network setup for roaming profiles, this user data will be
59
+ sync'd on login. See
60
+ <http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx>
61
+ for a discussion of issues.
62
+
63
+ Typical user data directories are:
64
+ Mac OS X: ~/Library/Application Support/<AppName>
65
+ Unix: ~/.local/share/<AppName> # or in $XDG_DATA_HOME, if defined
66
+ Win XP (not roaming): C:\Documents and Settings\<username>\Application Data\<AppAuthor>\<AppName>
67
+ Win XP (roaming): C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName>
68
+ Win 7 (not roaming): C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName>
69
+ Win 7 (roaming): C:\Users\<username>\AppData\Roaming\<AppAuthor>\<AppName>
70
+
71
+ For Unix, we follow the XDG spec and support $XDG_DATA_HOME.
72
+ That means, by default "~/.local/share/<AppName>".
73
+ """
74
+ if system == "win32":
75
+ if appauthor is None:
76
+ appauthor = appname
77
+ const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA"
78
+ path = os.path.normpath(_get_win_folder(const))
79
+ if appname:
80
+ if appauthor is not False:
81
+ path = os.path.join(path, appauthor, appname)
82
+ else:
83
+ path = os.path.join(path, appname)
84
+ elif system == "darwin":
85
+ path = os.path.expanduser("~/Library/Application Support/")
86
+ if appname:
87
+ path = os.path.join(path, appname)
88
+ else:
89
+ path = os.getenv("XDG_DATA_HOME", os.path.expanduser("~/.local/share"))
90
+ if appname:
91
+ path = os.path.join(path, appname)
92
+ if appname and version:
93
+ path = os.path.join(path, version)
94
+ return path
95
+
96
+
97
+ def site_data_dir(appname=None, appauthor=None, version=None, multipath=False):
98
+ r"""Return full path to the user-shared data dir for this application.
99
+
100
+ "appname" is the name of application.
101
+ If None, just the system directory is returned.
102
+ "appauthor" (only used on Windows) is the name of the
103
+ appauthor or distributing body for this application. Typically
104
+ it is the owning company name. This falls back to appname. You may
105
+ pass False to disable it.
106
+ "version" is an optional version path element to append to the
107
+ path. You might want to use this if you want multiple versions
108
+ of your app to be able to run independently. If used, this
109
+ would typically be "<major>.<minor>".
110
+ Only applied when appname is present.
111
+ "multipath" is an optional parameter only applicable to *nix
112
+ which indicates that the entire list of data dirs should be
113
+ returned. By default, the first item from XDG_DATA_DIRS is
114
+ returned, or '/usr/local/share/<AppName>',
115
+ if XDG_DATA_DIRS is not set
116
+
117
+ Typical user data directories are:
118
+ Mac OS X: /Library/Application Support/<AppName>
119
+ Unix: /usr/local/share/<AppName> or /usr/share/<AppName>
120
+ Win XP: C:\Documents and Settings\All Users\Application Data\<AppAuthor>\<AppName>
121
+ Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.)
122
+ Win 7: C:\ProgramData\<AppAuthor>\<AppName> # Hidden, but writeable on Win 7.
123
+
124
+ For Unix, this is using the $XDG_DATA_DIRS[0] default.
125
+
126
+ WARNING: Do not use this on Windows. See the Vista-Fail note above for why.
127
+ """
128
+ if system == "win32":
129
+ if appauthor is None:
130
+ appauthor = appname
131
+ path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA"))
132
+ if appname:
133
+ if appauthor is not False:
134
+ path = os.path.join(path, appauthor, appname)
135
+ else:
136
+ path = os.path.join(path, appname)
137
+ elif system == "darwin":
138
+ path = os.path.expanduser("/Library/Application Support")
139
+ if appname:
140
+ path = os.path.join(path, appname)
141
+ else:
142
+ # XDG default for $XDG_DATA_DIRS
143
+ # only first, if multipath is False
144
+ path = os.getenv(
145
+ "XDG_DATA_DIRS", os.pathsep.join(["/usr/local/share", "/usr/share"])
146
+ )
147
+ pathlist = [
148
+ os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)
149
+ ]
150
+ if appname:
151
+ if version:
152
+ appname = os.path.join(appname, version)
153
+ pathlist = [os.sep.join([x, appname]) for x in pathlist]
154
+
155
+ if multipath:
156
+ path = os.pathsep.join(pathlist)
157
+ else:
158
+ path = pathlist[0]
159
+ return path
160
+
161
+ if appname and version:
162
+ path = os.path.join(path, version)
163
+ return path
164
+
165
+
166
+ def user_config_dir(appname=None, appauthor=None, version=None, roaming=False):
167
+ r"""Return full path to the user-specific config dir for this application.
168
+
169
+ "appname" is the name of application.
170
+ If None, just the system directory is returned.
171
+ "appauthor" (only used on Windows) is the name of the
172
+ appauthor or distributing body for this application. Typically
173
+ it is the owning company name. This falls back to appname. You may
174
+ pass False to disable it.
175
+ "version" is an optional version path element to append to the
176
+ path. You might want to use this if you want multiple versions
177
+ of your app to be able to run independently. If used, this
178
+ would typically be "<major>.<minor>".
179
+ Only applied when appname is present.
180
+ "roaming" (boolean, default False) can be set True to use the Windows
181
+ roaming appdata directory. That means that for users on a Windows
182
+ network setup for roaming profiles, this user data will be
183
+ sync'd on login. See
184
+ <http://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx>
185
+ for a discussion of issues.
186
+
187
+ Typical user data directories are:
188
+ Mac OS X: same as user_data_dir
189
+ Unix: ~/.config/<AppName> # or in $XDG_CONFIG_HOME, if defined
190
+ Win *: same as user_data_dir
191
+
192
+ For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME.
193
+ That means, by default "~/.config/<AppName>".
194
+ """
195
+ if system in ["win32", "darwin"]:
196
+ path = user_data_dir(appname, appauthor, None, roaming)
197
+ else:
198
+ path = os.getenv("XDG_CONFIG_HOME", os.path.expanduser("~/.config"))
199
+ if appname:
200
+ path = os.path.join(path, appname)
201
+ if appname and version:
202
+ path = os.path.join(path, version)
203
+ return path
204
+
205
+
206
+ def site_config_dir(
207
+ appname=None, appauthor=None, version=None, multipath=False
208
+ ):
209
+ r"""Return full path to the user-shared data dir for this application.
210
+
211
+ "appname" is the name of application.
212
+ If None, just the system directory is returned.
213
+ "appauthor" (only used on Windows) is the name of the
214
+ appauthor or distributing body for this application. Typically
215
+ it is the owning company name. This falls back to appname. You may
216
+ pass False to disable it.
217
+ "version" is an optional version path element to append to the
218
+ path. You might want to use this if you want multiple versions
219
+ of your app to be able to run independently. If used, this
220
+ would typically be "<major>.<minor>".
221
+ Only applied when appname is present.
222
+ "multipath" is an optional parameter only applicable to *nix
223
+ which indicates that the entire list of config dirs should be
224
+ returned. By default, the first item from XDG_CONFIG_DIRS is
225
+ returned, or '/etc/xdg/<AppName>', if XDG_CONFIG_DIRS is not set
226
+
227
+ Typical user data directories are:
228
+ Mac OS X: same as site_data_dir
229
+ Unix: /etc/xdg/<AppName> or $XDG_CONFIG_DIRS[i]/<AppName> for each value in
230
+ $XDG_CONFIG_DIRS
231
+ Win *: same as site_data_dir
232
+ Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.)
233
+
234
+ For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False
235
+
236
+ WARNING: Do not use this on Windows. See the Vista-Fail note above for why.
237
+ """
238
+ if system in ["win32", "darwin"]:
239
+ path = site_data_dir(appname, appauthor)
240
+ if appname and version:
241
+ path = os.path.join(path, version)
242
+ else:
243
+ # XDG default for $XDG_CONFIG_DIRS
244
+ # only first, if multipath is False
245
+ path = os.getenv("XDG_CONFIG_DIRS", "/etc/xdg")
246
+ pathlist = [
247
+ os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)
248
+ ]
249
+ if appname:
250
+ if version:
251
+ appname = os.path.join(appname, version)
252
+ pathlist = [os.sep.join([x, appname]) for x in pathlist]
253
+
254
+ if multipath:
255
+ path = os.pathsep.join(pathlist)
256
+ else:
257
+ path = pathlist[0]
258
+ return path
259
+
260
+
261
+ def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True):
262
+ r"""Return full path to the user-specific cache dir for this application.
263
+
264
+ "appname" is the name of application.
265
+ If None, just the system directory is returned.
266
+ "appauthor" (only used on Windows) is the name of the
267
+ appauthor or distributing body for this application. Typically
268
+ it is the owning company name. This falls back to appname. You may
269
+ pass False to disable it.
270
+ "version" is an optional version path element to append to the
271
+ path. You might want to use this if you want multiple versions
272
+ of your app to be able to run independently. If used, this
273
+ would typically be "<major>.<minor>".
274
+ Only applied when appname is present.
275
+ "opinion" (boolean) can be False to disable the appending of
276
+ "Cache" to the base app data dir for Windows. See
277
+ discussion below.
278
+
279
+ Typical user cache directories are:
280
+ Mac OS X: ~/Library/Caches/<AppName>
281
+ Unix: ~/.cache/<AppName> (XDG default)
282
+ Win XP: C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName>\Cache
283
+ Vista: C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName>\Cache
284
+
285
+ On Windows the only suggestion in the MSDN docs is that local settings go in
286
+ the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming
287
+ app data dir (the default returned by `user_data_dir` above). Apps typically
288
+ put cache data somewhere *under* the given dir here. Some examples:
289
+ ...\Mozilla\Firefox\Profiles\<ProfileName>\Cache
290
+ ...\Acme\SuperApp\Cache\1.0
291
+ OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value.
292
+ This can be disabled with the `opinion=False` option.
293
+ """
294
+ if system == "win32":
295
+ if appauthor is None:
296
+ appauthor = appname
297
+ path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA"))
298
+ if appname:
299
+ if appauthor is not False:
300
+ path = os.path.join(path, appauthor, appname)
301
+ else:
302
+ path = os.path.join(path, appname)
303
+ if opinion:
304
+ path = os.path.join(path, "Cache")
305
+ elif system == "darwin":
306
+ path = os.path.expanduser("~/Library/Caches")
307
+ if appname:
308
+ path = os.path.join(path, appname)
309
+ else:
310
+ path = os.getenv("XDG_CACHE_HOME", os.path.expanduser("~/.cache"))
311
+ if appname:
312
+ path = os.path.join(path, appname)
313
+ if appname and version:
314
+ path = os.path.join(path, version)
315
+ return path
316
+
317
+
318
+ def user_log_dir(appname=None, appauthor=None, version=None, opinion=True):
319
+ r"""Return full path to the user-specific log dir for this application.
320
+
321
+ "appname" is the name of application.
322
+ If None, just the system directory is returned.
323
+ "appauthor" (only used on Windows) is the name of the
324
+ appauthor or distributing body for this application. Typically
325
+ it is the owning company name. This falls back to appname. You may
326
+ pass False to disable it.
327
+ "version" is an optional version path element to append to the
328
+ path. You might want to use this if you want multiple versions
329
+ of your app to be able to run independently. If used, this
330
+ would typically be "<major>.<minor>".
331
+ Only applied when appname is present.
332
+ "opinion" (boolean) can be False to disable the appending of
333
+ "Logs" to the base app data dir for Windows, and "log" to the
334
+ base cache dir for Unix. See discussion below.
335
+
336
+ Typical user cache directories are:
337
+ Mac OS X: ~/Library/Logs/<AppName>
338
+ Unix: ~/.cache/<AppName>/log # or under $XDG_CACHE_HOME if defined
339
+ Win XP: C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName>\Logs
340
+ Vista: C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName>\Logs
341
+
342
+ On Windows the only suggestion in the MSDN docs is that local settings
343
+ go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in
344
+ examples of what some windows apps use for a logs dir.)
345
+
346
+ OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA`
347
+ value for Windows and appends "log" to the user cache dir for Unix.
348
+ This can be disabled with the `opinion=False` option.
349
+ """
350
+ if system == "darwin":
351
+ path = os.path.join(os.path.expanduser("~/Library/Logs"), appname)
352
+ elif system == "win32":
353
+ path = user_data_dir(appname, appauthor, version)
354
+ version = False
355
+ if opinion:
356
+ path = os.path.join(path, "Logs")
357
+ else:
358
+ path = user_cache_dir(appname, appauthor, version)
359
+ version = False
360
+ if opinion:
361
+ path = os.path.join(path, "log")
362
+ if appname and version:
363
+ path = os.path.join(path, version)
364
+ return path
365
+
366
+
367
+ class AppDirs(object):
368
+ """Convenience wrapper for getting application dirs."""
369
+
370
+ def __init__(
371
+ self,
372
+ appname,
373
+ appauthor=None,
374
+ version=None,
375
+ roaming=False,
376
+ multipath=False,
377
+ ):
378
+ self.appname = appname
379
+ self.appauthor = appauthor
380
+ self.version = version
381
+ self.roaming = roaming
382
+ self.multipath = multipath
383
+
384
+ @property
385
+ def user_data_dir(self):
386
+ return user_data_dir(
387
+ self.appname,
388
+ self.appauthor,
389
+ version=self.version,
390
+ roaming=self.roaming,
391
+ )
392
+
393
+ @property
394
+ def site_data_dir(self):
395
+ return site_data_dir(
396
+ self.appname,
397
+ self.appauthor,
398
+ version=self.version,
399
+ multipath=self.multipath,
400
+ )
401
+
402
+ @property
403
+ def user_config_dir(self):
404
+ return user_config_dir(
405
+ self.appname,
406
+ self.appauthor,
407
+ version=self.version,
408
+ roaming=self.roaming,
409
+ )
410
+
411
+ @property
412
+ def site_config_dir(self):
413
+ return site_config_dir(
414
+ self.appname,
415
+ self.appauthor,
416
+ version=self.version,
417
+ multipath=self.multipath,
418
+ )
419
+
420
+ @property
421
+ def user_cache_dir(self):
422
+ return user_cache_dir(
423
+ self.appname, self.appauthor, version=self.version
424
+ )
425
+
426
+ @property
427
+ def user_log_dir(self):
428
+ return user_log_dir(self.appname, self.appauthor, version=self.version)
429
+
430
+
431
+ # ---- internal support stuff
432
+
433
+
434
+ def _get_win_folder_from_registry(csidl_name):
435
+ """This is a fallback technique at best. I'm not sure if using the
436
+ registry for this guarantees us the correct answer for all CSIDL_*
437
+ names.
438
+ """
439
+ import winreg as _winreg
440
+
441
+ shell_folder_name = {
442
+ "CSIDL_APPDATA": "AppData",
443
+ "CSIDL_COMMON_APPDATA": "Common AppData",
444
+ "CSIDL_LOCAL_APPDATA": "Local AppData",
445
+ }[csidl_name]
446
+
447
+ key = _winreg.OpenKey(
448
+ _winreg.HKEY_CURRENT_USER,
449
+ r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders",
450
+ )
451
+ dir, type = _winreg.QueryValueEx(key, shell_folder_name)
452
+ return dir
453
+
454
+
455
+ def _get_win_folder_with_pywin32(csidl_name):
456
+ dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0)
457
+ # Try to make this a unicode path because SHGetFolderPath does
458
+ # not return unicode strings when there is unicode data in the
459
+ # path.
460
+ try:
461
+ dir = unicode(dir)
462
+
463
+ # Downgrade to short path name if have highbit chars. See
464
+ # <http://bugs.activestate.com/show_bug.cgi?id=85099>.
465
+ has_high_char = False
466
+ for c in dir:
467
+ if ord(c) > 255:
468
+ has_high_char = True
469
+ break
470
+ if has_high_char:
471
+ try:
472
+ import win32api
473
+
474
+ dir = win32api.GetShortPathName(dir)
475
+ except ImportError:
476
+ pass
477
+ except UnicodeError:
478
+ pass
479
+ return dir
480
+
481
+
482
+ def _get_win_folder_with_ctypes(csidl_name):
483
+ csidl_const = {
484
+ "CSIDL_APPDATA": 26,
485
+ "CSIDL_COMMON_APPDATA": 35,
486
+ "CSIDL_LOCAL_APPDATA": 28,
487
+ }[csidl_name]
488
+
489
+ buf = ctypes.create_unicode_buffer(1024)
490
+ windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf)
491
+
492
+ # Downgrade to short path name if have highbit chars. See
493
+ # <http://bugs.activestate.com/show_bug.cgi?id=85099>.
494
+ has_high_char = False
495
+ for c in buf:
496
+ if ord(c) > 255:
497
+ has_high_char = True
498
+ break
499
+ if has_high_char:
500
+ buf2 = ctypes.create_unicode_buffer(1024)
501
+ if windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024):
502
+ buf = buf2
503
+
504
+ return buf.value
505
+
506
+
507
+ def _get_win_folder_with_jna(csidl_name):
508
+ import array
509
+
510
+ buf_size = win32.WinDef.MAX_PATH * 2
511
+ buf = array.zeros("c", buf_size)
512
+ shell = win32.Shell32.INSTANCE
513
+ shell.SHGetFolderPath(
514
+ None,
515
+ getattr(win32.ShlObj, csidl_name),
516
+ None,
517
+ win32.ShlObj.SHGFP_TYPE_CURRENT,
518
+ buf,
519
+ )
520
+ dir = jna.Native.toString(buf.tostring()).rstrip("\0")
521
+
522
+ # Downgrade to short path name if have highbit chars. See
523
+ # <http://bugs.activestate.com/show_bug.cgi?id=85099>.
524
+ has_high_char = False
525
+ for c in dir:
526
+ if ord(c) > 255:
527
+ has_high_char = True
528
+ break
529
+ if has_high_char:
530
+ buf = array.zeros("c", buf_size)
531
+ kernel = win32.Kernel32.INSTANCE
532
+ if kernel.GetShortPathName(dir, buf, buf_size):
533
+ dir = jna.Native.toString(buf.tostring()).rstrip("\0")
534
+
535
+ return dir
536
+
537
+
538
+ if system == "win32":
539
+ try:
540
+ from win32com.shell import shellcon, shell
541
+
542
+ _get_win_folder = _get_win_folder_with_pywin32
543
+ except ImportError:
544
+ try:
545
+ import ctypes
546
+ from ctypes import windll
547
+
548
+ _get_win_folder = _get_win_folder_with_ctypes
549
+ except ImportError:
550
+ try:
551
+ from com.sun import jna
552
+ from com.sun.jna.platform import win32
553
+
554
+ _get_win_folder = _get_win_folder_with_jna
555
+ except ImportError:
556
+ _get_win_folder = _get_win_folder_from_registry
557
+
558
+
559
+ # ---- self test code
560
+
561
+ if __name__ == "__main__":
562
+ appname = "MyApp"
563
+ appauthor = "MyCompany"
564
+
565
+ props = (
566
+ "user_data_dir",
567
+ "site_data_dir",
568
+ "user_config_dir",
569
+ "site_config_dir",
570
+ "user_cache_dir",
571
+ "user_log_dir",
572
+ )
573
+
574
+ print("-- app dirs %s --" % __version__)
575
+
576
+ print("-- app dirs (with optional 'version')")
577
+ dirs = AppDirs(appname, appauthor, version="1.0")
578
+ for prop in props:
579
+ print("%s: %s" % (prop, getattr(dirs, prop)))
580
+
581
+ print("\n-- app dirs (without optional 'version')")
582
+ dirs = AppDirs(appname, appauthor)
583
+ for prop in props:
584
+ print("%s: %s" % (prop, getattr(dirs, prop)))
585
+
586
+ print("\n-- app dirs (without optional 'appauthor')")
587
+ dirs = AppDirs(appname)
588
+ for prop in props:
589
+ print("%s: %s" % (prop, getattr(dirs, prop)))
590
+
591
+ print("\n-- app dirs (with disabled 'appauthor')")
592
+ dirs = AppDirs(appname, appauthor=False)
593
+ for prop in props:
594
+ print("%s: %s" % (prop, getattr(dirs, prop)))
@@ -0,0 +1,24 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ """
5
+ Implementation of some CFFI functions
6
+ """
7
+
8
+ from numba.cuda.core.imputils import Registry
9
+ from numba.cuda import types
10
+
11
+ registry = Registry("cffiimpl")
12
+
13
+
14
+ @registry.lower("ffi.from_buffer", types.Buffer)
15
+ def from_buffer(context, builder, sig, args):
16
+ assert len(sig.args) == 1
17
+ assert len(args) == 1
18
+ [fromty] = sig.args
19
+ [val] = args
20
+ # Type inference should have prevented passing a buffer from an
21
+ # array to a pointer of the wrong type
22
+ assert fromty.dtype == sig.return_type.dtype
23
+ ary = context.make_array(fromty)(context, builder, val)
24
+ return ary.data
@@ -0,0 +1,43 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ """
5
+ Implement code coverage support.
6
+
7
+ Currently contains logic to extend ``coverage`` with lines covered by the
8
+ compiler.
9
+ """
10
+
11
+ from typing import Optional, Sequence, Callable
12
+ from abc import ABC, abstractmethod
13
+
14
+ from numba.cuda.core import ir
15
+ from numba.cuda import config
16
+
17
+ _the_registry: Callable[[], Optional["NotifyLocBase"]] = []
18
+
19
+
20
+ def get_registered_loc_notify() -> Sequence["NotifyLocBase"]:
21
+ """
22
+ Returns a list of the registered NotifyLocBase instances.
23
+ """
24
+ if hasattr(config, "JIT_COVERAGE") and not config.JIT_COVERAGE:
25
+ # Coverage disabled.
26
+ return []
27
+ return list(
28
+ filter(
29
+ lambda x: x is not None, (factory() for factory in _the_registry)
30
+ )
31
+ )
32
+
33
+
34
+ class NotifyLocBase(ABC):
35
+ """Interface for notifying visiting of a ``numba.cuda.core.ir.Loc``."""
36
+
37
+ @abstractmethod
38
+ def notify(self, loc: ir.Loc) -> None:
39
+ pass
40
+
41
+ @abstractmethod
42
+ def close(self) -> None:
43
+ pass