ubuntu16.04 + tensorflow1.5-gpu + cuda9.0 +cudnn_tensorflow1.5是否使用gpu-程序员宅基地

近期,我们实验室开了一个新的方向,关于AI,随后,我开始学习tensorflow的一些知识,要使用该软件,首先要正确安装,尤其是用到gpu的时候,需要安装tensorflow的gpu版本,目前最新的版本是tensorflow1.5,cuda的最新版本是9.1,但是目前tensorflow只支持cuda9.0,因此,我们用的是tensorflow1.5-gpu和cuda9.0 。

我们的服务器安装的是ubuntu16.04 server版,个人喜欢ubuntu系统,因此,此后所有的命令行都是基于ubuntu系统写的,如果使用了其他系统,您可根据等价命令来完成操作。

另外,我们的迷你集群共有3台服务器,每台服务器配备有一个NVIDIA Tesla K80 计算卡。目的主要在于测试分布式系统的性能表现。

1、nouveau驱动去除。

首先,ubuntu系统中自带了公版显卡驱动,需要将其禁用,操作是:

(1) 在再modprobe.d文件夹下创建 blacklist-nouveau.conf

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

(2)在创建的文件中写入以下语句:

blacklist nouveau
options nouveau modeset=0
(3)更新一下,使其生效

sudo update-initramfs -u
(4)重启计算机,强制使blacklist生效

sudo reboot
(5)检查是否成功去除nouveau驱动

lsmod | grep nouveau

如图所示,当输入上述命令之后,没有任何显示,证明nouveau驱动已经被去除,可以开始NVIDIA的驱动安装工作。


如果是这样,表示没有去除成功,重复上述步骤。

2、NVIDIA驱动的安装

(1)、查看gpu是否被识别

lspci | grep NV


如果显示如上图所示,证明已经识别成功,有的机器可能会因为pcie的选项设置被禁用,所以,无法识别显卡,如果是那样,可以在bios中将对应项设置为enable即可。

