cuda-python
CUDA Python 是从 Python 访问 NVIDIA CUDA 平台的入口。它由多个组件组成:
-
cuda.core: 以 Pythonic 方式访问 CUDA Runtime 及其他核心功能
-
cuda.bindings: 针对 CUDA C API 的低层 Python 绑定
-
cuda.pathfinder: 用于定位用户 Python 环境中已安装的 CUDA 组件的工具
-
cuda.compute: 一个 Python 模块,便于访问 CCCL 高效且可定制的并行算法,例如可在 host 上调用的
sort、scan、reduce、transform等 -
numba-cuda-mlir: Numba CUDA 的演进版本,通过改进其技术基础和性能,提供 CUDA Python JIT 编译的未来方向。它目前支持在 Python 中开发 CUDA SIMT 内核,为加速设备库提供 Python 绑定,并作为加速库中用户定义函数的编译器。
-
numba.cuda: 一种 Python DSL,暴露 CUDA SIMT 编程模型,并将受限的 Python 代码子集编译为 CUDA 内核和设备函数
-
cuda.tile: 一种新的 Python DSL,暴露 CUDA Tile 编程模型,允许用户在 CUDA 内核中编写类似 NumPy 的代码
-
nvmath-python: 以 Pythonic 方式访问 NVIDIA CPU 和 GPU 数学库,提供 host、device 和 distributed API。它还提供了针对 host C API 的低层 Python 绑定(nvmath.bindings)。
-
nvshmem4py: NVSHMEM 库的 Pythonic 接口,使 Python 应用程序能够利用 NVSHMEM 的高性能 PGAS(Partitioned Global Address Space)编程模型进行 GPU 加速计算
-
Nsight Python: Python 内核性能分析接口,使用 NVIDIA Nsight Tools 自动化多个内核配置的性能分析
-
CUPTI Python: 用于创建针对 CUDA Python 应用程序的性能分析工具的 Python API,通过 CUDA Profiling Tools Interface (CUPTI) 实现
-
Accelerated Computing Hub: 与 GPU 计算相关的开源学习材料。您可以免费找到用户指南、教程以及其他作品,供所有对 GPU 计算感兴趣的学习者使用。
CUDA Python 目前正在进行全面改造,以改进现有组件并引入新组件。此前 cuda-python 包中可用的所有功能将继续保留,请参阅 cuda.bindings 文档以获取安装指南和更多详细信息。
cuda-python 作为元包
cuda-python 正在重构为一个包含一系列子包的元包。每个子包独立进行版本管理,允许按需安装各个组件。
子包:cuda.core
cuda.core 包提供了符合 Python 习惯的、地道的 Python 风格访问 CUDA Runtime 及其他功能的方式。
其目标包括:
- 为 CUDA Driver、Runtime 和 JIT 编译器工具链提供**地道的(“Pythonic”)**访问方式
- 通过确保端到端的 CUDA 开发能够快速且完全在 Python 中完成,专注于提升开发者生产力
- 对于从零开始的新 Python GPU 库,避免自研针对 CUDA 的 Python 抽象层
- 减轻开发者维护和跟进最新 CUDA 功能的负担
- 为当前及未来的 CUDA 开发者降低学习曲线
子包:cuda.bindings
cuda.bindings 包是一套标准的低级接口,提供对 CUDA 主机 API 的全面覆盖和从 Python 进行的访问。
可用接口列表如下:
- CUDA Driver
- CUDA Runtime
- NVRTC
- nvJitLink
- NVVM
- nvFatbin
- cuFile
- NVML
许可证
CUDA Python 采用 Apache License 2.0 授权。cuda.core 的第三方归属信息列于 cuda_core/NOTICE。