Ubuntu16.04搭建GTX1080+CUDA9.0+cuDNN7.0.4+Tensorflow1.6.0环境

【NVIDIA官网又更新了驱动,我前两天出现了无限登录界面的问题,一开始以为是显卡驱动的原因,(后来发现是.Xauthority文件拥有者变成了root)就重新安了一次,现在的版本号如下:】

$ nvidia-smi  
Wed Apr 11 10:15:24 2018         
+-----------------------------------------------------------------------------+  
| NVIDIA-SMI 390.48                 Driver Version: 390.48                    |  
|-------------------------------+----------------------+----------------------+  
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |  
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |  
|===============================+======================+======================|  
|   0  GeForce GTX 1080    Off  | 00000000:01:00.0  On |                  N/A |  
| 21%   48C    P8    16W / 200W |    127MiB /  8111MiB |      0%      Default |  
+-------------------------------+----------------------+----------------------+  

+-----------------------------------------------------------------------------+  
| Processes:                                                       GPU Memory |  
|  GPU       PID   Type   Process name                             Usage      |  
|=============================================================================|  
|    0       911      G   /usr/lib/xorg/Xorg                           125MiB |  
+-----------------------------------------------------------------------------

更新于2018年3月20日

研究需要就买了块GTX1080,然后就重装了个Linux系统,选择的是Ubuntu16.04。

我自己在配置TF的环境过程中发现网上的教程基本都是17年8月份之前的,而NVIDIA官网更新异常的快,很多教程都不适用,我在安装过程中就很多次被坑,所以就记录一下我的配置过程。

菜鸡一只,仅供参考,希望后面的人少踩些坑吧。

一、安装GTX1080显卡驱动

n卡的驱动说难装也没有那么难装,就是有时候让人很崩溃。

1、在官网下载对应自己系统的驱动,选择自己对应的系统即可,我是64位Linux,版本号是390.42,下载为一个.run文件。


此处无法用apt直接下载更新,是因为apt源里的NVIDIA驱动是非常久远的版本了

2、打开终端,首先卸载一下之前安装的

$ sudo apt-get --purge remove nvidia-*  

3、打开blacklist:

$ sudo gedit /etc/modprobe.d/blacklist.conf  

在最后添加几行:

blacklist vga16fb  
blacklist nouveau  
blacklist rivafb  
blacklist nvidiafb  
blacklist rivatv 

这个地方容易出现的问题是明明把nouveau添加到了blacklist里,安装驱动的时候还是会出现这个错误,后面会讲解决办法。

保存退出。

【接下来是针对nouveau的双重保险】

这个时候在终端尝试一下

$ lsmod | grep nouveau  

如果没有输出,可以忽略下面这一段,直接开始安装1080的驱动,如果仍有输出,终端输入:

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

直接写入:

blacklist nouveau  
blacklist lbm-nouveau  
options nouveau modeset=0  
alias nouveau off  
alias lbm-nouveau off 

保存关闭,再尝试

$ sudo update-initramfs -u  
$ reboot  
$ lsmod | grep nouveau  

应该OK了,如果不OK,再往下看。

4、开始安装驱动,记住你的驱动的.run文件的下载路径和完整文件名(如果你的版本号和我的不同,请自行修改),注销账户,按Ctrl+Alt+F1进入命令界面,登入

$ sudo /etc/init.d/lightdm stop  
$ sudo init 3  
$ sudo /path/to/NVIDIA-Linux-x86_64-390.42.run -no-x-check -no-nouveau-check -no-opengl-files  
$ sudo /etc/init.d/lightdm start  

这里是关闭x server,nouveau和不下载opengl文件(我也不太明白是个啥),安装complete后用

$ nvidia-smi  

检查一下,出现这种大框框就表示安装驱动成功,会显示你的显卡信息

之后reboot一下就OK了

二、安装CUDA9.0

1、CUDA的安装比较容易,官网下载9.0版本,选择对应系统,请下载runfile


2、在下载文件夹终端输入(根据下载的文件名来)

$ sudo sh cuda_9.0.176_384.81_linux.run  

然后会有一串回车(不知道别人有没有遇到这个问题,有可能只是我一个人这样,一开始有一个非常长的introduction,类似于readme一样的说明需要一行行的敲回车看完,这种操作我还是第一次见,读完了这个文件就会回到终端命令行),确认就按回车。

有一个关键是会让你选择是否安装Graphics Driver for Linux-x86_64:XXXX版本,这个地方必须选择no!否则会覆盖之前的驱动。

3、安装完毕之后,声明环境变量,终端输入

$ sudo gedit ~/.bashrc  

在最后加上

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}}  

保存退出

$ source ~/.bashrc  

在profile中也输入上面两行声明

$ sudo gedit /etc/profile  

保存退出,reboot一下

4、验证驱动版本:390.42

