numba-cuda 0.0.17__py3-none-any.whl → 0.0.19__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.
Files changed (32) hide show
  1. numba_cuda/VERSION +1 -1
  2. numba_cuda/numba/cuda/codegen.py +15 -3
  3. numba_cuda/numba/cuda/cuda_paths.py +68 -0
  4. numba_cuda/numba/cuda/cudadrv/devicearray.py +4 -1
  5. numba_cuda/numba/cuda/cudadrv/driver.py +209 -47
  6. numba_cuda/numba/cuda/cudadrv/enums.py +3 -0
  7. numba_cuda/numba/cuda/cudadrv/libs.py +38 -0
  8. numba_cuda/numba/cuda/cudadrv/linkable_code.py +63 -0
  9. numba_cuda/numba/cuda/cudadrv/mappings.py +24 -0
  10. numba_cuda/numba/cuda/cudadrv/nvrtc.py +9 -4
  11. numba_cuda/numba/cuda/device_init.py +3 -0
  12. numba_cuda/numba/cuda/dispatcher.py +48 -8
  13. numba_cuda/numba/cuda/intrinsics.py +6 -1
  14. numba_cuda/numba/cuda/runtime/nrt.cu +190 -0
  15. numba_cuda/numba/cuda/simulator/api.py +14 -0
  16. numba_cuda/numba/cuda/target.py +8 -2
  17. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +199 -0
  18. numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +44 -4
  19. numba_cuda/numba/cuda/tests/cudapy/test_print.py +2 -2
  20. numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +48 -0
  21. numba_cuda/numba/cuda/tests/nrt/__init__.py +8 -0
  22. numba_cuda/numba/cuda/tests/nrt/mock_numpy.py +42 -0
  23. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +110 -0
  24. numba_cuda/numba/cuda/tests/test_binary_generation/Makefile +51 -0
  25. numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py +170 -0
  26. numba_cuda/numba/cuda/tests/test_binary_generation/test_device_functions.cu +19 -0
  27. numba_cuda/numba/cuda/tests/test_binary_generation/undefined_extern.cu +3 -0
  28. {numba_cuda-0.0.17.dist-info → numba_cuda-0.0.19.dist-info}/METADATA +1 -1
  29. {numba_cuda-0.0.17.dist-info → numba_cuda-0.0.19.dist-info}/RECORD +32 -20
  30. {numba_cuda-0.0.17.dist-info → numba_cuda-0.0.19.dist-info}/WHEEL +1 -1
  31. {numba_cuda-0.0.17.dist-info → numba_cuda-0.0.19.dist-info}/LICENSE +0 -0
  32. {numba_cuda-0.0.17.dist-info → numba_cuda-0.0.19.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,48 @@
1
+ from numba.cuda.testing import (skip_on_cudasim, skip_unless_cudasim, unittest,
2
+ CUDATestCase)
3
+ from numba import cuda
4
+
5
+ # Basic tests that stream APIs execute on the hardware and in the simulator.
6
+ #
7
+ # Correctness of semantics is exercised elsewhere in the test suite (though we
8
+ # could improve the comprehensiveness of testing by adding more correctness
9
+ # tests here in future).
10
+
11
+
12
+ class TestStreamAPI(CUDATestCase):
13
+ def test_stream_create_and_sync(self):
14
+ s = cuda.stream()
15
+ s.synchronize()
16
+
17
+ def test_default_stream_create_and_sync(self):
18
+ s = cuda.default_stream()
19
+ s.synchronize()
20
+
21
+ def test_legacy_default_stream_create_and_sync(self):
22
+ s = cuda.legacy_default_stream()
23
+ s.synchronize()
24
+
25
+ def test_ptd_stream_create_and_sync(self):
26
+ s = cuda.per_thread_default_stream()
27
+ s.synchronize()
28
+
29
+ @skip_on_cudasim("External streams are unsupported on the simulator")
30
+ def test_external_stream_create(self):
31
+ # A dummy pointer value
32
+ ptr = 0x12345678
33
+ s = cuda.external_stream(ptr)
34
+ # We don't test synchronization on the stream because it's not a real
35
+ # stream - we used a dummy pointer for testing the API, so we just
36
+ # ensure that the stream handle matches the external stream pointer.
37
+ self.assertEqual(ptr, s.handle.value)
38
+
39
+ @skip_unless_cudasim("External streams are usable with hardware")
40
+ def test_external_stream_simulator_unavailable(self):
41
+ ptr = 0x12345678
42
+ msg = "External streams are unsupported in the simulator"
43
+ with self.assertRaisesRegex(RuntimeError, msg):
44
+ cuda.external_stream(ptr)
45
+
46
+
47
+ if __name__ == '__main__':
48
+ unittest.main()
@@ -0,0 +1,8 @@
1
+ from numba.cuda.testing import ensure_supported_ccs_initialized
2
+ from numba.cuda.tests import load_testsuite
3
+ import os
4
+
5
+
6
+ def load_tests(loader, tests, pattern):
7
+ ensure_supported_ccs_initialized()
8
+ return load_testsuite(loader, os.path.dirname(__file__))
@@ -0,0 +1,42 @@
1
+
2
+ from numba.core import errors, types
3
+ from numba.core.extending import overload
4
+ from numba.np.arrayobj import (_check_const_str_dtype, is_nonelike,
5
+ ty_parse_dtype, ty_parse_shape, numpy_empty_nd)
6
+
7
+
8
+ # Typical tests for allocation use array construction (e.g. np.zeros, np.empty,
9
+ # etc.) to induce allocations. These don't work in the CUDA target because they
10
+ # need keyword arguments, which are presently not supported properly in the
11
+ # CUDA target.
12
+ #
13
+ # To work around this, we can define our own function, that works like
14
+ # the desired one, except that it uses only positional arguments.
15
+ #
16
+ # Once the CUDA target supports keyword arguments, this workaround will no
17
+ # longer be necessary and the tests in this module should be switched to use
18
+ # the relevant NumPy functions instead.
19
+ def cuda_empty(shape, dtype):
20
+ pass
21
+
22
+
23
+ @overload(cuda_empty)
24
+ def ol_cuda_empty(shape, dtype):
25
+ _check_const_str_dtype("empty", dtype)
26
+ if (dtype is float or
27
+ (isinstance(dtype, types.Function) and dtype.typing_key is float) or
28
+ is_nonelike(dtype)): #default
29
+ nb_dtype = types.double
30
+ else:
31
+ nb_dtype = ty_parse_dtype(dtype)
32
+
33
+ ndim = ty_parse_shape(shape)
34
+ if nb_dtype is not None and ndim is not None:
35
+ retty = types.Array(dtype=nb_dtype, ndim=ndim, layout='C')
36
+
37
+ def impl(shape, dtype):
38
+ return numpy_empty_nd(shape, dtype, retty)
39
+ return impl
40
+ else:
41
+ msg = f"Cannot parse input types to function np.empty({shape}, {dtype})"
42
+ raise errors.TypingError(msg)
@@ -0,0 +1,110 @@
1
+ import re
2
+ import gc
3
+ import numpy as np
4
+ import unittest
5
+ from unittest.mock import patch
6
+ from numba.core.runtime import rtsys
7
+ from numba.tests.support import EnableNRTStatsMixin
8
+ from numba.cuda.testing import CUDATestCase
9
+
10
+ from .mock_numpy import cuda_empty
11
+
12
+ from numba import cuda
13
+
14
+
15
+ class TestNrtRefCt(EnableNRTStatsMixin, CUDATestCase):
16
+
17
+ def setUp(self):
18
+ # Clean up any NRT-backed objects hanging in a dead reference cycle
19
+ gc.collect()
20
+ super(TestNrtRefCt, self).setUp()
21
+
22
+ @unittest.expectedFailure
23
+ def test_no_return(self):
24
+ """
25
+ Test issue #1291
26
+ """
27
+ n = 10
28
+
29
+ @cuda.jit
30
+ def kernel():
31
+ for i in range(n):
32
+ temp = cuda_empty(2, np.float64) # noqa: F841
33
+ return None
34
+
35
+ init_stats = rtsys.get_allocation_stats()
36
+
37
+ with patch('numba.config.CUDA_ENABLE_NRT', True, create=True):
38
+ kernel[1,1]()
39
+ cur_stats = rtsys.get_allocation_stats()
40
+ self.assertEqual(cur_stats.alloc - init_stats.alloc, n)
41
+ self.assertEqual(cur_stats.free - init_stats.free, n)
42
+
43
+
44
+ class TestNrtBasic(CUDATestCase):
45
+ def test_nrt_launches(self):
46
+ @cuda.jit
47
+ def f(x):
48
+ return x[:5]
49
+
50
+ @cuda.jit
51
+ def g():
52
+ x = cuda_empty(10, np.int64)
53
+ f(x)
54
+
55
+ with patch('numba.config.CUDA_ENABLE_NRT', True, create=True):
56
+ g[1,1]()
57
+ cuda.synchronize()
58
+
59
+ def test_nrt_ptx_contains_refcount(self):
60
+ @cuda.jit
61
+ def f(x):
62
+ return x[:5]
63
+
64
+ @cuda.jit
65
+ def g():
66
+ x = cuda_empty(10, np.int64)
67
+ f(x)
68
+
69
+ with patch('numba.config.CUDA_ENABLE_NRT', True, create=True):
70
+ g[1,1]()
71
+
72
+ ptx = next(iter(g.inspect_asm().values()))
73
+
74
+ # The following checks that a `call` PTX instruction is
75
+ # emitted for NRT_MemInfo_alloc_aligned, NRT_incref and
76
+ # NRT_decref
77
+ p1 = r"call\.uni(.|\n)*NRT_MemInfo_alloc_aligned"
78
+ match = re.search(p1, ptx)
79
+ assert match is not None
80
+
81
+ p2 = r"call\.uni.*\n.*NRT_incref"
82
+ match = re.search(p2, ptx)
83
+ assert match is not None
84
+
85
+ p3 = r"call\.uni.*\n.*NRT_decref"
86
+ match = re.search(p3, ptx)
87
+ assert match is not None
88
+
89
+ def test_nrt_returns_correct(self):
90
+ @cuda.jit
91
+ def f(x):
92
+ return x[5:]
93
+
94
+ @cuda.jit
95
+ def g(out_ary):
96
+ x = cuda_empty(10, np.int64)
97
+ x[5] = 1
98
+ y = f(x)
99
+ out_ary[0] = y[0]
100
+
101
+ out_ary = np.zeros(1, dtype=np.int64)
102
+
103
+ with patch('numba.config.CUDA_ENABLE_NRT', True, create=True):
104
+ g[1,1](out_ary)
105
+
106
+ self.assertEqual(out_ary[0], 1)
107
+
108
+
109
+ if __name__ == '__main__':
110
+ unittest.main()
@@ -0,0 +1,51 @@
1
+ # Generates the input files used by the pynvjitlink binding test suite
2
+
3
+ # Test binaries are built taking into account the CC of the GPU in the test machine
4
+ GPU_CC := $(shell nvidia-smi --query-gpu=compute_cap --format=csv | grep -v compute_cap | head -n 1 | sed 's/\.//')
5
+ GPU_CC ?= 75
6
+
7
+ # Use CC 7.0 as an alternative in fatbin testing, unless CC is 7.x
8
+ ifeq ($(shell echo "$(GPU_CC)" | cut -c1),7)
9
+ ALT_CC := 80
10
+ else
11
+ ALT_CC := 70
12
+ endif
13
+
14
+ # Gencode flags suitable for most tests
15
+ GENCODE := -gencode arch=compute_$(GPU_CC),code=sm_$(GPU_CC)
16
+
17
+ # Fatbin tests need to generate code for an additional compute capability
18
+ FATBIN_GENCODE := $(GENCODE) -gencode arch=compute_$(ALT_CC),code=sm_$(ALT_CC)
19
+
20
+ # LTO-IR tests need to generate for the LTO "architecture" instead
21
+ LTOIR_GENCODE := -gencode arch=lto_$(GPU_CC),code=lto_$(GPU_CC)
22
+
23
+ # Compile with optimization; use relocatable device code to preserve device
24
+ # functions in the final output
25
+ NVCC_FLAGS := -O3 -rdc true
26
+
27
+ # Flags specific to output type
28
+ CUBIN_FLAGS := $(GENCODE) --cubin
29
+ PTX_FLAGS := $(GENCODE) -ptx
30
+ OBJECT_FLAGS := $(GENCODE) -dc
31
+ LIBRARY_FLAGS := $(GENCODE) -lib
32
+ FATBIN_FLAGS := $(FATBIN_GENCODE) --fatbin
33
+ LTOIR_FLAGS := $(LTOIR_GENCODE) -dc
34
+
35
+ OUTPUT_DIR := ./
36
+
37
+ all:
38
+ @echo "GPU CC: $(GPU_CC)"
39
+ @echo "Alternative CC: $(ALT_CC)"
40
+ # Compile all test objects
41
+ nvcc $(NVCC_FLAGS) $(CUBIN_FLAGS) -o $(OUTPUT_DIR)/undefined_extern.cubin undefined_extern.cu
42
+ nvcc $(NVCC_FLAGS) $(CUBIN_FLAGS) -o $(OUTPUT_DIR)/test_device_functions.cubin test_device_functions.cu
43
+ nvcc $(NVCC_FLAGS) $(FATBIN_FLAGS) -o $(OUTPUT_DIR)/test_device_functions.fatbin test_device_functions.cu
44
+ nvcc $(NVCC_FLAGS) $(PTX_FLAGS) -o $(OUTPUT_DIR)/test_device_functions.ptx test_device_functions.cu
45
+ nvcc $(NVCC_FLAGS) $(OBJECT_FLAGS) -o $(OUTPUT_DIR)/test_device_functions.o test_device_functions.cu
46
+ nvcc $(NVCC_FLAGS) $(LIBRARY_FLAGS) -o $(OUTPUT_DIR)/test_device_functions.a test_device_functions.cu
47
+
48
+ # Generate LTO-IR wrapped in a fatbin
49
+ nvcc $(NVCC_FLAGS) $(LTOIR_FLAGS) -o $(OUTPUT_DIR)/test_device_functions.ltoir.o test_device_functions.cu
50
+ # Generate LTO-IR in a "raw" LTO-IR container
51
+ python generate_raw_ltoir.py --arch sm_$(GPU_CC) -o $(OUTPUT_DIR)/test_device_functions.ltoir test_device_functions.cu
@@ -0,0 +1,170 @@
1
+ # Copyright (c) 2024, NVIDIA CORPORATION.
2
+
3
+ import argparse
4
+ import pathlib
5
+ import platform
6
+ import subprocess
7
+ import sys
8
+
9
+ from cuda import nvrtc
10
+
11
+ # Magic number found at the start of an LTO-IR file
12
+ LTOIR_MAGIC = 0x7F4E43ED
13
+
14
+
15
+ def check(args):
16
+ """
17
+ Abort and print an error message in the presence of an error result.
18
+
19
+ Otherwise:
20
+ - Return None if there were no more arguments,
21
+ - Return the singular argument if there was only one further argument,
22
+ - Return the tuple of arguments if multiple followed.
23
+ """
24
+
25
+ result, *args = args
26
+ value = result.value
27
+
28
+ if value:
29
+ error_string = check(nvrtc.nvrtcGetErrorString(result)).decode()
30
+ msg = f"NVRTC error, code {value}: {error_string}"
31
+ print(msg, file=sys.stderr)
32
+ sys.exit(1)
33
+
34
+ if len(args) == 0:
35
+ return None
36
+ elif len(args) == 1:
37
+ return args[0]
38
+ else:
39
+ return args
40
+
41
+
42
+ def determine_include_flags():
43
+ # Inspired by the logic in FindCUDAToolkit.cmake. We need the CUDA include
44
+ # paths because NVRTC doesn't add them by default, and we can compile a
45
+ # much broader set of test files if the CUDA includes are available.
46
+
47
+ # We invoke NVCC in verbose mode ("-v") and give a dummy filename, without
48
+ # which it won't produce output.
49
+
50
+ cmd = ["nvcc", "-v", "__dummy"]
51
+ cp = subprocess.run(cmd, capture_output=True)
52
+
53
+ # Since the dummy file doesn't actually exist, NVCC is expected to exit
54
+ # with an error code of 1.
55
+ rc = cp.returncode
56
+ if rc != 1:
57
+ print(f"Unexpected return code ({rc}) from `nvcc -v`. Expected 1.")
58
+ return None
59
+
60
+ # NVCC writes to stdout on Windows and stderr on Linux
61
+ if platform.system() == 'Windows':
62
+ stream = cp.stdout
63
+ else:
64
+ stream = cp.stderr
65
+
66
+ output = stream.decode()
67
+ lines = output.splitlines()
68
+
69
+ includes_lines = [line for line in lines if line.startswith("#$ INCLUDES=")]
70
+ if len(includes_lines) != 1:
71
+ print(f"Expected exactly one INCLUDES line. Got {len(includes_lines)}.")
72
+ return None
73
+
74
+ # Parse out the arguments following "INCLUDES=" - these are a space
75
+ # separated list of strings that are potentially quoted.
76
+
77
+ quoted_flags = includes_lines[0].split("INCLUDES=")[1].strip().split()
78
+ include_flags = [flag.strip('"') for flag in quoted_flags]
79
+ print(f"Using CUDA include flags: {include_flags}")
80
+
81
+ return include_flags
82
+
83
+
84
+ def get_ltoir(source, name, arch):
85
+ """Given a CUDA C/C++ source, compile it and return the LTO-IR."""
86
+
87
+ program = check(
88
+ nvrtc.nvrtcCreateProgram(source.encode(), name.encode(), 0, [], [])
89
+ )
90
+
91
+ cuda_include_flags = determine_include_flags()
92
+ if cuda_include_flags is None:
93
+ print("Error determining CUDA include flags. Exiting.", file=sys.stderr)
94
+ sys.exit(1)
95
+
96
+ options = [
97
+ f"--gpu-architecture={arch}",
98
+ "-dlto",
99
+ "-rdc",
100
+ "true",
101
+ *cuda_include_flags,
102
+ ]
103
+ options = [o.encode() for o in options]
104
+
105
+ result = nvrtc.nvrtcCompileProgram(program, len(options), options)
106
+
107
+ # Report compilation errors back to the user
108
+ if result[0] == nvrtc.nvrtcResult.NVRTC_ERROR_COMPILATION:
109
+ log_size = check(nvrtc.nvrtcGetProgramLogSize(program))
110
+ log = b" " * log_size
111
+ check(nvrtc.nvrtcGetProgramLog(program, log))
112
+ print("NVRTC compilation error:\n", file=sys.stderr)
113
+ print(log.decode(), file=sys.stderr)
114
+ sys.exit(1)
115
+
116
+ # Handle other errors in the standard way
117
+ check(result)
118
+
119
+ ltoir_size = check(nvrtc.nvrtcGetLTOIRSize(program))
120
+ ltoir = b" " * ltoir_size
121
+ check(nvrtc.nvrtcGetLTOIR(program, ltoir))
122
+
123
+ # Check that the output looks like an LTO-IR container
124
+ header = int.from_bytes(ltoir[:4], byteorder="little")
125
+ if header != LTOIR_MAGIC:
126
+ print(
127
+ f"Unexpected header value 0x{header:X}.\n"
128
+ f"Expected LTO-IR magic number 0x{LTOIR_MAGIC:X}."
129
+ "\nExiting.",
130
+ file=sys.stderr,
131
+ )
132
+ sys.exit(1)
133
+
134
+ return ltoir
135
+
136
+
137
+ def main(sourcepath, outputpath, arch):
138
+ with open(sourcepath) as f:
139
+ source = f.read()
140
+
141
+ name = pathlib.Path(sourcepath).name
142
+ ltoir = get_ltoir(source, name, arch)
143
+
144
+ print(f"Writing {outputpath}...")
145
+
146
+ with open(outputpath, "wb") as f:
147
+ f.write(ltoir)
148
+
149
+
150
+ if __name__ == "__main__":
151
+ description = "Compiles CUDA C/C++ to LTO-IR using NVRTC."
152
+ parser = argparse.ArgumentParser(description=description)
153
+ parser.add_argument("sourcepath", help="path to source file")
154
+ parser.add_argument(
155
+ "-o", "--output", help="path to output file", default=None
156
+ )
157
+ parser.add_argument(
158
+ "-a",
159
+ "--arch",
160
+ help="compute arch to target (e.g. sm_87). " "Defaults to sm_50.",
161
+ default="sm_50",
162
+ )
163
+
164
+ args = parser.parse_args()
165
+ outputpath = args.output
166
+
167
+ if outputpath is None:
168
+ outputpath = pathlib.Path(args.sourcepath).with_suffix(".ltoir")
169
+
170
+ main(args.sourcepath, outputpath, args.arch)
@@ -0,0 +1,19 @@
1
+ #include <cuda_fp16.h>
2
+
3
+ extern __device__ bool __heq(__half arg1, __half arg2);
4
+
5
+ __device__ __half test_add_fp16(__half arg1, __half arg2) {
6
+ return __hadd(arg1, arg2);
7
+ }
8
+
9
+ __device__ bool test_cmp_fp16(__half arg1, __half arg2) {
10
+ return __heq(arg1, arg2);
11
+ }
12
+
13
+ typedef unsigned int uint32_t;
14
+
15
+ extern "C" __device__ int add_from_numba(uint32_t *result, uint32_t a,
16
+ uint32_t b) {
17
+ *result = a + b;
18
+ return 0;
19
+ }
@@ -0,0 +1,3 @@
1
+ extern __device__ float undef(float a, float b);
2
+
3
+ __global__ void f(float *r, float *a, float *b) { r[0] = undef(a[0], b[0]); }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: numba-cuda
3
- Version: 0.0.17
3
+ Version: 0.0.19
4
4
  Summary: CUDA target for Numba
5
5
  Author: Anaconda Inc., NVIDIA Corporation
6
6
  License: BSD 2-clause
@@ -1,6 +1,6 @@
1
1
  _numba_cuda_redirector.pth,sha256=cmfMMmV0JPh3yEpl4bGeM9AuXiVVMSo6Z_b7RaQL3XE,30
2
2
  _numba_cuda_redirector.py,sha256=rc56rnb40w3AtrqnhS66JSgYTSTsi3iTn8yP3NuoQV8,2401
3
- numba_cuda/VERSION,sha256=DrDiKI3dlaPMnBVpW_StEAewYnizS9fPRlkzxw22ubA,7
3
+ numba_cuda/VERSION,sha256=K2Wn4BRtrXcEkuPZYGGM_h_Orgai6flc272777m5MYQ,7
4
4
  numba_cuda/__init__.py,sha256=atXeUvJKR3JHcAiCFbXCVOJQUHgB1TulmsqSL_9RT3Q,114
5
5
  numba_cuda/_version.py,sha256=jbdUsbR7sVllw0KxQNB0-FMd929CGg3kH2fhHdrlkuc,719
6
6
  numba_cuda/numba/cuda/__init__.py,sha256=idyVHOObC9lTYnp62v7rVprSacRM4d5F6vhXfG5ElTI,621
@@ -8,25 +8,25 @@ numba_cuda/numba/cuda/api.py,sha256=shLu7NEZHRMcaZAMEXSoyA5Gi5m0tm6ZRymxKLEKCSg,
8
8
  numba_cuda/numba/cuda/api_util.py,sha256=aQfUV2-4RM_oGVvckMjbMr5e3effOQNX04v1T0O2EfQ,861
9
9
  numba_cuda/numba/cuda/args.py,sha256=HloHkw_PQal2DT-I70Xf_XbnGObS1jiUgcRrQ85Gq28,1978
10
10
  numba_cuda/numba/cuda/cg.py,sha256=9V1uZqyGOJX1aFd9c6GAPbLSqq83lE8LoP-vxxrKENY,1490
11
- numba_cuda/numba/cuda/codegen.py,sha256=raBoCDNt_qkDgB12yU0tbJQlA5_eTlUMemgcRHen1Vk,12174
11
+ numba_cuda/numba/cuda/codegen.py,sha256=9LnTlei-4JK7iq3Rg-H2Y19Oh_u5ZXMC_CPfattANjw,12358
12
12
  numba_cuda/numba/cuda/compiler.py,sha256=47SjuI5p4yWCujAglIq0Cb0ARO8QxRp4fOZropkNMtQ,16001
13
13
  numba_cuda/numba/cuda/cpp_function_wrappers.cu,sha256=iv84_F6Q9kFjV_kclrQz1msh6Dud8mI3qNkswTid7Qc,953
14
14
  numba_cuda/numba/cuda/cuda_fp16.h,sha256=1IC0mdNdkvKbvAe0-f4uYVS7WFrVqOyI1nRUbBiqr6A,126844
15
15
  numba_cuda/numba/cuda/cuda_fp16.hpp,sha256=vJ7NUr2X2tKhAP7ojydAiCoOjVO6n4QGoXD6m9Srrlw,89130
16
- numba_cuda/numba/cuda/cuda_paths.py,sha256=_fPrwCysDSoxwUvU_2xyGe9KSDxtHzunkxVqQNLtTBg,7723
16
+ numba_cuda/numba/cuda/cuda_paths.py,sha256=wwZKOUS0FyZloRUgDVDPPCwtm3t6Js7U369_YgMpEC0,9859
17
17
  numba_cuda/numba/cuda/cudadecl.py,sha256=ynUidit8oPGjedc6p1miMGtS20DOji3DiQHzwmx6m0s,23192
18
18
  numba_cuda/numba/cuda/cudaimpl.py,sha256=3YMxQSCv2KClBrpuXGchrTNICV1F6NIjjL2rie5fDZ4,38628
19
19
  numba_cuda/numba/cuda/cudamath.py,sha256=EFNtdzEytAZuwijdRoFGzVKCeal76UzzaNy7wUFQx8I,3978
20
20
  numba_cuda/numba/cuda/decorators.py,sha256=qSpir16-jPYSe2YuRZ6g9INeobmsMNg6ab9IZpwJocM,7823
21
21
  numba_cuda/numba/cuda/descriptor.py,sha256=rNMaurJkjNjIBmHPozDoLC35DMURE0fn_LtnXRmaG_w,985
22
- numba_cuda/numba/cuda/device_init.py,sha256=orQK7anhnmEkYPRjHEs5I9uhdBwaHeXbaSD4ViX2_14,3460
22
+ numba_cuda/numba/cuda/device_init.py,sha256=lP79tCsQ0Np9xcbjv_lXcH4JOiVZvV8nwg3INdETxsc,3586
23
23
  numba_cuda/numba/cuda/deviceufunc.py,sha256=yxAH71dpgJWK8okmCJm0FUV6z2AqdThCYOTZspT7z0M,30775
24
- numba_cuda/numba/cuda/dispatcher.py,sha256=glLglJw4D03ZAK1B0N1K93M93yHfn7ZZZm7gLeue6Jk,40190
24
+ numba_cuda/numba/cuda/dispatcher.py,sha256=1ND28o_YeP_0YS2iFYwCH9Byc87qTvCVKjT7PHu2Fsg,41233
25
25
  numba_cuda/numba/cuda/errors.py,sha256=XwWHzCllx0DXU6BQdoRH0m3pznGxnTFOBTVYXMmCfqg,1724
26
26
  numba_cuda/numba/cuda/extending.py,sha256=URsyBYls2te-mgE0yvDY6akvawYCA0blBFfD7Lf9DO4,142
27
27
  numba_cuda/numba/cuda/initialize.py,sha256=TQGHGLQoq4ch4J6CLDcJdGsZzXM-g2kDgdyO1u-Rbhg,546
28
28
  numba_cuda/numba/cuda/intrinsic_wrapper.py,sha256=zbcUbegbfF3GdnC2Rl-z26-gozE8xBtaMxpS8LpOhfo,2239
29
- numba_cuda/numba/cuda/intrinsics.py,sha256=PazoJEYpomsMRZsnXGJWDbCwUM9eJKV16if_AEAz-HY,5961
29
+ numba_cuda/numba/cuda/intrinsics.py,sha256=k0mQYAt0FTlJeghE5V8lSBtO4fgKH1jSRRLwHHcH4M0,6100
30
30
  numba_cuda/numba/cuda/libdevice.py,sha256=476LeIEaAth409m-0OO1SMMmY5AHzN2AotXI__k_yYE,60065
31
31
  numba_cuda/numba/cuda/libdevicedecl.py,sha256=xdZbb_rCaftMf8Pbw63g_Lr230N-1QoaYzBxq8udKTg,532
32
32
  numba_cuda/numba/cuda/libdevicefuncs.py,sha256=c80lGpGoFIYkAdgr4fzbxzdNCyJYrLdss64bwa0Mc6w,37471
@@ -38,31 +38,34 @@ numba_cuda/numba/cuda/printimpl.py,sha256=Y1BCQ7EgO2wQ7O6LibNVYBG3tmjVTvmURATW40
38
38
  numba_cuda/numba/cuda/random.py,sha256=khX8iDdde_RTUPWhAqrxZacHRQAorFr7BokPuxRWzrg,10456
39
39
  numba_cuda/numba/cuda/simulator_init.py,sha256=W_bPRtmPGOQVuiprbgt7ENnnnELv_LPCeLDIsfsvFZ8,460
40
40
  numba_cuda/numba/cuda/stubs.py,sha256=W3tozv4ganMnfbdFqyPjgQXYeX8GQhwx_xXgv8jk6iM,22270
41
- numba_cuda/numba/cuda/target.py,sha256=EI6XuKQeqvng0uSx_V9jDoxbgFivqSz-4jczFzAbs5o,16837
41
+ numba_cuda/numba/cuda/target.py,sha256=hBflzmxCGlmTugWT1sYhZj9f4HkQAMK2RQ9lO85pMW4,17052
42
42
  numba_cuda/numba/cuda/testing.py,sha256=E0wP2vfno1yWsl0v1zg31kpbU8FrKxTF-5y9Iv4WjA4,6412
43
43
  numba_cuda/numba/cuda/types.py,sha256=WVfjcly_VUpG9FfKueiEPzZm2NV8Hg0XAFg3bNzPdVc,1314
44
44
  numba_cuda/numba/cuda/ufuncs.py,sha256=txw27IxG80W1Yo7e-XwL2AMcQo0fMnxMjBIMy-n5pCo,23317
45
45
  numba_cuda/numba/cuda/vector_types.py,sha256=s18dY0IUpT-RcaBvQsa_zEbYuuL2IT0Vh6afCeccwmQ,6750
46
46
  numba_cuda/numba/cuda/vectorizers.py,sha256=u_0EzaD5tqVH8uOz4Gmqn3FgPC1rckwDAQuROm0BXm8,8915
47
47
  numba_cuda/numba/cuda/cudadrv/__init__.py,sha256=0TL4MZcJXUoo9qA7uu0vLv7eHrXRerVmyfi7O149ITw,199
48
- numba_cuda/numba/cuda/cudadrv/devicearray.py,sha256=B3ItYQywTnwTWjltxVRx6oaKRq7rxTtvOaiqTWsMQ2w,31123
48
+ numba_cuda/numba/cuda/cudadrv/devicearray.py,sha256=06kM7iFcx1TYiFhs1o9r1kyoA3k5yS7mFAdZDf6nrxA,31215
49
49
  numba_cuda/numba/cuda/cudadrv/devices.py,sha256=6SneNmoq83gue0txFWWx4A65vViAa8xA06FzkApoqAk,7992
50
- numba_cuda/numba/cuda/cudadrv/driver.py,sha256=MfNwvOpCzjW1ctL_VZZZgBDIQhH8h0PfN3Vx54JrlJ8,105700
50
+ numba_cuda/numba/cuda/cudadrv/driver.py,sha256=uPjKugdtSJfIwVSAo3KgkvQhctbABkQphHAfcq6Q7ec,110892
51
51
  numba_cuda/numba/cuda/cudadrv/drvapi.py,sha256=52ms3X6hfPaQB8E1jb6g7QKqRvHzBMlDQ-V2DM1rXxQ,17178
52
52
  numba_cuda/numba/cuda/cudadrv/dummyarray.py,sha256=nXRngdr-k3h_BNGQuJUxmp89yGNWxqEDJedpwDPEZ44,14209
53
- numba_cuda/numba/cuda/cudadrv/enums.py,sha256=E0lnh17jO4EvZ_hSIq3ZtfsE5bObmINtKb_lbK7rmMg,23708
53
+ numba_cuda/numba/cuda/cudadrv/enums.py,sha256=37zZmyrLvT-7R8wWtwKJkQhN8siLMxsDGiA3_NQ-yx8,23740
54
54
  numba_cuda/numba/cuda/cudadrv/error.py,sha256=zEIryW6aIy8GG4ypmTliB6RgY4Gy2n8ckz7I6W99LUM,524
55
- numba_cuda/numba/cuda/cudadrv/libs.py,sha256=PRyxal4bz9jVZmuLpKiYw-VaR59LekfwJgWKo7R5uRY,6005
55
+ numba_cuda/numba/cuda/cudadrv/libs.py,sha256=Gk9zQ1CKcsZsWl-_9QneXeP9VH5q5R1I3Cx043UOytk,7240
56
+ numba_cuda/numba/cuda/cudadrv/linkable_code.py,sha256=Q_YTv0apBo9t8pkMlKrthPPSVeLd376ZTmVDF5NtVVo,1328
57
+ numba_cuda/numba/cuda/cudadrv/mappings.py,sha256=-dTPHvAkDjdH6vS5OjgrB71AFuqKO6CRgf7hpOk2wiw,802
56
58
  numba_cuda/numba/cuda/cudadrv/ndarray.py,sha256=HtULWWFyDlgqvrH5459yyPTvU4UbUo2DSdtcNfvbH00,473
57
- numba_cuda/numba/cuda/cudadrv/nvrtc.py,sha256=CLpuD9VzPcYoXj8dZ2meSoqbWXHOOC5V5D6dFNdXqmg,9693
59
+ numba_cuda/numba/cuda/cudadrv/nvrtc.py,sha256=rv-XQo0snJj4xyEbfeBqivziIxCwMOQzIIEOnvLQaJI,9825
58
60
  numba_cuda/numba/cuda/cudadrv/nvvm.py,sha256=v2hJJTAQeRmoG59-hnhgMEp5BSVA73QHtEoy636VKao,24107
59
61
  numba_cuda/numba/cuda/cudadrv/rtapi.py,sha256=WdeUoWzsYNYodx8kMRLVIjnNs0QzwpCihd2Q0AaqItE,226
60
62
  numba_cuda/numba/cuda/cudadrv/runtime.py,sha256=Tj9ACrzQqNmDSO6xfpzw12EsQknSywQ-ZGuWMbDdHnQ,4255
61
63
  numba_cuda/numba/cuda/kernels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
64
  numba_cuda/numba/cuda/kernels/reduction.py,sha256=fQnaWtoNB2yp143MNbE1DujqFIYy0KV_2moQVvbaROU,9362
63
65
  numba_cuda/numba/cuda/kernels/transpose.py,sha256=5FSu-nbTfhintxwfU-bjT2px2otQF5QkKH-JPDDWq_k,2061
66
+ numba_cuda/numba/cuda/runtime/nrt.cu,sha256=i8Xcf-x84n3uNPzs_xak4c_sLHOH91ast2aE6DKKf9Q,5497
64
67
  numba_cuda/numba/cuda/simulator/__init__.py,sha256=crW0VQ_8e7DMRSHKoAIziZ37ea5mpbh_49tR9M3d5YY,1610
65
- numba_cuda/numba/cuda/simulator/api.py,sha256=i0PQ8_uXVk8l17xQYFaRST-T3PNBkoHUoFgJl2FYYtE,2720
68
+ numba_cuda/numba/cuda/simulator/api.py,sha256=K_fX-w9X4grGx2IAp0XlBW9rth5l7wibMwinQvkE7Jc,3237
66
69
  numba_cuda/numba/cuda/simulator/compiler.py,sha256=eXnvmzSKzIZZzBz6ZFJ-vMNyRAgqbCiB-AO5IJXuUyM,232
67
70
  numba_cuda/numba/cuda/simulator/kernel.py,sha256=GO4HuXBlEstJtgiuMRB_6hjNizBSINR9_hganvMjHH4,10593
68
71
  numba_cuda/numba/cuda/simulator/kernelapi.py,sha256=ZYC_XQqnA51TJCPlAjVHHkOjXeww0yUP6JZeibXw3T8,12397
@@ -100,6 +103,7 @@ numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py,sha256=0KPe4E9wOZsSV_0QI0Lmj
100
103
  numba_cuda/numba/cuda/tests/cudadrv/test_linker.py,sha256=_l2_EQEko2Jet5ooj4XMT0L4BjOuqLjbONGj1_MVI50,10161
101
104
  numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py,sha256=kYXYMkx_3GPAITKp4reLeM8KSzKkpxiC8nxnBvXpaTA,4979
102
105
  numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py,sha256=984jATSa01SRoSrVqxPeO6ujJ7w2jsnZa39ABInFLVI,1529
106
+ numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py,sha256=m5zv6K6PHLnm-AqHKo5x9f_ZBrn3rmvPX_ZGjjrkPfI,6807
103
107
  numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py,sha256=DF7KV5uh-yMztks0f47NhpalV64dvsNy-f8HY6GhAhE,7373
104
108
  numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py,sha256=u_TthSS2N-2J4eBIuF4PGg33AjD-wxly7MKpz0vRAKc,944
105
109
  numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py,sha256=MQWZx1j3lbEpWmIpQ1bV9szrGOV3VHN0QrEnJRjAhW4,508
@@ -151,7 +155,7 @@ numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py,sha256=Uhe8Q0u42jySrpwA
151
155
  numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py,sha256=luDtBxFS_5ZbVemXe1Z7gfqMliaU_EAOR4SuLsU5rhw,2677
152
156
  numba_cuda/numba/cuda/tests/cudapy/test_idiv.py,sha256=HLJ_f2lX8m_NNJjUbl_8zZ0-8GsBlRdBP2CUo_yWb0Y,1056
153
157
  numba_cuda/numba/cuda/tests/cudapy/test_inspect.py,sha256=lP9-8SbWFn2Xc-qmF6UNhcY6LreKTnveaK5CGW2pu8E,5196
154
- numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py,sha256=e6lABWy8YBgYheYYGfD75_y8vMbPP71GHb95A4hlLmA,34931
158
+ numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py,sha256=M6-pad8nVM0fuL18uFxvE6tmHw0spLNhnMBLVlO0FKU,36400
155
159
  numba_cuda/numba/cuda/tests/cudapy/test_ipc.py,sha256=fggyy-kmsOkCb906_q3kXPGRziccWu7Co7ir83zBMwM,10536
156
160
  numba_cuda/numba/cuda/tests/cudapy/test_iterators.py,sha256=daQW3kSkp7icCmlTn9pCvnaauz60k_eBf4x1UQF-XVY,2344
157
161
  numba_cuda/numba/cuda/tests/cudapy/test_lang.py,sha256=U1BCVZMjU1AZ4wDSmjsRIPPcAReiq4dB77Cz7GmrdmA,1691
@@ -172,7 +176,7 @@ numba_cuda/numba/cuda/tests/cudapy/test_operator.py,sha256=0nJej4D898_JU-jhlif44
172
176
  numba_cuda/numba/cuda/tests/cudapy/test_optimization.py,sha256=SvqRsSFgcGxkFDZS-kul5B-mi8GxINTS98uUzAy4dhw,2647
173
177
  numba_cuda/numba/cuda/tests/cudapy/test_overload.py,sha256=u4yUDVFcV9E3NWMlNjM81e3IW4KaIkcDtXig8JYevsw,8538
174
178
  numba_cuda/numba/cuda/tests/cudapy/test_powi.py,sha256=TI82rYRnkSnwv9VN6PMpBnr9JqMJ_F3HhH4cKY6O8tw,3276
175
- numba_cuda/numba/cuda/tests/cudapy/test_print.py,sha256=QXhhhnEz1d5BlldLINQVnmuHeM_dT3aLvfGS7jm24nE,4451
179
+ numba_cuda/numba/cuda/tests/cudapy/test_print.py,sha256=r2xmMNx80_ANi3uFB3CQt3AHAXG_JdhStY1S796hlK0,4466
176
180
  numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py,sha256=R88Vfgg3mSAZ0Jy6WT6dJNmkFTsxnVnEmO7XqpqyxuU,986
177
181
  numba_cuda/numba/cuda/tests/cudapy/test_random.py,sha256=rLw7_8a7BBhD_8GNqMal0l_AbWXzLs_Q0hC6_X8gdjA,3467
178
182
  numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py,sha256=grR64kdRlsLcR0K3IxSfI2VKsTrrqxsXuROOpvj-6nw,18769
@@ -183,6 +187,7 @@ numba_cuda/numba/cuda/tests/cudapy/test_serialize.py,sha256=alE5-lTwbjz3Tv6OvQPS
183
187
  numba_cuda/numba/cuda/tests/cudapy/test_slicing.py,sha256=bAh_sIk5V9_0_dOVGdzmyjwZkHMLjEbQuEI4e5zRMoU,903
184
188
  numba_cuda/numba/cuda/tests/cudapy/test_sm.py,sha256=kh1F0wwQ2_bd54Q4GUX99y2oiWHQwBpyC__ckk-jiTU,14575
185
189
  numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py,sha256=bTXDjU94ezo6Bz_lktlPyowTcJHBOWfy7-nJB9e-B_s,7231
190
+ numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py,sha256=alwSPm2xLvuYEwzpuCE6UUkOp6xcEoVqZjyJk3VJjtY,1743
186
191
  numba_cuda/numba/cuda/tests/cudapy/test_sync.py,sha256=Y851UqNkT80U9q_C05SQfvPRCY7jjRARHOMk6g0lU4Y,7837
187
192
  numba_cuda/numba/cuda/tests/cudapy/test_transpose.py,sha256=JAQX2EUHwlpKCfJDGspaldmsIRbHxnXpsNUrvRrnIEE,3134
188
193
  numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py,sha256=-ehvkxelr45aT8sUNL9Hq8cn2GU_K4GL1yWeX-rHqEM,9680
@@ -224,8 +229,15 @@ numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py,sha256=o4DYocyHK7
224
229
  numba_cuda/numba/cuda/tests/nocuda/test_import.py,sha256=teiL8rpFGQOh41kyBSSNHHFYAJYgpdStXkTcpK4_fxo,1641
225
230
  numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py,sha256=7kJOPHEcrjy_kTA9Ym-iT_B972bgFRu3UkRtwIgWtuI,7948
226
231
  numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py,sha256=n0_-xFaw6QqiZbhe55oy7lnEeOwqTvA55p5EUFiTpNw,2006
227
- numba_cuda-0.0.17.dist-info/LICENSE,sha256=eHeYE-XjASmwbxfsP5AImgfzRwZurZGqH1f6OFwJ4io,1326
228
- numba_cuda-0.0.17.dist-info/METADATA,sha256=gEDhruReJA6UTqMZDNev7vHJsahF41oGVd_fTJNJmA8,1393
229
- numba_cuda-0.0.17.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
230
- numba_cuda-0.0.17.dist-info/top_level.txt,sha256=C50SsH-8tXDmt7I0Y3nlJYhS5s6pqWflCPdobe9vx2M,11
231
- numba_cuda-0.0.17.dist-info/RECORD,,
232
+ numba_cuda/numba/cuda/tests/nrt/__init__.py,sha256=43EXdiXXRBd6yIcVGMrU9F_EJCD9Uw3mzOP3SB53AEE,260
233
+ numba_cuda/numba/cuda/tests/nrt/mock_numpy.py,sha256=Qtn52GoKZ_ydre3oqkLWVdImC37tuPClUy4uHSutaJo,1568
234
+ numba_cuda/numba/cuda/tests/nrt/test_nrt.py,sha256=Ox6ei2DldvSSS-CndTXRxLnsvWdteOQNgn6GvKHB244,2789
235
+ numba_cuda/numba/cuda/tests/test_binary_generation/Makefile,sha256=OFC_6irwscCNGAyJJKq7fTchzWosCUuiVWU02m0bcUQ,2248
236
+ numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py,sha256=V0raLZLGSiWbE_K-JluI0CnmNkXbhlMVj-TH7P1OV8E,5014
237
+ numba_cuda/numba/cuda/tests/test_binary_generation/test_device_functions.cu,sha256=cUf-t6ZM9MK_x7X_aKwsrKW1LdR97XcpR-qnYr5faOE,453
238
+ numba_cuda/numba/cuda/tests/test_binary_generation/undefined_extern.cu,sha256=q3oxZziT8KDodeNcEBiWULH6vMrHCWucmJmtrg8C0d0,128
239
+ numba_cuda-0.0.19.dist-info/LICENSE,sha256=eHeYE-XjASmwbxfsP5AImgfzRwZurZGqH1f6OFwJ4io,1326
240
+ numba_cuda-0.0.19.dist-info/METADATA,sha256=GAWms3JiCaxTzo4WMk-5h31_Oqo8YFPgekLKFR_YfqA,1393
241
+ numba_cuda-0.0.19.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
242
+ numba_cuda-0.0.19.dist-info/top_level.txt,sha256=C50SsH-8tXDmt7I0Y3nlJYhS5s6pqWflCPdobe9vx2M,11
243
+ numba_cuda-0.0.19.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5