numba-cuda 0.16.0__tar.gz → 0.17.0__tar.gz

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 (290) hide show
  1. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/PKG-INFO +2 -2
  2. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/README.md +1 -1
  3. numba_cuda-0.17.0/numba_cuda/VERSION +1 -0
  4. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cuda_paths.py +1 -1
  5. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/devices.py +4 -6
  6. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/driver.py +103 -49
  7. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/dispatcher.py +2 -3
  8. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/memory_management/nrt.py +1 -1
  9. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_context_stack.py +16 -5
  10. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_driver.py +5 -1
  11. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_emm_plugins.py +1 -1
  12. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_cuda_array_interface.py +1 -5
  13. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_stream_api.py +2 -5
  14. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda.egg-info/PKG-INFO +2 -2
  15. numba_cuda-0.16.0/numba_cuda/VERSION +0 -1
  16. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/LICENSE +0 -0
  17. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/__init__.py +0 -0
  18. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/_version.py +0 -0
  19. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/__init__.py +0 -0
  20. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/_internal/cuda_bf16.py +0 -0
  21. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/api.py +0 -0
  22. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/api_util.py +0 -0
  23. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/args.py +0 -0
  24. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/bf16.py +0 -0
  25. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cg.py +0 -0
  26. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/codegen.py +0 -0
  27. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/compiler.py +0 -0
  28. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cpp_function_wrappers.cu +0 -0
  29. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadecl.py +0 -0
  30. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/__init__.py +0 -0
  31. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/devicearray.py +0 -0
  32. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/drvapi.py +0 -0
  33. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/dummyarray.py +0 -0
  34. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/enums.py +0 -0
  35. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/error.py +0 -0
  36. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/libs.py +0 -0
  37. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/linkable_code.py +0 -0
  38. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/mappings.py +0 -0
  39. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/ndarray.py +0 -0
  40. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/nvrtc.py +0 -0
  41. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/nvvm.py +0 -0
  42. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/rtapi.py +0 -0
  43. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudadrv/runtime.py +0 -0
  44. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudaimpl.py +0 -0
  45. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/cudamath.py +0 -0
  46. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/debuginfo.py +0 -0
  47. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/decorators.py +0 -0
  48. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/descriptor.py +0 -0
  49. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/device_init.py +0 -0
  50. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/deviceufunc.py +0 -0
  51. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/errors.py +0 -0
  52. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/extending.py +0 -0
  53. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/flags.py +0 -0
  54. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/11/cuda_bf16.h +0 -0
  55. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/11/cuda_bf16.hpp +0 -0
  56. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/11/cuda_fp16.h +0 -0
  57. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/11/cuda_fp16.hpp +0 -0
  58. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/12/cuda_bf16.h +0 -0
  59. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/12/cuda_bf16.hpp +0 -0
  60. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/12/cuda_fp16.h +0 -0
  61. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/include/12/cuda_fp16.hpp +0 -0
  62. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/initialize.py +0 -0
  63. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/intrinsic_wrapper.py +0 -0
  64. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/intrinsics.py +0 -0
  65. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/kernels/__init__.py +0 -0
  66. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/kernels/reduction.py +0 -0
  67. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/kernels/transpose.py +0 -0
  68. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/libdevice.py +0 -0
  69. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/libdevicedecl.py +0 -0
  70. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/libdevicefuncs.py +0 -0
  71. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/libdeviceimpl.py +0 -0
  72. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/locks.py +0 -0
  73. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/lowering.py +0 -0
  74. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/mathimpl.py +0 -0
  75. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/memory_management/__init__.py +0 -0
  76. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/memory_management/memsys.cu +0 -0
  77. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/memory_management/memsys.cuh +0 -0
  78. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/memory_management/nrt.cu +0 -0
  79. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/memory_management/nrt.cuh +0 -0
  80. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/models.py +0 -0
  81. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/nvvmutils.py +0 -0
  82. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/printimpl.py +0 -0
  83. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/random.py +0 -0
  84. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/reshape_funcs.cu +0 -0
  85. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/__init__.py +0 -0
  86. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/_internal/__init__.py +0 -0
  87. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/_internal/cuda_bf16.py +0 -0
  88. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/api.py +0 -0
  89. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/bf16.py +0 -0
  90. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/compiler.py +0 -0
  91. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/__init__.py +0 -0
  92. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/devicearray.py +0 -0
  93. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/devices.py +0 -0
  94. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/driver.py +0 -0
  95. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/drvapi.py +0 -0
  96. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/dummyarray.py +0 -0
  97. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/error.py +0 -0
  98. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/libs.py +0 -0
  99. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/linkable_code.py +0 -0
  100. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/nvrtc.py +0 -0
  101. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/nvvm.py +0 -0
  102. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/cudadrv/runtime.py +0 -0
  103. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/kernel.py +0 -0
  104. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/kernelapi.py +0 -0
  105. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/memory_management/__init__.py +0 -0
  106. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/memory_management/nrt.py +0 -0
  107. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/reduction.py +0 -0
  108. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator/vector_types.py +0 -0
  109. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/simulator_init.py +0 -0
  110. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/stubs.py +0 -0
  111. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/target.py +0 -0
  112. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/testing.py +0 -0
  113. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/__init__.py +0 -0
  114. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/__init__.py +0 -0
  115. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_array_attr.py +0 -0
  116. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_array_slicing.py +0 -0
  117. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_auto_context.py +0 -0
  118. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_devicerecord.py +0 -0
  119. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_libraries.py +0 -0
  120. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_memory.py +0 -0
  121. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_cuda_ndarray.py +0 -0
  122. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_deallocations.py +0 -0
  123. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_detect.py +0 -0
  124. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_events.py +0 -0
  125. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_host_alloc.py +0 -0
  126. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_init.py +0 -0
  127. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_inline_ptx.py +0 -0
  128. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_is_fp16.py +0 -0
  129. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_linker.py +0 -0
  130. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_managed_alloc.py +0 -0
  131. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_module_callbacks.py +0 -0
  132. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_mvc.py +0 -0
  133. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_nvjitlink.py +0 -0
  134. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_nvrtc.py +0 -0
  135. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_nvvm_driver.py +0 -0
  136. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_pinned.py +0 -0
  137. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_profiler.py +0 -0
  138. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_ptds.py +0 -0
  139. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_reset_device.py +0 -0
  140. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_runtime.py +0 -0
  141. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_select_device.py +0 -0
  142. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudadrv/test_streams.py +0 -0
  143. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/__init__.py +0 -0
  144. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/cache_usecases.py +0 -0
  145. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/cache_with_cpu_usecases.py +0 -0
  146. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/cg_cache_usecases.py +0 -0
  147. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/extensions_usecases.py +0 -0
  148. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/jitlink.ptx +0 -0
  149. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/recursion_usecases.py +0 -0
  150. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_alignment.py +0 -0
  151. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_array.py +0 -0
  152. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_array_alignment.py +0 -0
  153. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_array_args.py +0 -0
  154. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_array_methods.py +0 -0
  155. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_atomics.py +0 -0
  156. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_bfloat16.py +0 -0
  157. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_bfloat16_bindings.py +0 -0
  158. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_blackscholes.py +0 -0
  159. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_boolean.py +0 -0
  160. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_caching.py +0 -0
  161. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_casting.py +0 -0
  162. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_cffi.py +0 -0
  163. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_compiler.py +0 -0
  164. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_complex.py +0 -0
  165. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_complex_kernel.py +0 -0
  166. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_const_string.py +0 -0
  167. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_constmem.py +0 -0
  168. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_cooperative_groups.py +0 -0
  169. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_cuda_jit_no_types.py +0 -0
  170. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_datetime.py +0 -0
  171. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_debug.py +0 -0
  172. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_debuginfo.py +0 -0
  173. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_device_func.py +0 -0
  174. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_dispatcher.py +0 -0
  175. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_enums.py +0 -0
  176. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_errors.py +0 -0
  177. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_exception.py +0 -0
  178. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_extending.py +0 -0
  179. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_fastmath.py +0 -0
  180. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_forall.py +0 -0
  181. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_freevar.py +0 -0
  182. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_frexp_ldexp.py +0 -0
  183. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_globals.py +0 -0
  184. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_gufunc.py +0 -0
  185. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scalar.py +0 -0
  186. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_gufunc_scheduling.py +0 -0
  187. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_idiv.py +0 -0
  188. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_inline.py +0 -0
  189. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_inspect.py +0 -0
  190. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_intrinsics.py +0 -0
  191. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_ipc.py +0 -0
  192. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_iterators.py +0 -0
  193. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_lang.py +0 -0
  194. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_laplace.py +0 -0
  195. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_libdevice.py +0 -0
  196. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_lineinfo.py +0 -0
  197. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_localmem.py +0 -0
  198. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_mandel.py +0 -0
  199. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_math.py +0 -0
  200. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_matmul.py +0 -0
  201. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_minmax.py +0 -0
  202. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_montecarlo.py +0 -0
  203. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_multigpu.py +0 -0
  204. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_multiprocessing.py +0 -0
  205. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_multithreads.py +0 -0
  206. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_nondet.py +0 -0
  207. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_operator.py +0 -0
  208. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_optimization.py +0 -0
  209. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_overload.py +0 -0
  210. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_powi.py +0 -0
  211. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_print.py +0 -0
  212. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_py2_div_issue.py +0 -0
  213. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_random.py +0 -0
  214. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_record_dtype.py +0 -0
  215. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_recursion.py +0 -0
  216. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_reduction.py +0 -0
  217. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_retrieve_autoconverted_arrays.py +0 -0
  218. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_serialize.py +0 -0
  219. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_slicing.py +0 -0
  220. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_sm.py +0 -0
  221. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_sm_creation.py +0 -0
  222. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_sync.py +0 -0
  223. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_transpose.py +0 -0
  224. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_ufuncs.py +0 -0
  225. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_userexc.py +0 -0
  226. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_vector_type.py +0 -0
  227. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_vectorize.py +0 -0
  228. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_vectorize_complex.py +0 -0
  229. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_vectorize_decor.py +0 -0
  230. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_vectorize_device.py +0 -0
  231. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_vectorize_scalar_arg.py +0 -0
  232. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_warning.py +0 -0
  233. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudapy/test_warp_ops.py +0 -0
  234. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudasim/__init__.py +0 -0
  235. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudasim/support.py +0 -0
  236. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/cudasim/test_cudasim_issues.py +0 -0
  237. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/__init__.py +0 -0
  238. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/cta_barrier.cu +0 -0
  239. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/cuda_include.cu +0 -0
  240. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/error.cu +0 -0
  241. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/include/add.cuh +0 -0
  242. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/jitlink.cu +0 -0
  243. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/jitlink.ptx +0 -0
  244. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/data/warn.cu +0 -0
  245. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/__init__.py +0 -0
  246. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/ffi/__init__.py +0 -0
  247. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/ffi/functions.cu +0 -0
  248. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/ffi/include/mul.cuh +0 -0
  249. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/ffi/saxpy.cu +0 -0
  250. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_cg.py +0 -0
  251. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_cpointer.py +0 -0
  252. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.py +0 -0
  253. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_ffi.py +0 -0
  254. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_laplace.py +0 -0
  255. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_matmul.py +0 -0
  256. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_montecarlo.py +0 -0
  257. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_random.py +0 -0
  258. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_reduction.py +0 -0
  259. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_sessionize.py +0 -0
  260. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_ufunc.py +0 -0
  261. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/doc_examples/test_vecadd.py +0 -0
  262. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nocuda/__init__.py +0 -0
  263. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nocuda/test_dummyarray.py +0 -0
  264. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nocuda/test_function_resolution.py +0 -0
  265. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nocuda/test_import.py +0 -0
  266. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nocuda/test_library_lookup.py +0 -0
  267. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nocuda/test_nvvm.py +0 -0
  268. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nrt/__init__.py +0 -0
  269. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nrt/test_nrt.py +0 -0
  270. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/nrt/test_nrt_refct.py +0 -0
  271. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/support.py +0 -0
  272. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/test_binary_generation/Makefile +0 -0
  273. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/test_binary_generation/generate_raw_ltoir.py +0 -0
  274. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/test_binary_generation/nrt_extern.cu +0 -0
  275. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/test_binary_generation/test_device_functions.cu +0 -0
  276. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/tests/test_binary_generation/undefined_extern.cu +0 -0
  277. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/types.py +0 -0
  278. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/ufuncs.py +0 -0
  279. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/utils.py +0 -0
  280. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/vector_types.py +0 -0
  281. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda/numba/cuda/vectorizers.py +0 -0
  282. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda.egg-info/SOURCES.txt +0 -0
  283. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda.egg-info/dependency_links.txt +0 -0
  284. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda.egg-info/requires.txt +0 -0
  285. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/numba_cuda.egg-info/top_level.txt +0 -0
  286. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/pyproject.toml +0 -0
  287. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/setup.cfg +0 -0
  288. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/setup.py +0 -0
  289. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/site-packages/_numba_cuda_redirector.pth +0 -0
  290. {numba_cuda-0.16.0 → numba_cuda-0.17.0}/site-packages/_numba_cuda_redirector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numba-cuda
