numba-cuda 0.21.1__cp313-cp313-win_amd64.whl → 0.24.0__cp313-cp313-win_amd64.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 (110) hide show
  1. numba_cuda/VERSION +1 -1
  2. numba_cuda/numba/cuda/__init__.py +4 -1
  3. numba_cuda/numba/cuda/_compat.py +47 -0
  4. numba_cuda/numba/cuda/api.py +4 -1
  5. numba_cuda/numba/cuda/cext/_dispatcher.cp313-win_amd64.pyd +0 -0
  6. numba_cuda/numba/cuda/cext/_dispatcher.cpp +8 -40
  7. numba_cuda/numba/cuda/cext/_hashtable.cpp +5 -0
  8. numba_cuda/numba/cuda/cext/_helperlib.cp313-win_amd64.pyd +0 -0
  9. numba_cuda/numba/cuda/cext/_pymodule.h +1 -1
  10. numba_cuda/numba/cuda/cext/_typeconv.cp313-win_amd64.pyd +0 -0
  11. numba_cuda/numba/cuda/cext/_typeof.cpp +56 -119
  12. numba_cuda/numba/cuda/cext/mviewbuf.c +7 -1
  13. numba_cuda/numba/cuda/cext/mviewbuf.cp313-win_amd64.pyd +0 -0
  14. numba_cuda/numba/cuda/cloudpickle/cloudpickle.py +4 -5
  15. numba_cuda/numba/cuda/codegen.py +46 -12
  16. numba_cuda/numba/cuda/compiler.py +15 -9
  17. numba_cuda/numba/cuda/core/analysis.py +29 -21
  18. numba_cuda/numba/cuda/core/annotations/pretty_annotate.py +1 -1
  19. numba_cuda/numba/cuda/core/annotations/type_annotations.py +4 -4
  20. numba_cuda/numba/cuda/core/base.py +12 -11
  21. numba_cuda/numba/cuda/core/bytecode.py +21 -13
  22. numba_cuda/numba/cuda/core/byteflow.py +336 -90
  23. numba_cuda/numba/cuda/core/compiler.py +3 -4
  24. numba_cuda/numba/cuda/core/compiler_machinery.py +3 -3
  25. numba_cuda/numba/cuda/core/config.py +5 -7
  26. numba_cuda/numba/cuda/core/consts.py +1 -1
  27. numba_cuda/numba/cuda/core/controlflow.py +17 -9
  28. numba_cuda/numba/cuda/core/cuda_errors.py +917 -0
  29. numba_cuda/numba/cuda/core/errors.py +4 -912
  30. numba_cuda/numba/cuda/core/inline_closurecall.py +82 -67
  31. numba_cuda/numba/cuda/core/interpreter.py +334 -160
  32. numba_cuda/numba/cuda/core/ir.py +191 -119
  33. numba_cuda/numba/cuda/core/ir_utils.py +149 -128
  34. numba_cuda/numba/cuda/core/postproc.py +8 -8
  35. numba_cuda/numba/cuda/core/pythonapi.py +3 -0
  36. numba_cuda/numba/cuda/core/rewrites/ir_print.py +6 -3
  37. numba_cuda/numba/cuda/core/rewrites/static_binop.py +1 -1
  38. numba_cuda/numba/cuda/core/rewrites/static_getitem.py +5 -5
  39. numba_cuda/numba/cuda/core/rewrites/static_raise.py +3 -3
  40. numba_cuda/numba/cuda/core/ssa.py +5 -5
  41. numba_cuda/numba/cuda/core/transforms.py +29 -16
  42. numba_cuda/numba/cuda/core/typed_passes.py +10 -10
  43. numba_cuda/numba/cuda/core/typeinfer.py +42 -27
  44. numba_cuda/numba/cuda/core/untyped_passes.py +82 -65
  45. numba_cuda/numba/cuda/cpython/unicode.py +2 -2
  46. numba_cuda/numba/cuda/cpython/unicode_support.py +1 -3
  47. numba_cuda/numba/cuda/cudadecl.py +0 -13
  48. numba_cuda/numba/cuda/cudadrv/devicearray.py +10 -9
  49. numba_cuda/numba/cuda/cudadrv/driver.py +142 -519
  50. numba_cuda/numba/cuda/cudadrv/dummyarray.py +4 -0
  51. numba_cuda/numba/cuda/cudadrv/nvrtc.py +87 -32
  52. numba_cuda/numba/cuda/cudaimpl.py +0 -12
  53. numba_cuda/numba/cuda/debuginfo.py +25 -0
  54. numba_cuda/numba/cuda/descriptor.py +1 -1
  55. numba_cuda/numba/cuda/device_init.py +4 -7
  56. numba_cuda/numba/cuda/deviceufunc.py +3 -6
  57. numba_cuda/numba/cuda/dispatcher.py +39 -49
  58. numba_cuda/numba/cuda/intrinsics.py +150 -1
  59. numba_cuda/numba/cuda/libdeviceimpl.py +1 -2
  60. numba_cuda/numba/cuda/lowering.py +36 -29
  61. numba_cuda/numba/cuda/memory_management/nrt.py +10 -14
  62. numba_cuda/numba/cuda/np/arrayobj.py +61 -9
  63. numba_cuda/numba/cuda/np/numpy_support.py +32 -9
  64. numba_cuda/numba/cuda/np/polynomial/polynomial_functions.py +4 -3
  65. numba_cuda/numba/cuda/printimpl.py +20 -0
  66. numba_cuda/numba/cuda/serialize.py +10 -0
  67. numba_cuda/numba/cuda/stubs.py +0 -11
  68. numba_cuda/numba/cuda/testing.py +4 -8
  69. numba_cuda/numba/cuda/tests/benchmarks/test_kernel_launch.py +21 -4
  70. numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +1 -2
  71. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +195 -51
  72. numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +6 -2
  73. numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +3 -1
  74. numba_cuda/numba/cuda/tests/cudadrv/test_events.py +1 -1
  75. numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +6 -7
  76. numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +11 -12
  77. numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +53 -23
  78. numba_cuda/numba/cuda/tests/cudapy/test_analysis.py +61 -9
  79. numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +6 -0
  80. numba_cuda/numba/cuda/tests/cudapy/test_caching.py +47 -0
  81. numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +22 -1
  82. numba_cuda/numba/cuda/tests/cudapy/test_complex.py +13 -0
  83. numba_cuda/numba/cuda/tests/cudapy/test_copy_propagate.py +1 -1
  84. numba_cuda/numba/cuda/tests/cudapy/test_debug.py +1 -1
  85. numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +94 -0
  86. numba_cuda/numba/cuda/tests/cudapy/test_device_array_capture.py +243 -0
  87. numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +3 -3
  88. numba_cuda/numba/cuda/tests/cudapy/test_extending.py +1 -1
  89. numba_cuda/numba/cuda/tests/cudapy/test_numba_interop.py +35 -0
  90. numba_cuda/numba/cuda/tests/cudapy/test_print.py +51 -0
  91. numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +37 -35
  92. numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +117 -1
  93. numba_cuda/numba/cuda/tests/doc_examples/test_globals.py +111 -0
  94. numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +61 -0
  95. numba_cuda/numba/cuda/tests/nrt/test_nrt.py +31 -0
  96. numba_cuda/numba/cuda/tests/support.py +11 -0
  97. numba_cuda/numba/cuda/types/cuda_functions.py +1 -1
  98. numba_cuda/numba/cuda/typing/asnumbatype.py +37 -2
  99. numba_cuda/numba/cuda/typing/context.py +3 -1
  100. numba_cuda/numba/cuda/typing/typeof.py +51 -2
  101. {numba_cuda-0.21.1.dist-info → numba_cuda-0.24.0.dist-info}/METADATA +4 -13
  102. {numba_cuda-0.21.1.dist-info → numba_cuda-0.24.0.dist-info}/RECORD +106 -105
  103. numba_cuda/numba/cuda/cext/_devicearray.cp313-win_amd64.pyd +0 -0
  104. numba_cuda/numba/cuda/cext/_devicearray.cpp +0 -159
  105. numba_cuda/numba/cuda/cext/_devicearray.h +0 -29
  106. numba_cuda/numba/cuda/intrinsic_wrapper.py +0 -41
  107. {numba_cuda-0.21.1.dist-info → numba_cuda-0.24.0.dist-info}/WHEEL +0 -0
  108. {numba_cuda-0.21.1.dist-info → numba_cuda-0.24.0.dist-info}/licenses/LICENSE +0 -0
  109. {numba_cuda-0.21.1.dist-info → numba_cuda-0.24.0.dist-info}/licenses/LICENSE.numba +0 -0
  110. {numba_cuda-0.21.1.dist-info → numba_cuda-0.24.0.dist-info}/top_level.txt +0 -0
