NVIDIA/cuda-python
CUDA Python: Performance meets Productivity
解决的问题
它提供了一种从 Python 访问 NVIDIA CUDA 平台的统一方式,消除了开发人员编写低层 C 代码来管理 GPU 资源和执行并行算法的需求。其目标是通过允许完全在 Python 中进行端到端的 GPU 编程,降低 CUDA 开发的学习曲线并提高开发人员的生产力。
工作原理
该项目结构为一个包含多个专业子包的元包:
- cuda.core: 提供对 CUDA Driver、Runtime 和 JIT 编译器工具链的惯用、Pythonic 访问。
- cuda.bindings: 提供对 CUDA C API(包括 Driver、Runtime、NVRTC 和 NVML)的低层 Python 绑定。
- cuda.compute: 提供可以从主机调用的并行算法(如 sort、scan 和 reduce)的访问。
- cuda.tile: 一种用于直接在 CUDA 内核中编写类 NumPy 代码的领域特定语言 (DSL)。
- numba-cuda-mlir 和 numba.cuda: 用于在 Python 中进行 JIT 编译和开发 SIMT 内核的工具。
- nvmath-python: 提供对 NVIDIA CPU 和 GPU 数学库的访问。
- nvshmem4py: 用于高性能分区全局地址空间 (PGAS) 编程的接口。
- 分析工具: 包括用于性能分析和内核分析的 Nsight Python 和 CUPTI Python。
适用对象
想要使用 Python 利用 NVIDIA GPU 进行加速计算的开发人员,从需要高层惯用抽象的开发人员到需要对 CUDA C API 进行低层控制的开发人员。
亮点
- 全面的生态系统: 涵盖了从低层绑定到用于编写内核的高层 DSL 的所有内容。
- Pythonic 接口: 减轻了维护自定义 CUDA 抽象的负担。
- 全 API 覆盖: 通过
cuda.bindings提供对 CUDA 主机 API 的完整访问。 - 集成分析: 包括通过 Nsight 和 CUPTI 进行性能分析的内置接口。
相关
- 项目
- Dispatch
- 项目
- 项目
- 项目