numba-cuda 0.18.1__py3-none-any.whl → 0.19.1__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 (301) 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 +5 -2
  8. numba_cuda/numba/cuda/_internal/cuda_fp16.py +4 -1
  9. numba_cuda/numba/cuda/api.py +5 -7
  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 +3 -0
  13. numba_cuda/numba/cuda/cg.py +3 -0
  14. numba_cuda/numba/cuda/cgutils.py +3 -0
  15. numba_cuda/numba/cuda/codegen.py +3 -0
  16. numba_cuda/numba/cuda/compiler.py +10 -4
  17. numba_cuda/numba/cuda/core/caching.py +3 -0
  18. numba_cuda/numba/cuda/core/callconv.py +3 -0
  19. numba_cuda/numba/cuda/core/codegen.py +3 -0
  20. numba_cuda/numba/cuda/core/compiler.py +3 -0
  21. numba_cuda/numba/cuda/core/interpreter.py +3595 -0
  22. numba_cuda/numba/cuda/core/ir_utils.py +2644 -0
  23. numba_cuda/numba/cuda/core/sigutils.py +58 -0
  24. numba_cuda/numba/cuda/core/typed_passes.py +3 -0
  25. numba_cuda/numba/cuda/cuda_paths.py +12 -17
  26. numba_cuda/numba/cuda/cudadecl.py +4 -1
  27. numba_cuda/numba/cuda/cudadrv/__init__.py +3 -0
  28. numba_cuda/numba/cuda/cudadrv/devicearray.py +3 -0
  29. numba_cuda/numba/cuda/cudadrv/devices.py +3 -0
  30. numba_cuda/numba/cuda/cudadrv/driver.py +7 -19
  31. numba_cuda/numba/cuda/cudadrv/drvapi.py +3 -0
  32. numba_cuda/numba/cuda/cudadrv/dummyarray.py +3 -0
  33. numba_cuda/numba/cuda/cudadrv/enums.py +3 -0
  34. numba_cuda/numba/cuda/cudadrv/error.py +4 -0
  35. numba_cuda/numba/cuda/cudadrv/libs.py +4 -2
  36. numba_cuda/numba/cuda/cudadrv/linkable_code.py +3 -0
  37. numba_cuda/numba/cuda/cudadrv/mappings.py +3 -0
  38. numba_cuda/numba/cuda/cudadrv/ndarray.py +3 -0
  39. numba_cuda/numba/cuda/cudadrv/nvrtc.py +47 -44
  40. numba_cuda/numba/cuda/cudadrv/nvvm.py +6 -18
  41. numba_cuda/numba/cuda/cudadrv/rtapi.py +3 -0
  42. numba_cuda/numba/cuda/cudadrv/runtime.py +15 -1
  43. numba_cuda/numba/cuda/cudaimpl.py +3 -0
  44. numba_cuda/numba/cuda/cudamath.py +4 -1
  45. numba_cuda/numba/cuda/debuginfo.py +3 -0
  46. numba_cuda/numba/cuda/decorators.py +7 -3
  47. numba_cuda/numba/cuda/descriptor.py +3 -0
  48. numba_cuda/numba/cuda/device_init.py +3 -0
  49. numba_cuda/numba/cuda/deviceufunc.py +5 -1
  50. numba_cuda/numba/cuda/dispatcher.py +6 -2
  51. numba_cuda/numba/cuda/errors.py +10 -0
  52. numba_cuda/numba/cuda/extending.py +4 -1
  53. numba_cuda/numba/cuda/flags.py +2 -0
  54. numba_cuda/numba/cuda/fp16.py +3 -0
  55. numba_cuda/numba/cuda/initialize.py +4 -0
  56. numba_cuda/numba/cuda/intrinsic_wrapper.py +3 -0
  57. numba_cuda/numba/cuda/intrinsics.py +3 -0
  58. numba_cuda/numba/cuda/itanium_mangler.py +214 -0
  59. numba_cuda/numba/cuda/kernels/__init__.py +2 -0
  60. numba_cuda/numba/cuda/kernels/reduction.py +3 -0
  61. numba_cuda/numba/cuda/kernels/transpose.py +3 -0
  62. numba_cuda/numba/cuda/libdevice.py +4 -0
  63. numba_cuda/numba/cuda/libdevicedecl.py +4 -1
  64. numba_cuda/numba/cuda/libdevicefuncs.py +4 -1
  65. numba_cuda/numba/cuda/libdeviceimpl.py +3 -0
  66. numba_cuda/numba/cuda/locks.py +3 -0
  67. numba_cuda/numba/cuda/lowering.py +53 -16
  68. numba_cuda/numba/cuda/mathimpl.py +3 -0
  69. numba_cuda/numba/cuda/memory_management/__init__.py +3 -0
  70. numba_cuda/numba/cuda/memory_management/memsys.cu +5 -0
  71. numba_cuda/numba/cuda/memory_management/memsys.cuh +5 -0
  72. numba_cuda/numba/cuda/memory_management/nrt.cu +5 -0
  73. numba_cuda/numba/cuda/memory_management/nrt.cuh +5 -0
  74. numba_cuda/numba/cuda/memory_management/nrt.py +5 -1
  75. numba_cuda/numba/cuda/models.py +3 -0
  76. numba_cuda/numba/cuda/nvvmutils.py +3 -0
  77. numba_cuda/numba/cuda/printimpl.py +3 -0
  78. numba_cuda/numba/cuda/random.py +3 -0
  79. numba_cuda/numba/cuda/reshape_funcs.cu +5 -0
  80. numba_cuda/numba/cuda/serialize.py +3 -0
  81. numba_cuda/numba/cuda/simulator/__init__.py +3 -0
  82. numba_cuda/numba/cuda/simulator/_internal/__init__.py +3 -0
  83. numba_cuda/numba/cuda/simulator/_internal/cuda_bf16.py +2 -0
  84. numba_cuda/numba/cuda/simulator/api.py +4 -1
  85. numba_cuda/numba/cuda/simulator/bf16.py +3 -0
  86. numba_cuda/numba/cuda/simulator/compiler.py +3 -0
  87. numba_cuda/numba/cuda/simulator/cudadrv/__init__.py +3 -0
  88. numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +3 -0
  89. numba_cuda/numba/cuda/simulator/cudadrv/devices.py +3 -0
  90. numba_cuda/numba/cuda/simulator/cudadrv/driver.py +3 -7
  91. numba_cuda/numba/cuda/simulator/cudadrv/drvapi.py +3 -0
  92. numba_cuda/numba/cuda/simulator/cudadrv/dummyarray.py +3 -0
  93. numba_cuda/numba/cuda/simulator/cudadrv/error.py +4 -0
  94. numba_cuda/numba/cuda/simulator/cudadrv/libs.py +4 -0
  95. numba_cuda/numba/cuda/simulator/cudadrv/linkable_code.py +4 -0
  96. numba_cuda/numba/cuda/simulator/cudadrv/nvrtc.py +3 -0
  97. numba_cuda/numba/cuda/simulator/cudadrv/nvvm.py +3 -0
  98. numba_cuda/numba/cuda/simulator/cudadrv/runtime.py +3 -0
  99. numba_cuda/numba/cuda/simulator/dispatcher.py +4 -0
  100. numba_cuda/numba/cuda/simulator/kernel.py +3 -0
  101. numba_cuda/numba/cuda/simulator/kernelapi.py +3 -0
  102. numba_cuda/numba/cuda/simulator/memory_management/__init__.py +3 -0
  103. numba_cuda/numba/cuda/simulator/memory_management/nrt.py +3 -0
  104. numba_cuda/numba/cuda/simulator/reduction.py +3 -0
  105. numba_cuda/numba/cuda/simulator/vector_types.py +3 -0
  106. numba_cuda/numba/cuda/simulator_init.py +3 -0
  107. numba_cuda/numba/cuda/stubs.py +3 -0
  108. numba_cuda/numba/cuda/target.py +4 -2
  109. numba_cuda/numba/cuda/testing.py +7 -6
  110. numba_cuda/numba/cuda/tests/__init__.py +3 -0
  111. numba_cuda/numba/cuda/tests/complex_usecases.py +3 -0
  112. numba_cuda/numba/cuda/tests/core/serialize_usecases.py +3 -0
  113. numba_cuda/numba/cuda/tests/core/test_itanium_mangler.py +83 -0
  114. numba_cuda/numba/cuda/tests/core/test_serialize.py +3 -0
  115. numba_cuda/numba/cuda/tests/cudadrv/__init__.py +3 -0
  116. numba_cuda/numba/cuda/tests/cudadrv/test_array_attr.py +3 -0
  117. numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +3 -0
  118. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_array_slicing.py +3 -0
  119. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_auto_context.py +3 -0
  120. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +3 -0
  121. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +3 -0
  122. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_libraries.py +3 -0
  123. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +3 -0
  124. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +4 -1
  125. numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +4 -1
  126. numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +4 -1
  127. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +4 -1
  128. numba_cuda/numba/cuda/tests/cudadrv/test_events.py +3 -0
  129. numba_cuda/numba/cuda/tests/cudadrv/test_host_alloc.py +3 -0
  130. numba_cuda/numba/cuda/tests/cudadrv/test_init.py +3 -0
  131. numba_cuda/numba/cuda/tests/cudadrv/test_inline_ptx.py +3 -0
  132. numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py +3 -0
  133. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +4 -1
  134. numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +4 -1
  135. numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +3 -0
  136. numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py +4 -1
  137. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +3 -0
  138. numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +7 -6
  139. numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +3 -4
  140. numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py +3 -0
  141. numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py +3 -0
  142. numba_cuda/numba/cuda/tests/cudadrv/test_ptds.py +4 -1
  143. numba_cuda/numba/cuda/tests/cudadrv/test_reset_device.py +3 -0
  144. numba_cuda/numba/cuda/tests/cudadrv/test_runtime.py +3 -0
  145. numba_cuda/numba/cuda/tests/cudadrv/test_select_device.py +3 -0
  146. numba_cuda/numba/cuda/tests/cudadrv/test_streams.py +3 -0
  147. numba_cuda/numba/cuda/tests/cudapy/__init__.py +3 -0
  148. numba_cuda/numba/cuda/tests/cudapy/cache_usecases.py +3 -0
  149. numba_cuda/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py +3 -0
  150. numba_cuda/numba/cuda/tests/cudapy/cg_cache_usecases.py +3 -0
  151. numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +3 -0
  152. numba_cuda/numba/cuda/tests/cudapy/recursion_usecases.py +3 -0
  153. numba_cuda/numba/cuda/tests/cudapy/test_alignment.py +3 -0
  154. numba_cuda/numba/cuda/tests/cudapy/test_array.py +3 -0
  155. numba_cuda/numba/cuda/tests/cudapy/test_array_alignment.py +3 -0
  156. numba_cuda/numba/cuda/tests/cudapy/test_array_args.py +3 -0
  157. numba_cuda/numba/cuda/tests/cudapy/test_array_methods.py +3 -0
  158. numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +3 -0
  159. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +4 -3
  160. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +4 -3
  161. numba_cuda/numba/cuda/tests/cudapy/test_blackscholes.py +3 -0
  162. numba_cuda/numba/cuda/tests/cudapy/test_boolean.py +3 -0
  163. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +149 -3
  164. numba_cuda/numba/cuda/tests/cudapy/test_casting.py +3 -0
  165. numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +4 -1
  166. numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +3 -4
  167. numba_cuda/numba/cuda/tests/cudapy/test_complex.py +3 -0
  168. numba_cuda/numba/cuda/tests/cudapy/test_complex_kernel.py +3 -0
  169. numba_cuda/numba/cuda/tests/cudapy/test_const_string.py +3 -0
  170. numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +3 -0
  171. numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +3 -0
  172. numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +4 -1
  173. numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +4 -1
  174. numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +3 -0
  175. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +4 -1
  176. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +23 -284
  177. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +476 -0
  178. numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +4 -1
  179. numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +3 -0
  180. numba_cuda/numba/cuda/tests/cudapy/test_enums.py +3 -0
  181. numba_cuda/numba/cuda/tests/cudapy/test_errors.py +4 -1
  182. numba_cuda/numba/cuda/tests/cudapy/test_exception.py +3 -0
  183. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +4 -6
  184. numba_cuda/numba/cuda/tests/cudapy/test_fastmath.py +3 -0
  185. numba_cuda/numba/cuda/tests/cudapy/test_forall.py +3 -0
  186. numba_cuda/numba/cuda/tests/cudapy/test_freevar.py +3 -0
  187. numba_cuda/numba/cuda/tests/cudapy/test_frexp_ldexp.py +3 -0
  188. numba_cuda/numba/cuda/tests/cudapy/test_globals.py +3 -0
  189. numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +4 -1
  190. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py +3 -0
  191. numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py +3 -0
  192. numba_cuda/numba/cuda/tests/cudapy/test_idiv.py +3 -0
  193. numba_cuda/numba/cuda/tests/cudapy/test_inline.py +3 -0
  194. numba_cuda/numba/cuda/tests/cudapy/test_inspect.py +3 -0
  195. numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +3 -0
  196. numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +4 -1
  197. numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +298 -0
  198. numba_cuda/numba/cuda/tests/cudapy/test_iterators.py +3 -0
  199. numba_cuda/numba/cuda/tests/cudapy/test_lang.py +3 -0
  200. numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +3 -0
  201. numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py +3 -0
  202. numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +4 -1
  203. numba_cuda/numba/cuda/tests/cudapy/test_localmem.py +3 -0
  204. numba_cuda/numba/cuda/tests/cudapy/test_mandel.py +3 -0
  205. numba_cuda/numba/cuda/tests/cudapy/test_math.py +3 -0
  206. numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +3 -0
  207. numba_cuda/numba/cuda/tests/cudapy/test_minmax.py +3 -0
  208. numba_cuda/numba/cuda/tests/cudapy/test_montecarlo.py +3 -0
  209. numba_cuda/numba/cuda/tests/cudapy/test_multigpu.py +3 -0
  210. numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py +3 -0
  211. numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py +3 -0
  212. numba_cuda/numba/cuda/tests/cudapy/test_nondet.py +3 -0
  213. numba_cuda/numba/cuda/tests/cudapy/test_operator.py +4 -1
  214. numba_cuda/numba/cuda/tests/cudapy/test_optimization.py +3 -0
  215. numba_cuda/numba/cuda/tests/cudapy/test_overload.py +3 -0
  216. numba_cuda/numba/cuda/tests/cudapy/test_powi.py +3 -0
  217. numba_cuda/numba/cuda/tests/cudapy/test_print.py +3 -0
  218. numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py +3 -0
  219. numba_cuda/numba/cuda/tests/cudapy/test_random.py +3 -0
  220. numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +3 -0
  221. numba_cuda/numba/cuda/tests/cudapy/test_recursion.py +3 -0
  222. numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +3 -0
  223. numba_cuda/numba/cuda/tests/cudapy/test_retrieve_autoconverted_arrays.py +3 -0
  224. numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +3 -0
  225. numba_cuda/numba/cuda/tests/cudapy/test_slicing.py +3 -0
  226. numba_cuda/numba/cuda/tests/cudapy/test_sm.py +3 -0
  227. numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py +3 -0
  228. numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +3 -0
  229. numba_cuda/numba/cuda/tests/cudapy/test_sync.py +3 -0
  230. numba_cuda/numba/cuda/tests/cudapy/test_transpose.py +3 -0
  231. numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +4 -1
  232. numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +3 -0
  233. numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +3 -0
  234. numba_cuda/numba/cuda/tests/cudapy/test_vectorize.py +3 -0
  235. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_complex.py +3 -0
  236. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +3 -0
  237. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_device.py +3 -0
  238. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_scalar_arg.py +3 -0
  239. numba_cuda/numba/cuda/tests/cudapy/test_warning.py +8 -1
  240. numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +3 -0
  241. numba_cuda/numba/cuda/tests/cudasim/__init__.py +3 -0
  242. numba_cuda/numba/cuda/tests/cudasim/support.py +3 -0
  243. numba_cuda/numba/cuda/tests/cudasim/test_cudasim_issues.py +3 -0
  244. numba_cuda/numba/cuda/tests/data/__init__.py +2 -0
  245. numba_cuda/numba/cuda/tests/data/cta_barrier.cu +5 -0
  246. numba_cuda/numba/cuda/tests/data/cuda_include.cu +5 -0
  247. numba_cuda/numba/cuda/tests/data/error.cu +5 -0
  248. numba_cuda/numba/cuda/tests/data/include/add.cuh +5 -0
  249. numba_cuda/numba/cuda/tests/data/jitlink.cu +5 -0
  250. numba_cuda/numba/cuda/tests/data/warn.cu +5 -0
  251. numba_cuda/numba/cuda/tests/doc_examples/__init__.py +3 -0
  252. numba_cuda/numba/cuda/tests/doc_examples/ffi/__init__.py +2 -0
  253. numba_cuda/numba/cuda/tests/doc_examples/ffi/functions.cu +5 -0
  254. numba_cuda/numba/cuda/tests/doc_examples/ffi/include/mul.cuh +5 -0
  255. numba_cuda/numba/cuda/tests/doc_examples/ffi/saxpy.cu +5 -0
  256. numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +3 -0
  257. numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +4 -1
  258. numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +4 -1
  259. numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +4 -1
  260. numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +4 -1
  261. numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +4 -1
  262. numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +4 -1
  263. numba_cuda/numba/cuda/tests/doc_examples/test_random.py +3 -0
  264. numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +4 -1
  265. numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +4 -1
  266. numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +4 -1
  267. numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +4 -1
  268. numba_cuda/numba/cuda/tests/enum_usecases.py +3 -0
  269. numba_cuda/numba/cuda/tests/nocuda/__init__.py +3 -0
  270. numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +3 -0
  271. numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py +3 -0
  272. numba_cuda/numba/cuda/tests/nocuda/test_import.py +4 -1
  273. numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +3 -0
  274. numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py +3 -0
  275. numba_cuda/numba/cuda/tests/nrt/__init__.py +3 -0
  276. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +5 -2
  277. numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +4 -1
  278. numba_cuda/numba/cuda/tests/support.py +755 -0
  279. numba_cuda/numba/cuda/tests/test_binary_generation/Makefile +6 -3
  280. numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py +6 -2
  281. numba_cuda/numba/cuda/tests/test_binary_generation/nrt_extern.cu +5 -0
  282. numba_cuda/numba/cuda/tests/test_binary_generation/test_device_functions.cu +5 -0
  283. numba_cuda/numba/cuda/tests/test_binary_generation/undefined_extern.cu +5 -0
  284. numba_cuda/numba/cuda/types.py +3 -0
  285. numba_cuda/numba/cuda/typing/__init__.py +11 -0
  286. numba_cuda/numba/cuda/typing/templates.py +1448 -0
  287. numba_cuda/numba/cuda/ufuncs.py +3 -0
  288. numba_cuda/numba/cuda/utils.py +3 -0
  289. numba_cuda/numba/cuda/vector_types.py +6 -3
  290. numba_cuda/numba/cuda/vectorizers.py +3 -0
  291. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.1.dist-info}/METADATA +25 -29
  292. numba_cuda-0.19.1.dist-info/RECORD +302 -0
  293. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.1.dist-info}/licenses/LICENSE +1 -0
  294. numba_cuda-0.19.1.dist-info/licenses/LICENSE.numba +24 -0
  295. numba_cuda/numba/cuda/include/11/cuda_bf16.h +0 -3749
  296. numba_cuda/numba/cuda/include/11/cuda_bf16.hpp +0 -2683
  297. numba_cuda/numba/cuda/include/11/cuda_fp16.h +0 -3794
  298. numba_cuda/numba/cuda/include/11/cuda_fp16.hpp +0 -2614
  299. numba_cuda-0.18.1.dist-info/RECORD +0 -296
  300. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.1.dist-info}/WHEEL +0 -0
  301. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,476 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ import numba.cuda as cuda
