中文内容
CUDA 13.2 带来重大更新:NVIDIA CUDA Tile 现已支持计算能力 8.X 架构的设备(NVIDIA Ampere 与 NVIDIA Ada),以及 10.X、11.X 和 12.X 架构(NVIDIA Blackwell)。在即将发布的 CUDA Toolkit 版本中,从 Ampere 起的所有 GPU 架构都将获得全面支持。如果您正在使用 Ampere、Ada 或 Blackwell GPU 架构,请查阅 cuTile Python Quickstart 指南,快速上手 CUDA Tile。
本文详细解读了 CUDA 13.2 版本,该版本通过多项新增的 Python 功能提升了开发效率,包括在 CUDA Python 中进行性能剖析以及调试 Numba 内核。数学库进一步扩展了对高性能模拟库的支持,CUDA Core Compute Libraries (CCCL) 亦持续进行性能与功能优化,为 C++ 开发者提供了面向 GPU 编程的高性能现代化接口。
正文:cuTile Python
cuTile Python 是 CUDA Tile 编程模型的 Python 领域特定语言(DSL)表达形式,现发布多项功能增强。其中包括对以下内容的增强语言支持:
- 递归函数
- 带捕获的闭包(嵌套函数、lambda 函数)
- 自定义归约和扫描函数
- 允许带类型注解的赋值
- 增强对 Array.slice 的支持,以创建子数组视图
我们还提供了便捷的安装路径。以下 pip install 命令将安装 cuTile Python 并拉取所有必需的依赖项,无需在系统中单独进行全局安装 CUDA Toolkit。
pip install cuda-tile[tileiras]
核心增强功能
本节详细介绍了 CUDA 13.2 中的核心增强功能。
带属性的 memcpy
CUDA 的先前版本(12.8)引入了批量 memcpy API。这些 API 允许您通过单次函数调用指定批量内存复制操作。您还可以指定属性,以更好地控制和优化内存传输。
这些 API 使您能够更好地控制内存传输。然而,如果您只有单次传输且也想使用属性功能,则需要调用批量 API 并将批处理大小设为 1。这显得有些繁琐。
为简化此用例,新增了两个 API 函数:cudaMemcpyWithAttributesAsync 和 cudaMemcpy3DWithAttributesAsync。这些函数使您能够在内存调用中使用属性,而无需使用更为复杂的批处理接口。
为简化编程,如果您已在数据传输中使用 cudaMemcpyAsync 且希望使用属性,可继续沿用 cudaMemcpyAsync。该函数已重载,其参数列表与 cudaMemcpyWithAttributesAsync 相同。
Windows 中每个上下文的局部内存占用降低。
GPU 上的本地内存(LMEM)按线程分配,用于寄存器溢出、栈变量等用途。自 CUDA 13.2 和 CUDA Driver R595 起,在 Windows 的 WDDM 驱动模式下运行时,LMEM 的使用量已大幅降低。此项变更的效果主要在内存受限的 vGPU 环境中体现。
查询内存池属性
CUDA 提供了利用内存池进行高效内存管理的功能。CUDA 13.2 引入了新的 API,支持通过内存池句柄查询内存池属性。通过调用 cudaMemPoolGetAttribute 并传入相应的标志参数,即可获取这些属性。
此新功能的一个应用场景是创建与已创建内存池类型相同的内存池。例如,在使用 CUDA Graphs 时,API cudaGraphAddMemAllocNode 接受池属性作为参数。您可以使用当前内存池的属性来创建具有相同属性的新内存池。
Windows 计算驱动程序默认采用 MCDM 而非 TCC
在 Microsoft Windows 系统上,自 CUDA 驱动程序版本 R595 起,在兼容的系统上,原先默认以 TCC 启动的 GPU 现改为默认以 MCDM 启动。此项更改旨在解决部分系统上的兼容性问题,此前因与操作系统/系统功能存在不兼容,用户开机时 TCC GPU 常会显示黄色感叹号。对于依赖 TCC 的用户,该模式目前仍可使用,可通过执行 nvidia-smi -dm 1 -g <GPU ID> 命令来启用。
今后,我们计划逐步并最终永久过渡至 MCDM,因为它带来了以往仅限 WDDM 模式下 GPU 使用的功能:
- WSL2:MCDM GPU 将在 WSL2 中显示,并可在 WSL 中运行 CUDA
- 容器:支持原生容器(及 WSL 容器)
- 高级内存管理 API:现已支持 cuMemCreate、cudaMallocAsync 及其所有相关 API。
- 支持通过 CUDA Toolkit 13.1 中发布的 WDDM RDMA 相同接口进行 RDMA。
- 内存超额分配与 Trim 通知。
由于 MCDM 存在部分额外开销,我们注意到当前的提交延迟略高于 TCC。我们正积极进行优化,力求使 WDDM 与 MCDM 的延迟表现与 TCC 及 Linux 原生驱动持平,以确保 WDDM/MCDM 能够成为适用于 Windows 平台所有 GPU 的可靠且面向未来的驱动模型。
正文:CUDA_DISABLE_PERF_BOOST
CUDA Toolkit 13.2 及 580 及以上版本的 CUDA 驱动程序新增了一个环境变量 CUDA_DISABLE_PERF_BOOST。该变量可用于禁用在运行 CUDA 应用程序时将 GPU 提升至更高电源状态的默认行为。将此环境变量设置为 1 即可禁用性能提升功能。在使用 NVENC/NVDEC 等功能时,禁用性能提升可能会带来功耗上的节省。
用于获取图节点参数的 CUDA Graphs 多态函数
CUDA Graphs 使您能够将 GPU 操作(如内核启动和内存拷贝)的工作流作为单个单元进行创建,而非一系列独立的命令。CUDA 13.2 新增了一个多态 API 函数 cudaGraphNodeGetParams,用于获取图节点的参数。该函数是现有同类多态函数(如 cudaGraphNodeSetParams、cudaGraphAddNode 和 cudaGraphExecNodeSetParams)的配套函数。
编译器
CUDA 13.2 带来了新的编译器更新,包括对 Visual Studio 2026 等新宿主编译器的支持、gcc 的 ARM C Language Extension 支持,以及面向 Tegra 和桌面级 GPU 的单一统一工具包,从而降低了容器和库的开销。
嵌入式设备
此前,在 CUDA 13.0(及 NVIDIA JetPack 7.0)中引入了面向 Arm 的统一 CUDA,通过统一服务器级和嵌入式设备(如 NVIDIA Jetson Thor)的 CUDA Toolkit,简化了 Arm 平台的开发流程。
从 CUDA 13.2 开始(以及即将推出的 JetPack 7.2——敬请期待),同一套 Arm SBSA CUDA Toolkit 可用于所有 Arm 目标平台。此版本还在相同的 CUDA SBSA 工具包上支持 NVIDIA Jetson Orin 设备。对开发者而言,这意味着减少了 CI 流水线中的重复工作,简化了容器管理,并消除了以往因在不同 SDK 之间切换而引发的细微错误和不一致问题。
CUDA 13.2 和 JetPack 7.2 引入了 NVIDIA Multi-Instance GPU (MIG) 支持,允许将集成在 Jetson Thor 中的 GPU 划分为两个完全隔离的实例,每个实例均拥有专用的内存、缓存和计算资源。该功能对于混合关键性应用(如人形机器人)尤为有价值。在这些场景中,开发者可以将安全关键型工作负载(例如电机控制系统和安全系统)与非关键型处理任务隔离开来。
如果没有 MIG,运行在同一 GPU 上的安全关键型与非关键型工作负载(如低延迟电机控制与计算量较大的感知或语言模型)将争夺共享资源。具有高内存带宽需求的突发任务可能会抢占安全关键型内核的资源,导致系统出现抖动,并使控制与安全系统无法满足延迟截止时间要求。
借助 MIG,关键型与非关键型工作负载将在独立的 GPU 实例上运行,每个实例均配备专用的计算、内存和带宽。这种隔离为控制与关键型任务提供了可预测的延迟和服务质量,同时通过在另一实例上并发运行更繁重的感知或语言工作负载,保持 GPU 的高利用率。
数学库
CUDA 13.2 引入了针对数学库的改进,其中包括 NVIDIA cuBLAS 和 NVIDIA cuSOLVER。
正文:NVIDIA cuBLAS
一项支持分组 GEMM 的新型实验性 API 现已为 NVIDIA Blackwell GPU 提供 MXFP8 支持。此前(在 CUDA 13.1 中)已包含对 FP8 和 BF16/FP16 的 Blackwell GPU 支持。针对上述数据类型,结合 CUDA Graphs 支持的分组 GEMM 提供了无需主机同步、在设备端确定形状的实现方案,在混合专家(MoE)应用场景中,相较于多流 GEMM 实现,速度提升最高可达 4 倍。
正文:NVIDIA cuSOLVER
已推出用于FP64模拟计算的cuSOLVERD API。这使得INT8与FP64吞吐量比值较高的平台能够实现显著的性能提升,尤其是在计算密集型工作负载中。模拟的优势在QR、LU和Cholesky分解的关键API中最为明显。如需了解更多关于NVIDIA模拟技术的最新进展,请参阅《Unlocking Tensor Core Performance with Floating Point Emulation in cuBLAS》。
图1展示了在NVIDIA B200系统上运行FP64模拟版GDEQRF、DGETRF和DPOTRF的结果。性能优势随矩阵尺寸的增加而提升,当矩阵规模接近80K时,作为这三种操作中计算最密集的一项,QR操作的性能提升最高可达2倍。

