CUDA Toolkit 13.4 发布:新增 Windows on Arm 支持与更强的共享 GPU 控制能力
NVIDIA 每次发布 CUDA Toolkit 都会带来新功能和性能提升,帮助开发者更好地发挥 NVIDIA GPU 及整个 NVIDIA 软件平台的潜力。
CUDA Toolkit 13.4 新增了对 Windows on Arm 的支持。此前 CUDA 应用一直可以在 Linux 平台的 Arm 架构上运行,这次发布将这一能力扩展到了 Windows on Arm 平台。
此外,本次发布还提供了对 NVIDIA Rubin GPU 架构的早期开发者支持、增强的 GPU 管理能力、扩展的 CUDA Python 和 CCCL 功能,以及对 NVIDIA Nsight 开发者工具和核心数学库的更新。
CUDA 13.4 的新特性
本节详细介绍 CUDA 13.4 的其他增强功能。
NVIDIA Rubin 开发者预览
CUDA Toolkit 13.4 以预览形式为 NVIDIA Rubin 架构(计算能力 107)提供了功能支持,让开发者可以在 Rubin 的 CUDA 支持正式可用之前,提前开始移植应用。Rubin 是驱动 agentic AI 时代的下一代 GPU 架构。
Multi-Process Service V3
多进程服务(MPS)V3 为 CUDA MPS 引入了现代化的控制层,简化了共享 GPU 资源的自动化和管理。本次更新为开发者和编排层提供了可脚本化的 CLI、命名服务器实例以及用于组织并发工作负载的命名空间,还新增了 TOML 配置支持、流式多处理器(SM)分区控制和基于 cgroup 的 GPU 显存限制。借助这些能力,开发者可以通过编程方式精确划分 GPU,定义计算性能、内存边界和执行优先级。MPS V3 可无缝集成到容器化环境中,在最大化硬件利用率的同时,为每个进程保持严格的资源隔离。要上手 MPS V3,请参阅快速入门和完整文档。
CUDA Compute Fabric Transport
CUDA Compute Fabric Transport(CFT)为高级应用和通信库提供了一种以传输为中心的方式,用于在 NVIDIA NVLink fabric 上进行大规模数据移动。它不再将每个远程 GPU 分配映射到进程的虚拟地址空间,而是允许软件使用端点 ID 和偏移量来寻址命名的逻辑端点,然后直接从 GPU 发起异步 put、get 和 reduction 操作。
这种方法减轻了大型多 GPU 系统中的虚拟地址压力,支持单播和多播通信模式,并报告完成状态和错误状态,使应用程序能够检测、重试或重新路由失败的 fabric 传输。
CFT 仅通过 CUDA Driver API 提供,旨在服务于需要高层通信库中不可用的特定功能的专业通信库开发者。大多数应用开发者使用 NVIDIA NCCL 或 NVSHMEM 等库会更为合适。欲了解更多详情,请参阅 CUDA 编程指南。
本地性域(Locality domains)
CUDA 13.4 提供对本地性域的程序化访问。本地性域是 GPU 的一部分,包含流多处理器(SM)和设备内存。应用程序可以在某个本地性域中分配设备内存,并在同一本地性域内创建一个包含 SM 资源的 green context。在具有多个本地性域的设备上,将计算单元与其访问的内存位置靠近放置可以提升性能。有关如何查询和使用本地性域的详细信息,请参阅 CUDA 编程指南。
查询统一内存的位置
统一内存驻留信息查询的 API 支持,为注重性能的库和运行时提供了直接途径,以了解托管或系统分配数据当前的驻留位置。统一内存简化了异构编程,但高性能软件仍需感知数据局部性,以避免不必要的页面迁移、远程内存访问或低效的暂存路径。借助驻留查询,CUDA 应用程序和库能够更智能地决定在何时何地调度计算及数据移动。欲了解更多详情,请参阅 cudaMemGetLocationInfo的 API 参考文档。
解耦 CUDA 驱动与 CUDA 工具包
CUDA SDK 安装包不再捆绑 NVIDIA 驱动。请通过首选的包管理器,分别安装合适的 nvidia-open 驱动或 cuda-toolkit 软件包。
一致性平台默认启用基于驱动的一致性内存管理
在 NVIDIA Grace Hopper、NVIDIA Grace Blackwell 及 NVIDIA Vera Rubin 等 NVIDIA 一致性平台上,驱动现在默认采用基于驱动的一致性内存管理(CDMM),而非 NUMA 模式。NUMA 模式仍得到完全支持,可通过内核模块参数进行选择。若计划使用 NUMA 模式,请在升级前进行更改。这是一项节点级设置,更改后需重新加载驱动或重启系统,因此务必在升级前选定模式。有关 CDMM 的更多信息,请参阅博客文章《理解硬件一致性平台上的内存管理》及白皮书。
编译器/NVCC
主机编译器兼容性现已涵盖支持平台上的 GCC 16 和 Clang 22。新增的 SM_107 架构目标支持针对 Rubin GPU 进行编译。
CUDA Python
CUDA Python 进一步扩展了对核心 CUDA API 和高效能算法的 Pythonic 访问能力,并更新了开发工具、内存管理、图工作流及应用可移植性。
cuda.core
继 CUDA Python 1.0 发布之后,cuda.core 1.1.0 进一步扩展了稳定的 Pythonic CUDA API,新增纹理与表面编程、更丰富的托管内存控制、改进的 CUDA graph 集成,并为开发工具和 AI 代理提供完整的类型信息。
完整的变更列表请参阅 cuda.core 1.1.0 发布说明。
纹理与表面编程
新的 cuda.core.texture 模块为 CUDA 纹理和表面内存提供了一流的 Python API。OpaqueArray 和 MipmappedArray 表示按硬件布局分配的 GPU 内存,TextureObject 支持无绑定的硬件过滤内核读取,SurfaceObject 则支持内核侧的类型化读写。下面的示例创建一个不透明的 CUDA 数组,并将其绑定到纹理对象,用于硬件过滤的内核读取。
from cuda.core import Device
from cuda.core.texture import (
OpaqueArrayOptions,
ResourceDescriptor,
TextureObjectOptions,
)
from cuda.core.typing import ArrayFormatType, FilterModeType
dev = Device()
dev.set_current()
stream = dev.create_stream()
with dev.create_opaque_array(
OpaqueArrayOptions(
shape=(1024, 1024),
format=ArrayFormatType.FLOAT32,
num_channels=1,
)
) as array:
array.copy_from(image, stream=stream)
resource = ResourceDescriptor.from_opaque_array(array)
options = TextureObjectOptions(filter_mode=FilterModeType.LINEAR)
with dev.create_texture_object(
resource=resource,
options=options,
) as texture:
# Pass texture.handle to a CUDA C++ kernel.
run_kernel(texture.handle)
NUMA 感知的托管内存
ManagedMemoryResource.allocate() 现在返回一个带有属性接口的 ManagedBuffer,可用于设置 CUDA 内存建议。应用可以据此配置读多写少的数据、首选存放位置以及处理器访问策略。
新增的 Host 类型与 Device 配合,用于指定内存位置。它可以表示任意主机内存、特定的 NUMA 节点,或调用线程所在的 NUMA 节点。
下面的示例演示了如何配置托管内存的存放位置和访问策略,将数据预取到 GPU,再把输出移回主机内存。
from cuda.core import Device, Host, ManagedMemoryResource from cuda.core.utils import prefetch_batch dev = Device() dev.set_current() stream = dev.create_stream() mr = ManagedMemoryResource() weights = mr.allocate(weights_nbytes, stream=stream) output = mr.allocate(output_nbytes, stream=stream) weights.read_mostly = True weights.preferred_location = dev weights.accessed_by.add(dev) prefetch_batch(stream, [weights, output], dev) # Launch GPU work, then move the result to host memory. output.prefetch(Host(), stream=stream) stream.sync()
改进的开发与图工作流
cuda.core 1.1 为所有公开 API 提供了 .pyi 类型存根,使 IDE 能够利用类型信息进行自动补全,同时也让编码代理获取函数签名、返回类型等详细信息。
在 CUDA 图工作流的多项改进中,GraphBuilder.graph_definition 将捕获的图暴露为 GraphDefinition 对象。开发者可以利用它将流捕获与显式图构建相结合,甚至检查和扩展已捕获的图。
其他新增功能包括针对特定设备的 NVLink 枚举、扩展的绿色上下文工作队列配置、支持路径类输入的 Program 和 ObjectCode,以及公开的 Buffer.size 属性。该版本还强化了 IPC 验证、无锁 Python 的正确性以及 CUDA 进程检查点恢复功能。
cuda.compute
cuda.compute 提供了 Python 风格的接口,用于访问 NVIDIA CUDA Core Compute Libraries (CCCL) 中高性能、可定制的 GPU 算法,包括排序、扫描、归约和转换等。
cuda.compute 1.1 支持对多种 GPU 架构的算法对象进行预编译(AoT),即使在无 GPU 的构建系统中也可运行。ProxyArray 和 ProxyValue 在不分配设备内存的情况下描述参数类型,而 serialize() 方法可生成可供存储和部署的制品。在目标系统上,deserialize() 可在无需重新编译的情况下恢复算法,并加载匹配当前 GPU 架构的构建版本。
以下示例展示了如何在无 GPU 环境下编译适用于 sm_80 和 sm_90 的归约算法,并将其保存以供后续部署。
import numpy as np
from cuda.compute import (
OpKind,
ProxyArray,
ProxyValue,
make_reduce_into,
serialize,
)
reducer = make_reduce_into(
d_in=ProxyArray(np.int32),
d_out=ProxyArray(np.int32),
op=OpKind.PLUS,
h_init=ProxyValue(np.int32),
compute_capability=[80, 90], # Build for sm_80 and sm_90.
)
with open("reduce.cclb", "wb") as file:
file.write(serialize(reducer))
CCCL
CUDA 13.4 随附 CCCL 3.4,提供在 NVIDIA Blackwell GPU 上更快的 cub::DeviceScan、贯穿 CUB 设备级算法的单次调用 API、批量 warp 归约操作,以及位于 cuda::std 中熟悉的 C++ 标准库并行算法。
NVIDIA Blackwell GPU 上更快的设备级扫描
现已提供针对 Blackwell 的 cub::DeviceScan 新 warp 专用实现。该实现利用 Tensor Memory Accelerator(TMA)来重叠内存移动与计算,同时降低同步开销。
在 NVIDIA Blackwell GPU 上的基准测试结果中,新的 cub::DeviceScan::Sum 实现在所测数据类型上实现了高达 92% 的内存带宽利用率(此前实现最高约为 50%)。该实现针对大型扫描工作负载进行了优化,同时为不支持的架构、数据类型、迭代器和工具链保留了回退方案。
CUB 设备级算法的单次调用 API
CCCL 3.4 完成了 CUB 全设备算法中基于环境变量、单次调用重载的全面推广。此前,应用通常需要调用两次 CUB 算法:第一次查询临时存储需求,分配存储后,再调用一次执行操作。新的重载可以直接从执行环境中提供的 memory resource 获取临时存储。更多信息请参阅 Streamlining CUB with a Single-Call API 和 CUB 全设备原语文档。
下面的示例创建了一个包含 CUDA stream 和 memory pool 的执行环境,然后运行归约操作,无需手动管理临时存储。
auto device = cuda::devices[0];
auto stream = cuda::stream{device};
auto pool = cuda::device_default_memory_pool(device);
auto env = cuda::std::execution::env{
cuda::stream_ref{stream},
pool
};
cub::DeviceReduce::Sum(d_input, d_output, num_items, env);
这样既减少了样板代码,又集中管控了算法的执行方式和临时存储的获取途径。传统的两阶段 API 并未弃用,需要显式存储管理的应用仍可继续使用。
warp 内的批量归约
新增的 CUB warp 级集合操作 cub::WarpReduceBatched 可用于对分布在 warp 中的多个独立值批次进行归约。它将所有批次一起处理,最大限度减少 shuffle 操作,提高每个 warp 的有效工作量。
GPU 上的 C++ 标准库并行算法
CUDA 13.4 在 cuda::std 中引入了 C++ 标准库的并行算法模型。开发者可以使用 cuda::execution::gpu 执行策略调用几十种熟悉的算法,包括 copy_if、find_if、merge、reduce、transform 和 scan 操作。
下面的示例使用 GPU 执行策略,将一个设备可访问区间中的正值复制到另一个区间。
#include <cuda/std/algorithm>
#include <cuda/std/execution>
struct is_positive
{
__host__ __device__
bool operator()(int value) const
{
return value > 0;
}
};
cuda::std::copy_if(
cuda::execution::gpu,
d_first,
d_last,
d_output,
is_positive{}
);
这些算法作用于设备可访问的数据范围,底层基于 CCCL 和 CUB 的实现。这为 CUDA C++ 开发者提供了一套标准化且易于识别的 GPU 执行接口,同时允许通过可定制的 execution policy 访问 streams 和 memory resources 等 CUDA 特定功能。欲了解详细信息,请参阅 cuda::std 并行算法文档。
PDL 引入 CUDA Tile IR
CUDA Tile IR 现在支持 Programmatic Dependent Launch (PDL),实现同一 CUDA stream 上内核间的重叠执行,允许依赖的内核在前一个内核完成之前开始执行。有关这些操作的详细信息,请参阅 CUDA Tile IR 的 版本发布说明。
CUDA Tile C++ 新增 views
CUDA Tile C++ 引入了用于加载和存储数据的额外 views。
- Strided view 创建静态大小的数据块,块间的间距由编译时的 striding factor 决定。这有助于实现 stencil 类操作中常见的数据访问模式。
- Gather scatter view 支持访问数组中非相邻的数据块。这有助于处理具有稀疏访问模式的数据。
开发者工具
以下是多项开发者工具的增强功能。
Nsight Python
Nsight Python 1.0 是一个 Python 内核性能分析接口,利用 NVIDIA Nsight Tools 自动分析多种内核配置的性能。通过装饰器和上下文管理器,开发者只需编写一个脚本即可实现内核基准测试、架构指标收集、防止 GPU 降频以及性能可视化。无需样板代码,也无需手动解析报告。Nsight Python 以极低的代码开销提供可扩展的架构指标——而不仅仅是墙钟时间。
NVIDIA Nsight Compute
Nsight Compute 2026.3 版本为 CUDA Tile 工作负载增加了 Tile IR 支持,允许开发者在源代码页面中检查 Tile IR,并将其与 CUDA Tile 源代码及生成的代码进行关联。该版本还改善了 OptiX 工作负载的寄存器溢出信息,并增强了 Nsight Copilot 的功能。
NVIDIA Nsight Systems
Nsight Systems 2026.5.1 扩展了跨 CUDA、CPU、AI 框架、网络和存储的平台覆盖范围及工作负载可见性。Web 版本新增了对 CUDA 13.4、Rubin GPU 以及 Windows on Arm 的支持。此外,它将 NVTX 范围映射到“所有流”层级,对 cuTile 名称进行反混淆,并在时间线上展示通过 CiG 流提交的 CUDA 工作负载。
CPU 指标集将相关的硬件计数器分组以便在单次采集中收集,帮助开发者通过 Topdown 指标集逐步隔离瓶颈。对于 PyTorch 工作负载,新增的 --pytorch=functions-trace-shapes 选项为追踪函数添加了张量形状和训练参数等信息。开发者可以根据需求,选择形状追踪提供的额外细节或现有函数追踪选项的低开销。
网络、存储和集群分析
网络性能剖析方面,新增了通过 NVIDIA DOCA Telemetry Service 进行高频 NIC 指标采集的能力,开发者无需提升权限,即可将网络流量、拥塞通知和发送等待与应用活动关联起来。新的 NCCL straggler 分析 recipe 可分析集合通信的耗时情况,找出反复拖慢通信进度的 rank。采集要求与 recipe 用法详见 Nsight Systems User Guide 和 Post-Collection Analysis Guide。
存储性能剖析新增了 S3 access summary 分析 recipe,可以跨进程、跨主机汇总访问模式和 I/O 统计数据,帮助识别热点 bucket 和对象、频繁的小块传输以及负载不均问题。NVIDIA SCADA 指标剖析则将 SCaled Accelerated Data Access 存储架构中的计数器和直方图纳入时间线,开发者可以据此将存储服务器的活动与 GPU、CPU 事件关联起来。
针对多节点和集群的剖析分析,实验性的 vClock 插件在缺少 PTP 这类高精度同步手段时,无需修改系统时钟或特权访问,即可改进报告的时间对齐。
二进制 payload 与插件开发
NVTX 二进制 payload 现在可以导出为动态关系表,payload 字段作为列,支持 SQLite、Arrow 和 Arrow/Parquet 格式,便于后续分析。Nsight Systems 插件框架还新增了初始化阶段、进程退出回调 API,并支持在子进程中加载插件库。开发者可以在应用启动前初始化采集,捕获关闭阶段产生的数据,并把剖析覆盖范围扩展到子进程。
NVIDIA Nsight Cloud
Nsight Cloud 让在远程无显示器系统上查看和分析剖析报告变得更简单。Nsight Operator 在分析、OpenTelemetry 和 NVIDIA Dynamo 方面均有改进,并上线了新的文档站点。
NVIDIA Nsight AI
Nsight AI 将专业 AI 辅助引入加速计算开发流程。NVIDIA 托管的 CUDA MCP Server 将支持的 AI 编码智能体连接至最新的 CUDA 文档和代码示例,而开源的 Nsight Copilot Blueprint 则提供自托管的 CUDA AI 后端,适合希望在自有环境中部署和运维的团队。
NVIDIA Compute Sanitizer
Compute Sanitizer 针对 Hopper 及更新架构的共享内存越界检测能力得到改进,并支持编译时修补。Initcheck 现支持 Batched memcpy async,并新增针对每个 cluster block 的 racecheck 过滤功能。
NVIDIA 核心数学库
CUDA Toolkit 13.4 中的核心数学库现已支持 Rubin GPU 架构,并支持 N1X Laptop 生态的 Windows on Arm 平台。
13.4 版本中 cuBLAS 的更新包括以下特性:
- cuBLAS 利用 Ozaki-II 方案的定点运算模拟,提升了双精度性能。
- 在 Blackwell 数据中心 GPU 上,cuBLASLt 将 Grouped GEMM 计算动态调度到流多处理器(SM)上,以最大限度地减少常见 MoE 负载中的不均衡。与早期工具包版本相比,该方法提升了包含众多组(例如 32 组)的 Grouped GEMM 调用的性能。当 Grouped GEMM 操作与其他设备内核并发运行时,其性能同样可获提升。
- cuBLASLt 新增了实验性的缩放模式
CUBLASLT_MATMUL_MATRIX_SCALE_VEC32_MN_K4_UE8M0和CUBLASLT_MATMUL_MATRIX_SCALE_VEC128_MN_K4_UE8M0,采用支持A和BFP8 精度张量的替代缩放因子布局。这些模式将缩放因子按 4 个一组打包,并以 M 或 N 为主序存储。当主维度不能被 4 整除时,会添加填充。更多详情,请参考文档。
快速上手 CUDA Toolkit 13.4
CUDA Toolkit 13.4 通过支持 Windows on Arm、NVIDIA Rubin GPU 架构预览支持、更新的 GPU 资源管理与通信能力,以及对 CUDA Python、CCCL、NVIDIA Nsight 开发工具和核心数学库的增强,扩展了 CUDA 开发能力。
请下载 CUDA Toolkit 13.4,并查阅 CUDA Toolkit 13.4 的发布说明,以获取完整的特性列表、支持的平台及兼容性信息。
致谢
感谢以下 NVIDIA 贡献者:Andy Terrel、Rob Armstrong、Jackson Marusarz、Mahender Hari、Becca Zandstein、Mridula Prakash、Daniel Rodriguez、Noah Stern。