$ cat /proc/driver/nvidia/version  
NVRM version: NVIDIA UNIX x86_64 Kernel Module  390.42  Sat Mar  3 04:10:22 PST 2018  
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)     

验证CUDA版本:9.0

$ nvcc -V  
nvcc: NVIDIA (R) Cuda compiler driver  
Copyright (c) 2005-2017 NVIDIA Corporation  
Built on Fri_Sep__1_21:08:03_CDT_2017  
Cuda compilation tools, release 9.0, V9.0.176  

5、还有可能遇到的问题是没有安装gcc或者gcc版本过高需要手动进行降级,都比较好解决,我好像没有遇到这种问题,如果出现个这两种问题手动解决一下即可,很简单的。

三、安装cuDNN

1、在官网下载,需要注册账号,目前提供的不同版本为:

我被这个cuDNN可谓坑的很惨,最开始下载了7.1.1 for CUDA9.0,跑程序的时候出现了

Loaded runtime CuDNN library: 7101 (compatibility version 7100) but source was compiled with 7040 (compatibility version 7000).  If using a binary install, upgrade your CuDNN library to match.  If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.  

我查阅了资料意识到是我的cuDNN版本过高了,于是又转头去下载7.0.4版本,来来回回卸载安装弄了好几遍,心态爆炸了很多次。话说回来,下载的是这个,得到的压缩包:cudnn-9.0-linux-x64-v7.tgz

2、因为我是修改cuDNN版本,所以还要卸载之前装的7.1.1,没装过的可以直接安装

$ sudo rm -rf /usr/local/cuda/include/cudnn.h  
$ sudo rm -rf /usr/local/cuda/lib64/libcudnn*  

3、官网下载的是一个后缀为.solitairetheme8的文件,修改一下即可

$ cp  cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.tgz  

4、在下载路径解压文件,复制到本地路径,这里解压出来的文件名比较重要,后面会要对照着看

$ tar -zxvf cudnn-9.0-linux-x64-v7.tgz  
cuda/include/cudnn.h  
cuda/NVIDIA_SLA_cuDNN_Support.txt  
cuda/lib64/libcudnn.so  
cuda/lib64/libcudnn.so.7  
cuda/lib64/libcudnn.so.7.0.4  
cuda/lib64/libcudnn_static.a  
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/  
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/  

5、到本地cuda路径,创建软连接,终端输入,这里的文件名就参照之前解压出来的文件名对照着写,就算和我下的不是一个版本也能搞定啦

$ sudo chmod +r libcudnn.so.7.0.4    
$ sudo ln -sf libcudnn.so.7.0.4 libcudnn.so.7    
$ sudo ln -sf libcudnn.so.7 libcudnn.so    
$ sudo ldconfig    

6、在本地cuda路径检测一下

$ ll  

出现cuDNN对应的版本号就证明安装成功啦

lrwxrwxrwx  1 root root        13 319 16:02 libcudnn.so -> libcudnn.so.7*  
lrwxrwxrwx  1 root root        17 319 16:02 libcudnn.so.7 -> libcudnn.so.7.0.4*  
-rwxr-xr-x  1 root root 287641664 319 16:00 libcudnn.so.7.0.4*  

四、安装Tensorflow-GPU版

我直接采用的pip安装,也是最简单最直接的安装方式,喜欢别的方式的可以在网上搜一下

之前安装过TF的需要先卸载一下

$ sudo pip uninstall tensorflow  
$ sudo pip install tensorflow-gpu   #for python2.7 GPU support  

之后在终端中测试一下

$ python  
import tensorflow as tf  

如果没有出现错误信息,就可以尝试跑程序啦

跑的时候会出现显卡的信息

2018-03-20 11:58:31.777375: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1212] Found device 0 with properties:   
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.7715  
pciBusID: 0000:01:00.0  
totalMemory: 7.93GiB freeMemory: 7.55GiB  

关于pip的安装这里就不再赘述,至此,整个环境就搭建好啦!


安装过程大概是NVIDIA显卡驱动纠结了两天,主要就是nouveau的禁用bug,cuDNN纠结了两天,主要是官网下载页面总是bug,一共花了三天。不过GTX1080提速还是很明显的,训练网络由原来的CPU耗时15分半变为现在的36秒。

本人才刚开始上手,后续如果有能一起交流的大神一块玩就太开心啦,第一次写博客,可能有很多问题,请各位不吝赐教!感恩!

参考文献:

1.http://blog.csdn.net/l297969586/article/details/67632608

2.http://www.52nlp.cn/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE-ubuntu17-04-nvidia-gtx-1080-cuda-9-0-cudnn-7-0-tensorflow-1-3

3.http://blog.csdn.net/eddy_zheng/article/details/52910249

4.http://blog.csdn.net/Lucifer_zzq/article/details/76675239

5.https://blog.csdn.net/weixin_41864878/article/details/79621210 2018.4.23

猜你喜欢

转载自blog.csdn.net/johinieli/article/details/80056815