Recent works in cuda.core/cuda.bindings have reached to a point where we can replace most, if not all, numba-cuda internal wrappers to driver, nvvm, linker, … by cuda.core. It has been the plan to make cuda.core a required (not just optional) dependency of numba-cuda (and cuda.bindings would become a transitive dependency). There are multiple benefits, such as
- separation of concerns:
numba-cuda focuses on the compiler stack and leave CUDA’s Python exposure to CUDA Python
- support CUDA wheels out of box (so issue 65 and issue 66 do not need any effort on the numba-cuda side)
- better performance (since cuda-bindings is based on Cython instead of ctypes)
- support Windows (which pynvjitlink does not, as of today)
- coverage of latest CUDA features
- …
This RFC is created to track necessary efforts:
Recent works in
cuda.core/cuda.bindingshave reached to a point where we can replace most, if not all,numba-cudainternal wrappers to driver, nvvm, linker, … by cuda.core. It has been the plan to makecuda.corea required (not just optional) dependency ofnumba-cuda(andcuda.bindingswould become a transitive dependency). There are multiple benefits, such asnumba-cudafocuses on the compiler stack and leave CUDA’s Python exposure to CUDA PythonThis RFC is created to track necessary efforts:
cuda.core.Bufferrecognized by numba-cuda #152cuda.core.utils.StridedMemoryViewrecognized by numba-cuda #153pathfinderusable as a full replacement forcuda_paths.pyinnumba-cudacuda-python#1036Linker-related classes bycuda.core.(experimental).Linker#129cuda.core.(experimental).Linkerrapidsai/pynvjitlink#130Programcuda-python#452cuda.core.Streamrecognized by numba-cuda by supporting the__cuda_stream__protocol #151CUDA_USE_NVIDIA_BINDINGand always usecuda.core(and fallback tocuda.bindings) #154cuda_paths.pyentirely #302