ubuntu16.04/GTX1050+cuda9.0+cudnn+tensorflow_gpu

前言

本文适合

  1. 给第一次安装的人理清思路。
  2. 给与本人遇到的同样bug的人提供解决思路。
  3. 给正在安装的人提供更多的细节!!!
  4. 注意,本文不是一篇万能博客,里面大部分安装代码细节由于自己安装时一致reboot原因,没有记录,但是,代码是固定的,本人给出了相应参考的博客。
  5. 本文主要是写给第一次安装的同道中人的经验帖子。
  6. 如果你在安装,建议你看完整篇有点印象后再去一步一步对着执行,此定理适用于你安装时看到的所有博客,不然会吃亏的
  7. 本人CUDA安装时间(仅仅是CUDA) 上午:9.00—下午:17.35左右。
  8. 本人bug体附身…同样祝你好运。
本人安装信息汇总:
1. nvidia版本: 
2. cuda  9.0
3. cudnn 7.5.1
4. tensorflow-gpu == 1.8

精华介绍

本篇适用于本人电脑配置:

系统: ubuntu16.04
显卡: GEFORCE GTX 1050
其余信息下面验证里提到

​ 本篇是自己配置时的一个记录,解决的bug也都有保存,适合同样安装的人整理思路,个人根据惨痛的经验,先来帮你分析以下,整个过程在搞什么??大致说一下:

  1. 目的: tensorflow可以在gpu上跑。
  2. 第一步: 根据官网配置,仔细检验一波自己电脑的信息,不然后面遇到bug你会怀疑到毁天灭地,只有坚信自己选择的版本是跟配置信息是对应的,不是gcc版本,内核,系统结构等等的锅,你才有信心去改bug…而且也容易改,不然我见过那种安了好几天,结果回头是内核的原因…那只能恭喜你了。
  3. 这里提醒:整个流程最难搞的就是装cuda,不同配置再加上个人的粗心和手误,你一定不会顺风顺水(除非欧皇或大佬),一定保证每一步都对,你才会把bug的范围缩小。
  4. 第二步:首先这里你要面临一个选择(个人翻了好多博客才理清出这个思路):你是自己安装nvidia的驱动 or 在安装cuda时让它自己安装。安装cuda时它会让你accept很多东西,yes很多东西,里面有有一项就是对应nvidia驱动,很明显,你可以自己安装,也可以让它安装。个人在让它默认安装时出现了bug,所以最后只好自己找对应版本手动安装(当然,认识到这一点是因为翻了好多的博客,因为那个bug我只知道是nvidia的bug,其他一概不知)。
  5. 再提醒一点:cuda,nvidia驱动,tensorflow-gpu的安装方式不止一种!!!,个人这里依据(自己的情况+博客的经验帖子+官方推荐)选择。(当然更多情况是bug原因,不得不屈服)
  6. 真正开始的第一步(本人是手动安装nvidia驱动,所以这是我的第一步):安装了nvidia驱动,当然这里也有很多bug,见下文。
  7. 安装cuda,并设置对应的环境变量。
  8. 检验cuda(很重要的,基本这里过了,后面很容易的)
  9. 安装cudnn(其实就是复制操作)
  10. 检验cudnn(也很重要)
  11. 安装你要的框架(tensorflow等那些框架)

卸载原有cuda

​ 个人的原因:不知道什么原因,电脑里有一个cuda…可能是谁用我电脑是安装过…这里还好看了一下,首先卸载了原来旧版本的cuda

参考:

1.https://blog.csdn.net/jacke121/article/details/55061833

2.https://blog.csdn.net/FIELDOFFIER/article/details/54017297

卸载cuda

1. 注意cuda文件的名称,可别自己直接复制   
cd /usr/local/cuda/bin
sudo ./uninstall_cuda_7.5.pl

注:会说你...失败,其实就是没删干净
2.
重启
3. 没删干净的删了
sudo rm -r cuda-7.5

卸载nvidia驱动

最开始自己有一个驱动,但最开始以为nvidia驱动会影响cuda安装,就傻的删了,版本都没检查…

sudo apt-get install autoremove --purge nvidia*

检验电脑信息

这里无非是对着官方教程和博客,把自己的电脑信息总结一遍,用以筛选CUDA版本。

强推官方教程:

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions

个人参考的博客:

https://blog.csdn.net/QLULIBIN/article/details/78714596

你可以对照这食用下面的内容:

1. 检查GPU信息

注意说明:前面说了我最开始有nvidia的驱动,所以这里用了驱动的命令,你也可以自己另外找,很多的,但是思路是这样。

