每个 NVIDIA CUDA 工具包版本都增加了功能和性能改进,帮助开发者从 NVIDIA GPU 和更广泛的 NVIDIA 软件平台中获得更多益处。
CUDA 工具包 13.4 增加了对 Arm 上 Windows 的支持。长期以来,Arm 平台通过 Linux 支持 CUDA 应用程序;此版本将该功能扩展到 Arm 平台上的 Windows。
该版本还引入了开发者对 NVIDIA Rubin GPU 架构的早期支持、增强的 GPU 管理功能、扩展的 CUDA Python 和 CCCL 功能,以及 NVIDIA Nsight 开发者工具和核心数学库的更新。
CUDA 13.4 增强功能
本节将详细介绍 CUDA 13.4 中的其他增强功能。
开发者使用 NVIDIA Rubin 预览
CUDA 工具包 13.4 增加了对 NVIDIA Rubin 架构的功能支持 (计算能力 107) 作为预览,使开发者能够在未来版本的 CUDA 工具包全面推出 Rubin 的 CUDA 支持之前开始移植应用程序。Rubin 是为代理式 AI 时代提供动力支持的新一代 GPU 架构。
多进程服务 V3
多进程服务器 (MPS) V3 为 CUDA MPS 引入了现代化的控制层,简化了共享 GPU 资源的自动化和管理。此更新为开发者和编排层提供了可编写脚本的 CLI、命名服务器实例和命名空间,以组织并发工作负载。它还增加了 TOML 配置支持、流式多处理器 (SM) 分区控制和 cgroup 集成 GPU 显存限制。这些功能可实现精确的 GPU 分区,通过编程方式定义计算性能、内存边界和执行优先级。此版本可确保 MPS 集成到容器化环境中,更大限度地提高硬件利用率,同时对每个进程保持严格的资源隔离。要开始使用 MPS V3,请参阅快速入门和完整文档。
CUDA 计算结构传输
CUDA 计算结构传输 (CFT) 为高级应用程序和通信库引入了一种以传输为中心的方式,以便在 NVIDIA NVLink 结构中大规模移动数据。软件无需将每个远程 GPU 分配映射到进程的虚拟地址空间中,而是可以使用端点 ID 和偏移量锁定已命名的逻辑端点,然后直接从 GPU 发出异步放置、获取和归约操作。
这种方法可以减轻大型多 GPU 系统中的虚拟地址压力,支持单播和组播通信模式,并报告完成情况和错误状态,以便应用程序可以检测、重试或重新路由失败的网络传输。
CFT 仅通过 CUDA 驱动 API 提供,面向需要NCCL或NVSHMEM等高级通信库无法提供的特定功能的通信库开发者。大多数应用程序开发者最好使用 NVIDIA NCCL 或 NVSHMEM 等库。如需了解详情,请参阅 CUDA 编程指南。
局部域
CUDA 13.4 支持对局部域的编程访问。局部性域是 GPU 的一部分,包含流多处理器 (SM) 和设备内存。应用程序可以在本地域中分配设备内存,并使用同一本地域中的 SM 资源创建绿色上下文。在其访问的显存附近共同部署计算可以提高具有多个局部性域的设备的性能。有关如何查询和使用局部性域的更多信息,请参阅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 模式仍受完全支持,并且可以使用内核模块参数进行选择。如果您打算使用它,请在升级之前进行更改。这是一个节点范围的设置,需要重新加载或重启驱动程序。在升级之前,请先选择“Mode” (模式) 。有关 CDMM 的更多信息,请参阅了解硬件一致性平台上的内存管理帖子和白皮书。
编译器/ NVCC
主机编译器兼容性现在包括受支持的主机平台上的 GCC 16 和 Clang 22。新的 SM_107 架构目标支持对 Rubin GPU 进行编译。
CUDA Python
CUDA Python 通过更新开发工具、内存管理、图形工作流和应用程序可移植性,扩展了 Python 对核心 CUDA API 和高性能算法的访问。
cuda.core
在 CUDA Python 1.0 发布后,cuda.core 1.1.0 对稳定的 Python CUDA API 进行了扩展,包括纹理和表面编程、更丰富的托管内存控制、改进的 CUDA 图集成,以及用于开发工具和智能体的完整类型信息。
如需完整的变更列表,请参阅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 提供对 NVIDIA CUDA 核心计算库 (CCCL) 高性能、可定制 GPU 算法的 Python 式访问,包括排序、扫描、归约、转换等。
cuda.compute 1.1 支持针对多个 GPU 架构 (包括未配备 GPU 的构建系统) 提前 (AoT) 编译算法对象。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、批量线程束归约,以及 cuda::std 中常见的 C++ 标准库并行算法。
在 NVIDIA Blackwell GPU 上加快全设备扫描速度
适用于 Blackwell 的 cub::DeviceScan 新的线程束专用实现现已推出。该实现使用 Tensor Memory Accelerator (TMA) 来重叠内存移动和计算,同时减少同步开销。

