numba-cuda 0.0.19__py3-none-any.whl → 0.0.20__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.
numba_cuda/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.19
1
+ 0.0.20
@@ -1,6 +1,7 @@
1
1
  from llvmlite import ir
2
2
  from numba.core.typing.templates import ConcreteTemplate
3
- from numba.core import types, typing, funcdesc, config, compiler, sigutils
3
+ from numba.core import (cgutils, types, typing, funcdesc, config, compiler,
4
+ sigutils, utils)
4
5
  from numba.core.compiler import (sanitize_compile_result_entries, CompilerBase,
5
6
  DefaultPassBuilder, Flags, Option,
6
7
  CompileResult)
@@ -11,7 +12,10 @@ from numba.core.errors import NumbaInvalidConfigWarning
11
12
  from numba.core.typed_passes import (IRLegalization, NativeLowering,
12
13
  AnnotateTypes)
13
14
  from warnings import warn
15
+ from numba.cuda import nvvmutils
14
16
  from numba.cuda.api import get_current_device
17
+ from numba.cuda.cudadrv import nvvm
18
+ from numba.cuda.descriptor import cuda_target
15
19
  from numba.cuda.target import CUDACABICallConv
16
20
 
17
21
 
@@ -24,6 +28,15 @@ def _nvvm_options_type(x):
24
28
  return x
25
29
 
26
30
 
31
+ def _optional_int_type(x):
32
+ if x is None:
33
+ return None
34
+
35
+ else:
36
+ assert isinstance(x, int)
37
+ return x
38
+
39
+
27
40
  class CUDAFlags(Flags):
28
41
  nvvm_options = Option(
29
42
  type=_nvvm_options_type,
@@ -35,6 +48,16 @@ class CUDAFlags(Flags):
35
48
  default=None,
36
49
  doc="Compute Capability",
37
50
  )
51
+ max_registers = Option(
52
+ type=_optional_int_type,
53
+ default=None,
54
+ doc="Max registers"
55
+ )
56
+ lto = Option(
57
+ type=bool,
58
+ default=False,
59
+ doc="Enable Link-time Optimization"
60
+ )
38
61
 
39
62
 
40
63
  # The CUDACompileResult (CCR) has a specially-defined entry point equal to its
@@ -109,7 +132,11 @@ class CreateLibrary(LoweringPass):
109
132
  codegen = state.targetctx.codegen()
110
133
  name = state.func_id.func_qualname
111
134
  nvvm_options = state.flags.nvvm_options
112
- state.library = codegen.create_library(name, nvvm_options=nvvm_options)
135
+ max_registers = state.flags.max_registers
136
+ lto = state.flags.lto
137
+ state.library = codegen.create_library(name, nvvm_options=nvvm_options,
138
+ max_registers=max_registers,
139
+ lto=lto)
113
140
  # Enable object caching upfront so that the library can be serialized.
114
141
  state.library.enable_object_caching()
115
142
 
@@ -152,7 +179,7 @@ class CUDACompiler(CompilerBase):
152
179
  @global_compiler_lock
153
180
  def compile_cuda(pyfunc, return_type, args, debug=False, lineinfo=False,
154
181
  inline=False, fastmath=False, nvvm_options=None,
155
- cc=None):
182
+ cc=None, max_registers=None, lto=False):
156
183
  if cc is None:
157
184
  raise ValueError('Compute Capability must be supplied')
158
185
 
