ubuntu16.04下安装cuda9.0+nvidia-384+cudnn7.1.4+tensorflow1.9。

本机配置:i7-8700 GTX1070。经测试,本方案在i7-9700K 泰坦XP上也适用:

在安装之前首先感谢实验室师弟写的博客,但是写的估计有点乱,为了实验室以后装cuda这些东西方便一些,这里配上图,改进了一下之前师弟写的教程,更易懂一点:

1.安装nvidia-384:

进入软件更新,附加驱动,选择nvidia-384,之后点击右下角的应用更改,然后输入密码,等它安装:

安装成功之后会提示我们重启:

然后我们选择重启。

重启之后我们进入终端,输入命令:

nvidia-smi

如果能显示出下图类似的信息,则说明安装成功了:

2.检查相关环境配置:

在安装之前我们先更新一下,具体操作如下所示:

之后:

可能需要更新一些东西,我们输入y,然后回车就可以啦。之后系统就会自动下载更新一些东西。装完之后我们会显示如下信息:

就是不报错就可以了,我们接下来做一些测试:

1.验证自己的电脑是否有一个可以支持CUDA的GPU:

你可以在电脑的配置信息中找到显卡的具体型号,如果你是双系统,在windows下的设备管理器中也可以查到显卡的详细信息;在ubuntu下面的话,你可以通过下面这行命令来简单查看一下NVIDIA GPU版本信息:

lspci | grep -i nvidia

2.验证自己的linux版本是否支持CUDA:

