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。这套组合经过大量测试,稳定性最好。
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.2ls /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 查看驱动版本。这两个对不上,神仙也救不了。
可可精品资料库