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.
- numba_cuda/VERSION +1 -1
- numba_cuda/numba/cuda/__init__.py +1 -1
- numba_cuda/numba/cuda/_internal/cuda_bf16.py +12706 -1470
- numba_cuda/numba/cuda/_internal/cuda_fp16.py +2653 -8769
- numba_cuda/numba/cuda/api.py +6 -1
- numba_cuda/numba/cuda/bf16.py +285 -2
- numba_cuda/numba/cuda/cgutils.py +2 -2
- numba_cuda/numba/cuda/cloudpickle/__init__.py +21 -0
- numba_cuda/numba/cuda/cloudpickle/cloudpickle.py +1598 -0
- numba_cuda/numba/cuda/cloudpickle/cloudpickle_fast.py +17 -0
- numba_cuda/numba/cuda/codegen.py +1 -1
- numba_cuda/numba/cuda/compiler.py +373 -30
- numba_cuda/numba/cuda/core/analysis.py +319 -0
- numba_cuda/numba/cuda/core/annotations/__init__.py +0 -0
- numba_cuda/numba/cuda/core/annotations/type_annotations.py +304 -0
- numba_cuda/numba/cuda/core/base.py +1289 -0
- numba_cuda/numba/cuda/core/bytecode.py +727 -0
- numba_cuda/numba/cuda/core/caching.py +2 -2
- numba_cuda/numba/cuda/core/compiler.py +6 -14
- numba_cuda/numba/cuda/core/compiler_machinery.py +497 -0
- numba_cuda/numba/cuda/core/config.py +747 -0
- numba_cuda/numba/cuda/core/consts.py +124 -0
- numba_cuda/numba/cuda/core/cpu.py +370 -0
- numba_cuda/numba/cuda/core/environment.py +68 -0
- numba_cuda/numba/cuda/core/event.py +511 -0
- numba_cuda/numba/cuda/core/funcdesc.py +330 -0
- numba_cuda/numba/cuda/core/inline_closurecall.py +1889 -0
- numba_cuda/numba/cuda/core/interpreter.py +48 -26
- numba_cuda/numba/cuda/core/ir_utils.py +15 -26
- numba_cuda/numba/cuda/core/options.py +262 -0
- numba_cuda/numba/cuda/core/postproc.py +249 -0
- numba_cuda/numba/cuda/core/pythonapi.py +1868 -0
- numba_cuda/numba/cuda/core/rewrites/__init__.py +26 -0
- numba_cuda/numba/cuda/core/rewrites/ir_print.py +90 -0
- numba_cuda/numba/cuda/core/rewrites/registry.py +104 -0
- numba_cuda/numba/cuda/core/rewrites/static_binop.py +40 -0
- numba_cuda/numba/cuda/core/rewrites/static_getitem.py +187 -0
- numba_cuda/numba/cuda/core/rewrites/static_raise.py +98 -0
- numba_cuda/numba/cuda/core/ssa.py +496 -0
- numba_cuda/numba/cuda/core/targetconfig.py +329 -0
- numba_cuda/numba/cuda/core/tracing.py +231 -0
- numba_cuda/numba/cuda/core/transforms.py +952 -0
- numba_cuda/numba/cuda/core/typed_passes.py +738 -7
- numba_cuda/numba/cuda/core/typeinfer.py +1948 -0
- numba_cuda/numba/cuda/core/unsafe/__init__.py +0 -0
- numba_cuda/numba/cuda/core/unsafe/bytes.py +67 -0
- numba_cuda/numba/cuda/core/unsafe/eh.py +66 -0
- numba_cuda/numba/cuda/core/unsafe/refcount.py +98 -0
- numba_cuda/numba/cuda/core/untyped_passes.py +1983 -0
- numba_cuda/numba/cuda/cpython/cmathimpl.py +560 -0
- numba_cuda/numba/cuda/cpython/mathimpl.py +499 -0
- numba_cuda/numba/cuda/cpython/numbers.py +1474 -0
- numba_cuda/numba/cuda/cuda_paths.py +422 -246
- numba_cuda/numba/cuda/cudadecl.py +1 -1
- numba_cuda/numba/cuda/cudadrv/__init__.py +1 -1
- numba_cuda/numba/cuda/cudadrv/devicearray.py +2 -1
- numba_cuda/numba/cuda/cudadrv/driver.py +11 -140
- numba_cuda/numba/cuda/cudadrv/dummyarray.py +111 -24
- numba_cuda/numba/cuda/cudadrv/libs.py +5 -5
- numba_cuda/numba/cuda/cudadrv/mappings.py +1 -1
- numba_cuda/numba/cuda/cudadrv/nvrtc.py +19 -8
- numba_cuda/numba/cuda/cudadrv/nvvm.py +1 -4
- numba_cuda/numba/cuda/cudadrv/runtime.py +1 -1
- numba_cuda/numba/cuda/cudaimpl.py +5 -1
- numba_cuda/numba/cuda/debuginfo.py +85 -2
- numba_cuda/numba/cuda/decorators.py +3 -3
- numba_cuda/numba/cuda/descriptor.py +3 -4
- numba_cuda/numba/cuda/deviceufunc.py +66 -2
- numba_cuda/numba/cuda/dispatcher.py +18 -39
- numba_cuda/numba/cuda/flags.py +141 -1
- numba_cuda/numba/cuda/fp16.py +0 -2
- numba_cuda/numba/cuda/include/13/cuda_bf16.h +5118 -0
- numba_cuda/numba/cuda/include/13/cuda_bf16.hpp +3865 -0
- numba_cuda/numba/cuda/include/13/cuda_fp16.h +5363 -0
- numba_cuda/numba/cuda/include/13/cuda_fp16.hpp +3483 -0
- numba_cuda/numba/cuda/lowering.py +7 -144
- numba_cuda/numba/cuda/mathimpl.py +2 -1
- numba_cuda/numba/cuda/memory_management/nrt.py +43 -17
- numba_cuda/numba/cuda/misc/findlib.py +75 -0
- numba_cuda/numba/cuda/models.py +9 -1
- numba_cuda/numba/cuda/np/npdatetime_helpers.py +217 -0
- numba_cuda/numba/cuda/np/npyfuncs.py +1807 -0
- numba_cuda/numba/cuda/np/numpy_support.py +553 -0
- numba_cuda/numba/cuda/np/ufunc/ufuncbuilder.py +59 -0
- numba_cuda/numba/cuda/nvvmutils.py +1 -1
- numba_cuda/numba/cuda/printimpl.py +12 -1
- numba_cuda/numba/cuda/random.py +1 -1
- numba_cuda/numba/cuda/serialize.py +1 -1
- numba_cuda/numba/cuda/simulator/__init__.py +1 -1
- numba_cuda/numba/cuda/simulator/api.py +1 -1
- numba_cuda/numba/cuda/simulator/compiler.py +4 -0
- numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +1 -1
- numba_cuda/numba/cuda/simulator/kernelapi.py +1 -1
- numba_cuda/numba/cuda/simulator/memory_management/nrt.py +14 -2
- numba_cuda/numba/cuda/target.py +35 -17
- numba_cuda/numba/cuda/testing.py +7 -19
- numba_cuda/numba/cuda/tests/__init__.py +1 -1
- numba_cuda/numba/cuda/tests/cloudpickle_main_class.py +9 -0
- numba_cuda/numba/cuda/tests/core/test_serialize.py +4 -4
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +1 -1
- numba_cuda/numba/cuda/tests/cudadrv/test_cuda_libraries.py +1 -1
- numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +1 -1
- numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +6 -3
- numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +1 -1
- numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +18 -2
- numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +2 -1
- numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +1 -1
- numba_cuda/numba/cuda/tests/cudadrv/test_ptds.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_array.py +2 -1
- numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +539 -2
- numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +81 -1
- numba_cuda/numba/cuda/tests/cudapy/test_caching.py +1 -3
- numba_cuda/numba/cuda/tests/cudapy/test_complex.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +2 -3
- numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +130 -0
- numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_debug.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +293 -4
- numba_cuda/numba/cuda/tests/cudapy/test_debuginfo_types.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_errors.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_exception.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_extending.py +2 -1
- numba_cuda/numba/cuda/tests/cudapy/test_inline.py +18 -8
- numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +23 -21
- numba_cuda/numba/cuda/tests/cudapy/test_ir_utils.py +10 -37
- numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_math.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_operator.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_print.py +20 -0
- numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_sm.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_ssa.py +453 -0
- numba_cuda/numba/cuda/tests/cudapy/test_sync.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_typeinfer.py +538 -0
- numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +263 -2
- numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +112 -6
- numba_cuda/numba/cuda/tests/cudapy/test_warning.py +1 -1
- numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +1 -1
- numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +0 -2
- numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +3 -2
- numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +0 -2
- numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +0 -2
- numba_cuda/numba/cuda/tests/nocuda/test_import.py +3 -1
- numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +24 -12
- numba_cuda/numba/cuda/tests/nrt/test_nrt.py +2 -1
- numba_cuda/numba/cuda/tests/support.py +55 -15
- numba_cuda/numba/cuda/tests/test_tracing.py +200 -0
- numba_cuda/numba/cuda/types.py +56 -0
- numba_cuda/numba/cuda/typing/__init__.py +9 -1
- numba_cuda/numba/cuda/typing/cffi_utils.py +55 -0
- numba_cuda/numba/cuda/typing/context.py +751 -0
- numba_cuda/numba/cuda/typing/enumdecl.py +74 -0
- numba_cuda/numba/cuda/typing/npydecl.py +658 -0
- numba_cuda/numba/cuda/typing/templates.py +7 -6
- numba_cuda/numba/cuda/ufuncs.py +3 -3
- numba_cuda/numba/cuda/utils.py +6 -112
- {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/METADATA +4 -3
- {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/RECORD +171 -116
- numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py +0 -60
- {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/WHEEL +0 -0
- {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/licenses/LICENSE +0 -0
- {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/licenses/LICENSE.numba +0 -0
- {numba_cuda-0.19.1.dist-info → numba_cuda-0.20.1.dist-info}/top_level.txt +0 -0
|
@@ -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
|
-
|
|
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
|
numba_cuda/numba/cuda/target.py
CHANGED
|
@@ -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
|
-
|
|
10
|
-
from numba.core import
|
|
11
|
-
|
|
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
|
|
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
|
|
38
|
-
|
|
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
|
|
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
|
numba_cuda/numba/cuda/testing.py
CHANGED
|
@@ -6,17 +6,18 @@ import platform
|
|
|
6
6
|
import shutil
|
|
7
7
|
import pytest
|
|
8
8
|
from datetime import datetime
|
|
9
|
-
from numba.
|
|
10
|
-
from numba.cuda.cuda_paths import
|
|
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.
|
|
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(
|
|
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
|
|
@@ -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.
|
|
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")
|
|
@@ -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
|
|
64
|
-
|
|
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
|
-
"
|
|
83
|
+
"DUMMY_UNUSED", looking_for
|
|
81
84
|
)
|
|
82
85
|
self.assertTrue(out is not None)
|
|
83
86
|
self.assertTrue(err is not None)
|
|
@@ -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
|
|
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()
|
|
@@ -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
|
|
8
|
+
from numba import cuda
|
|
9
|
+
from numba.cuda import config
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
if config.ENABLE_CUDASIM:
|