(2)、但此时,显卡的驱动并没有安装,需要我们下载对应的显卡驱动。

 这里有几种方法,先说一种最为常规的方法,就是在官网上下载安装包,(官方下载:http://www.nvidia.cn/Download/index.aspx?lang=cn),在网页上选择自己服务器对应的系统版本,使用的显卡型号等,下载对应的驱动版本。如下图是我的选择


大家在上图可以看到CUDA Toolkit选项,其实如果你要用到该工具,在安装此工具的时候,就会让用户选择是否安装显卡驱动,这种方法在稍后的介绍中会介绍到,但总体来说,这一步比较简单,而且我采用的是在安装cuda的时候顺便安装了。

显卡安装成功后,输入命令:

watch -n 1 nvidia-smi
显示:


表示安装成功,如果显示 nvidia not found,表示需要重新安装驱动。

(3)安装cuda

我们选取的版本是cuda-9.0 。之所以使用cuda是因为当我们需要显卡去并行解决一些复杂的运算问题的时候,需要用到,而且安装tensorflow的时候,cuda是必须要的。在官网上下载即可。(https://developer.nvidia.com/cuda-90-download-archive?)


下载文件,可能要一个多G,下载结束后,安装即可:

sudo sh cuda_9.0.176_384.81_linux.run


这一步的意思就是是否安装显卡驱动,如果前面并没有安装,在这里可以选择y









安装成功以后,需要配置环境变量 :

vi ~/.bashrc
在文件中写入:

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

保存后,键入命令:

source ~/.bashrc
至此,环境变量配置完成。

检查cuda是否安装成功。可以将cuda文件夹下的samples复制一份出来。

sudo cp -r /usr/local/cuda/samples /samples
sudo cd samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

若显示如下信息,表示安装正常。


(4)安装cudnn

cudnn是在cuda标准下,对一些常用的神经网络操作进行优化,所以,建议安装一下。

首先,在官方网站上下载对应buda版本的cudnn版本(https://developer.nvidia.com/rdp/cudnn-download)。如图


因为我是适用的cuda9.0,所以,以上红色方框中的两个均可。


先将这四个文件都下载下来,后三个主要用来验证是否安装成功。将下载的第一个文件(压缩包)解压,然后将其中的库文件复制到安装目录下。

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
检查安装是否成功:

然后分别运行后三个文件,需要按顺序运行。

sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.5.15-1+cuda9.0_amd64.deb
但是下载后,这三个包名字是不太一样的,所以,有一个简单的方法就是,根据文件大小,先运行大的文件,再运行小的文件。
结束之后我们需要将几个文件复制到/usr/lib目录下,避免接下来的测试报错。

sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig 
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
本文所有的测试都是将相应的文件复制一份出来进行编译,这次也不例外
 sudo cp -r /usr/src/cudnn_samples_v7/ /HOME/cudnn_samples_v7
cd到/HOME/cudnn_samples_v7/mnistCUDNN目录下。

sudo make clean
sudo make
./mnistCUDNN
当结果中出现Test passed!时,表示安装成功。



(5)安装tensorflow。

sudo apt-get install python
sudo apt-get install python-pip python-dev

因为tensorflow基于python编写,所以python那一套东西肯定是需要的,很多linux系统是自带python的,但是,我的这个服务器版本比较干净,所以,需要自己安装,以上是安装语句。

tensorflow的安装比较简洁,相对而言符合google的风格,但是,由于墙的原因,下载速度让人着实不爽。

这里可以参考官方手册,一句命令即可搞定。这里推荐使用pip安装

sudo pip install tensorflow-gpu
sudo pip install upgrade

如果上述过程中,出现pip版本过低的情况升级就好,命令是:

python -m pip install --upgrade pip

如果按照上述方法安装tensorflow一定要写sudo,否则就哭吧,当然也可以在国内一些源上下载,例如:(https://pypi.python.org/pypi/tensorflow-gpu)或者(https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow-gpu/)

至此,等安装结束,tensorflow部署完毕。如图所示:


测试安装结果:


表示安装成功。








版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29592167/article/details/79257224

智能推荐

仿照jq的模式封装自己的一个路由东西_aplanmis-mall-程序员宅基地

文章浏览阅读105次。废话不多说,直接代码/*! * router JavaScript Library v1.1.0 for web * http://39.107.139.174:8084 * author huangjunfu * /aplanmis-project/aplanmis-mall/src/main/resources/static/mall/js/utils * * Date: 2019-07-12 T15:04 * update:2019-12-17 T14:48 * describe_aplanmis-mall

Linux上安装sqlserver2017-程序员宅基地

文章浏览阅读1.6k次。根据公司需求 需要在linux 上安装sqlserver数据库,已经安装了好长一段时间了,写的不好,但是我自己使用中确实没问题第一步:下载安装包wget https://packages.microsoft.com/rhel/7/mssql-server-2017/mssql-server-14.0.1000.169-2.x86_64.rpm第二部:解压安装包rpm -ivh mssql-...

codeblock配置调试器(debugger)_c++codeblocks debugger选择-程序员宅基地

文章浏览阅读2k次。codeblock配置调试器(debugger)1.settings-debugger settings-defaultExecutable path:添加Code Blocks\MinGW\bin中的gdb32.exe2.本身没有打开编译器的-g标志,具体:在setting->complier and debugger->global complier setting->..._c++codeblocks debugger选择

pip安装Python扩展库时下载的文件(如whl文件)存放于哪里的?_pip下载的whl包在什么路径-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏17次。我们在安装python第三方库(扩展库)时,经常遇到下载速度慢的问题,即使换了源也不行。好不容易下载到第三方库的文件(比如whl)后,我们可以把这些文件(比如whl)保存下来,然后可以发给同学、队友(团队开发时环境最好一致),还可以方便自己之后的重新安装。那pip安装python第三方库时的缓存路径在哪呢?在下面这个路径中:C:\Users\Administrator\AppData\Local\pip\cache\http如何找自己想要的?只有根据时间和大小…比如我于2022-06-14 09:_pip下载的whl包在什么路径

智能优化算法及其MATLAB实例读书报告_智能优化算法系列读书报告-程序员宅基地

文章浏览阅读1.4k次。第一章 概述受人类智能、生物群体社会性或自然现象规律的启发,人们发明了很多智能优化算法,主要包括:(1)遗传算法: 模仿自然界生物进化机制(2)差分进化算法: 通过群体个体间的合作与竞争来优化搜索(3)免疫算法: 模拟生物免疫系统学习和认知功能(4)蚁群算法:模拟蚂蚁集体寻径行为(5)粒子群算法:模拟鸟群和鱼群群体行为(6)模拟退火算法:源于固体物质退火过程(7)禁忌搜索算法:模拟人类智力记忆过程(8)神经网络算法:模拟动物神经网络行为特征大体可以分为以下五类:(1)进化类算法:遗传_智能优化算法系列读书报告

程序开发的心理研究——“以人为本”-程序员宅基地

文章浏览阅读796次。今天看到CSDN网友sunlen在BLOG中写的“程序开发的心理研究”,让我想起了Weinberg先生的著作——《程序开发心理学》 。在计算机界,还没有任何一本计算机方面的书,在初次出版之后,能够在长达25年的岁月中一直保持活力,而且这种活力到今天仍在继续。 《程序开发心理学》 是开创“以人为本”研究方法的先驱,它以其对程序员们在智力、技巧、团队和问题求解能力等方面独特的视角和敏锐的观察经受住了时

随便推点

HTML语句中宽度的单位,HTML_CSS中常用的单位,一、长度单位   长度单位 - phpStudy...-程序员宅基地

文章浏览阅读658次。CSS中常用的单位一、长度单位长度单位是Web页设计中最常用的一个单位。一个排列无序、杂乱无章的页面不可能给人们留下什么好的印象。于是,在设计的时候需要为元素的位置、尺寸精确地定义一些值,以使其达到预期的效果。CSS给予人们精确控制网页的能力,这一点为人们津津乐道。它允许人们定义外观、尺寸、空间及其他的样式。但是,CSS所给出的控制同时也是一个危险的东西,这不仅表现在设计者缺乏经验,更在于如何给出..._html em ex

shiro-会话管理(session管理)_shiro会话共享-程序员宅基地

文章浏览阅读2.2k次。shiro-会话管理(session管理)shiro自己实现了一套session管理体系可以在不借助任何web容器或servlet的情况下使用session。1.SessionManager(session管理器)、SessionDAO(实现session的增删改查)2.Redis实现Session共享3.Redis实现Session共享存在的问题代码:pom.xml文件中添加依赖 ..._shiro会话共享

【CSS3】transition与animation的区别_css3 animation和transition的区别-程序员宅基地

文章浏览阅读844次。animation :可以用 name 设置动画的名称,用 duration 设置动画完成的周期,用 timing-function 设置动画的速度曲线,delay 设置动画什么时候开始,iteration-count 设置动画播放的次数,direction 规定下一个周期是否逆向的播放,play-state 动画是否正在进行或者暂停,fill-mode 设置动画停了之后位置什么状态trans..._css3 animation和transition的区别

Context initialization failed 的错误解决方案-程序员宅基地

文章浏览阅读6.8w次,点赞4次,收藏14次。错误主要是jdk版本出现问题,博主也出现过这样的错误。当时使用的是jdk1.8一直报错,百度也没有效果。最终找到了答案,分享给大家。通过configure build path 换了jdk版本1.7,同时也要讲java compiler 改成jdk1.7 不然会报不匹配的错误。..._context initialization failed

HTML运行到浏览器自动刷新,web前端开发之热加载—liveReload(浏览器自动刷新)...-程序员宅基地

文章浏览阅读926次。今天主要写一下,如何配置,保存前端代码后,浏览器自动刷新的功能,双屏操作,真的会方便很多,对于前端开发来说,一边写样式,一边看效果,爽翻~图片发自简书App一、开发环境1.电脑系统:mac2.代码编辑器:sublime text 33.项目框架:最简单的前端项目,html+css+js(最多用下jq)4.浏览器:chrome5.热加载:liveReload二、配置步骤好了现在就可以开始一步一步的配..._复制的html代码在浏览器打开不停的刷新