@@ -23,10 +23,9 @@ class _CompileStatus(object):
23
23
  self.can_fallback = can_fallback
24
24
 
25
25
  def __repr__(self):
26
- vals = []
27
- for k in self.__slots__:
28
- vals.append("{k}={v}".format(k=k, v=getattr(self, k)))
29
- return ", ".join(vals)
26
+ return ", ".join(
27
+ "{k}={v}".format(k=k, v=getattr(self, k)) for k in self.__slots__
28
+ )
30
29
 
31
30
 
32
31
  class StateDict(dict):
@@ -386,7 +386,7 @@ class PassManager(object):
386
386
  self._runPass(idx, pass_inst, state)
387
387
  else:
388
388
  raise BaseException("Legacy pass in use")
389
- except _EarlyPipelineCompletion as e:
389
+ except _EarlyPipelineCompletion as e: # noqa: PERF203
390
390
  raise e
391
391
  except Exception as e:
392
392
  if not isinstance(e, errors.NumbaError):
@@ -468,14 +468,14 @@ class PassRegistry(object):
468
468
  return self._registry[clazz]
469
469
 
470
470
  def _does_pass_name_alias(self, check):
471
- for k, v in self._registry.items():
471
+ for v in self._registry.values():
472
472
  if v.pass_inst.name == check:
473
473
  return True
474
474
  return False
475
475
 
476
476
  def find_by_name(self, class_name):
477
477
  assert isinstance(class_name, str)
478
- for k, v in self._registry.items():
478
+ for v in self._registry.values():
479
479
  if v.pass_inst.name == class_name:
480
480
  return v
481
481
  else:
@@ -153,9 +153,11 @@ class _EnvReloader(object):
153
153
  new_environ["NUMBA_" + k.upper()] = v
154
154
 
155
155
  # clobber file based config with any locally defined env vars
156
- for name, value in os.environ.items():
157
- if name.startswith("NUMBA_"):
158
- new_environ[name] = value
156
+ new_environ.update(
157
+ (name, value)
158
+ for name, value in os.environ.items()
159
+ if name.startswith("NUMBA_")
160
+ )
159
161
  # We update the config variables if at least one NUMBA environment
160
162
  # variable was modified. This lets the user modify values
161
163
  # directly in the config module without having them when
@@ -494,10 +496,6 @@ class _EnvReloader(object):
494
496
  "NUMBA_CUDA_PER_THREAD_DEFAULT_STREAM", int, 0
495
497
  )
496
498
 
497
- CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY = _readenv(
498
- "NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY", int, 0
499
- )
500
-
501
499
  # Location of the CUDA include files
502
500
  if IS_WIN32:
503
501
  cuda_path = os.environ.get("CUDA_PATH")
@@ -68,7 +68,7 @@ class ConstantInference(object):
68
68
  try:
69
69
  const = defn.infer_constant()
70
70
  except ConstantInferenceError:
71
- if isinstance(defn, ir.Expr):
71
+ if isinstance(defn, ir.expr_types):
72
72
  return self._infer_expr(defn)
73
73
  self._fail(defn)
74
74
  return const
@@ -11,9 +11,16 @@ from numba.cuda.utils import PYVERSION
11
11
 
12
12
  # List of bytecodes creating a new block in the control flow graph
13
13
  # (in addition to explicit jump labels).
14
- NEW_BLOCKERS = frozenset(
15
- ["SETUP_LOOP", "FOR_ITER", "SETUP_WITH", "BEFORE_WITH"]
16
- )
14
+ if PYVERSION in ((3, 14),):
15
+ NEW_BLOCKERS = frozenset(
16
+ ["SETUP_LOOP", "FOR_ITER", "SETUP_WITH", "BEFORE_WITH", "LOAD_SPECIAL"]
17
+ )
18
+ elif PYVERSION in ((3, 10), (3, 11), (3, 12), (3, 13)):
19
+ NEW_BLOCKERS = frozenset(
20
+ ["SETUP_LOOP", "FOR_ITER", "SETUP_WITH", "BEFORE_WITH"]
21
+ )
22
+ else:
23
+ raise NotImplementedError(PYVERSION)
17
24
 
18
25
 
19
26
  class CFBlock(object):
@@ -400,8 +407,7 @@ class CFGraph(object):
400
407
  if node not in seen:
401
408
  yield node
402
409
  seen.add(node)
403
- for succ in self._succs[node]:
404
- stack.append(succ)
410
+ stack.extend(self._succs[node])
405
411
 
406
412
  def _eliminate_dead_blocks(self):
407
413
  """
@@ -440,9 +446,11 @@ class CFGraph(object):
440
446
  if node not in seen:
441
447
  seen.add(node)
442
448
  stack.append((post_order.append, node))
443
- for dest in succs[node]:
444
- if (node, dest) not in back_edges:
445
- stack.append((dfs_rec, dest))
449
+ stack.extend(
450
+ (dfs_rec, dest)
451
+ for dest in succs[node]
452
+ if (node, dest) not in back_edges
453
+ )
446
454
 
447
455
  stack = [(dfs_rec, self._entry_point)]
448
456
  while stack:
@@ -970,7 +978,7 @@ class ControlFlowAnalysis(object):
970
978
  self._curblock.terminating = True
971
979
  self._force_new_block = True
972
980
 
973
- if PYVERSION in ((3, 12), (3, 13)):
981
+ if PYVERSION in ((3, 12), (3, 13), (3, 14)):
974
982
 
975
983
  def op_RETURN_CONST(self, inst):
976
984
  self._curblock.terminating = True