5
+ from numba.cuda.testing import CUDATestCase, skip_on_cudasim
6
+ import llvmlite
7
+ from numba import types
8
+
9
+ """
10
+ llvmlite pre 45 left redundant metadata nodes for debug info
11
+ for basic scalar types. Jie Li fixed this in llvmlite 45:
12
+ https://github.com/numba/llvmlite/pull/1165
13
+
14
+ This makes it difficult for us to use the same check patterns for both
15
+ llvmlite versions, as basic scalar types like int8 are emitted only once
16
+ per module. Some checks share most of the logic, but some are entirely
17
+ split between the two versions. The checks indicate which version of llvmlite
18
+ they are for, if they cannot be shared.
19
+ """
20
+
21
+ scalar_types: tuple[tuple[types.Type, str]] = (
22
+ (
23
+ types.float32,
24
+ """
25
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
26
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float32", size: 32)
27
+ CHECK: !DILocalVariable(
28
+ CHECK-SAME: name: "a"
29
+ CHECK-SAME: type: [[DBG86]]
30
+ """,
31
+ ),
32
+ (
33
+ types.float64,
34
+ """
35
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
36
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float64", size: 64)
37
+ CHECK: !DILocalVariable(
38
+ CHECK-SAME: name: "a"
39
+ CHECK-SAME: type: [[DBG86]]
40
+ """,
41
+ ),
42
+ (
43
+ types.int8,
44
+ """
45
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
46
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int8", size: 8)
47
+ CHECK: !DILocalVariable(
48
+ CHECK-SAME: name: "a"
49
+ CHECK-SAME: type: [[DBG86]]
50
+ """,
51
+ ),
52
+ (
53
+ types.int16,
54
+ """
55
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
56
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int16", size: 16)
57
+ CHECK: !DILocalVariable(
58
+ CHECK-SAME: name: "a"
59
+ CHECK-SAME: type: [[DBG86]]
60
+ """,
61
+ ),
62
+ (
63
+ types.int32,
64
+ """
65
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
66
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int32", size: 32)
67
+ CHECK: !DILocalVariable(
68
+ CHECK-SAME: name: "a"
69
+ CHECK-SAME: type: [[DBG86]]
70
+ """,
71
+ ),
72
+ (
73
+ types.int64,
74
+ """
75
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
76
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int64", size: 64)
77
+ CHECK: !DILocalVariable(
78
+ CHECK-SAME: name: "a"
79
+ CHECK-SAME: type: [[DBG86]]
80
+ """,
81
+ ),
82
+ (
83
+ types.uint8,
84
+ """
85
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
86
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned
87
+ CHECK-SAME: name: "uint8", size: 8)
88
+ CHECK: !DILocalVariable(
89
+ CHECK-SAME: name: "a"
90
+ CHECK-SAME: type: [[DBG86]]
91
+ """,
92
+ ),
93
+ (
94
+ types.uint16,
95
+ """
96
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
97
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "uint16", size: 16)
98
+ CHECK: !DILocalVariable(
99
+ CHECK-SAME: name: "a"
100
+ CHECK-SAME: type: [[DBG86]]
101
+ """,
102
+ ),
103
+ (
104
+ types.uint32,
105
+ """
106
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
107
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "uint32", size: 32)
108
+ CHECK: !DILocalVariable(
109
+ CHECK-SAME: name: "a"
110
+ CHECK-SAME: type: [[DBG86]]
111
+ """,
112
+ ),
113
+ (
114
+ types.uint64,
115
+ """
116
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
117
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "uint64", size: 64)
118
+ CHECK: !DILocalVariable(
119
+ CHECK-SAME: name: "a"
120
+ CHECK-SAME: type: [[DBG86]]
121
+ """,
122
+ ),
123
+ (
124
+ types.complex64,
125
+ """
126
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
127
+ CHECK-LLVMLITE-LE44: [[DBG98:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float", size: 32)
128
+ CHECK-LLVMLITE-LE44: [[DBG99:.+]] = !DIDerivedType(
129
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG98]]
130
+ CHECK-LLVMLITE-LE44-SAME: name: "real"
131
+ CHECK-LLVMLITE-LE44-SAME: offset: 0
132
+ CHECK-LLVMLITE-LE44-SAME: size: 32
133
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
134
+ CHECK-LLVMLITE-LE44-SAME: )
135
+ CHECK-LLVMLITE-LE44: [[DBG100:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float", size: 32)
136
+ CHECK-LLVMLITE-LE44: [[DBG101:.+]] = !DIDerivedType(
137
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG100]]
138
+ CHECK-LLVMLITE-LE44-SAME: name: "imag"
139
+ CHECK-LLVMLITE-LE44-SAME: offset: 32
140
+ CHECK-LLVMLITE-LE44-SAME: size: 32
141
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
142
+ CHECK-LLVMLITE-LE44-SAME: )
143
+ CHECK-LLVMLITE-LE44: [[DBG102:.+]] = !{ [[DBG99]], [[DBG101]] }
144
+ CHECK-LLVMLITE-LE44: [[DBG103:.+]] = distinct !DICompositeType(
145
+ CHECK-LLVMLITE-LE44-SAME: elements: [[DBG102]]
146
+ CHECK-LLVMLITE-LE44-SAME: identifier: "{float, float}"
147
+ CHECK-LLVMLITE-LE44-SAME: name: "complex64 ({float, float})"
148
+ CHECK-LLVMLITE-LE44-SAME: size: 64
149
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_structure_type
150
+ CHECK-LLVMLITE-LE44-SAME: )
151
+ CHECK-LLVMLITE-LE44: !DILocalVariable(
152
+ CHECK-LLVMLITE-LE44-SAME: name: "a"
153
+ CHECK-LLVMLITE-LE44-SAME: type: [[DBG103]]
154
+ CHECK-LLVMLITE-LE44-SAME: )
155
+
156
+ CHECK-LLVMLITE-GE45: [[DBG89:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float", size: 32)
157
+ CHECK-LLVMLITE-GE45: distinct !DISubprogram
158
+ CHECK-LLVMLITE-GE45: [[DBG97:.+]] = !DIDerivedType(
159
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
160
+ CHECK-LLVMLITE-GE45-SAME: name: "real"
161
+ CHECK-LLVMLITE-GE45-SAME: offset: 0
162
+ CHECK-LLVMLITE-GE45-SAME: size: 32
163
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
164
+ CHECK-LLVMLITE-GE45-SAME: )
165
+ CHECK-LLVMLITE-GE45: [[DBG98:.+]] = !DIDerivedType(
166
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
167
+ CHECK-LLVMLITE-GE45-SAME: name: "imag"
168
+ CHECK-LLVMLITE-GE45-SAME: offset: 32
169
+ CHECK-LLVMLITE-GE45-SAME: size: 32
170
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
171
+ CHECK-LLVMLITE-GE45-SAME: )
172
+ CHECK-LLVMLITE-GE45: [[DBG99:.+]] = !{ [[DBG97]], [[DBG98]] }
173
+ CHECK-LLVMLITE-GE45: [[DBG100:.+]] = distinct !DICompositeType(
174
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG99]]
175
+ CHECK-LLVMLITE-GE45-SAME: identifier: "{float, float}"
176
+ CHECK-LLVMLITE-GE45-SAME: name: "complex64 ({float, float})"
177
+ CHECK-LLVMLITE-GE45-SAME: size: 64
178
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_structure_type
179
+ CHECK-LLVMLITE-GE45-SAME: )
180
+ CHECK-LLVMLITE-GE45: !DILocalVariable(
181
+ CHECK-LLVMLITE-GE45-SAME: name: "a"
182
+ CHECK-LLVMLITE-GE45-SAME: type: [[DBG100]]
183
+ CHECK-LLVMLITE-GE45-SAME: )
184
+ """,
185
+ ),
186
+ (
187
+ types.complex128,
188
+ """
189
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
190
+ CHECK-LLVMLITE-LE44: [[DBG98:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "double", size: 64)
191
+ CHECK-LLVMLITE-LE44: [[DBG99:.+]] = !DIDerivedType(
192
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG98]]
193
+ CHECK-LLVMLITE-LE44-SAME: name: "real"
194
+ CHECK-LLVMLITE-LE44-SAME: offset: 0
195
+ CHECK-LLVMLITE-LE44-SAME: size: 64
196
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
197
+ CHECK-LLVMLITE-LE44-SAME: )
198
+ CHECK-LLVMLITE-LE44: [[DBG100:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "double", size: 64)
199
+ CHECK-LLVMLITE-LE44: [[DBG101:.+]] = !DIDerivedType(
200
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG100]]
201
+ CHECK-LLVMLITE-LE44-SAME: name: "imag"
202
+ CHECK-LLVMLITE-LE44-SAME: offset: 64
203
+ CHECK-LLVMLITE-LE44-SAME: size: 64
204
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
205
+ CHECK-LLVMLITE-LE44-SAME: )
206
+ CHECK-LLVMLITE-LE44: [[DBG102:.+]] = !{ [[DBG99]], [[DBG101]] }
207
+ CHECK-LLVMLITE-LE44: [[DBG103:.+]] = distinct !DICompositeType(
208
+ CHECK-LLVMLITE-LE44-SAME: elements: [[DBG102]]
209
+ CHECK-LLVMLITE-LE44-SAME: identifier: "{double, double}"
210
+ CHECK-LLVMLITE-LE44-SAME: name: "complex128 ({double, double})"
211
+ CHECK-LLVMLITE-LE44-SAME: size: 128
212
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_structure_type
213
+ CHECK-LLVMLITE-LE44-SAME: )
214
+ CHECK-LLVMLITE-LE44: !DILocalVariable(
215
+ CHECK-LLVMLITE-LE44-SAME: name: "a"
216
+ CHECK-LLVMLITE-LE44-SAME: type: [[DBG103]]
217
+ CHECK-LLVMLITE-LE44-SAME: )
218
+
219
+ CHECK-LLVMLITE-GE45: [[DBG89:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "double", size: 64)
220
+ CHECK-LLVMLITE-GE45: !DISubprogram
221
+ CHECK-LLVMLITE-GE45: [[DBG97:.+]] = !DIDerivedType(
222
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
223
+ CHECK-LLVMLITE-GE45-SAME: name: "real"
224
+ CHECK-LLVMLITE-GE45-SAME: offset: 0
225
+ CHECK-LLVMLITE-GE45-SAME: size: 64
226
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
227
+ CHECK-LLVMLITE-GE45-SAME: )
228
+ CHECK-LLVMLITE-GE45: [[DBG98:.+]] = !DIDerivedType(
229
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
230
+ CHECK-LLVMLITE-GE45-SAME: name: "imag"
231
+ CHECK-LLVMLITE-GE45-SAME: offset: 64
232
+ CHECK-LLVMLITE-GE45-SAME: size: 64
233
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
234
+ CHECK-LLVMLITE-GE45-SAME: )
235
+ CHECK-LLVMLITE-GE45: [[DBG99:.+]] = !{ [[DBG97]], [[DBG98]] }
236
+ CHECK-LLVMLITE-GE45: [[DBG100:.+]] = distinct !DICompositeType(
237
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG99]]
238
+ CHECK-LLVMLITE-GE45-SAME: identifier: "{double, double}"
239
+ CHECK-LLVMLITE-GE45-SAME: name: "complex128 ({double, double})"
240
+ CHECK-LLVMLITE-GE45-SAME: size: 128
241
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_structure_type
242
+ CHECK-LLVMLITE-GE45-SAME: )
243
+ CHECK-LLVMLITE-GE45: !DILocalVariable(
244
+ CHECK-LLVMLITE-GE45-SAME: name: "a"
245
+ CHECK-LLVMLITE-GE45-SAME: type: [[DBG100]]
246
+ CHECK-LLVMLITE-GE45-SAME: )
247
+ """,
248
+ ),
249
+ )
250
+
251
+ array_types: tuple[tuple[types.Type, str]] = (
252
+ (
253
+ types.float32[::1],
254
+ """
255
+ CHECK: distinct !DICompileUnit
256
+ CHECK: distinct !DISubprogram
257
+
258
+ CHECK-LLVMLITE-LE44: [[DBG127:.+]] = !DIBasicType(encoding: DW_ATE_boolean, name: "i8", size: 8)
259
+ CHECK-LLVMLITE-LE44: [[DBG128:.+]] = !DIDerivedType(
260
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG127]]
261
+ CHECK-LLVMLITE-LE44-SAME: size: 64
262
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_pointer_type
263
+ CHECK-LLVMLITE-LE44-SAME: )
264
+ CHECK-LLVMLITE-LE44: [[DBG129:.+]] = !DIDerivedType(
265
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG128]]
266
+ CHECK-LLVMLITE-LE44-SAME: name: "meminfo"
267
+ CHECK-LLVMLITE-LE44-SAME: offset: 0
268
+ CHECK-LLVMLITE-LE44-SAME: size: 64
269
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
270
+ CHECK-LLVMLITE-LE44-SAME: )
271
+ CHECK-LLVMLITE-LE44: [[DBG130:.+]] = !DIBasicType(encoding: DW_ATE_boolean, name: "i8", size: 8)
272
+ CHECK-LLVMLITE-LE44: [[DBG131:.+]] = !DIDerivedType(
273
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG130]]
274
+ CHECK-LLVMLITE-LE44-SAME: size: 64
275
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_pointer_type
276
+ CHECK-LLVMLITE-LE44-SAME: )
277
+ CHECK-LLVMLITE-LE44: [[DBG132:.+]] = !DIDerivedType(
278
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG131]]
279
+ CHECK-LLVMLITE-LE44-SAME: name: "parent"
280
+ CHECK-LLVMLITE-LE44-SAME: offset: 64
281
+ CHECK-LLVMLITE-LE44-SAME: size: 64
282
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
283
+ CHECK-LLVMLITE-LE44-SAME: )
284
+ CHECK-LLVMLITE-LE44: [[DBG133:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int64", size: 64)
285
+ CHECK-LLVMLITE-LE44: [[DBG134:.+]] = !DIDerivedType(
286
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG133]]
287
+ CHECK-LLVMLITE-LE44-SAME: name: "nitems"
288
+ CHECK-LLVMLITE-LE44-SAME: offset: 128
289
+ CHECK-LLVMLITE-LE44-SAME: size: 64
290
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
291
+ CHECK-LLVMLITE-LE44-SAME: )
292
+ CHECK-LLVMLITE-LE44: [[DBG135:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int64", size: 64)
293
+ CHECK-LLVMLITE-LE44: [[DBG136:.+]] = !DIDerivedType(
294
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG135]]
295
+ CHECK-LLVMLITE-LE44-SAME: name: "itemsize"
296
+ CHECK-LLVMLITE-LE44-SAME: offset: 192
297
+ CHECK-LLVMLITE-LE44-SAME: size: 64
298
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
299
+ CHECK-LLVMLITE-LE44-SAME: )
300
+ CHECK-LLVMLITE-LE44: [[DBG137:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float32", size: 32)
301
+ CHECK-LLVMLITE-LE44: [[DBG138:.+]] = !DIDerivedType(
302
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG137]]
303
+ CHECK-LLVMLITE-LE44-SAME: size: 64
304
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_pointer_type
305
+ CHECK-LLVMLITE-LE44-SAME: )
306
+ CHECK-LLVMLITE-LE44: [[DBG139:.+]] = !DIDerivedType(
307
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG138]]
308
+ CHECK-LLVMLITE-LE44-SAME: name: "data"
309
+ CHECK-LLVMLITE-LE44-SAME: offset: 256
310
+ CHECK-LLVMLITE-LE44-SAME: size: 64
311
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
312
+ CHECK-LLVMLITE-LE44-SAME: )
313
+ CHECK-LLVMLITE-LE44: [[DBG140:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "i64", size: 64)
314
+ CHECK-LLVMLITE-LE44: [[DBG141:.+]] = !DICompositeType(
315
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG140]]
316
+ CHECK-LLVMLITE-LE44-SAME: identifier: "[1 x i64]"
317
+ CHECK-LLVMLITE-LE44-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
318
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_array_type
319
+ CHECK-LLVMLITE-LE44-SAME: )
320
+ CHECK-LLVMLITE-LE44: [[DBG142:.+]] = !DIDerivedType(
321
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG141]]
322
+ CHECK-LLVMLITE-LE44-SAME: name: "shape"
323
+ CHECK-LLVMLITE-LE44-SAME: offset: 320
324
+ CHECK-LLVMLITE-LE44-SAME: size: 64
325
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
326
+ CHECK-LLVMLITE-LE44-SAME: )
327
+ CHECK-LLVMLITE-LE44: [[DBG143:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "i64", size: 64)
328
+ CHECK-LLVMLITE-LE44: [[DBG144:.+]] = !DICompositeType(
329
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG143]]
330
+ CHECK-LLVMLITE-LE44-SAME: identifier: "[1 x i64]"
331
+ CHECK-LLVMLITE-LE44-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
332
+ CHECK-LLVMLITE-LE44-SAME: size: 64
333
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_array_type
334
+ CHECK-LLVMLITE-LE44-SAME: )
335
+ CHECK-LLVMLITE-LE44: [[DBG145:.+]] = !DIDerivedType(
336
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG144]]
337
+ CHECK-LLVMLITE-LE44-SAME: name: "strides"
338
+ CHECK-LLVMLITE-LE44-SAME: offset: 384
339
+ CHECK-LLVMLITE-LE44-SAME: size: 64
340
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
341
+ CHECK-LLVMLITE-LE44-SAME: )
342
+ CHECK-LLVMLITE-LE44: [[DBG146:.+]] = !{ [[DBG129]], [[DBG132]], [[DBG134]], [[DBG136]], [[DBG139]], [[DBG142]], [[DBG145]] }
343
+ CHECK-LLVMLITE-LE44: [[DBG147:.+]] = distinct !DICompositeType(
344
+ CHECK-LLVMLITE-LE44-SAME: elements: [[DBG146]]
345
+ CHECK-LLVMLITE-LE44-SAME: identifier: "{i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]}"
346
+ CHECK-LLVMLITE-LE44-SAME: name: "array(float32, 1d, C) ({i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]})"
347
+ CHECK-LLVMLITE-LE44-SAME: size: 448
348
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_structure_type
349
+ CHECK-LLVMLITE-LE44-SAME: )
350
+ CHECK-LLVMLITE-LE44: !DILocalVariable(
351
+ CHECK-LLVMLITE-LE44-SAME: name: "a"
352
+ CHECK-LLVMLITE-LE44-SAME: type: [[DBG147]]
353
+ CHECK-LLVMLITE-LE44-SAME: )
354
+
355
+ CHECK-LLVMLITE-GE45: [[DBG123:.+]] = !DIDerivedType(
356
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG98:![0-9]+]]
357
+ CHECK-LLVMLITE-GE45-SAME: size: 64
358
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_pointer_type
359
+ CHECK-LLVMLITE-GE45-SAME: )
360
+ CHECK-LLVMLITE-GE45: [[DBG124:.+]] = !DIDerivedType(
361
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG123]]
362
+ CHECK-LLVMLITE-GE45-SAME: name: "meminfo"
363
+ CHECK-LLVMLITE-GE45-SAME: offset: 0
364
+ CHECK-LLVMLITE-GE45-SAME: size: 64
365
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
366
+ CHECK-LLVMLITE-GE45-SAME: )
367
+ CHECK-LLVMLITE-GE45: [[DBG125:.+]] = !DIDerivedType(
368
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG98]]
369
+ CHECK-LLVMLITE-GE45-SAME: size: 64
370
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_pointer_type
371
+ CHECK-LLVMLITE-GE45-SAME: )
372
+ CHECK-LLVMLITE-GE45: [[DBG126:.+]] = !DIDerivedType(
373
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG125]]
374
+ CHECK-LLVMLITE-GE45-SAME: name: "parent"
375
+ CHECK-LLVMLITE-GE45-SAME: offset: 64
376
+ CHECK-LLVMLITE-GE45-SAME: size: 64
377
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
378
+ CHECK-LLVMLITE-GE45-SAME: )
379
+ CHECK-LLVMLITE-GE45: [[DBG127:.+]] = !DIDerivedType(
380
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG105:![0-9]+]]
381
+ CHECK-LLVMLITE-GE45-SAME: name: "nitems"
382
+ CHECK-LLVMLITE-GE45-SAME: offset: 128
383
+ CHECK-LLVMLITE-GE45-SAME: size: 64
384
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
385
+ CHECK-LLVMLITE-GE45-SAME: )
386
+ CHECK-LLVMLITE-GE45: [[DBG128:.+]] = !DIDerivedType(
387
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG105]]
388
+ CHECK-LLVMLITE-GE45-SAME: name: "itemsize"
389
+ CHECK-LLVMLITE-GE45-SAME: offset: 192
390
+ CHECK-LLVMLITE-GE45-SAME: size: 64
391
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
392
+ CHECK-LLVMLITE-GE45-SAME: )
393
+ CHECK-LLVMLITE-GE45: [[DBG129:.+]] = !DIDerivedType(
394
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG108:![0-9]+]]
395
+ CHECK-LLVMLITE-GE45-SAME: size: 64
396
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_pointer_type
397
+ CHECK-LLVMLITE-GE45-SAME: )
398
+ CHECK-LLVMLITE-GE45: [[DBG130:.+]] = !DIDerivedType(
399
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG129]]
400
+ CHECK-LLVMLITE-GE45-SAME: name: "data"
401
+ CHECK-LLVMLITE-GE45-SAME: offset: 256
402
+ CHECK-LLVMLITE-GE45-SAME: size: 64
403
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
404
+ CHECK-LLVMLITE-GE45-SAME: )
405
+ CHECK-LLVMLITE-GE45: [[DBG131:.+]] = !DICompositeType(
406
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG111:![0-9]+]]
407
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG113:![0-9]+]]
408
+ CHECK-LLVMLITE-GE45-SAME: identifier: "[1 x i64]"
409
+ CHECK-LLVMLITE-GE45-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
410
+ CHECK-LLVMLITE-GE45-SAME: size: 64
411
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_array_type
412
+ CHECK-LLVMLITE-GE45-SAME: )
413
+ CHECK-LLVMLITE-GE45: [[DBG132:.+]] = !DIDerivedType(
414
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG131]]
415
+ CHECK-LLVMLITE-GE45-SAME: name: "shape"
416
+ CHECK-LLVMLITE-GE45-SAME: offset: 320
417
+ CHECK-LLVMLITE-GE45-SAME: size: 64
418
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
419
+ CHECK-LLVMLITE-GE45-SAME: )
420
+ CHECK-LLVMLITE-GE45: [[DBG133:.+]] = !DICompositeType(
421
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG111]]
422
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG113]]
423
+ CHECK-LLVMLITE-GE45-SAME: identifier: "[1 x i64]"
424
+ CHECK-LLVMLITE-GE45-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
425
+ CHECK-LLVMLITE-GE45-SAME: size: 64
426
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_array_type
427
+ CHECK-LLVMLITE-GE45-SAME: )
428
+ CHECK-LLVMLITE-GE45: [[DBG134:.+]] = !DIDerivedType(
429
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG133]]
430
+ CHECK-LLVMLITE-GE45-SAME: name: "strides"
431
+ CHECK-LLVMLITE-GE45-SAME: offset: 384
432
+ CHECK-LLVMLITE-GE45-SAME: size: 64
433
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
434
+ CHECK-LLVMLITE-GE45-SAME: )
435
+ CHECK-LLVMLITE-GE45: [[DBG135:.+]] = !{ [[DBG124]], [[DBG126]], [[DBG127]], [[DBG128]], [[DBG130]], [[DBG132]], [[DBG134]] }
436
+ CHECK-LLVMLITE-GE45: [[DBG136:.+]] = distinct !DICompositeType(
437
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG135]]
438
+ CHECK-LLVMLITE-GE45-SAME: identifier: "{i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]}"
439
+ CHECK-LLVMLITE-GE45-SAME: name: "array(float32, 1d, C) ({i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]})"
440
+ CHECK-LLVMLITE-GE45-SAME: size: 448
441
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_structure_type
442
+ CHECK-LLVMLITE-GE45-SAME: )
443
+ CHECK-LLVMLITE-GE45: [[DBG27:![0-9]+]] = !DILocalVariable(
444
+ CHECK-LLVMLITE-GE45-SAME: name: "a"
445
+ CHECK-LLVMLITE-GE45-SAME: type: [[DBG136]]
446
+ CHECK-LLVMLITE-GE45-SAME: )
447
+ """,
448
+ ),
449
+ )
450
+
451
+
452
+ @skip_on_cudasim("Simulator does not produce debug dumps")
453
+ class TestCudaDebugInfoTypes(CUDATestCase):
454
+ def test_ditypes(self):
455
+ llvmlite_minor_version = int(llvmlite.__version__.split(".")[1])
456
+ prefixes = (
457
+ "CHECK",
458
+ "CHECK-LLVMLITE-LE44"
459
+ if llvmlite_minor_version <= 44
460
+ else "CHECK-LLVMLITE-GE45",
461
+ )
462
+
463
+ def sanitize_name(name: str) -> str:
464
+ return "".join(filter(lambda c: c.isalnum(), name))
465
+
466
+ for numba_type, checks in scalar_types + array_types:
467
+ with self.subTest(
468
+ f"Test DITypes for {sanitize_name(numba_type.name)}"
469
+ ):
470
+
471
+ @cuda.jit((numba_type,), debug=True)
472
+ def foo(a):
473
+ pass
474
+
475
+ ir = foo.inspect_llvm()[foo.signatures[0]]
476
+ self.assertFileCheckMatches(ir, checks, check_prefixes=prefixes)
@@ -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 re
2
5
  import cffi