在 NVIDIA Blackwell GPU 的基准测试结果中,在所有测试数据类型中,新的 cub::DeviceScan::Sum 实现可实现高达 92% 的内存带宽利用率 (之前的实现约为 50%) 。该实施针对大型扫描工作负载进行了优化,同时保留了不支持的架构、数据类型、迭代器和工具链的回退。
适用于 CUB 设备级算法的单次调用 API
CCCL 3.4 完成了跨 CUB 设备级算法基于环境的单次调用过载的推出。以前,应用程序通常会调用一次 CUB 算法来确定其临时存储需求,分配该存储,然后再次调用该算法来执行操作。新的过载会从通过执行环境提供的内存资源中获取临时存储。有关更多信息,请参阅使用 Single Call API 简化 CUB和CUB 设备范围的基元文档。
以下示例创建了一个具有 CUDA 流和内存池的执行环境,然后在不手动管理临时存储的情况下运行缩减。
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 未被弃用,可供需要显式存储管理的应用程序使用。
线程束中的批量归约
引入了新的 CUB 线程束范围集合 cub::WarpReduceBatched,用于减少分布在线程束中的多个独立批量值。它同时处理批量数据,最大限度地减少随机化操作,并增加每个线程束执行的有用工作量。
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 执行接口,同时通过可定制的执行策略保留对流和内存资源等 CUDA 特定功能的访问权限。有关更多详情,请参阅cuda::std 并行算法文档。
CUDA Tile IR 将支持基于编程的启动
支持从编程依赖启动 (PDL) 到 CUDA Tile IR,可在同一 CUDA 流上实现核函数间重叠,从而使相关核函数在其前代函数完成之前开始执行。请参阅 CUDA Tile IR 发行说明,详细了解这些操作。
CUDA Tile C++ 中的新视图
CUDA 平铺 C++ 引入了用于加载和存储数据的其他视图。
开发者工具
随后推出了一系列开发者工具增强功能。
Nsight Python
Nsight Python 1.0 是一个 Python 内核分析接口,可使用 NVIDIA Nsight 工具跨多个内核配置自动进行性能分析。装饰器和上下文管理器可在一个脚本中实现内核基准测试、架构指标收集、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 和 Arm 上的 Windows 的支持。它还会将 NVTX 范围投影到“All Streams”层次结构中,对 cuTile 名称进行更改,并在时间轴上显示通过 CIG 流提交的 CUDA 工作负载。
CPU 指标设置与组相关的硬件计数器,以便在单次传递中进行收集,帮助开发者通过 Topdown 指标集逐步隔离瓶颈。对于 PyTorch 工作负载,新的 --pytorch=functions-trace-shapes 选项可为追踪函数添加张量形状和训练参数等信息。开发者可以在形状追踪提供的额外细节和现有功能追踪选项的较低开销之间进行选择。
网络、存储和集群分析
网络分析通过 NVIDIA DOCA 遥测服务添加了高频 NIC 指标集合,使开发者能够关联流量、拥塞通知,并在不需要提升权限的情况下发送等待与应用程序活动。新的 NCCL 杂散分析方案通过分析集合计时来识别反复延迟沟通者进度的秩。请参阅 Nsight Systems 用户指南 和 采集后分析指南,了解采集要求和配方用法。
存储分析现在包括 S3 访问摘要分析方案,该方案汇总了跨进程和主机的访问模式和 I/ O 统计数据,有助于识别热桶和对象、频繁的少量传输和工作负载不平衡。NVIDIA SCADA 指标分析将来自 SCaled Accelerated Data Access Storage 架构的计数器和直方图引入到时间轴中,开发者可以在其中将存储服务器活动与 GPU 和 CPU 事件关联起来。
对于多节点和集群分析,实验性 vClock 插件可改进报告对齐,而无需更改系统时钟,也无需在 PTP 等高精度同步不可用时进行特权访问。
二进制有效载荷和插件开发
NVTX 二进制有效载荷现在可以导出为动态关系表,有效载荷字段表示为列,以 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 服务器可将受支持的 AI 编码代理连接到当前的 CUDA 文档和代码示例,而开源的 Nsight Copilot Blueprint 则为喜欢在自己的环境中部署和操作该后端的团队提供了自托管的 CUDA AI 后端。
NVIDIA Compute Sanitizer
Compute Sanitizer 通过在 Hopper 和更新的架构上进行编译时修补,改进了共享内存越界检测。Initcheck 现在包括 Batched memcpy 异步支持和针对每个集群块过滤的 racecheck 支持。
NVIDIA 核心数学库
CUDA 工具包 13.4 中的核心数学库现已为 Rubin GPU 架构提供功能支持,并为 N1X 笔记本电脑生态系统提供基于 Arm 的 Windows 支持。
13.4 版 cuBLAS 更新包括以下功能:
- cuBLAS 使用 Ozaki-II 方案通过定点模拟提高双精度性能。
- 在 Blackwell 数据中心 GPU 上,cuBLASLt 可跨流多处理器 (SM) 动态调度分组 GEMM 计算,以更大限度地减少常见 MoE 工作负载中的负载不平衡。与早期工具包版本相比,此方法提高了许多组 (例如 32 组) 的分组 GEMM 调用的性能。当分组 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 工具包 13.4
CUDA 工具包 13.4 扩展了 CUDA 开发,支持 ARM 上的 Windows、对 NVIDIA Rubin GPU 架构的预览支持、更新的 GPU 资源管理和通信功能,以及跨 CUDA Python、CCCL、NVIDIA Nsight 开发者工具和核心数学库的增强功能。
下载 CUDA 工具包 13.4 并查看 CUDA 工具包 13.4 版本说明,获取功能、受支持平台和兼容性信息的完整列表。
致谢
感谢以下 NVIDIA 贡献者:Andy Terrel、Rob Armstrong、Jackson Marusarz、Mahender Hari、Becca Zandstein、Mridula Prakash、Daniel Rodriguez、Noah Stern。