@@ -189,6 +216,8 @@ def compile_cuda(pyfunc, return_type, args, debug=False, lineinfo=False,
189
216
  if nvvm_options:
190
217
  flags.nvvm_options = nvvm_options
191
218
  flags.compute_capability = cc
219
+ flags.max_registers = max_registers
220
+ flags.lto = lto
192
221
 
193
222
  # Run compilation pipeline
194
223
  from numba.core.target_extension import target_override
@@ -247,11 +276,155 @@ def cabi_wrap_function(context, lib, fndesc, wrapper_function_name,
247
276
  builder, func, restype, argtypes, callargs)
248
277
  builder.ret(return_value)
249
278
 
279
+ if config.DUMP_LLVM:
280
+ utils.dump_llvm(fndesc, wrapper_module)
281
+
250
282
  library.add_ir_module(wrapper_module)
251
283
  library.finalize()
252
284
  return library
253
285
 
254
286
 
287
+ def kernel_fixup(kernel, debug):
288
+ if debug:
289
+ exc_helper = add_exception_store_helper(kernel)
290
+
291
+ # Pass 1 - replace:
292
+ #
293
+ # ret <value>
294
+ #
295
+ # with:
296
+ #
297
+ # exc_helper(<value>)
298
+ # ret void
299
+
300
+ for block in kernel.blocks:
301
+ for i, inst in enumerate(block.instructions):
302
+ if isinstance(inst, ir.Ret):
303
+ old_ret = block.instructions.pop()
304
+ block.terminator = None
305
+
306
+ # The original return's metadata will be set on the new
307
+ # instructions in order to preserve debug info
308
+ metadata = old_ret.metadata
309
+
310
+ builder = ir.IRBuilder(block)
311
+ if debug:
312
+ status_code = old_ret.operands[0]
313
+ exc_helper_call = builder.call(exc_helper, (status_code,))
314
+ exc_helper_call.metadata = metadata
315
+
316
+ new_ret = builder.ret_void()
317
+ new_ret.metadata = old_ret.metadata
318
+
319
+ # Need to break out so we don't carry on modifying what we are
320
+ # iterating over. There can only be one return in a block
321
+ # anyway.
322
+ break
323
+
324
+ # Pass 2: remove stores of null pointer to return value argument pointer
325
+
326
+ return_value = kernel.args[0]
327
+
328
+ for block in kernel.blocks:
329
+ remove_list = []
330
+
331
+ # Find all stores first
332
+ for inst in block.instructions:
333
+ if (isinstance(inst, ir.StoreInstr)
334
+ and inst.operands[1] == return_value):
335
+ remove_list.append(inst)
336
+
337
+ # Remove all stores
338
+ for to_remove in remove_list:
339
+ block.instructions.remove(to_remove)
340
+
341
+ # Replace non-void return type with void return type and remove return
342
+ # value
343
+
344
+ if isinstance(kernel.type, ir.PointerType):
345
+ new_type = ir.PointerType(ir.FunctionType(ir.VoidType(),
346
+ kernel.type.pointee.args[1:]))
347
+ else:
348
+ new_type = ir.FunctionType(ir.VoidType(), kernel.type.args[1:])
349
+
350
+ kernel.type = new_type
351
+ kernel.return_value = ir.ReturnValue(kernel, ir.VoidType())
352
+ kernel.args = kernel.args[1:]
353
+
354
+ # Mark as a kernel for NVVM
355
+
356
+ nvvm.set_cuda_kernel(kernel)
357
+
358
+ if config.DUMP_LLVM:
359
+ print(f"LLVM DUMP: Post kernel fixup {kernel.name}".center(80, '-'))
360
+ print(kernel.module)
361
+ print('=' * 80)
362
+
363
+
364
+ def add_exception_store_helper(kernel):
365
+
366
+ # Create global variables for exception state
367
+
368
+ def define_error_gv(postfix):
369
+ name = kernel.name + postfix
370
+ gv = cgutils.add_global_variable(kernel.module, ir.IntType(32),
371
+ name)
372
+ gv.initializer = ir.Constant(gv.type.pointee, None)
373
+ return gv
374
+
375
+ gv_exc = define_error_gv("__errcode__")
376
+ gv_tid = []
377
+ gv_ctaid = []
378
+ for i in 'xyz':
379
+ gv_tid.append(define_error_gv("__tid%s__" % i))
380
+ gv_ctaid.append(define_error_gv("__ctaid%s__" % i))
381
+
382
+ # Create exception store helper function
383
+
384
+ helper_name = kernel.name + "__exc_helper__"
385
+ helper_type = ir.FunctionType(ir.VoidType(), (ir.IntType(32),))
386
+ helper_func = ir.Function(kernel.module, helper_type, helper_name)
387
+
388
+ block = helper_func.append_basic_block(name="entry")
389
+ builder = ir.IRBuilder(block)
390
+
391
+ # Implement status check / exception store logic
392
+
393
+ status_code = helper_func.args[0]
394
+ call_conv = cuda_target.target_context.call_conv
395
+ status = call_conv._get_return_status(builder, status_code)
396
+
397
+ # Check error status
398
+ with cgutils.if_likely(builder, status.is_ok):
399
+ builder.ret_void()
400
+
401
+ with builder.if_then(builder.not_(status.is_python_exc)):
402
+ # User exception raised
403
+ old = ir.Constant(gv_exc.type.pointee, None)
404
+
405
+ # Use atomic cmpxchg to prevent rewriting the error status
406
+ # Only the first error is recorded
407
+
408
+ xchg = builder.cmpxchg(gv_exc, old, status.code,
409
+ 'monotonic', 'monotonic')
410
+ changed = builder.extract_value(xchg, 1)
411
+
412
+ # If the xchange is successful, save the thread ID.
413
+ sreg = nvvmutils.SRegBuilder(builder)
414
+ with builder.if_then(changed):
415
+ for dim, ptr, in zip("xyz", gv_tid):
416
+ val = sreg.tid(dim)
417
+ builder.store(val, ptr)
418
+
419
+ for dim, ptr, in zip("xyz", gv_ctaid):
420
+ val = sreg.ctaid(dim)
421
+ builder.store(val, ptr)
422
+
423
+ builder.ret_void()
424
+
425
+ return helper_func
426
+
427
+
255
428
  @global_compiler_lock
256
429
  def compile(pyfunc, sig, debug=None, lineinfo=False, device=True,
257
430
  fastmath=False, cc=None, opt=None, abi="c", abi_info=None,
@@ -347,13 +520,10 @@ def compile(pyfunc, sig, debug=None, lineinfo=False, device=True,
347
520
  lib = cabi_wrap_function(tgt, lib, cres.fndesc, wrapper_name,
348
521
  nvvm_options)
349
522
  else:
350
- code = pyfunc.__code__
351
- filename = code.co_filename
352
- linenum = code.co_firstlineno
353
-
354
- lib, kernel = tgt.prepare_cuda_kernel(cres.library, cres.fndesc, debug,
355
- lineinfo, nvvm_options, filename,
356
- linenum)
523
+ lib = cres.library
524
+ kernel = lib.get_function(cres.fndesc.llvm_func_name)
525
+ lib._entry_name = cres.fndesc.llvm_func_name
526
+ kernel_fixup(kernel, debug)
357
527
 
358
528
  if lto:
359
529
  code = lib.get_ltoir(cc=cc)
@@ -310,7 +310,9 @@ def get_conda_include_dir():
310
310
  # though usually it shouldn't.
311
311
  include_dir = os.path.join(sys.prefix, 'include')
312
312
 
313
- if os.path.exists(include_dir):
313
+ if (os.path.exists(include_dir) and os.path.isdir(include_dir)
314
+ and os.path.exists(os.path.join(include_dir,
315
+ 'cuda_device_runtime_api.h'))):
314
316
  return include_dir
315
317
  return
316
318
 
@@ -55,7 +55,7 @@ CUDA_ERROR_INVALID_HANDLE = 400
55
55
  CUDA_ERROR_ILLEGAL_STATE = 401
56
56
  CUDA_ERROR_NOT_FOUND = 500
57
57
  CUDA_ERROR_NOT_READY = 600
58
- CUDA_ERROR_LAUNCH_FAILED = 700
58
+ CUDA_ERROR_ILLEGAL_ADDRESS = 700
59
59
  CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES = 701
60
60
  CUDA_ERROR_LAUNCH_TIMEOUT = 702
61
61
  CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING = 703
@@ -14,7 +14,7 @@ from numba.core.typing.typeof import Purpose, typeof
14
14
 
15
15
  from numba.cuda.api import get_current_device
16
16
  from numba.cuda.args import wrap_arg
17
- from numba.cuda.compiler import compile_cuda, CUDACompiler
17
+ from numba.cuda.compiler import compile_cuda, CUDACompiler, kernel_fixup
18
18
  from numba.cuda.cudadrv import driver
19
19
  from numba.cuda.cudadrv.devices import get_context
20
20
  from numba.cuda.descriptor import cuda_target
@@ -102,15 +102,14 @@ class _Kernel(serialize.ReduceMixin):
102
102
  inline=inline,
103
103
  fastmath=fastmath,
104
104
  nvvm_options=nvvm_options,
105
- cc=cc)
105
+ cc=cc,
106
+ max_registers=max_registers,
107
+ lto=lto)
106
108
  tgt_ctx = cres.target_context
107
- code = self.py_func.__code__
108
- filename = code.co_filename
109
- linenum = code.co_firstlineno
110
- lib, kernel = tgt_ctx.prepare_cuda_kernel(cres.library, cres.fndesc,
111
- debug, lineinfo, nvvm_options,
112
- filename, linenum,
113
- max_registers, lto)
109
+ lib = cres.library
110
+ kernel = lib.get_function(cres.fndesc.llvm_func_name)
111
+ lib._entry_name = cres.fndesc.llvm_func_name
112
+ kernel_fixup(kernel, self.debug)
114
113
 
115
114
  if not link:
116
115
  link = []
@@ -48,13 +48,11 @@ class TestDebugOutput(CUDATestCase):
48
48
  self.assertRaises(AssertionError, check_meth, out)
49
49
 
50
50
  def _check_dump_bytecode(self, out):
51
- if PYVERSION in ((3, 11), (3, 12)):
51
+ if PYVERSION > (3, 10):
52
52
  # binop with arg=0 is binary add, see CPython dis.py and opcode.py
53
53
  self.assertIn('BINARY_OP(arg=0', out)
54
- elif PYVERSION in ((3, 9), (3, 10)):
55
- self.assertIn('BINARY_ADD', out)
56
54
  else:
57
- raise NotImplementedError(PYVERSION)
55
+ self.assertIn('BINARY_ADD', out)
58
56
 
59
57
  def _check_dump_cfg(self, out):
60
58
  self.assertIn('CFG dominators', out)
@@ -72,6 +72,7 @@ class TestCudaDebugInfo(CUDATestCase):
72
72
  def f(x):
73
73
  x[0] = 0
74
74
 
75
+ @unittest.skip("Wrappers no longer exist")
75
76
  def test_wrapper_has_debuginfo(self):
76
77
  sig = (types.int32[::1],)
77
78
 
@@ -33,10 +33,7 @@ class TestInspect(CUDATestCase):
33
33
  self.assertIn("foo", llvm)
34
34
 
35
35
  # Kernel in LLVM
36
- self.assertIn('cuda.kernel.wrapper', llvm)
37
-
38
- # Wrapped device function body in LLVM
39
- self.assertIn("define linkonce_odr i32", llvm)
36
+ self.assertIn("define void @", llvm)
40
37
 
41
38
  asm = foo.inspect_asm(sig)
42
39
 
@@ -72,12 +69,8 @@ class TestInspect(CUDATestCase):
72
69
  self.assertIn("foo", llvmirs[float64, float64])
73
70
 
74
71
  # Kernels in LLVM
75
- self.assertIn('cuda.kernel.wrapper', llvmirs[intp, intp])
76
- self.assertIn('cuda.kernel.wrapper', llvmirs[float64, float64])
77
-
78
- # Wrapped device function bodies in LLVM
79
- self.assertIn("define linkonce_odr i32", llvmirs[intp, intp])
80
- self.assertIn("define linkonce_odr i32", llvmirs[float64, float64])
72
+ self.assertIn("define void @", llvmirs[intp, intp])
73
+ self.assertIn("define void @", llvmirs[float64, float64])
81
74
 
82
75
  asmdict = foo.inspect_asm()
83
76
 
@@ -170,10 +170,9 @@ class TestCudaLineInfo(CUDATestCase):
170
170
  subprograms += 1
171
171
 
172
172
  # One DISubprogram for each of:
173
- # - The kernel wrapper
174
173
  # - The caller
175
174
  # - The callee
176
- expected_subprograms = 3
175
+ expected_subprograms = 2
177
176
 
178
177
  self.assertEqual(subprograms, expected_subprograms,
179
178
  f'"Expected {expected_subprograms} DISubprograms; '
@@ -14,8 +14,11 @@ def device_func(x, y, z):
14
14
 
15
15
 
16
16
  # Fragments of code that are removed from kernel_func's PTX when optimization
17
- # is on
18
- removed_by_opt = ( '__local_depot0', 'call.uni', 'st.param.b64')
17
+ # is on. Previously this list was longer when kernel wrappers were used - if
18
+ # the test function were more complex it may be possible to isolate additional
19
+ # fragments of PTX we could check for the absence / presence of, but removal of
20
+ # the use of local memory is a good indicator that optimization was applied.
21
+ removed_by_opt = ( '__local_depot0',)
19
22
 
20
23
 
21
24
  @skip_on_cudasim('Simulator does not optimize code')
@@ -1,6 +1,6 @@
1
1
  from numba.cuda.testing import (skip_on_cudasim, skip_unless_cudasim, unittest,
2
2
  CUDATestCase)
3
- from numba import cuda
3
+ from numba import config, cuda
4
4
 
5
5
  # Basic tests that stream APIs execute on the hardware and in the simulator.
6
6
  #
@@ -34,7 +34,11 @@ class TestStreamAPI(CUDATestCase):
34
34
  # We don't test synchronization on the stream because it's not a real
35
35
  # stream - we used a dummy pointer for testing the API, so we just
36
36
  # ensure that the stream handle matches the external stream pointer.
37
- self.assertEqual(ptr, s.handle.value)
37
+ if config.CUDA_USE_NVIDIA_BINDING:
38
+ value = int(s.handle)
39
+ else:
40
+ value = s.handle.value
41
+ self.assertEqual(ptr, value)
38
42
 
39
43
  @skip_unless_cudasim("External streams are usable with hardware")
40
44
  def test_external_stream_simulator_unavailable(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: numba-cuda
3
- Version: 0.0.19
3
+ Version: 0.0.20
4
4
  Summary: CUDA target for Numba
5
5
  Author: Anaconda Inc., NVIDIA Corporation
6
6
  License: BSD 2-clause
@@ -13,17 +13,21 @@ Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: numba>=0.59.1
15
15
 
16
+ <div align="center"><img src="docs/source/_static/numba-green-icon-rgb.svg" width="200"/></div>
17
+
16
18
  # Numba CUDA Target
17
19
 
18
- An out-of-tree CUDA target for Numba.
20
+ The CUDA target for Numba. Please visit the [official
21
+ documentation](https://nvidia.github.io/numba-cuda) to get started!
22
+
19
23
 
20
- This contains an entire copy of Numba's CUDA target (the `numba.cuda` module),
21
- and a mechanism to ensure the code from this module (`numba_cuda.numba.cuda`) is
22
- used as the `numba.cuda` module instead of the code from the `numba` package.
24
+ To report issues or file feature requests, please use the [issue
25
+ tracker](https://github.com/NVIDIA/numba-cuda/issues).
23
26
 
24
- This is presently in an early state and is published for testing and feedback.
27
+ To raise questions or initiate discussions, please use the [Numba Discourse
28
+ forum](https://numba.discourse.group).
25
29
 
26
- ## Building / testing
30
+ ## Building from source
27
31
 
28
32
  Install as an editable install:
29
33
 
@@ -31,7 +35,7 @@ Install as an editable install:
31
35
  pip install -e .
32
36
  ```
33
37
 
34
- Running tests:
38
+ ## Running tests
35
39
 
36
40
  ```
37
41
  python -m numba.runtests numba.cuda.tests
@@ -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=K2Wn4BRtrXcEkuPZYGGM_h_Orgai6flc272777m5MYQ,7
3
+ numba_cuda/VERSION,sha256=cPZ8vtzWinVd7EOHmw_3zZqy5pfWSDm-eY6LV2Q5TPI,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
@@ -9,11 +9,11 @@ numba_cuda/numba/cuda/api_util.py,sha256=aQfUV2-4RM_oGVvckMjbMr5e3effOQNX04v1T0O
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
11
  numba_cuda/numba/cuda/codegen.py,sha256=9LnTlei-4JK7iq3Rg-H2Y19Oh_u5ZXMC_CPfattANjw,12358
12
- numba_cuda/numba/cuda/compiler.py,sha256=47SjuI5p4yWCujAglIq0Cb0ARO8QxRp4fOZropkNMtQ,16001
12
+ numba_cuda/numba/cuda/compiler.py,sha256=XQHzUCuXl6WCtWWxv1X3Y9ebcVQVJEkzOuckNwKa4Gg,21249
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=wwZKOUS0FyZloRUgDVDPPCwtm3t6Js7U369_YgMpEC0,9859
16
+ numba_cuda/numba/cuda/cuda_paths.py,sha256=C0gA72QLWUMfvXkFpw1WqqaFqfsQ7HM72hQVXG0A7RU,10023
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
@@ -21,7 +21,7 @@ numba_cuda/numba/cuda/decorators.py,sha256=qSpir16-jPYSe2YuRZ6g9INeobmsMNg6ab9IZ
21
21
  numba_cuda/numba/cuda/descriptor.py,sha256=rNMaurJkjNjIBmHPozDoLC35DMURE0fn_LtnXRmaG_w,985
22
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=1ND28o_YeP_0YS2iFYwCH9Byc87qTvCVKjT7PHu2Fsg,41233
24
+ numba_cuda/numba/cuda/dispatcher.py,sha256=JuUr0-6xQtDkyaZv7CirWaU5_sSNX4BKCTDgQG5c1xc,41116
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
@@ -50,7 +50,7 @@ numba_cuda/numba/cuda/cudadrv/devices.py,sha256=6SneNmoq83gue0txFWWx4A65vViAa8xA
50
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=37zZmyrLvT-7R8wWtwKJkQhN8siLMxsDGiA3_NQ-yx8,23740
53
+ numba_cuda/numba/cuda/cudadrv/enums.py,sha256=Wy5dzukTk4TnWCowg_PLceET_v2xEyiWLu9TyH8pXr8,23742
54
54
  numba_cuda/numba/cuda/cudadrv/error.py,sha256=zEIryW6aIy8GG4ypmTliB6RgY4Gy2n8ckz7I6W99LUM,524
55
55
  numba_cuda/numba/cuda/cudadrv/libs.py,sha256=Gk9zQ1CKcsZsWl-_9QneXeP9VH5q5R1I3Cx043UOytk,7240
56
56
  numba_cuda/numba/cuda/cudadrv/linkable_code.py,sha256=Q_YTv0apBo9t8pkMlKrthPPSVeLd376ZTmVDF5NtVVo,1328
@@ -137,8 +137,8 @@ numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py,sha256=ZQuct24GEZn
137
137
  numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py,sha256=73FCQbNaAKpuybAwMOt4eW_dL_K6ZjrRgQw09ojkSbY,15844
138
138
  numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py,sha256=y7cNQZOZJo5Sv16ql3E5QaRksw-U3RkXss9YDcNeiTk,2137
139
139
  numba_cuda/numba/cuda/tests/cudapy/test_datetime.py,sha256=2in1Cq8y9zAFoka7H72wF1D0awEd3n7bv56sUPgoNAQ,3508
140
- numba_cuda/numba/cuda/tests/cudapy/test_debug.py,sha256=jwYD1xdWKVOv_axf_ztvsPKL62SKYthBYLX3s9ryz7s,3555
141
- numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py,sha256=jDPgxSe0G0nAib3wgbfrOg6uvnwmCcuB9GhrzXEvlc0,7875
140
+ numba_cuda/numba/cuda/tests/cudapy/test_debug.py,sha256=3MYNiMe75rgBF1T0vsJ7r-nkW5jPvov_tDms9KXo2UU,3449
141
+ numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py,sha256=8Tm1iD2x1BRryB1QY6qp6tdjJCE6Tx9p0LzcYwiExIU,7922
142
142
  numba_cuda/numba/cuda/tests/cudapy/test_device_func.py,sha256=aTRyZSOJB3sAShw0YAEgHILrR-TCuowW9KYjtlRErKM,6892
143
143
  numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py,sha256=oX-l_L4H8rME1IolwhAyordSGJ152nnuqGAFdWjfgas,26587
144
144
  numba_cuda/numba/cuda/tests/cudapy/test_enums.py,sha256=0GWiwvZ1FTzSl1FfMxttkWaWrowASfXrSDT8XAR4ZHw,3560
@@ -154,14 +154,14 @@ numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py,sha256=0NWfQqHmx7tFh6vdS7QtxT8
154
154
  numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py,sha256=Uhe8Q0u42jySrpwAZh8vCf4GMYkiy9NOMolyzEBuri0,5382
155
155
  numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py,sha256=luDtBxFS_5ZbVemXe1Z7gfqMliaU_EAOR4SuLsU5rhw,2677
156
156
  numba_cuda/numba/cuda/tests/cudapy/test_idiv.py,sha256=HLJ_f2lX8m_NNJjUbl_8zZ0-8GsBlRdBP2CUo_yWb0Y,1056
157
- numba_cuda/numba/cuda/tests/cudapy/test_inspect.py,sha256=lP9-8SbWFn2Xc-qmF6UNhcY6LreKTnveaK5CGW2pu8E,5196
157
+ numba_cuda/numba/cuda/tests/cudapy/test_inspect.py,sha256=hzK1Kk2c-aKCIL2QSodHpyxemOYaghgsMx7H1WvMHX8,4879
158
158
  numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py,sha256=M6-pad8nVM0fuL18uFxvE6tmHw0spLNhnMBLVlO0FKU,36400
159
159
  numba_cuda/numba/cuda/tests/cudapy/test_ipc.py,sha256=fggyy-kmsOkCb906_q3kXPGRziccWu7Co7ir83zBMwM,10536
160
160
  numba_cuda/numba/cuda/tests/cudapy/test_iterators.py,sha256=daQW3kSkp7icCmlTn9pCvnaauz60k_eBf4x1UQF-XVY,2344
161
161
  numba_cuda/numba/cuda/tests/cudapy/test_lang.py,sha256=U1BCVZMjU1AZ4wDSmjsRIPPcAReiq4dB77Cz7GmrdmA,1691
162
162
  numba_cuda/numba/cuda/tests/cudapy/test_laplace.py,sha256=yD--H5p_NrBHklFNCnxuQ0S8yUIBYScBkvn7hBlZ5ZM,3211
163
163
  numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py,sha256=4NsZBXweDPQpqfgo6T7eQHaWDVBof1CZDTpI1QTkV74,6545
164
- numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py,sha256=sKPF5l1cDTyA4UT0IO8Yeq6pYPGt9pIBQtrMAJMJHCM,6855
164
+ numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py,sha256=cimoEJqCWepvJPIqUumpLjQimg80je-WNul1MfT6KVY,6824
165
165
  numba_cuda/numba/cuda/tests/cudapy/test_localmem.py,sha256=uv9UYuytIXQgzHpPgEoWVVVq5-a7-6Io_mWMiNsZ45I,5376
166
166
  numba_cuda/numba/cuda/tests/cudapy/test_mandel.py,sha256=crVQBw46l4iyAv8_pu7v1eBy9ZJG7OkigB5zsyi6s3A,1085
167
167
  numba_cuda/numba/cuda/tests/cudapy/test_math.py,sha256=T-KRh9qzwOL3usl_6Cly3FVlvauzGhGnedfAG1hBQy8,27615
@@ -173,7 +173,7 @@ numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py,sha256=AjYbSa9nOlv_yc
173
173
  numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py,sha256=MfCbyJZu1XsCJOCSw6vvhs4eiP4LZPcF-e9huPmW-ys,2861
174
174
  numba_cuda/numba/cuda/tests/cudapy/test_nondet.py,sha256=mYMX0R1tmBLRe5ZAwiDVFFuSyMuPav5guuqL3WHWGPY,1378
175
175
  numba_cuda/numba/cuda/tests/cudapy/test_operator.py,sha256=0nJej4D898_JU-jhlif44fR2yu42keK4GoCLP810l3U,13295
176
- numba_cuda/numba/cuda/tests/cudapy/test_optimization.py,sha256=SvqRsSFgcGxkFDZS-kul5B-mi8GxINTS98uUzAy4dhw,2647
176
+ numba_cuda/numba/cuda/tests/cudapy/test_optimization.py,sha256=IRTI-b7hwMaJxtxFRzoTjpzzeqWGzNyCJPT6C4GugX4,2925
177
177
  numba_cuda/numba/cuda/tests/cudapy/test_overload.py,sha256=u4yUDVFcV9E3NWMlNjM81e3IW4KaIkcDtXig8JYevsw,8538
178
178
  numba_cuda/numba/cuda/tests/cudapy/test_powi.py,sha256=TI82rYRnkSnwv9VN6PMpBnr9JqMJ_F3HhH4cKY6O8tw,3276
179
179
  numba_cuda/numba/cuda/tests/cudapy/test_print.py,sha256=r2xmMNx80_ANi3uFB3CQt3AHAXG_JdhStY1S796hlK0,4466
@@ -187,7 +187,7 @@ numba_cuda/numba/cuda/tests/cudapy/test_serialize.py,sha256=alE5-lTwbjz3Tv6OvQPS
187
187
  numba_cuda/numba/cuda/tests/cudapy/test_slicing.py,sha256=bAh_sIk5V9_0_dOVGdzmyjwZkHMLjEbQuEI4e5zRMoU,903
188
188
  numba_cuda/numba/cuda/tests/cudapy/test_sm.py,sha256=kh1F0wwQ2_bd54Q4GUX99y2oiWHQwBpyC__ckk-jiTU,14575
189
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
190
+ numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py,sha256=pCU0B-yBavHLgyhlKYAs1SCG8BWim9dSvl2BjXkhgQ4,1868
191
191
  numba_cuda/numba/cuda/tests/cudapy/test_sync.py,sha256=Y851UqNkT80U9q_C05SQfvPRCY7jjRARHOMk6g0lU4Y,7837
192
192
  numba_cuda/numba/cuda/tests/cudapy/test_transpose.py,sha256=JAQX2EUHwlpKCfJDGspaldmsIRbHxnXpsNUrvRrnIEE,3134
193
193
  numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py,sha256=-ehvkxelr45aT8sUNL9Hq8cn2GU_K4GL1yWeX-rHqEM,9680
@@ -236,8 +236,8 @@ numba_cuda/numba/cuda/tests/test_binary_generation/Makefile,sha256=OFC_6irwscCNG
236
236
  numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py,sha256=V0raLZLGSiWbE_K-JluI0CnmNkXbhlMVj-TH7P1OV8E,5014
237
237
  numba_cuda/numba/cuda/tests/test_binary_generation/test_device_functions.cu,sha256=cUf-t6ZM9MK_x7X_aKwsrKW1LdR97XcpR-qnYr5faOE,453
238
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,,
239
+ numba_cuda-0.0.20.dist-info/LICENSE,sha256=eHeYE-XjASmwbxfsP5AImgfzRwZurZGqH1f6OFwJ4io,1326
240
+ numba_cuda-0.0.20.dist-info/METADATA,sha256=ObRlGZEdodWEKekrWciM8x9qa1VyfLUbFrIX8pWhyME,1497
241
+ numba_cuda-0.0.20.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
242
+ numba_cuda-0.0.20.dist-info/top_level.txt,sha256=C50SsH-8tXDmt7I0Y3nlJYhS5s6pqWflCPdobe9vx2M,11
243
+ numba_cuda-0.0.20.dist-info/RECORD,,