3
6
 
@@ -12,7 +15,7 @@ from numba.cuda.testing import (
12
15
  )
13
16
  from numba import cuda, jit, float32, int32, types
14
17
  from numba.core.errors import TypingError
15
- from numba.tests.support import skip_unless_cffi
18
+ from numba.cuda.tests.support import skip_unless_cffi
16
19
  from types import ModuleType
17
20
 
18
21
 
@@ -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.cudadrv.driver import CudaAPIError
2
5
  import numpy as np
3
6
  import threading
@@ -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
  Test cases adapted from numba/tests/test_enums.py
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
  from numba.core.errors import TypingError
3
6
  from numba.cuda.testing import unittest, CUDATestCase, skip_on_cudasim
@@ -90,7 +93,7 @@ class TestJitErrors(CUDATestCase):
90
93
  self.assertIn("resolving callee type: type(CUDADispatcher", excstr)
91
94
  self.assertIn("NameError: name 'floor' is not defined", excstr)
92
95
 
93
- @skip_on_cudasim("Simulator does not use pynvjitlink")
96
+ @skip_on_cudasim("Simulator does not use nvjitlink")
94
97
  @unittest.skipIf(
95
98
  config.CUDA_USE_NVIDIA_BINDING, "NVIDIA cuda bindings enabled"
96
99
  )