uname -m && cat /etc/*release

3.验证系统是否安装了gcc

gcc --version

其实这个刚装完系统的话应该都装好了,但是为了保险起见,你还是可以查看一下,如果你没有安装的话,你可以采取下面的命令对其进行安装:

sudo apt-get install build-essential

4.验证系统是否安装了kernel header和package development:

a.查看正在运行的系统内核版本:

uname -r

b.安装对应kernel版本的kernel header和package development:

sudo apt-get install linux-headers-$(uname -r)

这个的话表示系统中已经有了,不用重复安装。

如果以上各项检查均满足要求的话,接下来就可以正式地进入安装界面了,如果有些地方没有满足要求的话,你需要参考cuda的官方文档,里面有详细的针对每个问题的解决方案。在以下链接中可以找到:https://docs.nvidia.com/cuda/

3.安装cuda:

我们首先进入nvidia的官方cuda9.0下载网页https://developer.nvidia.com/cuda-90-download-archive

我们按照上述方案进行选择,之后选择下载Base Installer。下载完成之后的话,我们会在ubuntu的下载目录下找到:

但是我一般将其安装在home文件夹下面,所以我需要将其复制到home文件夹下面:

之后的话,我们可以采用MD5检验序号,看看序号是否会对得上:

cuda_9.0.176_384.81_linux.run

可以看到这里的版本是对到的,那么没有什么问题,一切都很正常。接下来的话,我们需要采用runfile安装cuda:

1.禁用nouveau驱动:

lsmod | grep nouveau

可以看到,我的电脑是没有输出的。如果有输出的话则代表nouveau正在加载,我们需要手动禁止掉(由于我的电脑是已经被禁止掉了的,所以下面禁止的方法并没有试验过,大家慎重一点):

Ubuntu的nouveau禁用方法:

a、在/etc/modprobe.d中创建文件blacklist-nouveau.conf,命令如下:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

在文件中输入以下内容:

blacklist nouveau
            options nouveau modeset=0

b.执行命令:

sudo update-initramfs –u

之后再次查看是否禁止成功:

lsmod | grep nouveau

若无内容输出,则禁用成功,若仍有内容输出,请检查操作,并重复上述操作。

2.按Alt + ctrl +F1进入命令行界面:

输入自己的用户名以及密码:

这里的话会显示中文乱码,我们可以下载一个包来解决这个问题:

sudo apt-get install fbterm

之后启动它:

sudo fbterm

然后我们进入zhiqianghe这个用户(每个人设定的不同):

su zhiqianghe

得到下面的界面:

之后我们关闭图形化界面:

sudo service lightdm stop

之后我们再切换到我们cuda文件的位置,在我这里就是在当前目录下,然后我们运行它:

sudo sh cuda_9.0.xx_xx_linux.run

对应自己的文件名称。之后我们进入nvidia的协议里面,需要我们看他的协议:

我们敲回车,敲到100%

之后它显示问我们是不是接受这个东西,我们在终端输入accept。

然后提示是否安装nivdia的驱动,我们不需要安装这个,输入n,之后敲回车:

遇到提示是否安装openGL ,选择no(如果你的电脑跟我一样是双显,且主显是非NVIDIA的GPU在工作需要选择no,否则可以yes),其他都选择yes或者默认即可。(如果您的电脑是双显卡且在这一步选择了yes,那么你极有可能安装完CUDA之后,重启图形化界面后遇到登录界面循环问题:输入密码后又跳回密码输入界面。 这是因为你的电脑是双显,而且用来显示的那块GPU不是NVIDIA,则OpenGL Libraries就不应该安装,否则你正在使用的那块GPU(非NVIDIA的GPU)的OpenGL Libraries会被覆盖,然后GUI就无法工作了。)

安装成功后,会显示installed,否则会显示failed。

之后我们重新启动图形化界面:

sudo service lightdm start

如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了。如果不能进入的话,参考以下方案,否则跳过:

如果你遇到了重复登陆情况,不用急着重装系统,官方教程上有提及,原因上一步的注中有提及,在安装openGL时你可能不注意选择了yes,请卸载cuda,然后重装。
卸载:由于登陆进入不到图形用户界面(GUI),但我们可以进入到文本用户界面(TUI)

在登陆界面状态下,按Ctrl + Alt + f1,进入TUI
执行
$ sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl
$ sudo /usr/bin/nvidia-uninstall
然后重启
$ sudo reboot
重新安装.run   再次安装时请一定留意,在提示是否安装OpenGL时,你的是双显卡应该选则n。
 

进入ubuntu之后我们重启电脑:

sudo reboot

之后检查Device Node Verification

ls /dev/nvidia*

包含一个类似/dev/nvidia-uvm的,则安装成功。

大多数结果可能会是这样
ls: cannot access/dev/nvidia*: No such file or directory
或是这样的,只出现
/dev/nvidia0     /dev/nvidiactl
a中的一个或两个,但没有/dev/nvidia-num,即文件显示不全。
不用着急也不用急着重装系统(我在安装时就是这种情况),官方指导中有详细的解决方案,但是我的方法和官方稍微有些出入。

首先要添加一个启动脚本(添加启动脚本的方法大致有两种,我采用最直接的方法,另一种可以先创建一个文件然后通过mv的方式移动到启动文件夹下,可自行百度)
执行
$ sudo vi /etc/rc.local
如果你是第一次打开这个文件,它应该是空的(除了一行又一行的#注释项外)。这文件的第一行是
#!/bin/sh -e
把-e去掉(这步很重要,否则它不会加载这文本的内容)
然后把下列内容除了#!/bin/bash外复制到其中,(before exit 0 )保存退出。

#!/bin/bash
/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目录下的三个nvidia的文件
输入:$ ls /dev/nvidia*
结果显示:/dev/nvidia0       /dev/nvidiactl       /dev/nvidia-uvm

成功!
 

由于我这里是一次成功,所以上述方案仅供参考,并没有实践过。

接下来我们设置环境变量:

sudo gedit /etc/profile

上述命令会打开一个文件,我们在末尾添加两行:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
                                                   ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

我这里装的是cuda9.0如果你们装的不是的话,这个cuda-9.0这个目录就还得改一下。

如果是32位系统的话:

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

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib\
                                                   ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

之后我们选择重启电脑:

sudo reboot

a.之后我们检查上述环境是否设置成功:

cat /proc/driver/nvidia/version

得到上述结果。

b.再验证CUDA Toolkit:

nvcc -V

得到下图结果:

如果你的是:

The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit

这样的话,那就表明环境变量没有添加成功,你需要按照上文中说的添加环境变量,再去添加一下。

接下来我们尝试编译一下cuda的例子:

我们首先需要进入NVIDIA_CUDA-9.0_Samples这个文件夹下面,在这下面打开终端,然后make一下:

我这里的话也是一次就成功了,如果出现没有gcc报错的话,我们可以安装一下:

 sudo apt-get install gcc

如果编译成功,最后会显示Finished building CUDA samples,如下图所示:

之后的话,我们运行编译生成的二进制文件:进入到这个NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release文件夹下面,输入:./deviceQuery  

./deviceQuery  

结果如下图所示:看到类似如下图片中的显示,则代表CUDA安装且配置成功,其中 Result = PASS代表成功,若失败 Result = FAIL:

最后再检查一下系统和CUDA-Capable device的连接情况:

终端输入 : $

./bandwidthTest

看到类似如下图片中的显示,则代表成功:

4.安装cudnn:

我们需要进入nvidia的官网:https://developer.nvidia.com/rdp/cudnn-archive,区选择我们需要的版本:

然后提示我们登录,有帐号的话就登录,没有的话就注册一个:

之后我们点击上图的安装包进行下载:

我们将其解压,解压之后名称会变为cuda:

之后我们将其移入home文件夹下面,然后进入cuda的include文件夹下面,执行下面这个命令复制头文件:

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

之后在终端进入cuda/lib64文件夹下面,运行以下命令:

#复制动态链接库

sudo cp lib* /usr/local/cuda/lib64/ 

 #删除原有动态文件

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 

 #生成软衔接

sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7

#生成软链接

sudo ln -s libcudnn.so.7 libcudnn.so

随后需要将路径/usr/local/cuda/lib64 添加到动态库:

sudo gedit /etc/ld.so.conf.d/cuda.conf

在打开的文件里面输入:

/usr/local/cuda/lib64

终端下接着输入命令使链接生效:

sudo ldconfig

之后查看一下是否链接成功:

sudo ldconfig -v

可以看到,我们这里是有这个文件的。ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。

之后用下面这个命令查看是否安装成功:

5.安装Tensorflow:

我们首先看一下有没有python:

一般都有,没有的话安装一下:

之后安装一下pip:

sudo apt-get install python-pip

更新一下pip:

sudo pip install -U pip

安装tensorflow-gpu 1.9.0:

sudo pip install tensorflow-gpu==1.9.0

之后进入python输入以下命令:

import tensorflow as tf
print(tf.__version__)

猜你喜欢

转载自blog.csdn.net/weixin_39059031/article/details/83578317