开发工具
本节将详细介绍本版本新增的开发工具。
正文:NVIDIA Nsight Python
NVIDIA Nsight Python 是一款全新的内核性能分析接口,它将 NVIDIA 性能分析工具的强大功能直接带给 Python 开发者。通过此版本,您可以直接从 Python 无缝分析通过 Python 框架启动的 CUDA 内核,并支持多种配置。
只需使用几个装饰器,用户即可自动完成配置、性能分析并绘制内核性能对比图。Nsight Python 还提供对常见 Python 数据结构中性能数据的访问,以便进行高级分析。请从 PyPI 下载 Nsight Python。您也可以为 NVIDIA/nsight-python GitHub 仓库贡献代码,或访问 NVIDIA Developer Forum 提交任何疑问或反馈。
@nsight.analyze.plot("02_paramater_sweep.png")
@nsight.analyze.kernel(configs=sizes, runs=10)
def benchmark_matmul_sizes(n: int) -> None:
"""
Benchmark matrix multiplication across different sizes.
The 'n' parameter comes from the configs list.
"""
a = torch.randn(n, n, device="cuda")
b = torch.randn(n, n, device="cuda")
with nsight.annotate("matmul"):
_ = a @ b
Numba-CUDA 调试
首次支持使用 CUDA-GDB 命令行调试和 NVIDIA Nsight Visual Studio Code Edition 调试在 GPU 上运行的 Numba-CUDA 内核。用户可以像使用主机和原生 CUDA 调试器一样设置断点、逐语句执行并检查程序状态。该初始支持的功能集有限,团队正在积极寻求反馈以进行改进。欲了解更多信息,请查阅 Numba-CUDA 调试文档,并在 Developer Forum 上寻求帮助或提供反馈。
NVIDIA Nsight Tools 更新
NVIDIA Nsight Compute 2026.1 新增报告聚类与合并工具,可通过 File > Merge Reports 菜单访问。该功能有助于用户理解来自重复实验、独立性能分析会话或生成多份报告的多进程应用程序的数据。

