numba-cuda 0.18.1__py3-none-any.whl → 0.19.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 (88) hide show
  1. numba_cuda/VERSION +1 -1
  2. numba_cuda/numba/cuda/__init__.py +1 -1
  3. numba_cuda/numba/cuda/_internal/cuda_bf16.py +2 -2
  4. numba_cuda/numba/cuda/_internal/cuda_fp16.py +1 -1
  5. numba_cuda/numba/cuda/api.py +2 -7
  6. numba_cuda/numba/cuda/compiler.py +7 -4
  7. numba_cuda/numba/cuda/core/interpreter.py +3592 -0
  8. numba_cuda/numba/cuda/core/ir_utils.py +2645 -0
  9. numba_cuda/numba/cuda/core/sigutils.py +55 -0
  10. numba_cuda/numba/cuda/cuda_paths.py +9 -17
  11. numba_cuda/numba/cuda/cudadecl.py +1 -1
  12. numba_cuda/numba/cuda/cudadrv/driver.py +4 -19
  13. numba_cuda/numba/cuda/cudadrv/libs.py +1 -2
  14. numba_cuda/numba/cuda/cudadrv/nvrtc.py +44 -44
  15. numba_cuda/numba/cuda/cudadrv/nvvm.py +3 -18
  16. numba_cuda/numba/cuda/cudadrv/runtime.py +12 -1
  17. numba_cuda/numba/cuda/cudamath.py +1 -1
  18. numba_cuda/numba/cuda/decorators.py +4 -3
  19. numba_cuda/numba/cuda/deviceufunc.py +2 -1
  20. numba_cuda/numba/cuda/dispatcher.py +3 -2
  21. numba_cuda/numba/cuda/extending.py +1 -1
  22. numba_cuda/numba/cuda/itanium_mangler.py +211 -0
  23. numba_cuda/numba/cuda/libdevicedecl.py +1 -1
  24. numba_cuda/numba/cuda/libdevicefuncs.py +1 -1
  25. numba_cuda/numba/cuda/lowering.py +1 -1
  26. numba_cuda/numba/cuda/simulator/api.py +1 -1
  27. numba_cuda/numba/cuda/simulator/cudadrv/driver.py +0 -7
  28. numba_cuda/numba/cuda/target.py +1 -2
  29. numba_cuda/numba/cuda/testing.py +4 -6
  30. numba_cuda/numba/cuda/tests/core/test_itanium_mangler.py +80 -0
  31. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +1 -1
  32. numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +1 -1
  33. numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +1 -1
  34. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +1 -1
  35. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +1 -1
  36. numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +1 -1
  37. numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py +1 -1
  38. numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +4 -6
  39. numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +0 -4
  40. numba_cuda/numba/cuda/tests/cudadrv/test_ptds.py +1 -1
  41. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +1 -3
  42. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +1 -3
  43. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +146 -3
  44. numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +1 -1
  45. numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +0 -4
  46. numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +1 -1
  47. numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +1 -1
  48. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +1 -1
  49. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +1 -284
  50. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +473 -0
  51. numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +1 -1
  52. numba_cuda/numba/cuda/tests/cudapy/test_errors.py +1 -1
  53. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +1 -6
  54. numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +1 -1
  55. numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +1 -1
  56. numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +295 -0
  57. numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +1 -1
  58. numba_cuda/numba/cuda/tests/cudapy/test_operator.py +1 -1
  59. numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +1 -1
  60. numba_cuda/numba/cuda/tests/cudapy/test_warning.py +5 -1
  61. numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +1 -1
  62. numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +1 -1
  63. numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +1 -1
  64. numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +1 -1
  65. numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +1 -1
  66. numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +1 -1
  67. numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +1 -1
  68. numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +1 -1
  69. numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +1 -1
  70. numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +1 -1
  71. numba_cuda/numba/cuda/tests/nocuda/test_import.py +1 -1
  72. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +2 -2
  73. numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +1 -1
  74. numba_cuda/numba/cuda/tests/support.py +752 -0
  75. numba_cuda/numba/cuda/tests/test_binary_generation/Makefile +3 -3
  76. numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py +4 -1
  77. numba_cuda/numba/cuda/typing/__init__.py +8 -0
  78. numba_cuda/numba/cuda/typing/templates.py +1453 -0
  79. numba_cuda/numba/cuda/vector_types.py +3 -3
  80. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.0.dist-info}/METADATA +21 -28
  81. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.0.dist-info}/RECORD +84 -79
  82. numba_cuda/numba/cuda/include/11/cuda_bf16.h +0 -3749
  83. numba_cuda/numba/cuda/include/11/cuda_bf16.hpp +0 -2683
  84. numba_cuda/numba/cuda/include/11/cuda_fp16.h +0 -3794
  85. numba_cuda/numba/cuda/include/11/cuda_fp16.hpp +0 -2614
  86. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.0.dist-info}/WHEEL +0 -0
  87. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.0.dist-info}/licenses/LICENSE +0 -0
  88. {numba_cuda-0.18.1.dist-info → numba_cuda-0.19.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,473 @@
1
+ import numba.cuda as cuda
2
+ from numba.cuda.testing import CUDATestCase, skip_on_cudasim
3
+ import llvmlite
4
+ from numba import types
5
+
6
+ """
7
+ llvmlite pre 45 left redundant metadata nodes for debug info
8
+ for basic scalar types. Jie Li fixed this in llvmlite 45:
9
+ https://github.com/numba/llvmlite/pull/1165
10
+
11
+ This makes it difficult for us to use the same check patterns for both
12
+ llvmlite versions, as basic scalar types like int8 are emitted only once
13
+ per module. Some checks share most of the logic, but some are entirely
14
+ split between the two versions. The checks indicate which version of llvmlite
15
+ they are for, if they cannot be shared.
16
+ """
17
+
18
+ scalar_types: tuple[tuple[types.Type, str]] = (
19
+ (
20
+ types.float32,
21
+ """
22
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
23
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float32", size: 32)
24
+ CHECK: !DILocalVariable(
25
+ CHECK-SAME: name: "a"
26
+ CHECK-SAME: type: [[DBG86]]
27
+ """,
28
+ ),
29
+ (
30
+ types.float64,
31
+ """
32
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
33
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float64", size: 64)
34
+ CHECK: !DILocalVariable(
35
+ CHECK-SAME: name: "a"
36
+ CHECK-SAME: type: [[DBG86]]
37
+ """,
38
+ ),
39
+ (
40
+ types.int8,
41
+ """
42
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
43
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int8", size: 8)
44
+ CHECK: !DILocalVariable(
45
+ CHECK-SAME: name: "a"
46
+ CHECK-SAME: type: [[DBG86]]
47
+ """,
48
+ ),
49
+ (
50
+ types.int16,
51
+ """
52
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
53
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int16", size: 16)
54
+ CHECK: !DILocalVariable(
55
+ CHECK-SAME: name: "a"
56
+ CHECK-SAME: type: [[DBG86]]
57
+ """,
58
+ ),
59
+ (
60
+ types.int32,
61
+ """
62
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
63
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int32", size: 32)
64
+ CHECK: !DILocalVariable(
65
+ CHECK-SAME: name: "a"
66
+ CHECK-SAME: type: [[DBG86]]
67
+ """,
68
+ ),
69
+ (
70
+ types.int64,
71
+ """
72
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
73
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int64", size: 64)
74
+ CHECK: !DILocalVariable(
75
+ CHECK-SAME: name: "a"
76
+ CHECK-SAME: type: [[DBG86]]
77
+ """,
78
+ ),
79
+ (
80
+ types.uint8,
81
+ """
82
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
83
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned
84
+ CHECK-SAME: name: "uint8", size: 8)
85
+ CHECK: !DILocalVariable(
86
+ CHECK-SAME: name: "a"
87
+ CHECK-SAME: type: [[DBG86]]
88
+ """,
89
+ ),
90
+ (
91
+ types.uint16,
92
+ """
93
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
94
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "uint16", size: 16)
95
+ CHECK: !DILocalVariable(
96
+ CHECK-SAME: name: "a"
97
+ CHECK-SAME: type: [[DBG86]]
98
+ """,
99
+ ),
100
+ (
101
+ types.uint32,
102
+ """
103
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
104
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "uint32", size: 32)
105
+ CHECK: !DILocalVariable(
106
+ CHECK-SAME: name: "a"
107
+ CHECK-SAME: type: [[DBG86]]
108
+ """,
109
+ ),
110
+ (
111
+ types.uint64,
112
+ """
113
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
114
+ CHECK: [[DBG86:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "uint64", size: 64)
115
+ CHECK: !DILocalVariable(
116
+ CHECK-SAME: name: "a"
117
+ CHECK-SAME: type: [[DBG86]]
118
+ """,
119
+ ),
120
+ (
121
+ types.complex64,
122
+ """
123
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
124
+ CHECK-LLVMLITE-LE44: [[DBG98:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float", size: 32)
125
+ CHECK-LLVMLITE-LE44: [[DBG99:.+]] = !DIDerivedType(
126
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG98]]
127
+ CHECK-LLVMLITE-LE44-SAME: name: "real"
128
+ CHECK-LLVMLITE-LE44-SAME: offset: 0
129
+ CHECK-LLVMLITE-LE44-SAME: size: 32
130
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
131
+ CHECK-LLVMLITE-LE44-SAME: )
132
+ CHECK-LLVMLITE-LE44: [[DBG100:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float", size: 32)
133
+ CHECK-LLVMLITE-LE44: [[DBG101:.+]] = !DIDerivedType(
134
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG100]]
135
+ CHECK-LLVMLITE-LE44-SAME: name: "imag"
136
+ CHECK-LLVMLITE-LE44-SAME: offset: 32
137
+ CHECK-LLVMLITE-LE44-SAME: size: 32
138
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
139
+ CHECK-LLVMLITE-LE44-SAME: )
140
+ CHECK-LLVMLITE-LE44: [[DBG102:.+]] = !{ [[DBG99]], [[DBG101]] }
141
+ CHECK-LLVMLITE-LE44: [[DBG103:.+]] = distinct !DICompositeType(
142
+ CHECK-LLVMLITE-LE44-SAME: elements: [[DBG102]]
143
+ CHECK-LLVMLITE-LE44-SAME: identifier: "{float, float}"
144
+ CHECK-LLVMLITE-LE44-SAME: name: "complex64 ({float, float})"
145
+ CHECK-LLVMLITE-LE44-SAME: size: 64
146
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_structure_type
147
+ CHECK-LLVMLITE-LE44-SAME: )
148
+ CHECK-LLVMLITE-LE44: !DILocalVariable(
149
+ CHECK-LLVMLITE-LE44-SAME: name: "a"
150
+ CHECK-LLVMLITE-LE44-SAME: type: [[DBG103]]
151
+ CHECK-LLVMLITE-LE44-SAME: )
152
+
153
+ CHECK-LLVMLITE-GE45: [[DBG89:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float", size: 32)
154
+ CHECK-LLVMLITE-GE45: distinct !DISubprogram
155
+ CHECK-LLVMLITE-GE45: [[DBG97:.+]] = !DIDerivedType(
156
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
157
+ CHECK-LLVMLITE-GE45-SAME: name: "real"
158
+ CHECK-LLVMLITE-GE45-SAME: offset: 0
159
+ CHECK-LLVMLITE-GE45-SAME: size: 32
160
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
161
+ CHECK-LLVMLITE-GE45-SAME: )
162
+ CHECK-LLVMLITE-GE45: [[DBG98:.+]] = !DIDerivedType(
163
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
164
+ CHECK-LLVMLITE-GE45-SAME: name: "imag"
165
+ CHECK-LLVMLITE-GE45-SAME: offset: 32
166
+ CHECK-LLVMLITE-GE45-SAME: size: 32
167
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
168
+ CHECK-LLVMLITE-GE45-SAME: )
169
+ CHECK-LLVMLITE-GE45: [[DBG99:.+]] = !{ [[DBG97]], [[DBG98]] }
170
+ CHECK-LLVMLITE-GE45: [[DBG100:.+]] = distinct !DICompositeType(
171
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG99]]
172
+ CHECK-LLVMLITE-GE45-SAME: identifier: "{float, float}"
173
+ CHECK-LLVMLITE-GE45-SAME: name: "complex64 ({float, float})"
174
+ CHECK-LLVMLITE-GE45-SAME: size: 64
175
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_structure_type
176
+ CHECK-LLVMLITE-GE45-SAME: )
177
+ CHECK-LLVMLITE-GE45: !DILocalVariable(
178
+ CHECK-LLVMLITE-GE45-SAME: name: "a"
179
+ CHECK-LLVMLITE-GE45-SAME: type: [[DBG100]]
180
+ CHECK-LLVMLITE-GE45-SAME: )
181
+ """,
182
+ ),
183
+ (
184
+ types.complex128,
185
+ """
186
+ CHECK-LLVMLITE-LE44: distinct !DISubprogram
187
+ CHECK-LLVMLITE-LE44: [[DBG98:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "double", size: 64)
188
+ CHECK-LLVMLITE-LE44: [[DBG99:.+]] = !DIDerivedType(
189
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG98]]
190
+ CHECK-LLVMLITE-LE44-SAME: name: "real"
191
+ CHECK-LLVMLITE-LE44-SAME: offset: 0
192
+ CHECK-LLVMLITE-LE44-SAME: size: 64
193
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
194
+ CHECK-LLVMLITE-LE44-SAME: )
195
+ CHECK-LLVMLITE-LE44: [[DBG100:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "double", size: 64)
196
+ CHECK-LLVMLITE-LE44: [[DBG101:.+]] = !DIDerivedType(
197
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG100]]
198
+ CHECK-LLVMLITE-LE44-SAME: name: "imag"
199
+ CHECK-LLVMLITE-LE44-SAME: offset: 64
200
+ CHECK-LLVMLITE-LE44-SAME: size: 64
201
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
202
+ CHECK-LLVMLITE-LE44-SAME: )
203
+ CHECK-LLVMLITE-LE44: [[DBG102:.+]] = !{ [[DBG99]], [[DBG101]] }
204
+ CHECK-LLVMLITE-LE44: [[DBG103:.+]] = distinct !DICompositeType(
205
+ CHECK-LLVMLITE-LE44-SAME: elements: [[DBG102]]
206
+ CHECK-LLVMLITE-LE44-SAME: identifier: "{double, double}"
207
+ CHECK-LLVMLITE-LE44-SAME: name: "complex128 ({double, double})"
208
+ CHECK-LLVMLITE-LE44-SAME: size: 128
209
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_structure_type
210
+ CHECK-LLVMLITE-LE44-SAME: )
211
+ CHECK-LLVMLITE-LE44: !DILocalVariable(
212
+ CHECK-LLVMLITE-LE44-SAME: name: "a"
213
+ CHECK-LLVMLITE-LE44-SAME: type: [[DBG103]]
214
+ CHECK-LLVMLITE-LE44-SAME: )
215
+
216
+ CHECK-LLVMLITE-GE45: [[DBG89:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "double", size: 64)
217
+ CHECK-LLVMLITE-GE45: !DISubprogram
218
+ CHECK-LLVMLITE-GE45: [[DBG97:.+]] = !DIDerivedType(
219
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
220
+ CHECK-LLVMLITE-GE45-SAME: name: "real"
221
+ CHECK-LLVMLITE-GE45-SAME: offset: 0
222
+ CHECK-LLVMLITE-GE45-SAME: size: 64
223
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
224
+ CHECK-LLVMLITE-GE45-SAME: )
225
+ CHECK-LLVMLITE-GE45: [[DBG98:.+]] = !DIDerivedType(
226
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG89]]
227
+ CHECK-LLVMLITE-GE45-SAME: name: "imag"
228
+ CHECK-LLVMLITE-GE45-SAME: offset: 64
229
+ CHECK-LLVMLITE-GE45-SAME: size: 64
230
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
231
+ CHECK-LLVMLITE-GE45-SAME: )
232
+ CHECK-LLVMLITE-GE45: [[DBG99:.+]] = !{ [[DBG97]], [[DBG98]] }
233
+ CHECK-LLVMLITE-GE45: [[DBG100:.+]] = distinct !DICompositeType(
234
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG99]]
235
+ CHECK-LLVMLITE-GE45-SAME: identifier: "{double, double}"
236
+ CHECK-LLVMLITE-GE45-SAME: name: "complex128 ({double, double})"
237
+ CHECK-LLVMLITE-GE45-SAME: size: 128
238
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_structure_type
239
+ CHECK-LLVMLITE-GE45-SAME: )
240
+ CHECK-LLVMLITE-GE45: !DILocalVariable(
241
+ CHECK-LLVMLITE-GE45-SAME: name: "a"
242
+ CHECK-LLVMLITE-GE45-SAME: type: [[DBG100]]
243
+ CHECK-LLVMLITE-GE45-SAME: )
244
+ """,
245
+ ),
246
+ )
247
+
248
+ array_types: tuple[tuple[types.Type, str]] = (
249
+ (
250
+ types.float32[::1],
251
+ """
252
+ CHECK: distinct !DICompileUnit
253
+ CHECK: distinct !DISubprogram
254
+
255
+ CHECK-LLVMLITE-LE44: [[DBG127:.+]] = !DIBasicType(encoding: DW_ATE_boolean, name: "i8", size: 8)
256
+ CHECK-LLVMLITE-LE44: [[DBG128:.+]] = !DIDerivedType(
257
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG127]]
258
+ CHECK-LLVMLITE-LE44-SAME: size: 64
259
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_pointer_type
260
+ CHECK-LLVMLITE-LE44-SAME: )
261
+ CHECK-LLVMLITE-LE44: [[DBG129:.+]] = !DIDerivedType(
262
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG128]]
263
+ CHECK-LLVMLITE-LE44-SAME: name: "meminfo"
264
+ CHECK-LLVMLITE-LE44-SAME: offset: 0
265
+ CHECK-LLVMLITE-LE44-SAME: size: 64
266
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
267
+ CHECK-LLVMLITE-LE44-SAME: )
268
+ CHECK-LLVMLITE-LE44: [[DBG130:.+]] = !DIBasicType(encoding: DW_ATE_boolean, name: "i8", size: 8)
269
+ CHECK-LLVMLITE-LE44: [[DBG131:.+]] = !DIDerivedType(
270
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG130]]
271
+ CHECK-LLVMLITE-LE44-SAME: size: 64
272
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_pointer_type
273
+ CHECK-LLVMLITE-LE44-SAME: )
274
+ CHECK-LLVMLITE-LE44: [[DBG132:.+]] = !DIDerivedType(
275
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG131]]
276
+ CHECK-LLVMLITE-LE44-SAME: name: "parent"
277
+ CHECK-LLVMLITE-LE44-SAME: offset: 64
278
+ CHECK-LLVMLITE-LE44-SAME: size: 64
279
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
280
+ CHECK-LLVMLITE-LE44-SAME: )
281
+ CHECK-LLVMLITE-LE44: [[DBG133:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int64", size: 64)
282
+ CHECK-LLVMLITE-LE44: [[DBG134:.+]] = !DIDerivedType(
283
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG133]]
284
+ CHECK-LLVMLITE-LE44-SAME: name: "nitems"
285
+ CHECK-LLVMLITE-LE44-SAME: offset: 128
286
+ CHECK-LLVMLITE-LE44-SAME: size: 64
287
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
288
+ CHECK-LLVMLITE-LE44-SAME: )
289
+ CHECK-LLVMLITE-LE44: [[DBG135:.+]] = !DIBasicType(encoding: DW_ATE_signed, name: "int64", size: 64)
290
+ CHECK-LLVMLITE-LE44: [[DBG136:.+]] = !DIDerivedType(
291
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG135]]
292
+ CHECK-LLVMLITE-LE44-SAME: name: "itemsize"
293
+ CHECK-LLVMLITE-LE44-SAME: offset: 192
294
+ CHECK-LLVMLITE-LE44-SAME: size: 64
295
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
296
+ CHECK-LLVMLITE-LE44-SAME: )
297
+ CHECK-LLVMLITE-LE44: [[DBG137:.+]] = !DIBasicType(encoding: DW_ATE_float, name: "float32", size: 32)
298
+ CHECK-LLVMLITE-LE44: [[DBG138:.+]] = !DIDerivedType(
299
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG137]]
300
+ CHECK-LLVMLITE-LE44-SAME: size: 64
301
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_pointer_type
302
+ CHECK-LLVMLITE-LE44-SAME: )
303
+ CHECK-LLVMLITE-LE44: [[DBG139:.+]] = !DIDerivedType(
304
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG138]]
305
+ CHECK-LLVMLITE-LE44-SAME: name: "data"
306
+ CHECK-LLVMLITE-LE44-SAME: offset: 256
307
+ CHECK-LLVMLITE-LE44-SAME: size: 64
308
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
309
+ CHECK-LLVMLITE-LE44-SAME: )
310
+ CHECK-LLVMLITE-LE44: [[DBG140:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "i64", size: 64)
311
+ CHECK-LLVMLITE-LE44: [[DBG141:.+]] = !DICompositeType(
312
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG140]]
313
+ CHECK-LLVMLITE-LE44-SAME: identifier: "[1 x i64]"
314
+ CHECK-LLVMLITE-LE44-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
315
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_array_type
316
+ CHECK-LLVMLITE-LE44-SAME: )
317
+ CHECK-LLVMLITE-LE44: [[DBG142:.+]] = !DIDerivedType(
318
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG141]]
319
+ CHECK-LLVMLITE-LE44-SAME: name: "shape"
320
+ CHECK-LLVMLITE-LE44-SAME: offset: 320
321
+ CHECK-LLVMLITE-LE44-SAME: size: 64
322
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
323
+ CHECK-LLVMLITE-LE44-SAME: )
324
+ CHECK-LLVMLITE-LE44: [[DBG143:.+]] = !DIBasicType(encoding: DW_ATE_unsigned, name: "i64", size: 64)
325
+ CHECK-LLVMLITE-LE44: [[DBG144:.+]] = !DICompositeType(
326
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG143]]
327
+ CHECK-LLVMLITE-LE44-SAME: identifier: "[1 x i64]"
328
+ CHECK-LLVMLITE-LE44-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
329
+ CHECK-LLVMLITE-LE44-SAME: size: 64
330
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_array_type
331
+ CHECK-LLVMLITE-LE44-SAME: )
332
+ CHECK-LLVMLITE-LE44: [[DBG145:.+]] = !DIDerivedType(
333
+ CHECK-LLVMLITE-LE44-SAME: baseType: [[DBG144]]
334
+ CHECK-LLVMLITE-LE44-SAME: name: "strides"
335
+ CHECK-LLVMLITE-LE44-SAME: offset: 384
336
+ CHECK-LLVMLITE-LE44-SAME: size: 64
337
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_member
338
+ CHECK-LLVMLITE-LE44-SAME: )
339
+ CHECK-LLVMLITE-LE44: [[DBG146:.+]] = !{ [[DBG129]], [[DBG132]], [[DBG134]], [[DBG136]], [[DBG139]], [[DBG142]], [[DBG145]] }
340
+ CHECK-LLVMLITE-LE44: [[DBG147:.+]] = distinct !DICompositeType(
341
+ CHECK-LLVMLITE-LE44-SAME: elements: [[DBG146]]
342
+ CHECK-LLVMLITE-LE44-SAME: identifier: "{i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]}"
343
+ CHECK-LLVMLITE-LE44-SAME: name: "array(float32, 1d, C) ({i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]})"
344
+ CHECK-LLVMLITE-LE44-SAME: size: 448
345
+ CHECK-LLVMLITE-LE44-SAME: tag: DW_TAG_structure_type
346
+ CHECK-LLVMLITE-LE44-SAME: )
347
+ CHECK-LLVMLITE-LE44: !DILocalVariable(
348
+ CHECK-LLVMLITE-LE44-SAME: name: "a"
349
+ CHECK-LLVMLITE-LE44-SAME: type: [[DBG147]]
350
+ CHECK-LLVMLITE-LE44-SAME: )
351
+
352
+ CHECK-LLVMLITE-GE45: [[DBG123:.+]] = !DIDerivedType(
353
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG98:![0-9]+]]
354
+ CHECK-LLVMLITE-GE45-SAME: size: 64
355
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_pointer_type
356
+ CHECK-LLVMLITE-GE45-SAME: )
357
+ CHECK-LLVMLITE-GE45: [[DBG124:.+]] = !DIDerivedType(
358
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG123]]
359
+ CHECK-LLVMLITE-GE45-SAME: name: "meminfo"
360
+ CHECK-LLVMLITE-GE45-SAME: offset: 0
361
+ CHECK-LLVMLITE-GE45-SAME: size: 64
362
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
363
+ CHECK-LLVMLITE-GE45-SAME: )
364
+ CHECK-LLVMLITE-GE45: [[DBG125:.+]] = !DIDerivedType(
365
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG98]]
366
+ CHECK-LLVMLITE-GE45-SAME: size: 64
367
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_pointer_type
368
+ CHECK-LLVMLITE-GE45-SAME: )
369
+ CHECK-LLVMLITE-GE45: [[DBG126:.+]] = !DIDerivedType(
370
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG125]]
371
+ CHECK-LLVMLITE-GE45-SAME: name: "parent"
372
+ CHECK-LLVMLITE-GE45-SAME: offset: 64
373
+ CHECK-LLVMLITE-GE45-SAME: size: 64
374
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
375
+ CHECK-LLVMLITE-GE45-SAME: )
376
+ CHECK-LLVMLITE-GE45: [[DBG127:.+]] = !DIDerivedType(
377
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG105:![0-9]+]]
378
+ CHECK-LLVMLITE-GE45-SAME: name: "nitems"
379
+ CHECK-LLVMLITE-GE45-SAME: offset: 128
380
+ CHECK-LLVMLITE-GE45-SAME: size: 64
381
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
382
+ CHECK-LLVMLITE-GE45-SAME: )
383
+ CHECK-LLVMLITE-GE45: [[DBG128:.+]] = !DIDerivedType(
384
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG105]]
385
+ CHECK-LLVMLITE-GE45-SAME: name: "itemsize"
386
+ CHECK-LLVMLITE-GE45-SAME: offset: 192
387
+ CHECK-LLVMLITE-GE45-SAME: size: 64
388
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
389
+ CHECK-LLVMLITE-GE45-SAME: )
390
+ CHECK-LLVMLITE-GE45: [[DBG129:.+]] = !DIDerivedType(
391
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG108:![0-9]+]]
392
+ CHECK-LLVMLITE-GE45-SAME: size: 64
393
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_pointer_type
394
+ CHECK-LLVMLITE-GE45-SAME: )
395
+ CHECK-LLVMLITE-GE45: [[DBG130:.+]] = !DIDerivedType(
396
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG129]]
397
+ CHECK-LLVMLITE-GE45-SAME: name: "data"
398
+ CHECK-LLVMLITE-GE45-SAME: offset: 256
399
+ CHECK-LLVMLITE-GE45-SAME: size: 64
400
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
401
+ CHECK-LLVMLITE-GE45-SAME: )
402
+ CHECK-LLVMLITE-GE45: [[DBG131:.+]] = !DICompositeType(
403
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG111:![0-9]+]]
404
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG113:![0-9]+]]
405
+ CHECK-LLVMLITE-GE45-SAME: identifier: "[1 x i64]"
406
+ CHECK-LLVMLITE-GE45-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
407
+ CHECK-LLVMLITE-GE45-SAME: size: 64
408
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_array_type
409
+ CHECK-LLVMLITE-GE45-SAME: )
410
+ CHECK-LLVMLITE-GE45: [[DBG132:.+]] = !DIDerivedType(
411
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG131]]
412
+ CHECK-LLVMLITE-GE45-SAME: name: "shape"
413
+ CHECK-LLVMLITE-GE45-SAME: offset: 320
414
+ CHECK-LLVMLITE-GE45-SAME: size: 64
415
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
416
+ CHECK-LLVMLITE-GE45-SAME: )
417
+ CHECK-LLVMLITE-GE45: [[DBG133:.+]] = !DICompositeType(
418
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG111]]
419
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG113]]
420
+ CHECK-LLVMLITE-GE45-SAME: identifier: "[1 x i64]"
421
+ CHECK-LLVMLITE-GE45-SAME: name: "UniTuple(int64 x 1) ([1 x i64])"
422
+ CHECK-LLVMLITE-GE45-SAME: size: 64
423
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_array_type
424
+ CHECK-LLVMLITE-GE45-SAME: )
425
+ CHECK-LLVMLITE-GE45: [[DBG134:.+]] = !DIDerivedType(
426
+ CHECK-LLVMLITE-GE45-SAME: baseType: [[DBG133]]
427
+ CHECK-LLVMLITE-GE45-SAME: name: "strides"
428
+ CHECK-LLVMLITE-GE45-SAME: offset: 384
429
+ CHECK-LLVMLITE-GE45-SAME: size: 64
430
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_member
431
+ CHECK-LLVMLITE-GE45-SAME: )
432
+ CHECK-LLVMLITE-GE45: [[DBG135:.+]] = !{ [[DBG124]], [[DBG126]], [[DBG127]], [[DBG128]], [[DBG130]], [[DBG132]], [[DBG134]] }
433
+ CHECK-LLVMLITE-GE45: [[DBG136:.+]] = distinct !DICompositeType(
434
+ CHECK-LLVMLITE-GE45-SAME: elements: [[DBG135]]
435
+ CHECK-LLVMLITE-GE45-SAME: identifier: "{i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]}"
436
+ CHECK-LLVMLITE-GE45-SAME: name: "array(float32, 1d, C) ({i8*, i8*, i64, i64, float*, [1 x i64], [1 x i64]})"
437
+ CHECK-LLVMLITE-GE45-SAME: size: 448
438
+ CHECK-LLVMLITE-GE45-SAME: tag: DW_TAG_structure_type
439
+ CHECK-LLVMLITE-GE45-SAME: )
440
+ CHECK-LLVMLITE-GE45: [[DBG27:![0-9]+]] = !DILocalVariable(
441
+ CHECK-LLVMLITE-GE45-SAME: name: "a"
442
+ CHECK-LLVMLITE-GE45-SAME: type: [[DBG136]]
443
+ CHECK-LLVMLITE-GE45-SAME: )
444
+ """,
445
+ ),
446
+ )
447
+
448
+
449
+ @skip_on_cudasim("Simulator does not produce debug dumps")
450
+ class TestCudaDebugInfoTypes(CUDATestCase):
451
+ def test_ditypes(self):
452
+ llvmlite_minor_version = int(llvmlite.__version__.split(".")[1])
453
+ prefixes = (
454
+ "CHECK",
455
+ "CHECK-LLVMLITE-LE44"
456
+ if llvmlite_minor_version <= 44
457
+ else "CHECK-LLVMLITE-GE45",
458
+ )
459
+
460
+ def sanitize_name(name: str) -> str:
461
+ return "".join(filter(lambda c: c.isalnum(), name))
462
+
463
+ for numba_type, checks in scalar_types + array_types:
464
+ with self.subTest(
465
+ f"Test DITypes for {sanitize_name(numba_type.name)}"
466
+ ):
467
+
468
+ @cuda.jit((numba_type,), debug=True)
469
+ def foo(a):
470
+ pass
471
+
472
+ ir = foo.inspect_llvm()[foo.signatures[0]]
473
+ self.assertFileCheckMatches(ir, checks, check_prefixes=prefixes)
@@ -12,7 +12,7 @@ from numba.cuda.testing import (
12
12
  )
13
13
  from numba import cuda, jit, float32, int32, types
14
14
  from numba.core.errors import TypingError
15
- from numba.tests.support import skip_unless_cffi
15
+ from numba.cuda.tests.support import skip_unless_cffi
16
16
  from types import ModuleType
17
17
 
18
18
 
@@ -90,7 +90,7 @@ class TestJitErrors(CUDATestCase):
90
90
  self.assertIn("resolving callee type: type(CUDADispatcher", excstr)
91
91
  self.assertIn("NameError: name 'floor' is not defined", excstr)
92
92
 
93
- @skip_on_cudasim("Simulator does not use pynvjitlink")
93
+ @skip_on_cudasim("Simulator does not use nvjitlink")
94
94
  @unittest.skipIf(
95
95
  config.CUDA_USE_NVIDIA_BINDING, "NVIDIA cuda bindings enabled"
96
96
  )
@@ -43,7 +43,7 @@ if not config.ENABLE_CUDASIM:
43
43
  type_callable,
44
44
  typeof_impl,
45
45
  )
