服务器重装Nvidia驱动Cuda步骤

今天在捣鼓服务器的时候,无意间把nvidia驱动程序给清除了,无意间造成了一个大麻烦。由于服务器上多个用户都已经安装了多个不同版本的cuda,而这些不同版本的cuda全都依赖于之前安装的nvidia驱动,现在面临这着两个窘境:1、可能直接重新安装一下先前版本的nvidia驱动就直接可以解决问题,但是目前还不清楚之前安装的nvidia驱动是什么版本的。2、如果重新安装驱动也不成功的话,那么就要考虑先卸载cuda,等安装完nvidia驱动之后再安装并且配置cuda了。

一、抱着侥幸的想法,想先尝试一下第一步:直接重新安装一下驱动:

用以下命令查看以下设置自己服务器的驱动:

ubtuntu-drivers devices

#查看显卡型号的命令

lshw -numeric -C display

1、考虑能偷懒就偷懒的原则,能用apt安装驱动的话,自然是最好的,这就需要先在apt中添加一下显卡驱动的源:

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt update

然后根据提示用apt命令安装合适的显卡驱动:

sudo apt install nvidia-driver-XXX

# 可选步骤

##安装推荐的nvidia

sudo ubuntu-drivers autoinstall 

##安装确定版本的nvidia

sudo apt install nvidia-340

要是能成的话,就是走大运了,但是根据以往走坑的经验,大概率没有那么容易。。

二、如果上一部果然失败了,那么就老老实实地重新卸载nvidia驱动、cuda,然后重新手动安装吧。

在执行这部分的时候有一个原则:尽量让服务器上原先的用户还能够使用默认的torch、tensorflow等环境。这里又要分两种情况:1、这些环境所依赖的cuda全都是用conda自动安装在各自环境之中的。在这样的情况下,不清楚conda环境内的cuda是否和先前的nvidia驱动有依赖关系,如果没有的话,那只要安装一个能够兼容之前环境的nvidia驱动,那么就能够运行了;可是如果有依赖的话,那恐怕就得先安装一个nvidia驱动,然后再设置当前用户中的环境变量指向同样版本的手动安装的cuda了,当然这样的情况是有风险的。2、第二种情况是,他们所安装的环境都是依赖于系统中手动安装的cuda,在这种情况下,同样不知道这些手动安装的cuda是否依赖原先的nvidia驱动,如果不依赖的话,那也很方便,安装完nvidia驱动就可以直接运行了;如果不依赖的话,那完蛋。。还得重新手动安装cuda。

所以最为理想的情况是,在不卸载之前手动安装的cuda情况下,尝试重新安装nvidia驱动;次之的情况是安装完nvidia驱动之后,还需要手动安装一下cuda;最惨的情况就是即便手动安装了cuda,指定了环境变量还是没有效果。但根据先前尝试重新安装nvidia驱动的情况来看,会遇到不少相关的问题,其中一个问题的答案说可能就是先前手动安装的cuda与现在安装的nvidia驱动不匹配,导致安装不上。所以最佳的策略应该是先下载多个可能的驱动,逐个尝试一下能否直接安装。之前看服务器是Titan X的显卡,但是不清楚是Titan X_p、Titan X(Pascal) 还是GeForce GTX Titan_X,因此先将这三个显卡对应的nvidia驱动都先下载了下来。幸运的是Titan X_p和GeForce GTX Titan_X对应的显卡驱动是同一个,可以少试一个选项了。

接下来,若是安装Nvidia驱动的过程中都出现了问题,应当适当花一些时间去看看能不能解决,如果可以解决的话固然很好,安装完成后直接测试能够使用cuda,要是不能完成的话,可能就需要卸载cuda了,再安装Nvidia驱动了。

在卸载cuda前,务必要先看安装了哪些cuda,查询的方法是:

# 手动安装的cuda目录一般在这里

/usr/local

# 在conda环境中的torch中查询cuda、cudnn的版本

print(torch.version.cuda)

print(torch.backends.cudnn.version())

务必要记得所卸载的手动下载的cuda

考虑最坏的情况,先卸载手动安装的cuda、再安装nvidia驱动、最后手动安装cuda、cudnn:具体的步骤如下:

1、卸载手动安装的cuda

#卸载nvidia驱动

## 首先ctrl+Alt+F2进入命令行状态,然后停止lightdm

sudo service lightdm stop

##或者

sudo /etc/init.d/lightdm stop

##卸载命令位置/usr/bin/nvidia-uninstall,以下命令即可卸载。

sudo /usr/bin/nvidia-uninstall

## 或者

sudo apt-get autoremove --purge nvidia*

#卸载手动安装的cuda,这里以cuda-8.0为例,具体要看服务器的文件夹

sudo /usr/local/cuda-8.0/bin/uninstall_cuda-8.0.pl

#重启

2、安装nvidia驱动

# 禁用内核

sudo vim /etc/default/grub

添加如下,结果如下所示:

GRUB_CMDLINE_LINUX_DEFAULT="modprobe.blacklist=nouveau"

#重新生成配置

sudo grub-install

#坚持是否禁用成功

lsmod | grep nouveau

重启

reboot

#给驱动程序增加可执行权限

chmod a+x <显卡驱动安装程序>.run

#运行显卡驱动程序

sudo ./NVIDIA-Linux-x86_64-418.56.run -no-x-check -no-nouveau-check -no-opengl-files

运行的过程中,依次选择:Continue installation、No、Ok、Yes、Ok

重启

3、安装cuda、cudnn

#关闭图形界面

sudo service lightdm stop

chmod 777 .run

#运行安装程序

sudo sh .run

安装cuda过程中不要安装driver

#判断是否安装成功,如果有/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm 这三个文件的话,则安装成功

ls /dev/nvidia* 

#将对应版本的cudnn文件放入cuda中

sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include

sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64

sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h

sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*

#查看cudnn 版本

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

# 最为重要的是根据该账户下的conda环境需要,为不同账户配置不同的cuda环境变量

# 修改文件

sudo vim ~/.bashrc

# 在最后一行添加

export CUDA_HOME=/usr/local/

export PATH=/usr/local//bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local//lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

# 刷新环境变量

source ~/.bashrc

#测试cuda

进入/usr/local/cuda-10.1/samples/1_Utilities/目录

cd deviceQuery

sudo make

#有输出则表示安装成功

./deviceQuery

重启、完工~

你可能感兴趣的:(服务器重装Nvidia驱动Cuda步骤)