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-mlirnumba.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
  • 项目
  • 项目
  • 项目