“源”页面上新增的寄存器依赖关系关联窗口可帮助用户识别源代码行依赖关系,从而快速定位瓶颈。CUDA Graphs 查看器工具窗口已大幅改进,可在交互式性能分析模式下显示图的构建与分析过程,并将收集到的结果与图节点进行可视化关联。Nsight Compute 已集成于 CUDA Toolkit 中,同时也提供独立下载版本。
NVIDIA Nsight Cloud 包含针对 Kubernetes 的 Nsight Operator 更新,并附带 Nsight Streamer 的 Kubernetes 与 Docker 容器,用于在集群内访问和查看 Nsight 工具报告。
NVIDIA Nsight Copilot 是一款 AI 驱动的免费 CUDA 编程辅助工具,现已面向所有拥有 NVIDIA 开发者账号的用户开放。
NVIDIA Nsight Systems 2026.1 包含:
- PyTorch 性能分析改进,用于显示前向与反向扩展模块的形状及训练参数
- Python 采样功能对 Python 3.14 的支持
- 新增用于捕获 GPUDirect Storage DMA 操作指标的选项
正文:CCCL
CUDA 13.2 随附 CCCL 3.2 版本。亮点包括全新的现代化 CUDA C++ 运行时 API 以及新型优化算法,包括 Top-K。
现代化 CUDA C++ 运行时
CCCL 3.2 广泛引入了用于核心 CUDA 运行时和驱动程序功能的新型惯用 C++ 接口。
如果您编写过 CUDA C++,很可能已经围绕当今类似 C 语言的 API(例如 cudaMalloc 或 cudaStreamCreate)构建(或采用)了某种形式的便捷封装。
CCCL 3.2 新增的 API 旨在为核心 CUDA 组件提供 C++ 在生产力与安全性方面的优势,使您无需再重复编写封装代码,从而将更多时间投入到内核与算法的开发中。
亮点包括:
- 为核心 CUDA 概念(cuda::stream、cuda::event、cuda::arch_traits)引入全新便捷的词汇类型
- 借助内存资源(Memory Resources)与 cuda::buffer 简化内存管理
- 借助 cuda::launch 实现更强大且便捷的内核启动
示例(向量加法,更新版):
cuda::device_ref device = cuda::devices[0];
cuda::stream stream{device};
auto pool = cuda::device_default_memory_pool(device);
int num_elements = 1000;
auto A = cuda::make_buffer<float>(stream, pool, num_elements, 1.0);
auto B = cuda::make_buffer<float>(stream, pool, num_elements, 2.0);
auto C = cuda::make_buffer<float>(stream, pool, num_elements, cuda::no_init);
constexpr int threads_per_block = 256;
auto config = cuda::distribute<threads_per_block>(num_elements);
auto kernel = [] __device__ (auto config, cuda::std::span<const float> A,
cuda::std::span<const float> B,
cuda::std::span<float> C){
auto tid = cuda::gpu_thread.rank(cuda::grid, config);
if (tid < A.size())
C[tid] = A[tid] + B[tid];
};
cuda::launch(stream, config, kernel, config, A, B, C);
可在 Compiler Explorer 上在线运行此示例。
敬请期待后续内容,我们将深入探讨设计目标与预期使用模式,以及这些新 API 如何与现有 CUDA API 协同配合。
新增算法
本节详细介绍了 CUDA 13.2 新增的算法。
Top-K 选择
CCCL 3.2 引入了 cub::DeviceTopK(例如 cub::DeviceTopK::MaxKeys),用于在不排序整个输入的情况下选出最大(或最小)的 K 个元素。对于 K 值较小的工作负载,与完整基数排序相比,该功能最高可实现 5 倍的加速;当无需排序结果时,还能降低内存消耗。
Top-K 是 CCCL 当前持续开发的活跃领域。开发路线图中已规划了分段(segmented)Top-K,以及块级(block-scope)和线程束级(warp-scope)的 Top-K 变体。如需了解详细规划并分享您最关注的 Top-K 使用场景,请参阅 NVIDIA/cccl GitHub Issue #5673。

