CUDA Bindings
=============
Numba supports two bindings to the CUDA Driver APIs: its own internal bindings
based on ctypes, and the official `NVIDIA CUDA Python bindings
`_. Functionality is equivalent between
the two bindings.
The internal bindings are used by default. If the NVIDIA bindings are installed,
then they can be used by setting the environment variable
``NUMBA_CUDA_USE_NVIDIA_BINDING`` to ``1`` prior to the import of Numba. Once
Numba has been imported, the selected binding cannot be changed.
Per-Thread Default Streams
--------------------------
Responsibility for handling Per-Thread Default Streams (PTDS) is delegated to
the NVIDIA bindings when they are in use. To use PTDS with the NVIDIA bindings,
set the environment variable ``CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM`` to
``1`` instead of Numba's environmnent variable
:envvar:`NUMBA_CUDA_PER_THREAD_DEFAULT_STREAM`.
.. seealso::
The `Default Stream section
`_
in the NVIDIA Bindings documentation.
Roadmap
-------
In Numba 0.56, the NVIDIA Bindings will be used by default, if they are
installed.
In future versions of Numba:
- The internal bindings will be deprecated.
- The internal bindings will be removed.
At present, no specific release is planned for the deprecation or removal of
the internal bindings.