前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >NVIDIA Blackwell RTX GPU与CUDA 12.8框架更新指南

NVIDIA Blackwell RTX GPU与CUDA 12.8框架更新指南

作者头像
GPUS Lady
发布2025-02-04 21:27:45
发布2025-02-04 21:27:45
53100
代码可运行
举报
文章被收录于专栏:GPUS开发者GPUS开发者
运行总次数:0
代码可运行

随着NVIDIA Blackwell RTX GPU的发布,为了确保应用程序与这些新一代GPU的兼容性和最佳性能,应用开发者必须更新到最新的AI框架。NVIDIA专门发布了一个指南,详细介绍与NVIDIA Blackwell RTX GPU兼容所需的核心软件库更新,特别是CUDA 12.8的相关信息。

CUDA 12.8更新指南

驱动程序要求

在NVIDIA Blackwell GPU上运行任何NVIDIA CUDA工作负载,需要兼容的驱动程序(R570或更高版本)。这确保了CUDA应用程序能够充分利用Blackwell GPU的计算能力。

PTX与CUDA Toolkit 12.8

  • PTX支持:如果您的应用程序捆绑了PTX,您的代码将能够在Blackwell上即时编译(JIT)。为了确保最佳性能,NVIDIA建议使用CUDA Toolkit 12.8或更高版本重新构建您的应用程序。
  • 稳定性问题:如果不满足上述条件,您可能会在Blackwell上遇到稳定性问题。因此,强烈建议更新到CUDA Toolkit 12.8。

CUDA 12.8的特

CUDA 12.8是首个原生支持Blackwell(计算能力10.0和12.0)的CUDA版本。使用CUDA Toolkit 12.8构建的应用程序将能够在任何R525或更高版本的驱动程序上原生运行,这得益于CUDA的小版本兼容性保证。

构建未来兼容的CUDA应用程序

为了构建能够即时编译到未来NVIDIA GPU的应用程序,NVIDIA推荐以下构建方法:

  • 发送PTX:发送PTX代码可以确保为Blackwell GPU编写的代码能够即时编译到未来的架构上。虽然这会在新GPU上首次加载时增加少量延迟,但它确保了您的应用程序无需更新即可继续运行。
  • 多版本支持:建议至少发送低版本的PTX用于不常用但仍在生产中的GPU,SASS(计算架构汇编)用于用户基础中广泛使用的GPU,以及额外的PTX(虚拟架构)版本以支持未来GPU的最佳性能

使用CUDA Toolkit 12.8重新编译应用程序

以下是一个使用CUDA Toolkit 12.8重新编译应用程序的示例命令:

代码语言:javascript
代码运行次数:0
复制
nvcc -gencode arch=compute_52,code=compute_52
-gencode arch=compute_86,code=sm_86
-gencode arch=compute_89,code=sm_89
-gencode=arch=compute_120,code=sm_120
-gencode=arch=compute_120,code=compute_120
main.cu -o main

CUDA Toolkit与数学库的其他信息

  • NVIDIA cuDNN:自cuDNN版本9起,它们基于CUDA 12或更高版本构建,因此具有硬件前向兼容性。但编译cuDNN PTX会显著增加延迟,并且无法保证在未来GPU上的完全性能,因此建议升级。
  • NVIDIA cuBLAS和NVIDIA cuFFT:这两个库包含PTX代码,并与任何新GPU架构前向兼容。但为了获得完全性能,建议升级库,因为新架构需要不同的优化,特别是新的Tensor Core指令。

TensorRT更新指南

TensorRT 10.8支持NVIDIA Blackwell GPUs,并增加了对FP4的支持。如果您尚未从8.x升级到10.x,请确保了解潜在的API更改。

部署引擎

TensorRT引擎的行为类似于CUDA内核。正常的TensorRT引擎仅包含cubin代码,而前向兼容的硬件可以考虑PTX代码。使用10.x版本编译引擎时的一个挑战是,引擎可能依赖于特定设备的SM计数,这限制了它们在具有更多SM的设备上的兼容性。

