cuda.bindings is a standard set of low-level interfaces, providing full coverage of and access to the CUDA host APIs from Python. Checkout the Overview page for the workflow and performance results.
Please refer to the Installation page for instructions and required/optional dependencies.
This subpackage adheres to the developing practices described in the parent metapackage CONTRIBUTING.md.
Testing dependencies can be installed using the [test] optional dependency identifier. For example, pip install -v -e .[test].
Multiple testing options are available:
- Python Unit Tests
- Cython Unit Tests
- Samples
- Benchmark
Responsible for validating different binding usage patterns. Unit test test_kernelParams.py is particularly special since it demonstrates various approaches in setting up kernel launch parameters.
To run these tests:
python -m pytest tests/against editable installationspytest tests/against installed packages
Cython tests are located in tests/cython and need to be built. These builds have the same CUDA Toolkit header requirements as Installing from Source where the major.minor version must match cuda.bindings. To build them:
- Setup environment variable
CUDA_PATH(orCUDA_HOME) with the path to the CUDA Toolkit installation. Note: If both are set,CUDA_PATHtakes precedence. - Run
build_testsscript located intest/cythonappropriate to your platform. This will both cythonize the tests and build them.
To run these tests:
python -m pytest tests/cython/against editable installationspytest tests/cython/against installed packages
Various CUDA Samples that were rewritten using CUDA Python are located in examples.
In addition, extra examples are included:
examples/extra/jit_program_test.py: Demonstrates the use of the API to compile and launch a kernel on the device. Includes device memory allocation / deallocation, transfers between host and device, creation and usage of streams, and context management.examples/extra/numba_emm_plugin.py: Implements a Numba External Memory Management plugin, showing that this CUDA Python Driver API can coexist with other wrappers of the driver API.
To run these samples:
python -m pytest tests/cython/against editable installationspytest tests/cython/against installed packages
Allows for analyzing binding performance using plugin pytest-benchmark.
To run these benchmarks:
python -m pytest --benchmark-only benchmarks/against editable installationspytest --benchmark-only benchmarks/against installed packages