随着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的计算能力。
CUDA 12.8是首个原生支持Blackwell(计算能力10.0和12.0)的CUDA版本。使用CUDA Toolkit 12.8构建的应用程序将能够在任何R525或更高版本的驱动程序上原生运行,这得益于CUDA的小版本兼容性保证。
为了构建能够即时编译到未来NVIDIA GPU的应用程序,NVIDIA推荐以下构建方法:
以下是一个使用CUDA Toolkit 12.8重新编译应用程序的示例命令:
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与数学库的其他信息
TensorRT更新指南
TensorRT引擎的行为类似于CUDA内核。正常的TensorRT引擎仅包含cubin代码,而前向兼容的硬件可以考虑PTX代码。使用10.x版本编译引擎时的一个挑战是,引擎可能依赖于特定设备的SM计数,这限制了它们在具有更多SM的设备上的兼容性。
TensorRT使用自动调优来确定给定GPU上最快的执行路径。由于这些优化因GPU SKU而异,直接在最终用户设备上构建引擎可确保最佳性能和兼容性。
您还可以预构建引擎并将其包含在应用程序中,以避免在最终用户设备上构建时间。NVIDIA提供TensorRT-Cloud服务,提供各种RTX GPU用于构建引擎。
构建引擎的总数可以使用以下公式计算,并根据用例考虑以下因素:
#models * #computeCapability * #enginesPerComputeCapability
默认情况下,TensorRT引擎仅与用于构建它们的TensorRT版本兼容。但是,在构建过程中启用版本兼容性允许与未来TensorRT版本的前向兼容性。这可能会降低吞吐量,因为运行精简运行时限制了可用的操作符实现。
ONNX Runtime
CUDA执行提供程序不包含PTX,建议从源代码针对CUDA 12.8编译库,并更新所有数学库(cuDNN、cuBLAS等)到CUDA 12.8版本。
DML执行提供程序仅需要Blackwell兼容的驱动程序(R570或更高版本),并将以全性能运行。
使用与TensorRT 10.x二进制兼容的版本。如果从源代码编译,建议直接针对10.8编译。
llama.cpp与最新的Blackwell GPU兼容。为了获得最大性能,我们推荐以下升级,具体取决于您使用的后端:
使用CUDA 12.8构建,针对计算能力120,并升级cuBLAS,以避免最终用户的PTX JIT编译,并提供针对Blackwell优化的cuBLAS例程。
为了获得最佳性能,请使用最新的llama.cpp,包括2024年12月的优化,特别是支持VK_NV_cooperative_matrix2,这可以在RTX GPU上的Vulkan后端中使用Tensor Core。
Pytorch
PyPi
要在Windows上原生使用PyTorch与Blackwell,需要一个带有CUDA 12.8的PyTorch构建。PyTorch将很快提供这些构建。
为了获得最佳体验,建议在Linux环境中使用PyTorch,无论是作为原生操作系统还是通过Windows上的WSL 2。
为了第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