@@ -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 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
  from numba.cuda.testing import skip_on_cudasim, unittest, CUDATestCase
2
5
  from numba.cuda.cudadrv.driver import _have_nvjitlink
3
6
  from llvmlite import ir
@@ -43,7 +46,7 @@ if not config.ENABLE_CUDASIM:
43
46
  type_callable,
44
47
  typeof_impl,
45
48
  )
46
- from numba.core.typing.templates import AttributeTemplate
49
+ from numba.cuda.typing.templates import AttributeTemplate
47
50
  from numba.cuda.cudadecl import registry as cuda_registry
48
51
  from numba.cuda.cudaimpl import lower_attr as cuda_lower_attr
49
52
  from numba.cuda.extending import (
@@ -196,11 +199,6 @@ if TEST_BIN_DIR:
196
199
  class TestExtendingLinkage(CUDATestCase):
197
200
  @unittest.skipUnless(TEST_BIN_DIR, "Necessary binaries are not available")
198
201
  def test_extension_adds_linkable_code(self):
199
- cuda_major_version = cuda.runtime.get_version()[0]
200
-
201
- if cuda_major_version < 12:
202
- self.skipTest("CUDA 12 required for linking in-memory data")
203
-
204
202
  files = (
205
203
  (test_device_functions_a, cuda.Archive),
206
204
  (test_device_functions_cubin, cuda.Cubin),
@@ -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 typing import List
2
5
  from dataclasses import dataclass, field
3
6
  from numba import cuda, float32
@@ -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 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 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
  import math
3
6
  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
  from numba import cuda, int32, float32
3
6
  from numba.cuda.testing import unittest, CUDATestCase
@@ -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
@@ -8,7 +11,7 @@ from numba.cuda.testing import skip_on_cudasim, CUDATestCase
8
11
  import unittest
9
12
  import warnings
10
13
  from numba.core.errors import NumbaPerformanceWarning, TypingError
11
- from numba.tests.support import override_config
14
+ from numba.cuda.tests.support import override_config
12
15
 
13
16
 
14
17
  def _get_matmulcore_gufunc(dtype=float32):
@@ -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
  """Example: sum each row using guvectorize
2
5
 
3
6
  See Numpy documentation for detail about gufunc:
@@ -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.deviceufunc import GUFuncEngine
2
5
  import unittest
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 numpy as np
2
5
  from numba import cuda, float32, float64, int32, void
3
6
  from numba.cuda.testing import unittest, CUDATestCase
@@ -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 re
2
5
  import numpy as np
3
6
  from numba import cuda, types
@@ -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 re
2
5
  import cffi
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 itertools
2
5
  import numpy as np
3
6
  import operator