CUDA Python is a collection of Python libraries and bindings that provide access to NVIDIA's CUDA platform and GPU-accelerated computing capabilities from Python.
The project addresses the need for Pythonic interfaces to CUDA's low-level C APIs and GPU programming models. It offers multiple layers of abstraction: cuda.bindings provides direct low-level Python bindings to CUDA C APIs, while cuda.core delivers higher-level Pythonic access to CUDA Runtime functionality. For kernel development, the project includes numba.cuda, a Python DSL that compiles a restricted subset of Python into CUDA kernels using the SIMT programming model, and cuda.tile, a newer DSL exposing the Tile programming model with NumPy-like syntax. The cuda.compute module provides access to highly efficient parallel algorithms like sort, scan, reduce, and transform callable from the host. Additional components include nvmath-python for CPU and GPU math libraries, nvshmem4py for high-performance PGAS programming, and profiling tools through Nsight Python and CUPTI Python.
Developers should choose this project when building GPU-accelerated Python applications that require direct access to CUDA capabilities. It suits projects ranging from simple GPU kernel launches to complex parallel algorithm implementations. The collection is particularly valuable for teams already invested in the Python ecosystem who want to avoid writing C or C++ code for GPU acceleration. The project is undergoing restructuring to improve existing components and introduce new functionality, though all previously available features remain accessible through cuda.bindings.
The project maintains active development across multiple specialized components, with distinct modules addressing different use cases from low-level bindings to high-level DSLs. Documentation is comprehensive, with dedicated guides for each component. The codebase includes both Cython implementations for performance-critical sections and Python code for higher-level abstractions. The project includes learning materials and tutorials through the Accelerated Computing Hub, indicating investment in developer education alongside the core libraries.