numba-cuda 0.19.1__py3-none-any.whl → 0.20.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 (172) 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 +12706 -1470
  4. numba_cuda/numba/cuda/_internal/cuda_fp16.py +2653 -8769
  5. numba_cuda/numba/cuda/api.py +6 -1
  6. numba_cuda/numba/cuda/bf16.py +285 -2
  7. numba_cuda/numba/cuda/cgutils.py +2 -2
  8. numba_cuda/numba/cuda/cloudpickle/__init__.py +21 -0
  9. numba_cuda/numba/cuda/cloudpickle/cloudpickle.py +1598 -0
  10. numba_cuda/numba/cuda/cloudpickle/cloudpickle_fast.py +17 -0
  11. numba_cuda/numba/cuda/codegen.py +1 -1
  12. numba_cuda/numba/cuda/compiler.py +373 -30
  13. numba_cuda/numba/cuda/core/analysis.py +319 -0
  14. numba_cuda/numba/cuda/core/annotations/__init__.py +0 -0
  15. numba_cuda/numba/cuda/core/annotations/type_annotations.py +304 -0
  16. numba_cuda/numba/cuda/core/base.py +1289 -0
  17. numba_cuda/numba/cuda/core/bytecode.py +727 -0
  18. numba_cuda/numba/cuda/core/caching.py +2 -2
  19. numba_cuda/numba/cuda/core/compiler.py +6 -14
  20. numba_cuda/numba/cuda/core/compiler_machinery.py +497 -0
  21. numba_cuda/numba/cuda/core/config.py +747 -0
  22. numba_cuda/numba/cuda/core/consts.py +124 -0
  23. numba_cuda/numba/cuda/core/cpu.py +370 -0
  24. numba_cuda/numba/cuda/core/environment.py +68 -0
  25. numba_cuda/numba/cuda/core/event.py +511 -0
  26. numba_cuda/numba/cuda/core/funcdesc.py +330 -0
  27. numba_cuda/numba/cuda/core/inline_closurecall.py +1889 -0
  28. numba_cuda/numba/cuda/core/interpreter.py +48 -26
  29. numba_cuda/numba/cuda/core/ir_utils.py +15 -26
  30. numba_cuda/numba/cuda/core/options.py +262 -0
  31. numba_cuda/numba/cuda/core/postproc.py +249 -0
  32. numba_cuda/numba/cuda/core/pythonapi.py +1868 -0
  33. numba_cuda/numba/cuda/core/rewrites/__init__.py +26 -0
  34. numba_cuda/numba/cuda/core/rewrites/ir_print.py +90 -0
  35. numba_cuda/numba/cuda/core/rewrites/registry.py +104 -0
  36. numba_cuda/numba/cuda/core/rewrites/static_binop.py +40 -0
  37. numba_cuda/numba/cuda/core/rewrites/static_getitem.py +187 -0
  38. numba_cuda/numba/cuda/core/rewrites/static_raise.py +98 -0
  39. numba_cuda/numba/cuda/core/ssa.py +496 -0
  40. numba_cuda/numba/cuda/core/targetconfig.py +329 -0
  41. numba_cuda/numba/cuda/core/tracing.py +231 -0
  42. numba_cuda/numba/cuda/core/transforms.py +952 -0
  43. numba_cuda/numba/cuda/core/typed_passes.py +738 -7
  44. numba_cuda/numba/cuda/core/typeinfer.py +1948 -0
  45. numba_cuda/numba/cuda/core/unsafe/__init__.py +0 -0
  46. numba_cuda/numba/cuda/core/unsafe/bytes.py +67 -0
  47. numba_cuda/numba/cuda/core/unsafe/eh.py +66 -0
  48. numba_cuda/numba/cuda/core/unsafe/refcount.py +98 -0
  49. numba_cuda/numba/cuda/core/untyped_passes.py +1983 -0
  50. numba_cuda/numba/cuda/cpython/cmathimpl.py +560 -0
  51. numba_cuda/numba/cuda/cpython/mathimpl.py +499 -0
  52. numba_cuda/numba/cuda/cpython/numbers.py +1474 -0
  53. numba_cuda/numba/cuda/cuda_paths.py +422 -246
  54. numba_cuda/numba/cuda/cudadecl.py +1 -1
  55. numba_cuda/numba/cuda/cudadrv/__init__.py +1 -1
  56. numba_cuda/numba/cuda/cudadrv/devicearray.py +2 -1
  57. numba_cuda/numba/cuda/cudadrv/driver.py +11 -140
  58. numba_cuda/numba/cuda/cudadrv/dummyarray.py +111 -24
  59. numba_cuda/numba/cuda/cudadrv/libs.py +5 -5
  60. numba_cuda/numba/cuda/cudadrv/mappings.py +1 -1
  61. numba_cuda/numba/cuda/cudadrv/nvrtc.py +19 -8
  62. numba_cuda/numba/cuda/cudadrv/nvvm.py +1 -4
  63. numba_cuda/numba/cuda/cudadrv/runtime.py +1 -1
  64. numba_cuda/numba/cuda/cudaimpl.py +5 -1
  65. numba_cuda/numba/cuda/debuginfo.py +85 -2
  66. numba_cuda/numba/cuda/decorators.py +3 -3
  67. numba_cuda/numba/cuda/descriptor.py +3 -4
  68. numba_cuda/numba/cuda/deviceufunc.py +66 -2
  69. numba_cuda/numba/cuda/dispatcher.py +18 -39
  70. numba_cuda/numba/cuda/flags.py +141 -1
  71. numba_cuda/numba/cuda/fp16.py +0 -2
  72. numba_cuda/numba/cuda/include/13/cuda_bf16.h +5118 -0
  73. numba_cuda/numba/cuda/include/13/cuda_bf16.hpp +3865 -0
  74. numba_cuda/numba/cuda/include/13/cuda_fp16.h +5363 -0
  75. numba_cuda/numba/cuda/include/13/cuda_fp16.hpp +3483 -0
  76. numba_cuda/numba/cuda/lowering.py +7 -144
  77. numba_cuda/numba/cuda/mathimpl.py +2 -1
  78. numba_cuda/numba/cuda/memory_management/nrt.py +43 -17
  79. numba_cuda/numba/cuda/misc/findlib.py +75 -0
  80. numba_cuda/numba/cuda/models.py +9 -1
  81. numba_cuda/numba/cuda/np/npdatetime_helpers.py +217 -0
  82. numba_cuda/numba/cuda/np/npyfuncs.py +1807 -0
  83. numba_cuda/numba/cuda/np/numpy_support.py +553 -0
  84. numba_cuda/numba/cuda/np/ufunc/ufuncbuilder.py +59 -0
  85. numba_cuda/numba/cuda/nvvmutils.py +1 -1
  86. numba_cuda/numba/cuda/printimpl.py +12 -1
  87. numba_cuda/numba/cuda/random.py +1 -1
  88. numba_cuda/numba/cuda/serialize.py +1 -1
  89. numba_cuda/numba/cuda/simulator/__init__.py +1 -1
  90. numba_cuda/numba/cuda/simulator/api.py +1 -1
  91. numba_cuda/numba/cuda/simulator/compiler.py +4 -0
  92. numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +1 -1
  93. numba_cuda/numba/cuda/simulator/kernelapi.py +1 -1
  94. numba_cuda/numba/cuda/simulator/memory_management/nrt.py +14 -2
  95. numba_cuda/numba/cuda/target.py +35 -17
  96. numba_cuda/numba/cuda/testing.py +7 -19
  97. numba_cuda/numba/cuda/tests/__init__.py +1 -1
  98. numba_cuda/numba/cuda/tests/cloudpickle_main_class.py +9 -0
  99. numba_cuda/numba/cuda/tests/core/test_serialize.py +4 -4
  100. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +1 -1
  101. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_libraries.py +1 -1
  102. numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +1 -1
  103. numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +6 -3
  104. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +1 -1
  105. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +18 -2
  106. numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +2 -1
  107. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +1 -1
  108. numba_cuda/numba/cuda/tests/cudadrv/test_ptds.py +1 -1
  109. numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +1 -1
  110. numba_cuda/numba/cuda/tests/cudapy/test_array.py +2 -1
  111. numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +1 -1
  112. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +539 -2
  113. numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +81 -1
  114. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +1 -3
  115. numba_cuda/numba/cuda/tests/cudapy/test_complex.py +1 -1
  116. numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +1 -1
  117. numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +2 -3
  118. numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +130 -0
  119. numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +1 -1
  120. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +1 -1
  121. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +293 -4
  122. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +1 -1
  123. numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +1 -1
  124. numba_cuda/numba/cuda/tests/cudapy/test_errors.py +1 -1
  125. numba_cuda/numba/cuda/tests/cudapy/test_exception.py +1 -1
  126. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +2 -1
  127. numba_cuda/numba/cuda/tests/cudapy/test_inline.py +18 -8
  128. numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +23 -21
  129. numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +10 -37
  130. numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +1 -1
  131. numba_cuda/numba/cuda/tests/cudapy/test_math.py +1 -1
  132. numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +1 -1
  133. numba_cuda/numba/cuda/tests/cudapy/test_operator.py +1 -1
  134. numba_cuda/numba/cuda/tests/cudapy/test_print.py +20 -0
  135. numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +1 -1
  136. numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +1 -1
  137. numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +1 -1
  138. numba_cuda/numba/cuda/tests/cudapy/test_sm.py +1 -1
  139. numba_cuda/numba/cuda/tests/cudapy/test_ssa.py +453 -0
  140. numba_cuda/numba/cuda/tests/cudapy/test_sync.py +1 -1
  141. numba_cuda/numba/cuda/tests/cudapy/test_typeinfer.py +538 -0
  142. numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +263 -2
  143. numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +1 -1
  144. numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +1 -1
  145. numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +112 -6
  146. numba_cuda/numba/cuda/tests/cudapy/test_warning.py +1 -1
  147. numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +1 -1
  148. numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +0 -2
  149. numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +3 -2
  150. numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +0 -2
  151. numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +0 -2
  152. numba_cuda/numba/cuda/tests/nocuda/test_import.py +3 -1
  153. numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +24 -12
  154. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +2 -1
  155. numba_cuda/numba/cuda/tests/support.py +55 -15
  156. numba_cuda/numba/cuda/tests/test_tracing.py +200 -0
  157. numba_cuda/numba/cuda/types.py +56 -0
  158. numba_cuda/numba/cuda/typing/__init__.py +9 -1
  159. numba_cuda/numba/cuda/typing/cffi_utils.py +55 -0
  160. numba_cuda/numba/cuda/typing/context.py +751 -0
  161. numba_cuda/numba/cuda/typing/enumdecl.py +74 -0
  162. numba_cuda/numba/cuda/typing/npydecl.py +658 -0
  163. numba_cuda/numba/cuda/typing/templates.py +7 -6
  164. numba_cuda/numba/cuda/ufuncs.py +3 -3
  165. numba_cuda/numba/cuda/utils.py +6 -112
  166. {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/METADATA +4 -3
  167. {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/RECORD +171 -116
  168. numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py +0 -60
  169. {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/WHEEL +0 -0
  170. {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/licenses/LICENSE +0 -0
  171. {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/licenses/LICENSE.numba +0 -0
  172. {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/top_level.txt +0 -0
@@ -11,3 +11,7 @@ compile_for_current_device = None
11
11
  compile_ptx = None
12
12
  compile_ptx_for_current_device = None
13
13
  declare_device_function = None
14
+
15
+
16
+ def run_frontend(func, inline_closures=False, emit_dels=False):
17
+ pass
@@ -7,7 +7,7 @@ stubs to allow tests to import correctly.
7
7
  """
8
8
 
9
9
  from contextlib import contextmanager
10
- from numba.np.numpy_support import numpy_version
10
+ from numba.cuda.np.numpy_support import numpy_version
11
11
 
12
12
  import numpy as np
13
13
 
@@ -13,7 +13,7 @@ import traceback
13
13
  from numba.core import types
14
14
  import numpy as np
15
15
 
16
- from numba.np import numpy_support
16
+ from numba.cuda.np import numpy_support
17
17
 
18
18
  from .vector_types import vector_types
19
19
 
@@ -1,9 +1,21 @@
1
1
  # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
2
  # SPDX-License-Identifier: BSD-2-Clause
3
3
 
4
- from numba import config
4
+ from numba.cuda import config
5
5
 
6
- rtsys = None
6
+
7
+ class RTSys:
8
+ def __init__(self, *args, **kwargs):
9
+ pass
10
+
11
+ def memsys_enable_stats(self):
12
+ pass
13
+
14
+ def get_allocation_stats(self):
15
+ pass
16
+
17
+
18
+ rtsys = RTSys()
7
19
 
8
20
  config.CUDA_NRT_STATS = False
9
21
  config.CUDA_ENABLE_NRT = False
@@ -6,27 +6,31 @@ from functools import cached_property
6
6
  import llvmlite.binding as ll
7
7
  from llvmlite import ir
8
8
  import warnings
9
- from numba.cuda import cgutils, itanium_mangler
10
- from numba.core import (
11
- compiler,
12
- config,
13
- targetconfig,
14
- types,
15
- typing,
16
- )
9
+
10
+ from numba.core import types
11
+
17
12
  from numba.core.compiler_lock import global_compiler_lock
18
13
  from numba.core.dispatcher import Dispatcher
19
14
  from numba.core.errors import NumbaWarning
20
- from numba.core.base import BaseContext
21
- from numba.cuda.core.callconv import BaseCallConv, MinimalCallConv
15
+ from numba.cuda.core.base import BaseContext
22
16
  from numba.core.typing import cmathdecl
23
17
  from numba.core import datamodel
24
18
 
25
19
  from .cudadrv import nvvm
26
- from numba.cuda import codegen, ufuncs
20
+ from numba.cuda import (
21
+ cgutils,
22
+ itanium_mangler,
23
+ compiler,
24
+ codegen,
25
+ ufuncs,
26
+ typing,
27
+ )
27
28
  from numba.cuda.debuginfo import CUDADIBuilder
28
29
  from numba.cuda.flags import CUDAFlags
29
30
  from numba.cuda.models import cuda_data_manager
31
+ from numba.cuda.core.callconv import BaseCallConv, MinimalCallConv
32
+ from numba.cuda.core import config, targetconfig
33
+
30
34
 
31
35
  # -----------------------------------------------------------------------------
32
36
  # Typing
@@ -34,8 +38,15 @@ from numba.cuda.models import cuda_data_manager
34
38
 
35
39
  class CUDATypingContext(typing.BaseContext):
36
40
  def load_additional_registries(self):
37
- from . import cudadecl, cudamath, fp16, libdevicedecl, vector_types
38
- from numba.core.typing import enumdecl, cffi_utils
41
+ from . import (
42
+ cudadecl,
43
+ cudamath,
44
+ fp16,
45
+ bf16,
46
+ libdevicedecl,
47
+ vector_types,
48
+ )
49
+ from numba.cuda.typing import enumdecl, cffi_utils
39
50
 
40
51
  self.install_registry(cudadecl.registry)
41
52
  self.install_registry(cffi_utils.registry)
@@ -45,6 +56,7 @@ class CUDATypingContext(typing.BaseContext):
45
56
  self.install_registry(enumdecl.registry)
46
57
  self.install_registry(vector_types.typing_registry)
47
58
  self.install_registry(fp16.typing_registry)
59
+ self.install_registry(bf16.typing_registry)
48
60
 
49
61
  def resolve_value_type(self, val):
50
62
  # treat other dispatcher object as another device function
@@ -141,12 +153,14 @@ class CUDATargetContext(BaseContext):
141
153
  self._target_data = None
142
154
 
143
155
  def load_additional_registries(self):
144
- # side effect of import needed for numba.cpython.*, the builtins
156
+ # side effect of import needed for numba.cpython.*, numba.cuda.cpython.*, the builtins
145
157
  # registry is updated at import time.
146
- from numba.cpython import numbers, tupleobj, slicing # noqa: F401
158
+ from numba.cpython import tupleobj, slicing # noqa: F401
159
+ from numba.cuda.cpython import numbers # noqa: F401
147
160
  from numba.cpython import rangeobj, iterators, enumimpl # noqa: F401
148
161
  from numba.cpython import unicode, charseq # noqa: F401
149
- from numba.cpython import cmathimpl
162
+ from numba.cuda.cpython import cmathimpl, mathimpl
163
+ from numba.core import optional # noqa: F401
150
164
  from numba.misc import cffiimpl
151
165
  from numba.np import arrayobj # noqa: F401
152
166
  from numba.np import npdatetime # noqa: F401
@@ -155,8 +169,9 @@ class CUDATargetContext(BaseContext):
155
169
  fp16,
156
170
  printimpl,
157
171
  libdeviceimpl,
158
- mathimpl,
172
+ mathimpl as cuda_mathimpl,
159
173
  vector_types,
174
+ bf16,
160
175
  )
161
176
 
162
177
  # fix for #8940
@@ -168,8 +183,11 @@ class CUDATargetContext(BaseContext):
168
183
  self.install_registry(libdeviceimpl.registry)
169
184
  self.install_registry(cmathimpl.registry)
170
185
  self.install_registry(mathimpl.registry)
186
+ self.install_registry(numbers.registry)
187
+ self.install_registry(cuda_mathimpl.registry)
171
188
  self.install_registry(vector_types.impl_registry)
172
189
  self.install_registry(fp16.target_registry)
190
+ self.install_registry(bf16.target_registry)
173
191
 
174
192
  def codegen(self):
175
193
  return self._internal_codegen
@@ -6,17 +6,18 @@ import platform
6
6
  import shutil
7
7
  import pytest
8
8
  from datetime import datetime
9
- from numba.core.utils import PYVERSION
10
- from numba.cuda.cuda_paths import get_conda_ctk
9
+ from numba.cuda.utils import PYVERSION
10
+ from numba.cuda.cuda_paths import get_conda_ctk_libdir
11
11
  from numba.cuda.cudadrv import driver, devices, libs
12
12
  from numba.cuda.dispatcher import CUDADispatcher
13
- from numba.core import config
13
+ from numba.cuda import config
14
14
  from numba.cuda.tests.support import TestCase
15
15
  from pathlib import Path
16
16
 
17
17
  from typing import Iterable, Union
18
18
  from io import StringIO
19
19
  import unittest
20
+ import numpy as np
20
21
 
21
22
  if PYVERSION >= (3, 10):
22
23
  from filecheck.matcher import Matcher
@@ -44,6 +45,8 @@ class CUDATestCase(TestCase):
44
45
  matches FileCheck checks, and is not specific to CUDADispatcher.
45
46
  """
46
47
 
48
+ FLOAT16_RTOL = np.finfo(np.float16).eps
49
+
47
50
  def setUp(self):
48
51
  self._low_occupancy_warnings = config.CUDA_LOW_OCCUPANCY_WARNINGS
49
52
  self._warn_on_implicit_copy = config.CUDA_WARN_ON_IMPLICIT_COPY
@@ -211,7 +214,7 @@ def skip_unless_cudasim(reason):
211
214
 
212
215
  def skip_unless_conda_cudatoolkit(reason):
213
216
  """Skip test if the CUDA toolkit was not installed by Conda"""
214
- return unittest.skipUnless(get_conda_ctk() is not None, reason)
217
+ return unittest.skipUnless(get_conda_ctk_libdir() is not None, reason)
215
218
 
216
219
 
217
220
  def skip_if_external_memmgr(reason):
@@ -272,21 +275,6 @@ def skip_if_mvc_enabled(reason):
272
275
  )
273
276
 
274
277
 
275
- def skip_if_mvc_libraries_unavailable(fn):
276
- libs_available = False
277
- try:
278
- import cubinlinker # noqa: F401 # type: ignore
279
- import ptxcompiler # noqa: F401 # type: ignore
280
-
281
- libs_available = True
282
- except ImportError:
283
- pass
284
-
285
- return unittest.skipUnless(
286
- libs_available, "Requires cubinlinker and ptxcompiler"
287
- )(fn)
288
-
289
-
290
278
  def cc_X_or_above(major, minor):
291
279
  if not config.ENABLE_CUDASIM:
292
280
  cc = devices.get_context().device.compute_capability
@@ -2,7 +2,7 @@
2
2
  # SPDX-License-Identifier: BSD-2-Clause
3
3
 
4
4
  from fnmatch import fnmatch
5
- from numba.testing import unittest
5
+ import unittest
6
6
  from numba import cuda
7
7
  from os.path import dirname, isfile, join, normpath, relpath, splitext
8
8
 
@@ -0,0 +1,9 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ # Expected to run this module as __main__
5
+
6
+
7
+ # Cloudpickle will think this is a dynamic class when this module is __main__
8
+ class Klass:
9
+ classvar = None
@@ -12,9 +12,9 @@ from multiprocessing import get_context
12
12
 
13
13
  import numba
14
14
  from numba.core.errors import TypingError
15
- from numba.tests.support import TestCase
15
+ from numba.cuda.tests.support import TestCase
16
16
  from numba.core.target_extension import resolve_dispatcher_from_str
17
- from numba.cloudpickle import dumps, loads
17
+ from numba.cuda.cloudpickle import dumps, loads
18
18
 
19
19
 
20
20
  class TestDispatcherPickling(TestCase):
@@ -230,7 +230,7 @@ class TestDispatcherPickling(TestCase):
230
230
  class TestSerializationMisc(TestCase):
231
231
  def test_numba_unpickle(self):
232
232
  # Test that _numba_unpickle is memorizing its output
233
- from numba.core.serialize import _numba_unpickle
233
+ from numba.cuda.serialize import _numba_unpickle
234
234
 
235
235
  random_obj = object()
236
236
  bytebuf = pickle.dumps(random_obj)
@@ -318,7 +318,7 @@ def issue_7356():
318
318
  def check_main_class_reset_on_unpickle():
319
319
  # Load module and get its global dictionary
320
320
  glbs = runpy.run_module(
321
- "numba.tests.cloudpickle_main_class",
321
+ "numba.cuda.tests.cloudpickle_main_class",
322
322
  run_name="__main__",
323
323
  )
324
324
  # Get the Klass and check it is from __main__
@@ -10,7 +10,7 @@ from numba.cuda.cudadrv.devicearray import (
10
10
  )
11
11
  from numba.cuda.testing import unittest, CUDATestCase
12
12
  from numba.cuda.testing import skip_on_cudasim
13
- from numba.np import numpy_support
13
+ from numba.cuda.np import numpy_support
14
14
  from numba import cuda
15
15
 
16
16
  N_CHARS = 5
@@ -3,7 +3,7 @@
3
3
 
4
4
  from numba.cuda.testing import unittest
5
5
  from numba.cuda.testing import skip_on_cudasim, skip_unless_conda_cudatoolkit
6
- from numba.misc.findlib import find_lib
6
+ from numba.cuda.misc.findlib import find_lib
7
7
 
8
8
 
9
9
  @skip_on_cudasim("Library detection unsupported in the simulator")
@@ -13,7 +13,7 @@ from numba.cuda.testing import (
13
13
  CUDATestCase,
14
14
  )
15
15
  from numba.cuda.tests.support import captured_stderr
16
- from numba.core import config
16
+ from numba.cuda.core import config
17
17
 
18
18
 
19
19
  @skip_on_cudasim("not supported on CUDASIM")
@@ -60,8 +60,8 @@ class TestCUDAFindLibs(CUDATestCase):
60
60
  @unittest.skipIf(not sys.platform.startswith("linux"), "linux only")
61
61
  def test_cuda_find_lib_errors(self):
62
62
  """
63
- This tests that the find_libs works as expected in the case of an
64
- environment variable being used to set the path.
63
+ This tests that driver discovery attempts to load from typical system
64
+ locations and fails gracefully if pointed at an invalid directory.
65
65
  """
66
66
  # one of these is likely to exist on linux, it's also unlikely that
67
67
  # someone has extracted the contents of libdevice into here!
@@ -76,8 +76,11 @@ class TestCUDAFindLibs(CUDATestCase):
76
76
  # This is the testing part, the test will only run if there's a valid
77
77
  # path in which to look
78
78
  if looking_for is not None:
79
+ # We no longer support NUMBA_CUDA_DRIVER. Still run the subprocess
80
+ # to ensure importing and a trivial kernel launch path work, but
81
+ # do not set any Numba-specific driver env vars.
79
82
  out, err = self.run_test_in_separate_process(
80
- "NUMBA_CUDA_DRIVER", looking_for
83
+ "DUMMY_UNUSED", looking_for
81
84
  )
82
85
  self.assertTrue(out is not None)
83
86
  self.assertTrue(err is not None)
@@ -6,7 +6,7 @@ import numpy as np
6
6
  import weakref
7
7
 
8
8
  from numba import cuda
9
- from numba.core import config
9
+ from numba.cuda.core import config
10
10
  from numba.cuda.testing import unittest, CUDATestCase, skip_on_cudasim
11
11
  from numba.cuda.tests.support import linux_only
12
12
 
@@ -3,9 +3,13 @@
3
3
 
4
4
  import numpy as np
5
5
  import warnings
6
- from numba import config
6
+ from numba.cuda import config
7
7
  from numba.cuda.testing import unittest
8
- from numba.cuda.testing import skip_on_cudasim, skip_if_cuda_includes_missing
8
+ from numba.cuda.testing import (
9
+ skip_on_cudasim,
10
+ skip_if_cuda_includes_missing,
11
+ skip_if_nvjitlink_missing,
12
+ )
9
13
  from numba.cuda.testing import CUDATestCase, test_data_dir
10
14
  from numba.cuda.cudadrv.driver import CudaAPIError, _Linker, LinkerError
11
15
  from numba.cuda import require_context
@@ -329,6 +333,18 @@ class TestLinker(CUDATestCase):
329
333
  calc_size = np.dtype(np.float64).itemsize * LMEM_SIZE
330
334
  self.assertGreaterEqual(local_mem_size, calc_size)
331
335
 
336
+ @skip_if_nvjitlink_missing("nvJitLink not installed or new enough (>12.3)")
337
+ def test_link_for_different_cc(self):
338
+ linker = _Linker.new(cc=(7, 5), lto=True)
339
+ code = """
340
+ __device__ int foo(int x) {
341
+ return x + 1;
342
+ }
343
+ """
344
+ linker.add_cu(code, "foo")
345
+ ptx = linker.get_linked_ptx().decode()
346
+ assert "target sm_75" in ptx
347
+
332
348
 
333
349
  if __name__ == "__main__":
334
350
  unittest.main()
@@ -6,7 +6,8 @@ import threading
6
6
 
7
7
  import numpy as np
8
8
 
9
- from numba import cuda, config
9
+ from numba import cuda
10
+ from numba.cuda import config
10
11
  from numba.cuda.cudadrv.linkable_code import CUSource
11
12
  from numba.cuda.testing import (
12
13
  CUDATestCase,
@@ -8,7 +8,7 @@ from numba.cuda import get_current_device
8
8
  from numba.cuda.cudadrv.driver import _Linker, _have_nvjitlink
9
9
 
10
10
  from numba import cuda
11
- from numba import config
11
+ from numba.cuda import config
12
12
 
13
13
  import os
14
14
  import io
@@ -15,7 +15,7 @@ from numba.cuda.tests.support import linux_only
15
15
 
16
16
  def child_test():
17
17
  from numba import cuda, int32, void
18
- from numba.core import config
18
+ from numba.cuda.core import config
19
19
  import io
20
20
  import numpy as np
21
21
  import threading
@@ -2,7 +2,7 @@
2
2
  # SPDX-License-Identifier: BSD-2-Clause
3
3
 
4
4
  from numba import types
5
- from numba.core import config
5
+ from numba.cuda.core import config
6
6
 
7
7
 
8
8
  class TestStruct:
@@ -5,7 +5,8 @@ import numpy as np
5
5
 
6
6
  from numba.cuda.testing import unittest, CUDATestCase
7
7
  from numba.cuda.testing import skip_on_cudasim, skip_unless_cudasim
8
- from numba import config, cuda
8
+ from numba import cuda
9
+ from numba.cuda import config
9
10
 
10
11
 
11
12
  if config.ENABLE_CUDASIM:
@@ -6,7 +6,7 @@ from textwrap import dedent
6
6
 
7
7
  from numba import cuda, uint32, uint64, float32, float64
8
8
  from numba.cuda.testing import unittest, CUDATestCase, cc_X_or_above
9
- from numba.core import config
9
+ from numba.cuda.core import config
10
10
 
11
11
 
12
12
  @cuda.jit(device=True)