3
- Version: 0.16.0
3
+ Version: 0.17.0
4
4
  Summary: CUDA target for Numba
5
5
  Author: Anaconda Inc., NVIDIA Corporation
6
6
  License: BSD 2-clause
@@ -75,7 +75,7 @@ If you want to manage all run-time dependencies yourself, also pass the `--no-de
75
75
  python -m numba.runtests numba.cuda.tests
76
76
  ```
77
77
 
78
- This should discover the`numba.cuda` module from the `numba_cuda` package. You
78
+ This should discover the `numba.cuda` module from the `numba_cuda` package. You
79
79
  can check where `numba.cuda` files are being located by running
80
80
 
81
81
  ```
@@ -33,7 +33,7 @@ If you want to manage all run-time dependencies yourself, also pass the `--no-de
33
33
  python -m numba.runtests numba.cuda.tests
34
34
  ```
35
35
 
36
- This should discover the`numba.cuda` module from the `numba_cuda` package. You
36
+ This should discover the `numba.cuda` module from the `numba_cuda` package. You
37
37
  can check where `numba.cuda` files are being located by running
38
38
 
39
39
  ```
@@ -0,0 +1 @@
1
+ 0.17.0
@@ -100,7 +100,7 @@ def _get_nvrtc_system_ctk():
100
100
  def _get_nvrtc_path_decision():