构建设备上的引擎

TensorRT使用自动调优来确定给定GPU上最快的执行路径。由于这些优化因GPU SKU而异,直接在最终用户设备上构建引擎可确保最佳性能和兼容性。

预构建引擎

您还可以预构建引擎并将其包含在应用程序中,以避免在最终用户设备上构建时间。NVIDIA提供TensorRT-Cloud服务,提供各种RTX GPU用于构建引擎。

构建引擎的策略

构建引擎的总数可以使用以下公式计算,并根据用例考虑以下因素:

代码语言:javascript
代码运行次数:0
复制
#models * #computeCapability * #enginesPerComputeCapability
  • 模型数:应用程序中包含的ONNX文件或INetworkDefinitions的数量。
  • 每架构的引擎数:为了减轻性能差异,可能需要增加每计算能力的引擎数。

软件前向兼容性

默认情况下,TensorRT引擎仅与用于构建它们的TensorRT版本兼容。但是,在构建过程中启用版本兼容性允许与未来TensorRT版本的前向兼容性。这可能会降低吞吐量,因为运行精简运行时限制了可用的操作符实现。

ONNX Runtime

CUDA执行提供程序

CUDA执行提供程序不包含PTX,建议从源代码针对CUDA 12.8编译库,并更新所有数学库(cuDNN、cuBLAS等)到CUDA 12.8版本。

DML执行提供程序

DML执行提供程序仅需要Blackwell兼容的驱动程序(R570或更高版本),并将以全性能运行。

TensorRT执行提供程序

使用与TensorRT 10.x二进制兼容的版本。如果从源代码编译,建议直接针对10.8编译。

llama.cpp

llama.cpp与最新的Blackwell GPU兼容。为了获得最大性能,我们推荐以下升级,具体取决于您使用的后端:

CUDA后端

使用CUDA 12.8构建,针对计算能力120,并升级cuBLAS,以避免最终用户的PTX JIT编译,并提供针对Blackwell优化的cuBLAS例程。

Vulkan后端

为了获得最佳性能,请使用最新的llama.cpp,包括2024年12月的优化,特别是支持VK_NV_cooperative_matrix2,这可以在RTX GPU上的Vulkan后端中使用Tensor Core。

Pytorch

PyPi

要在Windows上原生使用PyTorch与Blackwell,需要一个带有CUDA 12.8的PyTorch构建。PyTorch将很快提供这些构建。

WSL 2

为了获得最佳体验,建议在Linux环境中使用PyTorch,无论是作为原生操作系统还是通过Windows上的WSL 2。

Docker

为了第0天的支持,我们提供了一个包含CUDA 12.8的PyTorch的预打包容器,以启用Blackwell GPU。该容器可以在NGC上找到,标签为25.01。

原文:https://forums.developer.nvidia.com/t/software-migration-guide-for-nvidia-blackwell-rtx-gpus-a-guide-to-cuda-12-8-pytorch-tensorrt-and-llama-cpp/321330

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 驱动程序要求
    • PTX与CUDA Toolkit 12.8
    • CUDA 12.8的特性
    • 构建未来兼容的CUDA应用程序
    • 使用CUDA Toolkit 12.8重新编译应用程序
  • TensorRT 10.8支持NVIDIA Blackwell GPUs,并增加了对FP4的支持。如果您尚未从8.x升级到10.x,请确保了解潜在的API更改。
    • 部署引擎
    • 构建设备上的引擎
    • 预构建引擎
    • 构建引擎的策略
  • 软件前向兼容性
  • CUDA执行提供程序
    • DML执行提供程序
    • TensorRT执行提供程序
  • llama.cpp
    • CUDA后端
    • Vulkan后端
    • WSL 2
    • Docker
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档