0. 前言
- 直接用 cuda安装文件同时安装 NVIDIA 驱动和 CUDA,没有单独安装更高版本的 NVIDIA 驱动;
- 为避免浪费显存,图形化界面显示是在Intel 集显环境下,NVIDIA 独显做计算;循环登陆问题是因为安装时没有加 --no-opengl-libs 参数,默认安装了 OpenGL,覆盖掉了原来显卡的 OpenGL 库
1. 下载安装文件和官方指南
- 登陆官网 https://developer.nvidia.com/cuda-downloads,下载相应版本的安装文件,注意安装文件类型选择 runfile(local)
- 下载官方的安装指南,便于参考
2. 禁用 nouveau 驱动
nouveau 是 ubuntu 为 nvidia 驱动开发的开源驱动,是在内核中的,不支持 3D 加速。输入以下命令会打开 Software & Updates 页面,点击 Additional Drivers 可以查看并安装专有的 nvidia 驱动。
software-properties-gtk
我们手动安装的 nvidia 驱动会跟 nouveau 冲突,需要先禁用
- 先查看 nouveau 是否被禁用,输入以下命令,若有输出,则说明 nouveau 在运行中
lsmod | grep nouveau
- 修改 /etc/modprobe.d/blacklist.conf 文件
sudo vim /etc/modprobe.d/blacklist.conf
在末尾加入
blacklist nouveau
options nouveau modeset=0
- 执行以下命令,并重启
sudo update-initramfs –u
- 再执行以下命令,查看 nouveau 是否已被禁用,若无任何输出,说明禁用成功
lsmod | grep nouveau
3. 文本命令行模式运行 runfile 文件安装CUDA
- 按 Ctrl + Alt + F1 键进入文本命令行模式,输入用户名和密码
- 关闭图形化界面
sudo service lightdm stop
- cd 到 runfile 文件保存的路径,进行安装
- 重点!!!要加 --no-opengl-libs 选项
- 或者先不加--no-opengl-libs 选项,在后面的交互模式下手动选择
sudo sh cuda_10.1.168_418.67_linux.run --no-opengl-libs
执行命令后,稍等一会儿,会出现交互界面,输入 accept,选择要安装的选项进行安装
注意:
若没加参数 --no-opengl-libs,后面会遇到循环登陆的问题,原因就是 NVIDIA显卡 的 OpenGL 库覆盖了当前 Intel 显卡的库,解决办法是再登入到文本命令行模式,用以下命令先卸载 cuda 和 NVIDIA驱动,再按正确的步骤重新安装
sudo /usr/local/cuda-10.1/bin/cuda-uninstaller
# 卸载 10.0
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
sudo /usr/bin/nvidia-uninstall
- 若能重新进入图形化界面,则基本安装成功
sudo service lightdm start
4. 检查 Device Node Verification
ls /dev/nvidia*
若结果显示 /dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm,则说明安装成功;若显示类似 No such file or directory等信息,则进行如下操作
sudo vim /etc/rc.local
第一行为 #!/bin/sh -e,把 -e 选项去掉,然后把下面的文本复制到 exit 0 之前,保存退出
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
重启后,再次输入以下命令,此时应该会出现 /dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm,说明安装成功
ls /dev/nvidia*
5. 设置环境变量,写入 /etc/profile 文件
sudo vim /etc/profile
在最后加入两行(64位系统为lib64,32位系统为lib)
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
重启,检查环境变量是否设置成功
- 验证驱动版本
cat /proc/driver/nvidia/version
- 验证CUDA Toolkit
nvcc -V
至此,cuda 已安装成功
6. 编译 cuda 提供的 samples
cd /home/xxx/NVIDIA_CUDA-10.1_Samples
make -j8
等待一段时间,编译 成功后,二进制文件会存放在 NVIDIA_CUDA-10.1_Samples/bin 中,执行下面的二进制文件,看是否成功
cd /home/lxxx/NVIDIA_CUDA-10.1_Samples/bin/x86_64/linux/release
./deviceQuery
./bandwidthTest
若出现以下信息,则说明成功