(命令参考:https://blog.csdn.net/dcrmg/article/details/78146797)

nvidia-smi

±----------------------------------------------------------------------------+
| NVIDIA-SMI 384.130 Driver Version: 384.130 |
|-------------------------------±---------------------±---------------------+
| 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 1050 Off | 00000000:01:00.0 Off | N/A |
| N/A 42C P0 N/A / N/A | 365MiB / 2001MiB | 0% Default |
±------------------------------±---------------------±---------------------+

官网查找是否支持:(https://developer.nvidia.com/cuda-gpus)

在这里插入图片描述

2. 检验Linux版本,带有gcc编译器和工具链

2.1 检查系统版本

uname -m && cat /etc/*release

x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION=“Ubuntu 16.04.1 LTS”
NAME=“Ubuntu”
VERSION=“16.04.1 LTS (Xenial Xerus)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=“Ubuntu 16.04.1 LTS”
VERSION_ID=“16.04”
HOME_URL=“http://www.ubuntu.com/
SUPPORT_URL=“http://help.ubuntu.com/
BUG_REPORT_URL=“http://bugs.launchpad.net/ubuntu/
UBUNTU_CODENAME=xenial

2.2 检查内核

(https://www.cyberciti.biz/faq/command-to-show-linux-version/)

cat /proc/sys/kernel/{ostype,osrelease,version}

Linux
4.4.0-31-generic
50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016

2.3 查看gcc版本

gcc -v

gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11)

2.4 GLIBC

getconf GNU_LIBC_VERSION

glibc 2.23

至此,对应官方文档配置都满足,见下:

在这里插入图片描述

3 验证kernel header和 package development

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

正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
linux-headers-4.4.0-31-generic 已经是最新版 (4.4.0-31.50)。
linux-headers-4.4.0-31-generic 已设置为手动安装。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 311 个软件包未被升级。

安装(runfile)

下载安装包

下载链接:

https://developer.nvidia.com/cuda-toolkit-archive

个人依据配置选择版本: 9.0 (CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本)

下图为选择的信息:

在这里插入图片描述

下载后检验(同样重要):

检验信息查询网址:

https://developer.download.nvidia.cn/compute/cuda/9.0/Prod/docs/sidebar/md5sum.txt

命令检验

md5sum cuda_9.0.176_384.81_linux.run
7a00187b2ce5c5e350e68882f42dd507  cuda_9.0.176_384.81_linux.run

在这里插入图片描述

————————————检查通过——————————

nvidia驱动

前言

  1. 个人卸载原有cuda和nvidia驱动后,安装cuda没有成功,报了一个错,大致意思是:libglvnd不完整覆盖错误。
  2. 意味我的电脑cuda自动下载nvidia驱动是不行,所以需要自己重新下载驱动。

自我洗脑:

静下心来,等待bug…不论你参考的教程是什么,因为配置,个人粗心,操作失误等等原因,你会碰到很多bug…个人给你的建议是,不要怕报错,一定记录好自己的报错是什么,这些报错信息是很有用的。

安装

本人尝试了两种安装方式

1.使用官方的NVIDIA驱动进行手动安装

2.使用PPA仓库进行自动化安装:

第一种: 本人最后由于gcc版本对应不上的原因无法安装(但是cuda9.0要求就是我电脑的gcc版本,说明我可能选错nvidia安装包了…最后放弃了这种方式)

第二种: PPA方式成功(由于安装过程个人没有记录步骤(一直在rebboot),只能依据个人回忆把上面两个步骤的bug给写下来)

第二步个人成功参考博客

https://blog.csdn.net/u013082989/article/details/83382230

  1. 这里型号选择:其他版本试了试没正常安装,查找个人电脑nvidia驱动对应版本号 (430.40),但是仓库里没有,所以这里选用410,然后突然就成功了…
  2. 安装成功注意重启,安装完没有报错直接运行nvidia命令不成功也可能是没有rebbot

第一种方式个人碰到的bug

  1. Ctrl+f1进入文本命令行,别上去就输入命令,需要账户密码登录。

  2. 最开始能账户密码登录进去,但是突然不能了…所以就是:

    Ctrl+f1进入文本命令行后 账户密码登录不进不去

    (解决:https://blog.csdn.net/log_zhan/article/details/52085320 看完我简直是woc…,我重启了n次,一度怀疑自己密码错了…)
    1)大小写键盘问题,Ubuntu不认小键盘,所以一定要关掉NumLock,使用字母键盘上面的数字按键进行输入。

    2)用一位大神说的话,Ubuntu和你,我更相信Ubuntu,无论怎样的原因,反正出现login incorrect基本上问题的本质是要么密码错了要么账户错了。

  3. lightdm报错 badline。

    (解决:https://askubuntu.com/questions/290884/blacklist-conf-ignoring-bad-line-boot-prompt)

    原因:自己在往文件里粘贴下面两行代码时,不知道为什么ubuntu默认前几个没粘进去,所以出了错,如下:

blacklist nouveau  
options nouveau modeset=0 

​ 在直接复制粘贴到文件里是不全的 blacklist变成了cklist,这个问题导致报的上面那个错,并且这个错很恶心,在文本命令行页面,lightdm这个关键字一输入就黑屏…只能reboot,这也是我每没记录下自己操作的原因。

  1. 运行:

    sudo sh NVIDIA-Linux-x86_64-390.25.run –no-x-check –no-nouveau-check –no-opengl-files
    报错:大致意思是 gcc版本过高…,我本机的gcc肯定不能改(因为我都对应好cuda9的要求的,只能是这个安装包不对…自己不想找了,准备试试偷懒的方式,所以有了第二种方式安装)

安装cuda

说明

​ 本人因为安装时经常出错和reboot,自己安装的所有命令没有记录全,不想写一篇有错的博客,所以基本上简单的命令的有,个人主要理清出大致框架和基本的细节,命令可以参考我参考的博客。

​ 本人参考的博客,摘了两个参考较多的,这两篇基本思路一样,但是有很多细节不一样: 互为补充:
(https://blog.csdn.net/sinat_24143931/article/details/78690059)
(https://blog.csdn.net/QLULIBIN/article/details/78714596)

对照推荐链接食用下文:

安装cuda

个人依据回忆写几个关键点的步骤:

  1. cuda选好类型,下载(对应上面那个下载后md5检验的操作)。
  2. 建议:把下载包放到home路径下(比较好找),文件可以重命名为一个简单的名字。因为反正我tab键自动补充不了这个文件名,还得自己打。
  3. 禁用nouveau驱动。
  4. 进入文本模式登录(建议reboot后,进入登录界面不登录,而是按ctrl+alt+f1进入文本登录模式,当然只是建议,因为可能会因为这个出错)
  5. 简单说一下,文本登录模式。进入需要:ctrl+alt+f1(当然,f2,f3…都可以); 退出:(ctrl+alt+f7)(前提:如果你sudo service lightdm stop了,没有sudo service lightdm start,那你是回不来的); 登录:进入后需要账户密码登录,就是那个log标志,建议一定root账户登录(你可能会由于密码错误等不进去,大概率是和我一样,ubuntu这里不支持小键盘输入,用大键盘上面的数字就行);最后其实这就是一个命令行界面的放大版。
  6. 登录成功后,关闭图形化界面sudo service lightdm stop
  7. 切换到cuda安装文件的路径
  8. sudo sh ××××××.run --no-opengl-libs 跑下载的,改好名字的run文件,后面是安装时忽视这某些东西,我参考的博客这样写的,我觉得我和它一样,也就这样写了,当然,大部分博客都是直接 sudo sh ××.run
  9. 第一次会等待一分钟左右,耐心。
  10. 接着你会进入第一个界面,这里比较坑,它有个进度条,你需要一致摁回车键(它才会开始动…大致是一个安装介绍,我最开始以为是自动的…)
  11. 接着是一堆让你 自己输入 accept或者yes选择安装哪些插件,这里一定要注意!!!
  12. 首先,如果你自己安装了nvidia驱动,大约第二个左右是一个关于nvidia的东西,就是让你选择是否安装这个驱动,你需要输入:n,否则就y。
  13. 注意,不要一路顺丰的yes和accept,一定不要,多看几篇和你配置一样,安装版本一样等等的博客,看他们accpet了哪些或者yes了哪些,虽然我没在这里出问题,但是我看得博客,每一个在这里都不太一样,所以我基本就是看完后,自己思考后,才 accept和yes的。
  14. 如果错了也别慌,一定要记清楚自己的报错,按照前文卸载内容,卸载了,找到报错原因后,重新状就完事儿了。
  15. 安装完成后输入重启命令重启:reboot
  16. 配置 CUDA 环境变量
  17. 配置完后,一定要,使该配置生效:source ~/.bashrc
  18. 这里安装完了,但是还要验证 CUDA是否安装成功:编译/运行编译文件/检验连接情况,如下图:

正常编译例子(挺慢的)

(个人的图忘了保存…但是都出现了finished,里程碑式撒花)

在这里插入图片描述

编译结果

编译后的二进制文件 默认存放在NVIDIA_CUDA-9.0_Samples/bin中。
接着在上一个终端中输入 :$ cd /home/lxxx/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release 其中xxx是你自己的用户名
然后在终端输入 :$ ./deviceQuery

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

在这里插入图片描述

连接状况

./bandwidthTest

在这里插入图片描述

----------------------------------成功撒花-----------------------------------------


cudnn篇

安装(或者说:复制)

下载链接:(需要注册登录,自己对应cuda版本自行选择即可,个人选择的对应cuda的最新的cudnn版本)

https://developer.nvidia.com/rdp/cudnn-archive

强烈建议参考官方教程:

https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

经验分享:

  1. 到cudnn,就简单了。cudnn没有安装一说,简单来看就是复制粘贴,当然安装完一定要注意检验。
  2. 补充一句,可能有小白问每一个版本下面都有很多文件,我到底下载哪一个…以我下载的那个版本来说,本人ubuntu16.4系统,见下图:标蓝部分,第一个是对应的cudnn压缩文件,解压复制等操作后(见上面官方教程)意味着你cudnn弄好了,但是还要检验cudnn是否能正常用,所以用到了下面的那三个deb。
  3. 具体怎么安装看官方教程(个人认为官方教程是最简介明了的,博客只是在你实在看不懂时,对比参考帮你理解官方的)
  4. 这里我见到有用什么软链接的,见到官方的,好多种,最后我以官方的为标准。
  5. 如果你参考其他博客,一定注意他们的版本信息(因为他们命令里会夹杂很多带有版本信息的文件名,不仔细看你会哭的)
  6. 当然,弄好后也要检验。

在这里插入图片描述

检验

注意,在检验cudnn检验的时候,

输入:make clean && make(会出来下面的结果)

[外链图片转存失败(img-lIiE5Hto-1564651457013)(/home/lixiang/.config/Typora/typora-user-images/1564622508889.png)]

再: ./mnistCUDNN (才会验证,当然也可以用limux命令与起来…最开始make完以后的输出让那个我一度以为自己安错了)

在这里插入图片描述

------------------------------------再次撒花--------------------------------------

tensorflow-gpu安装

cpu和gpu

​ 首先个人特别想弄清楚tensorflow-cpu和gpu之间兼容的问题,所以找了篇博客看了看,看完后决定删除原有的cpu版本,只留gpu版本。

[1]关于tensorflow gpu版和cpu版网上说的容易混淆的一点

https://blog.csdn.net/huangx06/article/details/78835360

安装参考

  1. 虚拟环境安装:

https://blog.csdn.net/qq_35976351/article/details/79325476

  1. pip安装:

https://blog.csdn.net/dcrmg/article/details/79606674

虚拟环境安装

注意:本人没成功,报错了

安装pip和Virtualenv
sudo apt-get install python3-pip python3-dev python-virtualenv
创造一个虚拟的Python开发环境:
sudo virtualenv --system-site-packages -p python3 ~/tensorflow

没有一帆风顺,报了很长的错:(截了一部分)

[外链图片转存失败(img-ytjchGok-1564651457013)(/home/lixiang/.config/Typora/typora-user-images/1564625750567.png)]

最后感觉好麻烦,我就删库跑路了:

(“删库代码”参考: https://github.com/interbrite/letsencrypt-vesta/issues/46)

apt-get purge python-virtualenv python3-virtualenv virtualenv

pip安装

参考:https://blog.csdn.net/MahoneSun/article/details/80809042#commentBox

决定选择:1.8版本tensorflow-gpu

sudo pip install tensorflow-gpu==1.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完查看:

pip show tensorflow-gpu

在这里插入图片描述

代码验证

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

出来一堆信息,我觉得是安装成功了:

2019-08-01 16:06:11.214597: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-08-01 16:06:11.369117: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:898] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-08-01 16:06:11.370581: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1356] Found device 0 with properties:
name: GeForce GTX 1050 major: 6 minor: 1 memoryClockRate(GHz): 1.493
pciBusID: 0000:01:00.0
totalMemory: 1.96GiB freeMemory: 1.47GiB
2019-08-01 16:06:11.370614: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0
2019-08-01 16:06:11.566039: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-08-01 16:06:11.566093: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929] 0
2019-08-01 16:06:11.566107: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0: N
2019-08-01 16:06:11.566284: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1229 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1)
Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1
2019-08-01 16:06:11.573855: I tensorflow/core/common_runtime/direct_session.cc:284] Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1

—————————虽然没有跑大量代码,但是我jio的我是成功了——————————

END

静下心来,祝你成功。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值