101
101
  options = _build_options(
102
102
  [
103
- ("CUDA_HOME", lambda: get_cuda_home("nvrtc")),
103
+ ("CUDA_HOME", lambda: get_cuda_home(_cudalib_path())),
104
104
  ("Conda environment", get_conda_ctk),
105
105
  ("Conda environment (NVIDIA package)", get_nvidia_cudalib_ctk),
106
106
  ("NVIDIA NVCC Wheel", _get_nvrtc_wheel),
@@ -40,6 +40,8 @@ class _DeviceList(object):
40
40
  """
41
41
  Returns the context manager for device *devnum*.
42
42
  """
43
+ if not isinstance(devnum, (int, slice)) and USE_NV_BINDING:
44
+ devnum = int(devnum)
43
45
  return self.lst[devnum]
44
46
 
45
47
  def __str__(self):
@@ -159,12 +161,8 @@ class _Runtime(object):
159
161
  # Get primary context for the active device
160
162
  ctx = self.gpus[ac.devnum].get_primary_context()
161
163
  # Is active context the primary context?
162
- if USE_NV_BINDING:
163
- ctx_handle = int(ctx.handle)
164
- ac_ctx_handle = int(ac.context_handle)
165
- else:
166
- ctx_handle = ctx.handle.value
167
- ac_ctx_handle = ac.context_handle.value
164
+ ctx_handle = ctx.handle.value
165
+ ac_ctx_handle = ac.context_handle.value
168
166
  if ctx_handle != ac_ctx_handle:
169
167
  msg = (
170
168
  "Numba cannot operate on non-primary"
@@ -490,11 +490,11 @@ class Driver(object):
490
490
  with self.get_active_context() as ac:
491
491
  if ac.devnum is not None:
492
492
  if USE_NV_BINDING:
493
- return driver.cuCtxPopCurrent()
493
+ popped = drvapi.cu_context(int(driver.cuCtxPopCurrent()))
494
494
  else:
495
495
  popped = drvapi.cu_context()
496
496
  driver.cuCtxPopCurrent(byref(popped))
497
- return popped
497
+ return popped
498
498
 
499
499
  def get_active_context(self):
500
500
  """Returns an instance of ``_ActiveContext``."""
@@ -538,6 +538,8 @@ class _ActiveContext(object):
538
538
  hctx = driver.cuCtxGetCurrent()
539
539
  if int(hctx) == 0:
540
540
  hctx = None
541
+ else:
542
+ hctx = drvapi.cu_context(int(hctx))
541
543
  else:
542
544
  hctx = drvapi.cu_context(0)
543
545
  driver.cuCtxGetCurrent(byref(hctx))
@@ -716,6 +718,7 @@ class Device(object):
716
718
  # create primary context
717
719
  if USE_NV_BINDING:
718
720
  hctx = driver.cuDevicePrimaryCtxRetain(self.id)
721
+ hctx = drvapi.cu_context(int(hctx))
719
722
  else:
720
723
  hctx = drvapi.cu_context()
721
724
  driver.cuDevicePrimaryCtxRetain(byref(hctx), self.id)
@@ -1254,6 +1257,7 @@ class _PendingDeallocs(object):
1254
1257
  [dtor, handle, size] = self._cons.popleft()
1255
1258
  _logger.info("dealloc: %s %s bytes", dtor.__name__, size)
1256
1259
  dtor(handle)
1260
+
1257
1261
  self._size = 0
1258
1262
 
1259
1263
  @contextlib.contextmanager
@@ -1430,7 +1434,10 @@ class Context(object):
1430
1434
  """
1431
1435
  Pushes this context on the current CPU Thread.
1432
1436
  """
1433
- driver.cuCtxPushCurrent(self.handle)
1437
+ if USE_NV_BINDING:
1438
+ driver.cuCtxPushCurrent(self.handle.value)
1439
+ else:
1440
+ driver.cuCtxPushCurrent(self.handle)
1434
1441
  self.prepare_for_use()
1435
1442
 
1436
1443
  def pop(self):
@@ -1439,10 +1446,7 @@ class Context(object):
1439
1446
  must be at the top of the context stack, otherwise an error will occur.
1440
1447
  """
1441
1448
  popped = driver.pop_active_context()
1442
- if USE_NV_BINDING:
1443
- assert int(popped) == int(self.handle)
1444
- else:
1445
- assert popped.value == self.handle.value
1449
+ assert popped.value == self.handle.value
1446
1450
 
1447
1451
  def memalloc(self, bytesize):
1448
1452
  return self.memory_manager.memalloc(bytesize)
@@ -1535,21 +1539,25 @@ class Context(object):
1535
1539
 
1536
1540
  def get_default_stream(self):
1537
1541
  if USE_NV_BINDING:
1538
- handle = binding.CUstream(CU_STREAM_DEFAULT)
1542
+ handle = drvapi.cu_stream(int(binding.CUstream(CU_STREAM_DEFAULT)))
1539
1543
  else:
1540
1544
  handle = drvapi.cu_stream(drvapi.CU_STREAM_DEFAULT)
1541
1545
  return Stream(weakref.proxy(self), handle, None)
1542
1546
 
1543
1547
  def get_legacy_default_stream(self):
1544
1548
  if USE_NV_BINDING:
1545
- handle = binding.CUstream(binding.CU_STREAM_LEGACY)
1549
+ handle = drvapi.cu_stream(
1550
+ int(binding.CUstream(binding.CU_STREAM_LEGACY))
1551
+ )
1546
1552
  else:
1547
1553
  handle = drvapi.cu_stream(drvapi.CU_STREAM_LEGACY)
1548
1554
  return Stream(weakref.proxy(self), handle, None)
1549
1555
 
1550
1556
  def get_per_thread_default_stream(self):
1551
1557
  if USE_NV_BINDING:
1552
- handle = binding.CUstream(binding.CU_STREAM_PER_THREAD)
1558
+ handle = drvapi.cu_stream(
1559
+ int(binding.CUstream(binding.CU_STREAM_PER_THREAD))
1560
+ )
1553
1561
  else:
1554
1562
  handle = drvapi.cu_stream(drvapi.CU_STREAM_PER_THREAD)
1555
1563
  return Stream(weakref.proxy(self), handle, None)
@@ -1561,7 +1569,7 @@ class Context(object):
1561
1569
  # default stream, which we define also as CU_STREAM_DEFAULT when
1562
1570
  # the NV binding is in use).
1563
1571
  flags = binding.CUstream_flags.CU_STREAM_DEFAULT.value
1564
- handle = driver.cuStreamCreate(flags)
1572
+ handle = drvapi.cu_stream(int(driver.cuStreamCreate(flags)))
1565
1573
  else:
1566
1574
  handle = drvapi.cu_stream()
1567
1575
  driver.cuStreamCreate(byref(handle), 0)
@@ -1575,7 +1583,7 @@ class Context(object):
1575
1583
  if not isinstance(ptr, int):
1576
1584
  raise TypeError("ptr for external stream must be an int")
1577
1585
  if USE_NV_BINDING:
1578
- handle = binding.CUstream(ptr)
1586
+ handle = drvapi.cu_stream(int(binding.CUstream(ptr)))
1579
1587
  else:
1580
1588
  handle = drvapi.cu_stream(ptr)
1581
1589
  return Stream(weakref.proxy(self), handle, None, external=True)
@@ -1585,7 +1593,7 @@ class Context(object):
1585
1593
  if not timing:
1586
1594
  flags |= enums.CU_EVENT_DISABLE_TIMING
1587
1595
  if USE_NV_BINDING:
1588
- handle = driver.cuEventCreate(flags)
1596
+ handle = drvapi.cu_event(int(driver.cuEventCreate(flags)))
1589
1597
  else:
1590
1598
  handle = drvapi.cu_event()
1591
1599
  driver.cuEventCreate(byref(handle), flags)
@@ -1776,14 +1784,14 @@ def _pin_finalizer(memory_manager, ptr, alloc_key, mapped):
1776
1784
 
1777
1785
  def _event_finalizer(deallocs, handle):
1778
1786
  def core():
1779
- deallocs.add_item(driver.cuEventDestroy, handle)
1787
+ deallocs.add_item(driver.cuEventDestroy, handle.value)
1780
1788
 
1781
1789
  return core
1782
1790
 
1783
1791
 
1784
1792
  def _stream_finalizer(deallocs, handle):
1785
1793
  def core():
1786
- deallocs.add_item(driver.cuStreamDestroy, handle)
1794
+ deallocs.add_item(driver.cuStreamDestroy, handle.value)
1787
1795
 
1788
1796
  return core
1789
1797
 
@@ -2054,6 +2062,9 @@ class MemoryPointer(object):
2054
2062
  __cuda_memory__ = True
2055
2063
 
2056
2064
  def __init__(self, context, pointer, size, owner=None, finalizer=None):
2065
+ if USE_NV_BINDING and isinstance(pointer, ctypes.c_void_p):
2066
+ pointer = binding.CUdeviceptr(pointer.value)
2067
+
2057
2068
  self.context = context
2058
2069
  self.device_pointer = pointer
2059
2070
  self.size = size
@@ -2086,9 +2097,11 @@ class MemoryPointer(object):
2086
2097
  def memset(self, byte, count=None, stream=0):
2087
2098
  count = self.size if count is None else count
2088
2099
  if stream:
2089
- driver.cuMemsetD8Async(
2090
- self.device_pointer, byte, count, stream.handle
2091
- )
2100
+ if USE_NV_BINDING:
2101
+ handle = stream.handle.value
2102
+ else:
2103
+ handle = stream.handle
2104
+ driver.cuMemsetD8Async(self.device_pointer, byte, count, handle)
2092
2105
  else:
2093
2106
  driver.cuMemsetD8(self.device_pointer, byte, count)
2094
2107
 
@@ -2326,27 +2339,16 @@ class Stream(object):
2326
2339
  weakref.finalize(self, finalizer)
2327
2340
 
2328
2341
  def __int__(self):
2329
- if USE_NV_BINDING:
2330
- return int(self.handle)
2331
- else:
2332
- # The default stream's handle.value is 0, which gives `None`
2333
- return self.handle.value or drvapi.CU_STREAM_DEFAULT
2342
+ # The default stream's handle.value is 0, which gives `None`
2343
+ return self.handle.value or drvapi.CU_STREAM_DEFAULT
2334
2344
 
2335
2345
  def __repr__(self):
2336
- if USE_NV_BINDING:
2337
- default_streams = {
2338
- CU_STREAM_DEFAULT: "<Default CUDA stream on %s>",
2339
- binding.CU_STREAM_LEGACY: "<Legacy default CUDA stream on %s>",
2340
- binding.CU_STREAM_PER_THREAD: "<Per-thread default CUDA stream on %s>",
2341
- }
2342
- ptr = int(self.handle) or 0
2343
- else:
2344
- default_streams = {
2345
- drvapi.CU_STREAM_DEFAULT: "<Default CUDA stream on %s>",
2346
- drvapi.CU_STREAM_LEGACY: "<Legacy default CUDA stream on %s>",
2347
- drvapi.CU_STREAM_PER_THREAD: "<Per-thread default CUDA stream on %s>",
2348
- }
2349
- ptr = self.handle.value or drvapi.CU_STREAM_DEFAULT
2346
+ default_streams = {
2347
+ drvapi.CU_STREAM_DEFAULT: "<Default CUDA stream on %s>",
2348
+ drvapi.CU_STREAM_LEGACY: "<Legacy default CUDA stream on %s>",
2349
+ drvapi.CU_STREAM_PER_THREAD: "<Per-thread default CUDA stream on %s>",
2350
+ }
2351
+ ptr = self.handle.value or drvapi.CU_STREAM_DEFAULT
2350
2352
 
2351
2353
  if ptr in default_streams:
2352
2354
  return default_streams[ptr] % self.context
@@ -2360,7 +2362,11 @@ class Stream(object):
2360
2362
  Wait for all commands in this stream to execute. This will commit any
2361
2363
  pending memory transfers.
2362
2364
  """
2363
- driver.cuStreamSynchronize(self.handle)
2365
+ if USE_NV_BINDING:
2366
+ handle = self.handle.value
2367
+ else:
2368
+ handle = self.handle
2369
+ driver.cuStreamSynchronize(handle)
2364
2370
 
2365
2371
  @contextlib.contextmanager
2366
2372
  def auto_synchronize(self):
@@ -2385,6 +2391,16 @@ class Stream(object):
2385
2391
  callback will block later work in the stream and may block other
2386
2392
  callbacks from being executed.
2387
2393
 
2394
+ .. warning::
2395
+ There is a potential for deadlock due to a lock ordering issue
2396
+ between the GIL and the CUDA driver lock when using libraries
2397
+ that call CUDA functions without releasing the GIL. This can
2398
+ occur when the callback function, which holds the CUDA driver lock,
2399
+ attempts to acquire the GIL while another thread that holds the GIL
2400
+ is waiting for the CUDA driver lock. Consider using libraries that
2401
+ properly release the GIL around CUDA operations or restructure
2402
+ your code to avoid this situation.
2403
+
2388
2404
  Note: The driver function underlying this method is marked for
2389
2405
  eventual deprecation and may be replaced in a future CUDA release.
2390
2406
 
@@ -2398,9 +2414,11 @@ class Stream(object):
2398
2414
  stream_callback = binding.CUstreamCallback(ptr)
2399
2415
  # The callback needs to receive a pointer to the data PyObject
2400
2416
  data = id(data)
2417
+ handle = self.handle.value
2401
2418
  else:
2402
2419
  stream_callback = self._stream_callback
2403
- driver.cuStreamAddCallback(self.handle, stream_callback, data, 0)
2420
+ handle = self.handle
2421
+ driver.cuStreamAddCallback(handle, stream_callback, data, 0)
2404
2422
 
2405
2423
  @staticmethod
2406
2424
  @cu_stream_callback_pyobj
@@ -2417,6 +2435,16 @@ class Stream(object):
2417
2435
  """
2418
2436
  Return an awaitable that resolves once all preceding stream operations
2419
2437
  are complete. The result of the awaitable is the current stream.
2438
+
2439
+ .. warning::
2440
+ There is a potential for deadlock due to a lock ordering issue
2441
+ between the GIL and the CUDA driver lock when using libraries
2442
+ that call CUDA functions without releasing the GIL. This can
2443
+ occur when the callback function (internally used by this method),
2444
+ which holds the CUDA driver lock, attempts to acquire the GIL
2445
+ while another thread that holds the GIL is waiting for the CUDA driver lock.
2446
+ Consider using libraries that properly release the GIL around
2447
+ CUDA operations or restructure your code to avoid this situation.
2420
2448
  """
2421
2449
  loop = asyncio.get_running_loop()
2422
2450
  future = loop.create_future()
@@ -2468,27 +2496,35 @@ class Event(object):
2468
2496
  completed.
2469
2497
  """
2470
2498
  if USE_NV_BINDING:
2471
- hstream = stream.handle if stream else binding.CUstream(0)
2499
+ hstream = stream.handle.value if stream else binding.CUstream(0)
2500
+ handle = self.handle.value
2472
2501
  else:
2473
2502
  hstream = stream.handle if stream else 0
2474
- driver.cuEventRecord(self.handle, hstream)
2503
+ handle = self.handle
2504
+ driver.cuEventRecord(handle, hstream)
2475
2505
 
2476
2506
  def synchronize(self):
2477
2507
  """
2478
2508
  Synchronize the host thread for the completion of the event.
2479
2509
  """
2480
- driver.cuEventSynchronize(self.handle)
2510
+ if USE_NV_BINDING:
2511
+ handle = self.handle.value
2512
+ else:
2513
+ handle = self.handle
2514
+ driver.cuEventSynchronize(handle)
2481
2515
 
2482
2516
  def wait(self, stream=0):
2483
2517
  """
2484
2518
  All future works submitted to stream will wait util the event completes.
2485
2519
  """
2486
2520
  if USE_NV_BINDING:
2487
- hstream = stream.handle if stream else binding.CUstream(0)
2521
+ hstream = stream.handle.value if stream else binding.CUstream(0)
2522
+ handle = self.handle.value
2488
2523
  else:
2489
2524
  hstream = stream.handle if stream else 0
2525
+ handle = self.handle
2490
2526
  flags = 0
2491
- driver.cuStreamWaitEvent(hstream, self.handle, flags)
2527
+ driver.cuStreamWaitEvent(hstream, handle, flags)
2492
2528
 
2493
2529
  def elapsed_time(self, evtend):
2494
2530
  return event_elapsed_time(self, evtend)
@@ -2499,7 +2535,9 @@ def event_elapsed_time(evtstart, evtend):
2499
2535
  Compute the elapsed time between two events in milliseconds.
2500
2536
  """
2501
2537
  if USE_NV_BINDING:
2502
- return driver.cuEventElapsedTime(evtstart.handle, evtend.handle)
2538
+ return driver.cuEventElapsedTime(
2539
+ evtstart.handle.value, evtend.handle.value
2540
+ )
2503
2541
  else:
2504
2542
  msec = c_float()
2505
2543
  driver.cuEventElapsedTime(byref(msec), evtstart.handle, evtend.handle)
@@ -3477,7 +3515,11 @@ def host_to_device(dst, src, size, stream=0):
3477
3515
  if stream:
3478
3516
  assert isinstance(stream, Stream)
3479
3517
  fn = driver.cuMemcpyHtoDAsync
3480
- varargs.append(stream.handle)
3518
+ if USE_NV_BINDING:
3519
+ handle = stream.handle.value
3520
+ else:
3521
+ handle = stream.handle
3522
+ varargs.append(handle)
3481
3523
  else:
3482
3524
  fn = driver.cuMemcpyHtoD
3483
3525
 
@@ -3495,7 +3537,11 @@ def device_to_host(dst, src, size, stream=0):
3495
3537
  if stream:
3496
3538
  assert isinstance(stream, Stream)
3497
3539
  fn = driver.cuMemcpyDtoHAsync
3498
- varargs.append(stream.handle)
3540
+ if USE_NV_BINDING:
3541
+ handle = stream.handle.value
3542
+ else:
3543
+ handle = stream.handle
3544
+ varargs.append(handle)
3499
3545
  else:
3500
3546
  fn = driver.cuMemcpyDtoH
3501
3547
 
@@ -3513,7 +3559,11 @@ def device_to_device(dst, src, size, stream=0):
3513
3559
  if stream:
3514
3560
  assert isinstance(stream, Stream)
3515
3561
  fn = driver.cuMemcpyDtoDAsync
3516
- varargs.append(stream.handle)
3562
+ if USE_NV_BINDING:
3563
+ handle = stream.handle.value
3564
+ else:
3565
+ handle = stream.handle
3566
+ varargs.append(handle)
3517
3567
  else:
3518
3568
  fn = driver.cuMemcpyDtoD
3519
3569
 
@@ -3534,7 +3584,11 @@ def device_memset(dst, val, size, stream=0):
3534
3584
  if stream:
3535
3585
  assert isinstance(stream, Stream)
3536
3586
  fn = driver.cuMemsetD8Async
3537
- varargs.append(stream.handle)
3587
+ if USE_NV_BINDING:
3588
+ handle = stream.handle.value
3589
+ else:
3590
+ handle = stream.handle
3591
+ varargs.append(handle)
3538
3592
  else:
3539
3593
  fn = driver.cuMemsetD8
3540
3594
 
@@ -458,11 +458,10 @@ class _Kernel(serialize.ReduceMixin):
458
458
  self._prepare_args(t, v, stream, retr, kernelargs)
459
459
 
460
460
  if driver.USE_NV_BINDING:
461
- zero_stream = driver.binding.CUstream(0)
461
+ stream_handle = stream and stream.handle.value or 0
462
462
  else:
463
463
  zero_stream = None
464
-
465
- stream_handle = stream and stream.handle or zero_stream
464
+ stream_handle = stream and stream.handle or zero_stream
466
465
 
467
466
  # Invoke kernel
468
467
  driver.launch_kernel(
@@ -143,7 +143,7 @@ class _Runtime:
143
143
  1,
144
144
  1,
145
145
  0,
146
- stream.handle,
146
+ stream.handle.value,
147
147
  params,
148
148
  cooperative=False,
149
149
  )
@@ -25,6 +25,19 @@ class TestContextStack(CUDATestCase):
25
25
  gpulist = list(cuda.gpus)
26
26
  self.assertGreater(len(gpulist), 0)
27
27
 
28
+ def test_gpus_cudevice_indexing(self):
29
+ """Test that CUdevice objects can be used to index into cuda.gpus"""
30
+ # When using the CUDA Python bindings, the device ids are CUdevice
31
+ # objects, otherwise they are integers. We test that the device id is
32
+ # usable as an index into cuda.gpus.
33
+ device_ids = [device.id for device in cuda.list_devices()]
34
+ for device_id in device_ids:
35
+ with cuda.gpus[device_id]:
36
+ # Check that the device is an integer if not using the CUDA
37
+ # Python bindings, otherwise it's a CUdevice object
38
+ assert isinstance(device_id, int) != driver.USE_NV_BINDING
39
+ self.assertEqual(cuda.gpus.current.id, device_id)
40
+
28
41
 
29
42
  class TestContextAPI(CUDATestCase):
30
43
  def tearDown(self):
@@ -82,7 +95,8 @@ class Test3rdPartyContext(CUDATestCase):
82
95
  the_driver = driver.driver
83
96
  if driver.USE_NV_BINDING:
84
97
  dev = driver.binding.CUdevice(0)
85
- hctx = the_driver.cuDevicePrimaryCtxRetain(dev)
98
+ binding_hctx = the_driver.cuDevicePrimaryCtxRetain(dev)
99
+ hctx = driver.drvapi.cu_context(int(binding_hctx))
86
100
  else:
87
101
  dev = 0
88
102
  hctx = driver.drvapi.cu_context()
@@ -93,10 +107,7 @@ class Test3rdPartyContext(CUDATestCase):
93
107
  # Check that the context from numba matches the created primary
94
108
  # context.
95
109
  my_ctx = cuda.current_context()
96
- if driver.USE_NV_BINDING:
97
- self.assertEqual(int(my_ctx.handle), int(ctx.handle))
98
- else:
99
- self.assertEqual(my_ctx.handle.value, ctx.handle.value)
110
+ self.assertEqual(my_ctx.handle.value, ctx.handle.value)
100
111
 
101
112
  extra_work()
102
113
  finally:
@@ -129,6 +129,10 @@ class TestCudaDriver(CUDATestCase):
129
129
 
130
130
  ptr = memory.device_ctypes_pointer
131
131
 
132
+ stream_handle = stream.handle
133
+ if _driver.USE_NV_BINDING:
134
+ stream_handle = stream_handle.value
135
+
132
136
  launch_kernel(
133
137
  function.handle, # Kernel
134
138
  1,
@@ -138,7 +142,7 @@ class TestCudaDriver(CUDATestCase):
138
142
  1,
139
143
  1, # bx, by, bz
140
144
  0, # dynamic shared mem
141
- stream.handle, # stream
145
+ stream_handle, # stream
142
146
  [ptr],
143
147
  ) # arguments
144
148
 
@@ -84,7 +84,7 @@ if not config.ENABLE_CUDASIM:
84
84
  # the tests don't try to do too much with it (e.g. open / close
85
85
  # it).
86
86
  self.get_ipc_handle_called = True
87
- return "Dummy IPC handle for alloc %s" % memory.device_pointer.value
87
+ return "Dummy IPC handle for alloc %s" % memory.device_pointer_value
88
88
 
89
89
  @property
90
90
  def interface_version(self):
@@ -2,7 +2,6 @@ import numpy as np
2
2
 
3
3
  from numba import vectorize, guvectorize
4
4
  from numba import cuda
5
- from numba.cuda.cudadrv import driver
6
5
  from numba.cuda.testing import unittest, ContextResettingTestCase, ForeignArray
7
6
  from numba.cuda.testing import skip_on_cudasim, skip_if_external_memmgr
8
7
  from numba.tests.support import linux_only, override_config
@@ -32,10 +31,7 @@ class TestCudaArrayInterface(ContextResettingTestCase):
32
31
  self.assertPointersEqual(wrapped, d_arr)
33
32
 
34
33
  def get_stream_value(self, stream):
35
- if driver.USE_NV_BINDING:
36
- return int(stream.handle)
37
- else:
38
- return stream.handle.value
34
+ return stream.handle.value
39
35
 
40
36
  @skip_if_external_memmgr("Ownership not relevant with external memmgr")
41
37
  def test_ownership(self):
@@ -4,7 +4,7 @@ from numba.cuda.testing import (
4
4
  unittest,
5
5
  CUDATestCase,
6
6
  )
7
- from numba import config, cuda
7
+ from numba import cuda
8
8
 
9
9
  # Basic tests that stream APIs execute on the hardware and in the simulator.
10
10
  #
@@ -38,10 +38,7 @@ class TestStreamAPI(CUDATestCase):
38
38
  # We don't test synchronization on the stream because it's not a real
39
39
  # stream - we used a dummy pointer for testing the API, so we just
40
40
  # ensure that the stream handle matches the external stream pointer.
41
- if config.CUDA_USE_NVIDIA_BINDING:
42
- value = int(s.handle)
43
- else:
44
- value = s.handle.value
41
+ value = s.handle.value
45
42
  self.assertEqual(ptr, value)
46
43
 
47
44
  @skip_unless_cudasim("External streams are usable with hardware")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numba-cuda
3
- Version: 0.16.0
3
+ Version: 0.17.0
4
4
  Summary: CUDA target for Numba
5
5
  Author: Anaconda Inc., NVIDIA Corporation
6
6
  License: BSD 2-clause
@@ -75,7 +75,7 @@ If you want to manage all run-time dependencies yourself, also pass the `--no-de
75
75
  python -m numba.runtests numba.cuda.tests
76
76
  ```
77
77
 
78
- This should discover the`numba.cuda` module from the `numba_cuda` package. You
78
+ This should discover the `numba.cuda` module from the `numba_cuda` package. You
79
79
  can check where `numba.cuda` files are being located by running
80
80
 
81
81
  ```
@@ -1 +0,0 @@
1
- 0.16.0
File without changes