完整教程:启用GPU对模型进行推理,安装cuda toolkit &cuDNN 9
查仓库里有哪些 toolkit 版本
apt-cache search ‘^cuda-toolkit’ | grep -E ‘cuda-toolkit-[0-9]±[0-9]’
或者
apt list cuda-toolkit* 2>/dev/null
看输出里类似这些名字(示例):
cuda-toolkit-12-6
cuda-toolkit-12-5
以及通用的 cuda-toolkit(会装当前仓库默认版本)
(ros2_env) wanglonglong:~/Learn_ROS2/03.my_robot$ apt-cache search '^cuda-toolkit' | grep -E 'cuda-toolkit-[0-9]+-[0-9]' # 或者 apt list cuda-toolkit* 2>/dev/null cuda-toolkit-12-5 - CUDA Toolkit 12.5 meta-package cuda-toolkit-12-5-config-common - Common config package for CUDA Toolkit 12.5. cuda-toolkit-12-6 - CUDA Toolkit 12.6 meta-package cuda-toolkit-12-6-config-common - Common config package for CUDA Toolkit 12.6. cuda-toolkit-12-8 - CUDA Toolkit 12.8 meta-package cuda-toolkit-12-8-config-common - Common config package for CUDA Toolkit 12.8. cuda-toolkit-12-9 - CUDA Toolkit 12.9 meta-package cuda-toolkit-12-9-config-common - Common config package for CUDA Toolkit 12.9. cuda-toolkit-13-0 - CUDA Toolkit 13.0 meta-package cuda-toolkit-13-0-config-common - Common config package for CUDA Toolkit 13.0. Listing... Done cuda-toolkit-12-5-config-common/unknown 12.5.82-1 all cuda-toolkit-12-5/unknown 12.5.1-1 amd64 cuda-toolkit-12-6-config-common/unknown 12.6.77-1 all cuda-toolkit-12-6/unknown 12.6.3-1 amd64 cuda-toolkit-12-8-config-common/unknown 12.8.90-1 all cuda-toolkit-12-8/unknown 12.8.1-1 amd64 cuda-toolkit-12-9-config-common/unknown 12.9.79-1 all cuda-toolkit-12-9/unknown 12.9.1-1 amd64 cuda-toolkit-12-config-common/unknown 12.9.79-1 all cuda-toolkit-12/unknown 12.9.1-1 amd64 cuda-toolkit-13-0-config-common/unknown 13.0.48-1 all cuda-toolkit-13-0/unknown 13.0.0-1 amd64 cuda-toolkit-13-config-common/unknown 13.0.48-1 all cuda-toolkit-13/unknown 13.0.0-1 amd64 cuda-toolkit-config-common/unknown 13.0.48-1 all cuda-toolkit/unknown 13.0.0-1 amd64
建议你装哪个?
ONNX Runtime 1.18.x 官方要求 CUDA 12.x + cuDNN 9.x。
13.0 太新,兼容性未知(容易踩坑)。
12.9 也刚出,可能还没在 ORT 里完全验证。
12.6 相对稳定,推荐先装它。
安装命令
sudo apt install -y cuda-toolkit-12-6
装好后确认是否有 cublasLt:
ls /usr/local/cuda-12.6/targets/x86_64-linux/lib/libcublasLt.so.12
再补 cuDNN 9
sudo apt install -y libcudnn9-cuda-12 libcudnn9-dev-cuda-12
更新环境变量
echo 'export PATH=/usr/local/cuda-12.6/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.6/targets/x86_64-linux/lib:/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证
nvcc -V
ls /usr/local/cuda-12.6/targets/x86_64-linux/lib/libcublasLt.so.12
补充信息:
CUDA Toolkit
全称:Compute Unified Device Architecture Toolkit
内容:
CUDA 驱动层接口:GPU 的基本编程 API(比如 CUDA Runtime API 和 Driver API)。
编译工具链:nvcc 编译器,用来把 CUDA C/C++/Fortran 代码编译成能在 GPU 上跑的 PTX/二进制。
基础库:
cuBLAS(BLAS 矩阵运算库)
cuRAND(随机数生成)
cuFFT(快速傅里叶变换)
cuSPARSE(稀疏矩阵运算)
…
作用:提供 GPU 计算的“底层砖块”,让各种框架(PyTorch、TensorFlow、ONNX Runtime…)可以调用 GPU 来做矩阵运算、向量运算等。
比如你看到的 libcublasLt.so.12 就是 CUDA Toolkit 里的 cuBLASLt 库,专门做高性能矩阵乘法。没有它,ONNXRuntime/Torch 的很多算子就跑不起来。
cuDNN
全称:CUDA Deep Neural Network library
内容:一套专门针对 深度学习常见操作 的高性能实现:
卷积(Convolution)
池化(Pooling)
激活函数(ReLU, Sigmoid, Tanh 等)
归一化(BatchNorm, LayerNorm)
RNN/LSTM 等序列运算
作用:在 CUDA Toolkit 基础上,针对深度学习模型优化了常用算子,并利用各种底层技巧(Winograd, Tensor Cores, 混合精度…)做到极致提速。
框架(PyTorch、TensorFlow、ONNX Runtime)在做卷积/池化时,大多直接调用 cuDNN,而不是自己写。
二者关系
CUDA Toolkit = “GPU 的基础工具箱”
cuDNN = “专门为深度学习优化的加速库”
cuDNN 是建立在 CUDA Toolkit 之上的,必须先有 CUDA 才能装 cuDNN。