centos7使用tensorflow-gpu

一、安装显卡对应的驱动
1.查看显卡信息
lspci | grep -i vga(-i,ignore)

查看显卡信息.png

2.下载显卡驱动的安装文件,访问官网http://www.geforce.cn/drivers
根据显卡型号进行选择,我的显卡在GeForce 10 Series中,如果不知道这个选啥,可以一个一个试一下,选好这个之后,才能在下个下拉列表中找到显卡型号,选择好之后,如下图
选择显卡型号.png

点击开始搜索
选择显卡驱动.png

选第一个最新的就行,点击,会跳转至下载页面,鼠标放在立即下载按钮处,网页左下角会出现下载地址
下载命令wget https://us.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run
3.安装编译环境
sudo yum -y install gcc* kernel-devel epel-release dkms 这一步需要注意的是,kernel,kernel-devel,kernel-headers版本必须保持一致,所以可以直接下载和kernel版本一致的kernel-devel和kernel-headers;但是如果直接执行了命令,导致三者版本不一致,可以这样做,来升级内核版本:
1)升级小版本(比如会从3.10.0-1127.el7升级到3.10.0-1127.10.1)
sudo yum list kernel 查看一下最新的小版本是不是和上一步安装的kernel-devel和kernel-headers一致
sudo yum update -y kernel 是的话,执行这一步
2)大版本升级(如果大版本就不一致,则先需要按下面升级大版本):
在这个网址找到对应版本:http://mirror.centos.org/centos/7/os/x86_64/Packages/
下载大版本 wget http://mirror.centos.org/centos/7/os/x86_64/Packages/kernel-3.10.0-1127.el7.x86_64.rpm
进行安装 sudo yum install kernel-3.10.0-1127.el7.x86_64.rpm
(然后如果上面安装的kernel-devel和kernel-headers还包含小版本号,那么就按1再进行小版本升级,直到保持三者一致即可)
补充:删除多余的内核版本(最开始装系统的那个内核版本可能删不掉,因为可能有一些依赖这个内核的东西已经安装了,所以可能会删不掉)
sudo rpm -e kernel-3.10.0-1127.el7.x86_64
4.屏蔽nouveau驱动(该驱动是系统自带的一个显示驱动程序)
sudo vim /etc/default/grub 在GRUB_CMDLINE_LINUX中添加rd.driver.blacklist=nouveau nouveau.modeset=0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg 生成配置
sudo vim /etc/modprobe.d/blacklist.conf 创建blacklist,将nouveau加入blacklist nouveau
5.重新建立initramfs image文件
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
dracut /boot/initramfs-$(uname -r).img $(uname -r)
6.重启(设置secure boot为disabled,不然后面的安装会出现要签名,提示语大致为The target kernel has CONFIG_MODULE_SIG_FORCE set, which means that it requires that kernel modules be cryptographically signed by a trusted key,出现这一步的话,网上找到个解决办法,但是没看懂,供参考哈https://blog.csdn.net/linxxx3/article/details/18620035),选择kernel版本进入系统。
这块禁用,我是惠普的台式机,按f10在安全那块,引导设置什么的,点击会提示一堆红色东西,没事,继续,然后看到安全引导,设为禁用就行了(中文的这个界面反倒一时半会没找着)
7.开机之后确认是否禁用了nouveau;进入字符界面
lsmod | grep nouveau
sudo init 3 (如果不行,sudo systemctl set-default multi-user.target
8.安装显卡驱动(后面那个参数表示,禁用NVIDIA默认的opengl界面,不然可能会影响安装之后的图形界面的分辨率)
sh NVIDIA-Linux-x86_64-440.82.run --no-opengl-files
安装过程中除了ok和accept之外,还有一个关于安装32-bit兼容库的选择,我选择no,yes应该也行的;另一个是安装驱动时不检查x服务的选择,选择no即可。
9.安装完成之后,检查驱动是否安装成功
nvidia-smi
测试驱动是否安装成功.png

二、安装tensorflow-gpu
我想要跑的那个代码readme上说的是tensorflow1.0,所以,我安装1的对应tensorflow-gpu版本,因为后面还要装Bazel,CUDA,cuDNN,所以查看它们的对应关系之后,我选择了tensorflow-gpu==1.13.1版本,对应关系网址:https://www.tensorflow.org/install/source#common_installation_problems

tensorflow-gpu&python&gcc&bazel&cudnn&cuda版本对应.png

检查一下gcc版本 rpm -qa | grep gcc gcc4.8
1.pip install tensorflow-gpu==1.13.1
2.安装bazel
cd /etc/yum.repos.d/
wget https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo
yum install bazel
3.安装CUDA,选择对应版本cuda10.0 https://developer.nvidia.com/cuda-toolkit-archive
cuda10.0->Linux->x86_64->CentOS->7->rpm,获取下载链接
wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64.rpm
sudo yum install cuda
4.安装cuDNN,这个下载需要登录帐号,因此在网页端进行了下载 https://developer.nvidia.com/rdp/cudnn-archive
注意版本号cuDNN v7.4.2[2018] for CUDA 10.0->cuDNN Library for Linux
tar -xzvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
cp cuda/include/cudnn.h /usr/local/cuda/include/
cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
添加环境变量

vim /etc/profile 
export PATH=$PATH:usr/local/cuda/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH 
export CUDA_HOME=/usr/local/cuda

5.在python中导入tensorflow,导入成功即表明可以使用
这一步出现了这个错,ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory
查看ll /usr/local/cuda-10.0/lib64/libcudnn* 果真没有,因此:
cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so libcudnn.so.7 (温馨提示:不管照着网上的什么教程,有让删除的,首先备份,保证操作可回溯)
sudo ln -s libcudnn.so.7.4.2 libcudnn.so.7 (注意这个7.4.2是自己下载的)
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig
之后重新测试导入,导入成功!

哈哈,接下来可以试一下跑代码的速度啦!
哦对,主思路参考链接:https://blog.csdn.net/num270710/article/details/89491711
但是我貌似比人家问题多多了
最后一步接近成功的导入错误解决的参考链接:https://blog.csdn.net/weixin_40298200/article/details/79420758
其余问题的解决,中间查了好多,链接可能暂时翻不到了......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342