4、NVIDIA驱动与CUDA安装:显卡驱动检测与安装、CUDA Toolkit 10.2安装、cuDNN库配置、环境变量设置

好,咱们继续往下走。

上一章我们把Ubuntu系统装好了,现在该给这台「赛车」装上引擎了。说白了,Apollo这套系统对GPU的依赖非常大,尤其是感知和预测模块,没有NVIDIA的加持,跑起来会非常吃力。

我个人习惯是先把驱动和CUDA搞定,再装别的依赖。为什么?因为这两个东西一旦装错,后面排查起来特别麻烦。我曾经在一台新机器上折腾了整整一个下午,结果发现是驱动版本和内核不匹配——嗯,这种坑踩过一次就够了。

核心逻辑:Apollo 5.0/6.0 官方推荐使用 CUDA 10.2 + cuDNN 8.0.5,驱动版本建议 >= 450.80.02。这套组合经过大量测试,稳定性最好。

NVIDIA 驱动与 CUDA 安装流程 步骤1 检测显卡与驱动 步骤2 安装NVIDIA驱动 步骤3 安装CUDA 10.2 步骤4 配置cuDNN与环境变量 先确认硬件 推荐450.80.02+ Apollo官方指定版本 最后一步,别漏了

4.1 先看看你的显卡

别急着装,先搞清楚你手头的硬件是什么。我见过有人拿着GTX 1060硬要跑Apollo全量感知,结果卡成PPT——其实也不是不能跑,但体验确实不好。

打开终端,敲下面这条命令:

lspci | grep -i nvidia

如果能看到类似 NVIDIA Corporation GA102 [GeForce RTX 3080] 这样的输出,说明显卡被系统识别了。如果啥都没有,先检查一下显卡是不是没插好,或者BIOS里没开启独立显卡。

小提示:Apollo官方推荐使用RTX 30系列或Tesla T4以上的显卡。如果你用的是GTX 10系列,也能跑,但建议把感知模块的模型换成轻量版。

4.2 安装NVIDIA驱动

驱动安装有好几种方式,我推荐用Ubuntu自带的ubuntu-drivers工具,最省心。

先更新一下软件源:

sudo apt update
sudo apt upgrade -y

然后自动检测推荐驱动:

ubuntu-drivers devices

你会看到类似这样的输出:

driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-460 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

看到 recommended 那个没?直接装它:

sudo apt install nvidia-driver-470

装完之后重启:

sudo reboot

重启后验证一下:

nvidia-smi

如果能看到GPU的温度、显存使用情况,恭喜你,驱动装好了。

注意:千万不要用NVIDIA官网的.run文件手动安装!我曾经这么干过,结果和系统内核冲突,导致开机直接黑屏。用apt安装是最稳妥的方式。

4.3 安装CUDA Toolkit 10.2

驱动搞定之后,接下来装CUDA。Apollo 5.0/6.0 官方指定的是CUDA 10.2,别装错了版本。

去NVIDIA官网下载CUDA 10.2的runfile(或者用我下面提供的命令):

wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run

运行安装程序时,注意以下几点:

  • 选择「Continue」并输入 accept 接受协议
  • 取消勾选「Driver」选项(因为我们已经装好了驱动)
  • 只保留「CUDA Toolkit 10.2」和「CUDA Samples」
  • 安装路径保持默认:/usr/local/cuda-10.2

安装完成后,你会看到 /usr/local/cuda-10.2 这个目录。我个人习惯再创建一个软链接:

sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda

这样以后切换版本也方便。

4.4 配置环境变量

这一步很多人会漏掉,结果编译Apollo的时候报错找不到CUDA。说白了,系统不知道你把CUDA装哪了,你得告诉它。

编辑 ~/.bashrc 文件:

vim ~/.bashrc

在文件末尾添加以下内容:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

保存退出后,执行:

source ~/.bashrc

验证一下:

nvcc --version

如果看到 Cuda compilation tools, release 10.2, V10.2.89,说明CUDA安装成功。

验证清单:

  • nvidia-smi → 显示GPU信息
  • nvcc --version → 显示CUDA 10.2
  • ls /usr/local/cuda/lib64/libcudart.so.10.2 → 文件存在

4.5 安装cuDNN库

cuDNN是NVIDIA针对深度神经网络的加速库。Apollo的感知模型依赖它做卷积运算,没有它的话,模型推理速度会慢很多。

cuDNN需要去NVIDIA官网注册下载(需要账号)。下载 cuDNN Library for Linux (x86_64) 版本 8.0.5 for CUDA 10.2。

下载后是一个 .tgz 文件,解压并复制到CUDA目录:

tar -xzvf cudnn-10.2-linux-x64-v8.0.5.39.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

验证cuDNN版本:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

如果输出类似:

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 5

说明cuDNN 8.0.5安装成功。

避坑指南:我曾经遇到过cuDNN版本和CUDA不匹配的情况,编译Apollo时报错 undefined reference to cudnnCreate。后来发现是cuDNN 8.2和CUDA 10.2不兼容。记住,Apollo 5.0/6.0 必须用 cuDNN 8.0.5,别用更新的版本。

4.6 最终验证

全部装完之后,我建议你跑一下CUDA自带的样例程序,确保整个链路是通的:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

如果最后一行显示 Result = PASS,恭喜你,整个NVIDIA环境搭建完成。

组件 版本要求 验证命令
NVIDIA驱动 >= 450.80.02 nvidia-smi
CUDA Toolkit 10.2 nvcc --version
cuDNN 8.0.5 查看 cudnn_version.h

嗯,到这里,你的开发环境已经具备了最核心的GPU计算能力。接下来就可以放心地编译Apollo源码了。

再次提醒:如果你在安装过程中遇到任何问题,先检查内核版本和驱动是否匹配。用 uname -r 查看内核版本,用 dpkg -l | grep nvidia 查看驱动版本。这两个对不上,神仙也救不了。

可可精品资料库