46
- from numba.core.typing.templates import AttributeTemplate
46
+ from numba.cuda.typing.templates import AttributeTemplate
47
47
  from numba.cuda.cudadecl import registry as cuda_registry
48
48
  from numba.cuda.cudaimpl import lower_attr as cuda_lower_attr
49
49
  from numba.cuda.extending import (
@@ -196,11 +196,6 @@ if TEST_BIN_DIR:
196
196
  class TestExtendingLinkage(CUDATestCase):
197
197
  @unittest.skipUnless(TEST_BIN_DIR, "Necessary binaries are not available")
198
198
  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
199
  files = (
205
200
  (test_device_functions_a, cuda.Archive),
206
201
  (test_device_functions_cubin, cuda.Cubin),
@@ -8,7 +8,7 @@ from numba.cuda.testing import skip_on_cudasim, CUDATestCase
8
8
  import unittest
9
9
  import warnings
10
10
  from numba.core.errors import NumbaPerformanceWarning, TypingError
11
- from numba.tests.support import override_config
11
+ from numba.cuda.tests.support import override_config
12
12
 
13
13
 
14
14
  def _get_matmulcore_gufunc(dtype=float32):
@@ -14,7 +14,7 @@ from numba.cuda.testing import (
14
14
  ContextResettingTestCase,
15
15
  ForeignArray,
16
16
  )
17
- from numba.tests.support import linux_only, windows_only
17
+ from numba.cuda.tests.support import linux_only, windows_only
18
18
  import unittest
19
19
 
20
20