numba-cuda 0.19.0__py3-none-any.whl → 0.20.0__py3-none-any.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.

Potentially problematic release.


This version of numba-cuda might be problematic. Click here for more details.

Files changed (353) hide show
  1. _numba_cuda_redirector.pth +3 -0
  2. _numba_cuda_redirector.py +3 -0
  3. numba_cuda/VERSION +1 -1
  4. numba_cuda/__init__.py +2 -1
  5. numba_cuda/_version.py +2 -13
  6. numba_cuda/numba/cuda/__init__.py +4 -1
  7. numba_cuda/numba/cuda/_internal/cuda_bf16.py +12708 -1469
  8. numba_cuda/numba/cuda/_internal/cuda_fp16.py +2656 -8769
  9. numba_cuda/numba/cuda/api.py +9 -1
  10. numba_cuda/numba/cuda/api_util.py +3 -0
  11. numba_cuda/numba/cuda/args.py +3 -0
  12. numba_cuda/numba/cuda/bf16.py +288 -2
  13. numba_cuda/numba/cuda/cg.py +3 -0
  14. numba_cuda/numba/cuda/cgutils.py +5 -2
  15. numba_cuda/numba/cuda/cloudpickle/__init__.py +21 -0
  16. numba_cuda/numba/cuda/cloudpickle/cloudpickle.py +1598 -0
  17. numba_cuda/numba/cuda/cloudpickle/cloudpickle_fast.py +17 -0
  18. numba_cuda/numba/cuda/codegen.py +4 -1
  19. numba_cuda/numba/cuda/compiler.py +376 -30
  20. numba_cuda/numba/cuda/core/analysis.py +319 -0
  21. numba_cuda/numba/cuda/core/annotations/__init__.py +0 -0
  22. numba_cuda/numba/cuda/core/annotations/type_annotations.py +304 -0
  23. numba_cuda/numba/cuda/core/base.py +1289 -0
  24. numba_cuda/numba/cuda/core/bytecode.py +727 -0
  25. numba_cuda/numba/cuda/core/caching.py +5 -2
  26. numba_cuda/numba/cuda/core/callconv.py +3 -0
  27. numba_cuda/numba/cuda/core/codegen.py +3 -0
  28. numba_cuda/numba/cuda/core/compiler.py +9 -14
  29. numba_cuda/numba/cuda/core/compiler_machinery.py +497 -0
  30. numba_cuda/numba/cuda/core/config.py +747 -0
  31. numba_cuda/numba/cuda/core/consts.py +124 -0
  32. numba_cuda/numba/cuda/core/cpu.py +370 -0
  33. numba_cuda/numba/cuda/core/environment.py +68 -0
  34. numba_cuda/numba/cuda/core/event.py +511 -0
  35. numba_cuda/numba/cuda/core/funcdesc.py +330 -0
  36. numba_cuda/numba/cuda/core/inline_closurecall.py +1889 -0
  37. numba_cuda/numba/cuda/core/interpreter.py +52 -27
  38. numba_cuda/numba/cuda/core/ir_utils.py +17 -29
  39. numba_cuda/numba/cuda/core/options.py +262 -0
  40. numba_cuda/numba/cuda/core/postproc.py +249 -0
  41. numba_cuda/numba/cuda/core/pythonapi.py +1868 -0
  42. numba_cuda/numba/cuda/core/rewrites/__init__.py +26 -0
  43. numba_cuda/numba/cuda/core/rewrites/ir_print.py +90 -0
  44. numba_cuda/numba/cuda/core/rewrites/registry.py +104 -0
  45. numba_cuda/numba/cuda/core/rewrites/static_binop.py +40 -0
  46. numba_cuda/numba/cuda/core/rewrites/static_getitem.py +187 -0
  47. numba_cuda/numba/cuda/core/rewrites/static_raise.py +98 -0
  48. numba_cuda/numba/cuda/core/sigutils.py +3 -0
  49. numba_cuda/numba/cuda/core/ssa.py +496 -0
  50. numba_cuda/numba/cuda/core/targetconfig.py +329 -0
  51. numba_cuda/numba/cuda/core/tracing.py +231 -0
  52. numba_cuda/numba/cuda/core/transforms.py +952 -0
  53. numba_cuda/numba/cuda/core/typed_passes.py +741 -7
  54. numba_cuda/numba/cuda/core/typeinfer.py +1948 -0
  55. numba_cuda/numba/cuda/core/unsafe/__init__.py +0 -0
  56. numba_cuda/numba/cuda/core/unsafe/bytes.py +67 -0
  57. numba_cuda/numba/cuda/core/unsafe/eh.py +66 -0
  58. numba_cuda/numba/cuda/core/unsafe/refcount.py +98 -0
  59. numba_cuda/numba/cuda/core/untyped_passes.py +1983 -0
  60. numba_cuda/numba/cuda/cpython/cmathimpl.py +560 -0
  61. numba_cuda/numba/cuda/cpython/mathimpl.py +499 -0
  62. numba_cuda/numba/cuda/cpython/numbers.py +1474 -0
  63. numba_cuda/numba/cuda/cuda_paths.py +425 -246
  64. numba_cuda/numba/cuda/cudadecl.py +4 -1
  65. numba_cuda/numba/cuda/cudadrv/__init__.py +4 -1
  66. numba_cuda/numba/cuda/cudadrv/devicearray.py +5 -1
  67. numba_cuda/numba/cuda/cudadrv/devices.py +3 -0
  68. numba_cuda/numba/cuda/cudadrv/driver.py +14 -140
  69. numba_cuda/numba/cuda/cudadrv/drvapi.py +3 -0
  70. numba_cuda/numba/cuda/cudadrv/dummyarray.py +114 -24
  71. numba_cuda/numba/cuda/cudadrv/enums.py +3 -0
  72. numba_cuda/numba/cuda/cudadrv/error.py +4 -0
  73. numba_cuda/numba/cuda/cudadrv/libs.py +8 -5
  74. numba_cuda/numba/cuda/cudadrv/linkable_code.py +3 -0
  75. numba_cuda/numba/cuda/cudadrv/mappings.py +4 -1
  76. numba_cuda/numba/cuda/cudadrv/ndarray.py +3 -0
  77. numba_cuda/numba/cuda/cudadrv/nvrtc.py +22 -8
  78. numba_cuda/numba/cuda/cudadrv/nvvm.py +4 -4
  79. numba_cuda/numba/cuda/cudadrv/rtapi.py +3 -0
  80. numba_cuda/numba/cuda/cudadrv/runtime.py +4 -1
  81. numba_cuda/numba/cuda/cudaimpl.py +8 -1
  82. numba_cuda/numba/cuda/cudamath.py +3 -0
  83. numba_cuda/numba/cuda/debuginfo.py +88 -2
  84. numba_cuda/numba/cuda/decorators.py +6 -3
  85. numba_cuda/numba/cuda/descriptor.py +6 -4
  86. numba_cuda/numba/cuda/device_init.py +3 -0
  87. numba_cuda/numba/cuda/deviceufunc.py +69 -2
  88. numba_cuda/numba/cuda/dispatcher.py +21 -39
  89. numba_cuda/numba/cuda/errors.py +10 -0
  90. numba_cuda/numba/cuda/extending.py +3 -0
  91. numba_cuda/numba/cuda/flags.py +143 -1
  92. numba_cuda/numba/cuda/fp16.py +3 -2
  93. numba_cuda/numba/cuda/include/13/cuda_bf16.h +5118 -0
  94. numba_cuda/numba/cuda/include/13/cuda_bf16.hpp +3865 -0
  95. numba_cuda/numba/cuda/include/13/cuda_fp16.h +5363 -0
  96. numba_cuda/numba/cuda/include/13/cuda_fp16.hpp +3483 -0
  97. numba_cuda/numba/cuda/initialize.py +4 -0
  98. numba_cuda/numba/cuda/intrinsic_wrapper.py +3 -0
  99. numba_cuda/numba/cuda/intrinsics.py +3 -0
  100. numba_cuda/numba/cuda/itanium_mangler.py +3 -0
  101. numba_cuda/numba/cuda/kernels/__init__.py +2 -0
  102. numba_cuda/numba/cuda/kernels/reduction.py +3 -0
  103. numba_cuda/numba/cuda/kernels/transpose.py +3 -0
  104. numba_cuda/numba/cuda/libdevice.py +4 -0
  105. numba_cuda/numba/cuda/libdevicedecl.py +3 -0
  106. numba_cuda/numba/cuda/libdevicefuncs.py +3 -0
  107. numba_cuda/numba/cuda/libdeviceimpl.py +3 -0
  108. numba_cuda/numba/cuda/locks.py +3 -0
  109. numba_cuda/numba/cuda/lowering.py +59 -159
  110. numba_cuda/numba/cuda/mathimpl.py +5 -1
  111. numba_cuda/numba/cuda/memory_management/__init__.py +3 -0
  112. numba_cuda/numba/cuda/memory_management/memsys.cu +5 -0
  113. numba_cuda/numba/cuda/memory_management/memsys.cuh +5 -0
  114. numba_cuda/numba/cuda/memory_management/nrt.cu +5 -0
  115. numba_cuda/numba/cuda/memory_management/nrt.cuh +5 -0
  116. numba_cuda/numba/cuda/memory_management/nrt.py +48 -18
  117. numba_cuda/numba/cuda/misc/findlib.py +75 -0
  118. numba_cuda/numba/cuda/models.py +12 -1
  119. numba_cuda/numba/cuda/np/npdatetime_helpers.py +217 -0
  120. numba_cuda/numba/cuda/np/npyfuncs.py +1807 -0
  121. numba_cuda/numba/cuda/np/numpy_support.py +553 -0
  122. numba_cuda/numba/cuda/np/ufunc/ufuncbuilder.py +59 -0
  123. numba_cuda/numba/cuda/nvvmutils.py +4 -1
  124. numba_cuda/numba/cuda/printimpl.py +15 -1
  125. numba_cuda/numba/cuda/random.py +4 -1
  126. numba_cuda/numba/cuda/reshape_funcs.cu +5 -0
  127. numba_cuda/numba/cuda/serialize.py +4 -1
  128. numba_cuda/numba/cuda/simulator/__init__.py +4 -1
  129. numba_cuda/numba/cuda/simulator/_internal/__init__.py +3 -0
  130. numba_cuda/numba/cuda/simulator/_internal/cuda_bf16.py +2 -0
  131. numba_cuda/numba/cuda/simulator/api.py +4 -1
  132. numba_cuda/numba/cuda/simulator/bf16.py +3 -0
  133. numba_cuda/numba/cuda/simulator/compiler.py +7 -0
  134. numba_cuda/numba/cuda/simulator/cudadrv/__init__.py +3 -0
  135. numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +4 -1
  136. numba_cuda/numba/cuda/simulator/cudadrv/devices.py +3 -0
  137. numba_cuda/numba/cuda/simulator/cudadrv/driver.py +3 -0
  138. numba_cuda/numba/cuda/simulator/cudadrv/drvapi.py +3 -0
  139. numba_cuda/numba/cuda/simulator/cudadrv/dummyarray.py +3 -0
  140. numba_cuda/numba/cuda/simulator/cudadrv/error.py +4 -0
  141. numba_cuda/numba/cuda/simulator/cudadrv/libs.py +4 -0
  142. numba_cuda/numba/cuda/simulator/cudadrv/linkable_code.py +4 -0
  143. numba_cuda/numba/cuda/simulator/cudadrv/nvrtc.py +3 -0
  144. numba_cuda/numba/cuda/simulator/cudadrv/nvvm.py +3 -0
  145. numba_cuda/numba/cuda/simulator/cudadrv/runtime.py +3 -0
  146. numba_cuda/numba/cuda/simulator/dispatcher.py +4 -0
  147. numba_cuda/numba/cuda/simulator/kernel.py +3 -0
  148. numba_cuda/numba/cuda/simulator/kernelapi.py +4 -1
  149. numba_cuda/numba/cuda/simulator/memory_management/__init__.py +3 -0
  150. numba_cuda/numba/cuda/simulator/memory_management/nrt.py +17 -2
  151. numba_cuda/numba/cuda/simulator/reduction.py +3 -0
  152. numba_cuda/numba/cuda/simulator/vector_types.py +3 -0
  153. numba_cuda/numba/cuda/simulator_init.py +3 -0
  154. numba_cuda/numba/cuda/stubs.py +3 -0
  155. numba_cuda/numba/cuda/target.py +38 -17
  156. numba_cuda/numba/cuda/testing.py +7 -19
  157. numba_cuda/numba/cuda/tests/__init__.py +4 -1
  158. numba_cuda/numba/cuda/tests/cloudpickle_main_class.py +9 -0
  159. numba_cuda/numba/cuda/tests/complex_usecases.py +3 -0
  160. numba_cuda/numba/cuda/tests/core/serialize_usecases.py +3 -0
  161. numba_cuda/numba/cuda/tests/core/test_itanium_mangler.py +3 -0
  162. numba_cuda/numba/cuda/tests/core/test_serialize.py +7 -4
  163. numba_cuda/numba/cuda/tests/cudadrv/__init__.py +3 -0
  164. numba_cuda/numba/cuda/tests/cudadrv/test_array_attr.py +3 -0
  165. numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +3 -0
  166. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_array_slicing.py +3 -0
  167. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_auto_context.py +3 -0
  168. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +4 -1
  169. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +3 -0
  170. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_libraries.py +4 -1
  171. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +3 -0
  172. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +3 -0
  173. numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +4 -1
  174. numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +9 -3
  175. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +4 -1
  176. numba_cuda/numba/cuda/tests/cudadrv/test_events.py +3 -0
  177. numba_cuda/numba/cuda/tests/cudadrv/test_host_alloc.py +3 -0
  178. numba_cuda/numba/cuda/tests/cudadrv/test_init.py +3 -0
  179. numba_cuda/numba/cuda/tests/cudadrv/test_inline_ptx.py +3 -0
  180. numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py +3 -0
  181. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +21 -2
  182. numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +3 -0
  183. numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +5 -1
  184. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +4 -1
  185. numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +3 -0
  186. numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +3 -0
  187. numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py +3 -0
  188. numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py +3 -0
  189. numba_cuda/numba/cuda/tests/cudadrv/test_ptds.py +4 -1
  190. numba_cuda/numba/cuda/tests/cudadrv/test_reset_device.py +3 -0
  191. numba_cuda/numba/cuda/tests/cudadrv/test_runtime.py +3 -0
  192. numba_cuda/numba/cuda/tests/cudadrv/test_select_device.py +3 -0
  193. numba_cuda/numba/cuda/tests/cudadrv/test_streams.py +3 -0
  194. numba_cuda/numba/cuda/tests/cudapy/__init__.py +3 -0
  195. numba_cuda/numba/cuda/tests/cudapy/cache_usecases.py +3 -0
  196. numba_cuda/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py +3 -0
  197. numba_cuda/numba/cuda/tests/cudapy/cg_cache_usecases.py +3 -0
  198. numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +4 -1
  199. numba_cuda/numba/cuda/tests/cudapy/recursion_usecases.py +3 -0
  200. numba_cuda/numba/cuda/tests/cudapy/test_alignment.py +3 -0
  201. numba_cuda/numba/cuda/tests/cudapy/test_array.py +5 -1
  202. numba_cuda/numba/cuda/tests/cudapy/test_array_alignment.py +3 -0
  203. numba_cuda/numba/cuda/tests/cudapy/test_array_args.py +3 -0
  204. numba_cuda/numba/cuda/tests/cudapy/test_array_methods.py +3 -0
  205. numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +4 -1
  206. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +542 -2
  207. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +84 -1
  208. numba_cuda/numba/cuda/tests/cudapy/test_blackscholes.py +3 -0
  209. numba_cuda/numba/cuda/tests/cudapy/test_boolean.py +3 -0
  210. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +4 -3
  211. numba_cuda/numba/cuda/tests/cudapy/test_casting.py +3 -0
  212. numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +3 -0
  213. numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +3 -0
  214. numba_cuda/numba/cuda/tests/cudapy/test_complex.py +4 -1
  215. numba_cuda/numba/cuda/tests/cudapy/test_complex_kernel.py +3 -0
  216. numba_cuda/numba/cuda/tests/cudapy/test_const_string.py +3 -0
  217. numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +4 -1
  218. numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +5 -3
  219. numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +130 -0
  220. numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +3 -0
  221. numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +3 -0
  222. numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +4 -1
  223. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +4 -1
  224. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +314 -3
  225. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +4 -1
  226. numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +3 -0
  227. numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +4 -1
  228. numba_cuda/numba/cuda/tests/cudapy/test_enums.py +3 -0
  229. numba_cuda/numba/cuda/tests/cudapy/test_errors.py +4 -1
  230. numba_cuda/numba/cuda/tests/cudapy/test_exception.py +4 -1
  231. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +5 -1
  232. numba_cuda/numba/cuda/tests/cudapy/test_fastmath.py +3 -0
  233. numba_cuda/numba/cuda/tests/cudapy/test_forall.py +3 -0
  234. numba_cuda/numba/cuda/tests/cudapy/test_freevar.py +3 -0
  235. numba_cuda/numba/cuda/tests/cudapy/test_frexp_ldexp.py +3 -0
  236. numba_cuda/numba/cuda/tests/cudapy/test_globals.py +3 -0
  237. numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +3 -0
  238. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py +3 -0
  239. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py +3 -0
  240. numba_cuda/numba/cuda/tests/cudapy/test_idiv.py +3 -0
  241. numba_cuda/numba/cuda/tests/cudapy/test_inline.py +21 -8
  242. numba_cuda/numba/cuda/tests/cudapy/test_inspect.py +3 -0
  243. numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +3 -0
  244. numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +3 -0
  245. numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +13 -37
  246. numba_cuda/numba/cuda/tests/cudapy/test_iterators.py +3 -0
  247. numba_cuda/numba/cuda/tests/cudapy/test_lang.py +3 -0
  248. numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +4 -1
  249. numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py +3 -0
  250. numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +3 -0
  251. numba_cuda/numba/cuda/tests/cudapy/test_localmem.py +3 -0
  252. numba_cuda/numba/cuda/tests/cudapy/test_mandel.py +3 -0
  253. numba_cuda/numba/cuda/tests/cudapy/test_math.py +4 -1
  254. numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +4 -1
  255. numba_cuda/numba/cuda/tests/cudapy/test_minmax.py +3 -0
  256. numba_cuda/numba/cuda/tests/cudapy/test_montecarlo.py +3 -0
  257. numba_cuda/numba/cuda/tests/cudapy/test_multigpu.py +3 -0
  258. numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py +3 -0
  259. numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py +3 -0
  260. numba_cuda/numba/cuda/tests/cudapy/test_nondet.py +3 -0
  261. numba_cuda/numba/cuda/tests/cudapy/test_operator.py +4 -1
  262. numba_cuda/numba/cuda/tests/cudapy/test_optimization.py +3 -0
  263. numba_cuda/numba/cuda/tests/cudapy/test_overload.py +3 -0
  264. numba_cuda/numba/cuda/tests/cudapy/test_powi.py +3 -0
  265. numba_cuda/numba/cuda/tests/cudapy/test_print.py +23 -0
  266. numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py +3 -0
  267. numba_cuda/numba/cuda/tests/cudapy/test_random.py +3 -0
  268. numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +4 -1
  269. numba_cuda/numba/cuda/tests/cudapy/test_recursion.py +3 -0
  270. numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +4 -1
  271. numba_cuda/numba/cuda/tests/cudapy/test_retrieve_autoconverted_arrays.py +3 -0
  272. numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +4 -1
  273. numba_cuda/numba/cuda/tests/cudapy/test_slicing.py +3 -0
  274. numba_cuda/numba/cuda/tests/cudapy/test_sm.py +4 -1
  275. numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py +3 -0
  276. numba_cuda/numba/cuda/tests/cudapy/test_ssa.py +453 -0
  277. numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +3 -0
  278. numba_cuda/numba/cuda/tests/cudapy/test_sync.py +4 -1
  279. numba_cuda/numba/cuda/tests/cudapy/test_transpose.py +3 -0
  280. numba_cuda/numba/cuda/tests/cudapy/test_typeinfer.py +538 -0
  281. numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +266 -2
  282. numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +4 -1
  283. numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +4 -1
  284. numba_cuda/numba/cuda/tests/cudapy/test_vectorize.py +3 -0
  285. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_complex.py +3 -0
  286. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +115 -6
  287. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_device.py +3 -0
  288. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_scalar_arg.py +3 -0
  289. numba_cuda/numba/cuda/tests/cudapy/test_warning.py +4 -1
  290. numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +4 -1
  291. numba_cuda/numba/cuda/tests/cudasim/__init__.py +3 -0
  292. numba_cuda/numba/cuda/tests/cudasim/support.py +3 -0
  293. numba_cuda/numba/cuda/tests/cudasim/test_cudasim_issues.py +3 -0
  294. numba_cuda/numba/cuda/tests/data/__init__.py +2 -0
  295. numba_cuda/numba/cuda/tests/data/cta_barrier.cu +5 -0
  296. numba_cuda/numba/cuda/tests/data/cuda_include.cu +5 -0
  297. numba_cuda/numba/cuda/tests/data/error.cu +5 -0
  298. numba_cuda/numba/cuda/tests/data/include/add.cuh +5 -0
  299. numba_cuda/numba/cuda/tests/data/jitlink.cu +5 -0
  300. numba_cuda/numba/cuda/tests/data/warn.cu +5 -0
  301. numba_cuda/numba/cuda/tests/doc_examples/__init__.py +3 -0
  302. numba_cuda/numba/cuda/tests/doc_examples/ffi/__init__.py +2 -0
  303. numba_cuda/numba/cuda/tests/doc_examples/ffi/functions.cu +5 -0
  304. numba_cuda/numba/cuda/tests/doc_examples/ffi/include/mul.cuh +5 -0
  305. numba_cuda/numba/cuda/tests/doc_examples/ffi/saxpy.cu +5 -0
  306. numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +3 -2
  307. numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +3 -0
  308. numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +3 -0
  309. numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +6 -2
  310. numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +3 -2
  311. numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +3 -0
  312. numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +3 -0
  313. numba_cuda/numba/cuda/tests/doc_examples/test_random.py +3 -0
  314. numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +3 -0
  315. numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +3 -2
  316. numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +3 -0
  317. numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +3 -0
  318. numba_cuda/numba/cuda/tests/enum_usecases.py +3 -0
  319. numba_cuda/numba/cuda/tests/nocuda/__init__.py +3 -0
  320. numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +3 -0
  321. numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py +3 -0
  322. numba_cuda/numba/cuda/tests/nocuda/test_import.py +6 -1
  323. numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +27 -12
  324. numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py +3 -0
  325. numba_cuda/numba/cuda/tests/nrt/__init__.py +3 -0
  326. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +5 -1
  327. numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +3 -0
  328. numba_cuda/numba/cuda/tests/support.py +58 -15
  329. numba_cuda/numba/cuda/tests/test_binary_generation/Makefile +3 -0
  330. numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py +2 -1
  331. numba_cuda/numba/cuda/tests/test_binary_generation/nrt_extern.cu +5 -0
  332. numba_cuda/numba/cuda/tests/test_binary_generation/test_device_functions.cu +5 -0
  333. numba_cuda/numba/cuda/tests/test_binary_generation/undefined_extern.cu +5 -0
  334. numba_cuda/numba/cuda/tests/test_tracing.py +200 -0
  335. numba_cuda/numba/cuda/types.py +59 -0
  336. numba_cuda/numba/cuda/typing/__init__.py +12 -1
  337. numba_cuda/numba/cuda/typing/cffi_utils.py +55 -0
  338. numba_cuda/numba/cuda/typing/context.py +751 -0
  339. numba_cuda/numba/cuda/typing/enumdecl.py +74 -0
  340. numba_cuda/numba/cuda/typing/npydecl.py +658 -0
  341. numba_cuda/numba/cuda/typing/templates.py +10 -14
  342. numba_cuda/numba/cuda/ufuncs.py +6 -3
  343. numba_cuda/numba/cuda/utils.py +9 -112
  344. numba_cuda/numba/cuda/vector_types.py +3 -0
  345. numba_cuda/numba/cuda/vectorizers.py +3 -0
  346. {numba_cuda-0.19.0.dist-info → numba_cuda-0.20.0.dist-info}/METADATA +6 -2
  347. numba_cuda-0.20.0.dist-info/RECORD +357 -0
  348. {numba_cuda-0.19.0.dist-info → numba_cuda-0.20.0.dist-info}/licenses/LICENSE +1 -0
  349. numba_cuda-0.20.0.dist-info/licenses/LICENSE.numba +24 -0
  350. numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py +0 -57
  351. numba_cuda-0.19.0.dist-info/RECORD +0 -301
  352. {numba_cuda-0.19.0.dist-info → numba_cuda-0.20.0.dist-info}/WHEEL +0 -0
  353. {numba_cuda-0.19.0.dist-info → numba_cuda-0.20.0.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,274 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import functools
5
+ import warnings
2
6
  import numpy as np
3
7
  import unittest
4
8
 
5
- from numba import config, cuda, types
9
+ from numba import cuda, types, njit, typeof
10
+ from numba.cuda import config
11
+ from numba.np import numpy_support
6
12
  from numba.cuda.tests.support import TestCase
7
- from numba.tests.test_ufuncs import BasicUFuncTest
13
+ from numba.cuda.tests.support import MemoryLeakMixin
14
+
15
+
16
+ class BaseUFuncTest(MemoryLeakMixin):
17
+ def setUp(self):
18
+ super(BaseUFuncTest, self).setUp()
19
+ self.inputs = [
20
+ (np.uint32(0), types.uint32),
21
+ (np.uint32(1), types.uint32),
22
+ (np.int32(-1), types.int32),
23
+ (np.int32(0), types.int32),
24
+ (np.int32(1), types.int32),
25
+ (np.uint64(0), types.uint64),
26
+ (np.uint64(1), types.uint64),
27
+ (np.int64(-1), types.int64),
28
+ (np.int64(0), types.int64),
29
+ (np.int64(1), types.int64),
30
+ (np.float32(-0.5), types.float32),
31
+ (np.float32(0.0), types.float32),
32
+ (np.float32(0.5), types.float32),
33
+ (np.float64(-0.5), types.float64),
34
+ (np.float64(0.0), types.float64),
35
+ (np.float64(0.5), types.float64),
36
+ (np.array([0, 1], dtype="u4"), types.Array(types.uint32, 1, "C")),
37
+ (np.array([0, 1], dtype="u8"), types.Array(types.uint64, 1, "C")),
38
+ (
39
+ np.array([-1, 0, 1], dtype="i4"),
40
+ types.Array(types.int32, 1, "C"),
41
+ ),
42
+ (
43
+ np.array([-1, 0, 1], dtype="i8"),
44
+ types.Array(types.int64, 1, "C"),
45
+ ),
46
+ (
47
+ np.array([-0.5, 0.0, 0.5], dtype="f4"),
48
+ types.Array(types.float32, 1, "C"),
49
+ ),
50
+ (
51
+ np.array([-0.5, 0.0, 0.5], dtype="f8"),
52
+ types.Array(types.float64, 1, "C"),
53
+ ),
54
+ (np.array([0, 1], dtype=np.int8), types.Array(types.int8, 1, "C")),
55
+ (
56
+ np.array([0, 1], dtype=np.int16),
57
+ types.Array(types.int16, 1, "C"),
58
+ ),
59
+ (
60
+ np.array([0, 1], dtype=np.uint8),
61
+ types.Array(types.uint8, 1, "C"),
62
+ ),
63
+ (
64
+ np.array([0, 1], dtype=np.uint16),
65
+ types.Array(types.uint16, 1, "C"),
66
+ ),
67
+ ]
68
+
69
+ @functools.lru_cache(maxsize=None)
70
+ def _compile(self, pyfunc, args, nrt=False):
71
+ # NOTE: to test the implementation of Numpy ufuncs, we disable
72
+ # rewriting of array expressions.
73
+ return njit(args, _nrt=nrt, no_rewrites=True)(pyfunc)
74
+
75
+ def _determine_output_type(
76
+ self, input_type, int_output_type=None, float_output_type=None
77
+ ):
78
+ ty = input_type
79
+ if isinstance(ty, types.Array):
80
+ ndim = ty.ndim
81
+ ty = ty.dtype
82
+ else:
83
+ ndim = 1
84
+
85
+ if ty in types.signed_domain:
86
+ if int_output_type:
87
+ output_type = types.Array(int_output_type, ndim, "C")
88
+ else:
89
+ output_type = types.Array(ty, ndim, "C")
90
+ elif ty in types.unsigned_domain:
91
+ if int_output_type:
92
+ output_type = types.Array(int_output_type, ndim, "C")
93
+ else:
94
+ output_type = types.Array(ty, ndim, "C")
95
+ else:
96
+ if float_output_type:
97
+ output_type = types.Array(float_output_type, ndim, "C")
98
+ else:
99
+ output_type = types.Array(ty, ndim, "C")
100
+ return output_type
101
+
102
+
103
+ class BasicUFuncTest(BaseUFuncTest):
104
+ def _make_ufunc_usecase(self, ufunc):
105
+ return _make_ufunc_usecase(ufunc)
106
+
107
+ def basic_ufunc_test(
108
+ self,
109
+ ufunc,
110
+ skip_inputs=[],
111
+ additional_inputs=[],
112
+ int_output_type=None,
113
+ float_output_type=None,
114
+ kinds="ifc",
115
+ positive_only=False,
116
+ ):
117
+ # Necessary to avoid some Numpy warnings being silenced, despite
118
+ # the simplefilter() call below.
119
+ self.reset_module_warnings(__name__)
120
+
121
+ pyfunc = self._make_ufunc_usecase(ufunc)
122
+
123
+ inputs = list(self.inputs) + additional_inputs
124
+
125
+ for input_tuple in inputs:
126
+ input_operand = input_tuple[0]
127
+ input_type = input_tuple[1]
128
+
129
+ is_tuple = isinstance(input_operand, tuple)
130
+ if is_tuple:
131
+ args = input_operand
132
+ else:
133
+ args = (input_operand,) * ufunc.nin
134
+
135
+ if input_type in skip_inputs:
136
+ continue
137
+ if positive_only and np.any(args[0] < 0):
138
+ continue
139
+
140
+ # Some ufuncs don't allow all kinds of arguments
141
+ if args[0].dtype.kind not in kinds:
142
+ continue
143
+
144
+ output_type = self._determine_output_type(
145
+ input_type, int_output_type, float_output_type
146
+ )
147
+
148
+ input_types = (input_type,) * ufunc.nin
149
+ output_types = (output_type,) * ufunc.nout
150
+ argtys = input_types + output_types
151
+ cfunc = self._compile(pyfunc, argtys)
152
+
153
+ if isinstance(args[0], np.ndarray):
154
+ results = [
155
+ np.zeros(args[0].shape, dtype=out_ty.dtype.name)
156
+ for out_ty in output_types
157
+ ]
158
+ expected = [
159
+ np.zeros(args[0].shape, dtype=out_ty.dtype.name)
160
+ for out_ty in output_types
161
+ ]
162
+ else:
163
+ results = [
164
+ np.zeros(1, dtype=out_ty.dtype.name)
165
+ for out_ty in output_types
166
+ ]
167
+ expected = [
168
+ np.zeros(1, dtype=out_ty.dtype.name)
169
+ for out_ty in output_types
170
+ ]
171
+
172
+ invalid_flag = False
173
+ with warnings.catch_warnings(record=True) as warnlist:
174
+ warnings.simplefilter("always")
175
+ pyfunc(*args, *expected)
176
+
177
+ warnmsg = "invalid value encountered"
178
+ for thiswarn in warnlist:
179
+ if issubclass(thiswarn.category, RuntimeWarning) and str(
180
+ thiswarn.message
181
+ ).startswith(warnmsg):
182
+ invalid_flag = True
183
+
184
+ cfunc(*args, *results)
185
+
186
+ for expected_i, result_i in zip(expected, results):
187
+ msg = "\n".join(
188
+ [
189
+ "ufunc '{0}' failed",
190
+ "inputs ({1}):",
191
+ "{2}",
192
+ "got({3})",
193
+ "{4}",
194
+ "expected ({5}):",
195
+ "{6}",
196
+ ]
197
+ ).format(
198
+ ufunc.__name__,
199
+ input_type,
200
+ input_operand,
201
+ output_type,
202
+ result_i,
203
+ expected_i.dtype,
204
+ expected_i,
205
+ )
206
+ try:
207
+ np.testing.assert_array_almost_equal(
208
+ expected_i, result_i, decimal=5, err_msg=msg
209
+ )
210
+ except AssertionError:
211
+ if invalid_flag:
212
+ # Allow output to mismatch for invalid input
213
+ print(
214
+ "Output mismatch for invalid input",
215
+ input_tuple,
216
+ result_i,
217
+ expected_i,
218
+ )
219
+ else:
220
+ raise
221
+
222
+ def signed_unsigned_cmp_test(self, comparison_ufunc):
223
+ self.basic_ufunc_test(comparison_ufunc)
224
+
225
+ if numpy_support.numpy_version < (1, 25):
226
+ return
227
+
228
+ # Test additional implementations that specifically handle signed /
229
+ # unsigned comparisons added in NumPy 1.25:
230
+ # https://github.com/numpy/numpy/pull/23713
231
+ additional_inputs = (
232
+ (np.int64(-1), np.uint64(0)),
233
+ (np.int64(-1), np.uint64(1)),
234
+ (np.int64(0), np.uint64(0)),
235
+ (np.int64(0), np.uint64(1)),
236
+ (np.int64(1), np.uint64(0)),
237
+ (np.int64(1), np.uint64(1)),
238
+ (np.uint64(0), np.int64(-1)),
239
+ (np.uint64(0), np.int64(0)),
240
+ (np.uint64(0), np.int64(1)),
241
+ (np.uint64(1), np.int64(-1)),
242
+ (np.uint64(1), np.int64(0)),
243
+ (np.uint64(1), np.int64(1)),
244
+ (
245
+ np.array([-1, -1, 0, 0, 1, 1], dtype=np.int64),
246
+ np.array([0, 1, 0, 1, 0, 1], dtype=np.uint64),
247
+ ),
248
+ (
249
+ np.array([0, 1, 0, 1, 0, 1], dtype=np.uint64),
250
+ np.array([-1, -1, 0, 0, 1, 1], dtype=np.int64),
251
+ ),
252
+ )
253
+
254
+ pyfunc = self._make_ufunc_usecase(comparison_ufunc)
255
+
256
+ for a, b in additional_inputs:
257
+ input_types = (typeof(a), typeof(b))
258
+ output_type = types.Array(types.bool_, 1, "C")
259
+ argtys = input_types + (output_type,)
260
+ cfunc = self._compile(pyfunc, argtys)
261
+
262
+ if isinstance(a, np.ndarray):
263
+ result = np.zeros(a.shape, dtype=np.bool_)
264
+ else:
265
+ result = np.zeros(1, dtype=np.bool_)
266
+
267
+ expected = np.zeros_like(result)
268
+
269
+ pyfunc(a, b, expected)
270
+ cfunc(a, b, result)
271
+ np.testing.assert_equal(expected, result)
8
272
 
9
273
 
10
274
  def _make_ufunc_usecase(ufunc):
@@ -1,6 +1,9 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  from numba.cuda.testing import unittest, CUDATestCase
2
5
  from numba import cuda
3
- from numba.core import config
6
+ from numba.cuda.core import config
4
7
 
5
8
 
6
9
  class MyError(Exception):
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  """
2
5
  CUDA vector type tests. Note that this test file imports
3
6
  `cuda.vector_type` module to programmatically test all the
@@ -8,7 +11,7 @@ corresponding vector type from `cuda` module in kernel to use them.
8
11
 
9
12
  import numpy as np
10
13
 
11
- from numba.core import config
14
+ from numba.cuda.core import config
12
15
  from numba.cuda.testing import CUDATestCase
13
16
 
14
17
  from numba import cuda
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import numpy as np
2
5
 
3
6
  from collections import namedtuple
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import numpy as np
2
5
  from numba import vectorize
3
6
  from numba.cuda.testing import skip_on_cudasim, CUDATestCase
@@ -1,15 +1,124 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import numpy as np
5
+ import math
2
6
 
3
- from numba import vectorize, cuda
4
- from numba.tests.npyufunc.test_vectorize_decor import (
5
- BaseVectorizeDecor,
6
- BaseVectorizeNopythonArg,
7
- BaseVectorizeUnrecognizedArg,
8
- )
7
+ from numba import vectorize, cuda, int32, uint32, float32, float64
9
8
  from numba.cuda.testing import skip_on_cudasim, CUDATestCase
9
+ from numba.cuda.tests.support import CheckWarningsMixin
10
+
10
11
  import unittest
11
12
 
12
13
 
14
+ pi = math.pi
15
+
16
+
17
+ def sinc(x):
18
+ if x == 0.0:
19
+ return 1.0
20
+ else:
21
+ return math.sin(x * pi) / (pi * x)
22
+
23
+
24
+ def scaled_sinc(x, scale):
25
+ if x == 0.0:
26
+ return scale
27
+ else:
28
+ return scale * (math.sin(x * pi) / (pi * x))
29
+
30
+
31
+ def vector_add(a, b):
32
+ return a + b
33
+
34
+
35
+ class BaseVectorizeDecor(object):
36
+ target = None
37
+ wrapper = None
38
+ funcs = {
39
+ "func1": sinc,
40
+ "func2": scaled_sinc,
41
+ "func3": vector_add,
42
+ }
43
+
44
+ @classmethod
45
+ def _run_and_compare(cls, func, sig, A, *args, **kwargs):
46
+ if cls.wrapper is not None:
47
+ func = cls.wrapper(func)
48
+ numba_func = vectorize(sig, target=cls.target)(func)
49
+ numpy_func = np.vectorize(func)
50
+ result = numba_func(A, *args)
51
+ gold = numpy_func(A, *args)
52
+ np.testing.assert_allclose(result, gold, **kwargs)
53
+
54
+ def test_1(self):
55
+ sig = ["float64(float64)", "float32(float32)"]
56
+ func = self.funcs["func1"]
57
+ A = np.arange(100, dtype=np.float64)
58
+ self._run_and_compare(func, sig, A)
59
+
60
+ def test_2(self):
61
+ sig = [float64(float64), float32(float32)]
62
+ func = self.funcs["func1"]
63
+ A = np.arange(100, dtype=np.float64)
64
+ self._run_and_compare(func, sig, A)
65
+
66
+ def test_3(self):
67
+ sig = ["float64(float64, uint32)"]
68
+ func = self.funcs["func2"]
69
+ A = np.arange(100, dtype=np.float64)
70
+ scale = np.uint32(3)
71
+ self._run_and_compare(func, sig, A, scale, atol=1e-8)
72
+
73
+ def test_4(self):
74
+ sig = [
75
+ int32(int32, int32),
76
+ uint32(uint32, uint32),
77
+ float32(float32, float32),
78
+ float64(float64, float64),
79
+ ]
80
+ func = self.funcs["func3"]
81
+ A = np.arange(100, dtype=np.float64)
82
+ self._run_and_compare(func, sig, A, A)
83
+ A = A.astype(np.float32)
84
+ self._run_and_compare(func, sig, A, A)
85
+ A = A.astype(np.int32)
86
+ self._run_and_compare(func, sig, A, A)
87
+ A = A.astype(np.uint32)
88
+ self._run_and_compare(func, sig, A, A)
89
+
90
+
91
+ class BaseVectorizeNopythonArg(unittest.TestCase, CheckWarningsMixin):
92
+ """
93
+ Test passing the nopython argument to the vectorize decorator.
94
+ """
95
+
96
+ def _test_target_nopython(self, target, warnings, with_sig=True):
97
+ a = np.array([2.0], dtype=np.float32)
98
+ b = np.array([3.0], dtype=np.float32)
99
+ sig = [float32(float32, float32)]
100
+ args = with_sig and [sig] or []
101
+ with self.check_warnings(warnings):
102
+ f = vectorize(*args, target=target, nopython=True)(vector_add)
103
+ f(a, b)
104
+
105
+
106
+ class BaseVectorizeUnrecognizedArg(unittest.TestCase, CheckWarningsMixin):
107
+ """
108
+ Test passing an unrecognized argument to the vectorize decorator.
109
+ """
110
+
111
+ def _test_target_unrecognized_arg(self, target, with_sig=True):
112
+ a = np.array([2.0], dtype=np.float32)
113
+ b = np.array([3.0], dtype=np.float32)
114
+ sig = [float32(float32, float32)]
115
+ args = with_sig and [sig] or []
116
+ with self.assertRaises(KeyError) as raises:
117
+ f = vectorize(*args, target=target, nonexistent=2)(vector_add)
118
+ f(a, b)
119
+ self.assertIn("Unrecognized options", str(raises.exception))
120
+
121
+
13
122
  @skip_on_cudasim("ufunc API unsupported in the simulator")
14
123
  class TestVectorizeDecor(CUDATestCase, BaseVectorizeDecor):
15
124
  """
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  from numba import vectorize
2
5
  from numba import cuda, float32
3
6
  import numpy as np
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import numpy as np
2
5
  from numba import vectorize
3
6
  from numba import cuda, float64
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import numpy as np
2
5
  from numba import cuda
3
6
  from numba.cuda.cudadrv import driver
@@ -12,7 +15,7 @@ from numba.cuda.tests.support import (
12
15
  run_in_subprocess,
13
16
  )
14
17
  from numba.core.errors import NumbaPerformanceWarning
15
- from numba.core import config
18
+ from numba.cuda.core import config
16
19
  import warnings
17
20
 
18
21
 
@@ -1,10 +1,13 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import re
2
5
 
3
6
  import numpy as np
4
7
  from numba import cuda, int32, int64, float32, float64
5
8
  from numba.cuda.testing import unittest, CUDATestCase, skip_on_cudasim
6
9
  from numba.cuda.compiler import compile_ptx
7
- from numba.core import config
10
+ from numba.cuda.core import config
8
11
 
9
12
 
10
13
  def useful_syncwarp(ary):
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  from numba.cuda.tests import load_testsuite
2
5
  import os
3
6
 
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  from numba import cuda
2
5
 
3
6
 
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import threading
2
5
 
3
6
  import numpy as np
@@ -0,0 +1,2 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  #include <cooperative_groups.h>
2
7
  #include <cuda/barrier>
3
8
 
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  // Not all CUDA includes are safe to include in device code compiled by NVRTC,
2
7
  // because it does not have paths to all system include directories. Headers
3
8
  // such as cuda_device_runtime_api.h are safe to use in NVRTC without adding
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  extern "C" __device__
2
7
  int bar(int* out, int a) {
3
8
  // Explicitly placed to generate an error
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  // Templated addition function: myadd
2
7
  template <typename T>
3
8
  __device__ T myadd(T a, T b) { return a + b; }
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  // Compile with:
2
7
  //
3
8
  // nvcc -gencode arch=compute_50,code=compute_50 -rdc true -ptx jitlink.cu
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  extern "C" __device__
2
7
  int bar(int* out, int a) {
3
8
  // Explicitly placed to generate a warning for testing the NVRTC program log
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  from numba.cuda.tests import load_testsuite
2
5
  import os
3
6
 
@@ -0,0 +1,2 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  // magictoken.ex_mul_f32_f32.begin
2
7
  // Foreign function example: multiplication of a pair of floats
3
8
 
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  // Templated multiplication function: mymul
2
7
  template <typename T>
3
8
  __device__ T mymul(T a, T b) { return a * b; }
@@ -1,3 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+ * SPDX-License-Identifier: BSD-2-Clause
4
+ */
5
+
1
6
  #include <add.cuh> // In numba/cuda/tests/data/include
2
7
  #include <mul.cuh> // In numba/cuda/tests/doc_examples/ffi/include
3
8
 
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  # Contents in this file are referenced from the sphinx-generated docs.
2
5
  # "magictoken" is used for markers as beginning and ending of example text.
3
6
 
@@ -7,13 +10,11 @@ from numba.cuda.testing import (
7
10
  skip_on_cudasim,
8
11
  skip_if_cudadevrt_missing,
9
12
  skip_unless_cc_60,
10
- skip_if_mvc_enabled,
11
13
  )
12
14
 
13
15
 
14
16
  @skip_if_cudadevrt_missing
15
17
  @skip_unless_cc_60
16
- @skip_if_mvc_enabled("CG not supported with MVC")
17
18
  @skip_on_cudasim("cudasim doesn't support cuda import at non-top-level")
18
19
  class TestCooperativeGroups(CUDATestCase):
19
20
  def test_ex_grid_sync(self):
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import unittest
2
5
 
3
6
  from numba.cuda.testing import CUDATestCase, skip_on_cudasim
@@ -1,3 +1,6 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
1
4
  import unittest
2
5
 
3
6
  from numba.cuda.testing import CUDATestCase, skip_on_cudasim