CUDA Python 1.0:稳定 API

来自 NVIDIA Developer · 期号 2026-08-25

摘要

NVIDIA 发布了 CUDA Python 1.0,一个稳定的 API,让 Python 开发者可以直接编写和启动 CUDA kernel,无需 C++ 封装或第三方库。它提供了对 CUDA 平台的完整访问,包括流、事件和设备管理,并采用 Python 风格的接口。这一版本标志着从过去的两条路(学 C++ 或用库)转向了一条原生的 Python GPU 编程路径。

深读

导读 CUDA Python 1.0 是 NVIDIA 为 Python 开发者提供的一条原生 GPU 编程路径,标志着 Python 成为与 C++ 平起平坐的 CUDA 平台一等公民。它通过 cuda.core 提供 Python 风格的运行时接口,cuda.compute 暴露 CCCL 并行算法,并承诺语义化版本管理。读完本文,你将理解这套架构如何终结 Python 生态中“要么学 C++、要么用别人库”的两难选择,以及它如何让 CuPy、PyTorch 等库在同一个底层上协作。 关键信息 - cuda.core 1.0.0 将设备、流、缓冲区等 CUDA 基本概念封装为 Python 对象,并支持绿色上下文(GPU SM 分区)、进程检查点和进程间共享(IPC)。 - cuda.compute 1.0.0 将 CCCL 的排序、扫描、规约等并行算法暴露为 Python 可调用的函数,支持用 Python lambda 自定义行为。 - cuda.bindings 13.3.0 提供对 CUDA C API 的 1:1 完整绑定,版本与 CUDA Toolkit 对齐。 - 语义化版本承诺:破坏性 API 变更仅在大版本中发生,弃用 API 会在小版本中提前声明并给出替代路径。 - PyTorch 的 CUDA wheels 已依赖 cuda.bindings,CuPy 在导入模块时获得更简单的构建和更小的体积。 逐节讲解 背景:Python 开发者过去的两条路 文章开篇点明历史困境:Python 开发者要用 GPU,要么学 CUDA C++ 写扩展并维护绑定,要么依赖 PyTorch、CuPy、RAPIDS 等上层库。后者是生态繁荣的原因,但一旦需要库未暴露的功能,就回到第一条路。此外,不同库各自实现 CUDA 绑定,导致在同一个数据上协作(如 CuPy 分配的内存让 cuDF 使用)需要复杂的交换协议和所有权管理。 CUDA Python 1.0 的组成与承诺 CUDA Python 1.0 不是一个单一版本号,而是一个里程碑,包含多个独立版本化的组件: - cuda.core 1.0.0:Python 风格的 CUDA 运行时接口。 - cuda.compute 1.0.0:CCCL 并行算法的 Python 调用入口。 - cuda.bindings 13.3.0:底层 1:1 绑定。 - cuda-pathfinder:定位环境中已安装的 CUDA 组件。 - nvmath-python 1.0:NVIDIA 数学库的 Python 版本。 核心变化是语义化版本承诺:破坏性变更仅在大版本、功能新增在小版本、bug 修复在补丁版本,弃用 API 会提前声明。这解决了开发者对 API 稳定性的顾虑。 从“多个绑定层”到“一个基础” 过去,每个…

读原文

本站只做摘要与索引,全部内容版权归原作者所有。