固定大小分段归约
CCCL 3.2 现提供一个新的 cub::DeviceSegmentedReduce 变体,该变体接受统一的 segment_size。在分段大小固定的常见情况下,这消除了偏移迭代器的开销,从而实现了对较小分段(最高提速 66 倍)和较大分段(最高提速 14 倍)的优化。
// New API accepts fixed segment_size instead of per-segment begin/end offsets
cub::DeviceSegmentedReduce::Sum(d_temp, temp_bytes, input, output,
num_segments, segment_size);
如图 4 所示,与现有为每个分段分别指定起始和结束偏移量的实现相比,新的固定大小变体在较小和较大分段上均实现了显著提速。

正文:CUDA Python
CuPy 现已支持 CUDA 13.0 和 13.1,且 PyPI 中已提供适用于 CUDA 12 和 CUDA 13 的 wheel 包。这意味着无需安装系统级 CUDA 工具包,即可比以往更轻松地安装 CuPy。
pip install cupy-cuda12x pip install cupy-cuda13x
CuPy 现已实现 CUDA Stream Protocol,支持与 PyTorch、JAX 及其他支持该协议的框架直接共享流。这意味着无需手动管理指针即可实现零拷贝互操作性。
# Share a CuPy stream with PyTorch pytorch_stream = torch.cuda.ExternalStream(cupy_stream) # Or import an external stream into CuPy cupy_stream = cupy.cuda.Stream.from_external(pytorch_stream)
现已添加对 ml_dtypes.bfloat16 的支持,为 CuPy 带来了原生低精度计算能力,这是一种常用于 AI 训练和推理的数据类型。通过对广义 ufuncs、数组运算符和标量处理进行快速路径优化,部分核心操作的性能得到了提升。对多线程应用的支持也得到了改进。借助 ndarray.mdspan,CuPy 数组现在可被视为 cuda::std::mdspan 对象,并支持 32 位和 64 位索引控制。这使用户能够对算术运算和性能进行更多的控制。
cuda.core 0.6 引入了用于 GPU 监控和管理的 NVML 绑定( cuda.bindings.nvml ),以及用于 fat binary 操作的全新 nvFatbin 绑定( cuda.bindings.nvfatbin )。全新的 cuda.core.system 模块基于 NVML 构建,提供了对设备温度监控、CPU/GPU 亲和性等系统信息的 Pythonic 访问方式。
构建 CUDA Graphs 的支持已正式从实验性命名空间毕业,现可在主 cuda.core 命名空间下使用。这使得开发者能够捕获操作序列并以极低开销重放,并支持条件执行(if_cond 和 while_loop)、fork-join 等高级模式。以下代码展示了该 API 的工作方式:
# Build a graph by capturing operations gb = device.create_graph_builder() gb.begin_building() # Capture kernel launches in the graph (not executed) launch(gb, LaunchConfig(grid=256, block=256), kernel_a, data_ptr) launch(gb, LaunchConfig(grid=256, block=256), kernel_b, data_ptr) launch(gb, LaunchConfig(grid=256, block=256), kernel_c, data_ptr) # Finalize and instantiate the graph graph = gb.end_building().complete() # Launch the graph into an existing CUDA Stream graph.launch(stream)
如需了解更多信息,请参阅 cuda.core.GraphBuilder 文档和示例。
开始使用 CUDA 13.2
CUDA 13.2 通过继续将 Python 提升为一等公民,并引入注重生产力的语言特性,弥合了易用性与极致 GPU 性能之间的差距,从而简化了高性能开发。
下载 CUDA 13.2 Toolkit 即可开始使用。
致谢
感谢以下 NVIDIA 贡献者:Jake Hemstad、Becca Zandstein、Jackson Marusarz、Mridula Prakash、Rekha Mukund、Daniel Rodriquez、Bo Dong、Andy Terrel、Raphael Boissel 和 Rob Armstrong。
标签














