TensorFlow2.1不区分CPU版和GPU版,直接conda命令安装就能支持gpu,当然也可以只安装gpu版
conda install tensorflow # 默认安装2.1.0版本
conda install tensorflow-gpu=2.1 # 安装gpu版的TensorFlow2.1
服务器版本:
CentOS Linux release 7.2.1511 (Core)
服务器当前显卡驱动版本:
NVRM version: NVIDIA UNIX x86_64 Kernel Module 381.22 Thu May 4 00:55:03 PDT 2017
GCC version: gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
显卡信息:
在conda中新建环境安装TensorFlow2.1后,安装cudatoolkit和cudnn,版本:
tf检测GPU是否可用结果为False:
import tensorflow as tf
print(tf.test.is_gpu_available())
结果显示没有报错信息:
应该是显卡驱动太老导致的不可用
对应版本信息:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
版本对应关系:https://tensorflow.google.cn/install/source#linux
更新显卡驱动版本为400.100后查看显卡信息时,安装了一个10.2版本的cuda
但是使用命令查看cuda版本时,显示的还是旧版本的,应该是因为没有修改环境变量导致的:
原因未知,这时候试了一下tensorflow是否能用,结果是不能,应该是cuda版本没有对应上。
cudnn7.6版本
【安装cudnn时遇到的坑】
安装命令:
`sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.105-418.39-1.0-1.x86_64.rpm`
`sudo yum clean all`
`sudo yum install cuda`
第一次安装cudnn时遇到了Error3的错误,读了一下报错信息发现缺少一个依赖:vulkan-filesystem
下载安装vulkan-filesystem-1.1.73.0-1.el7_.noarch.rpm后,再次安装cuda,
注意这个时候,一定要yum clean all再执行yum install cuda安装,否则会报错。
再次安装的时候遇到Erro4的错误,截图如下:
分析后是旧版本的显卡驱动版本导致的冲突,所以卸载之前的旧版本NVIDIA显卡驱动,老的显卡驱动是通过yum安装的,通过yum的方式来删除旧版本驱动,如果是.run安装的,则可以用./包名.run --uninstall来卸载。
yum卸载旧版本驱动的方法:
rpm -qa|grep -i nvid|sort
rpm remove 要卸载的包
卸载旧版本驱动后,再次yum clean all,然后重新安装,cuda。
成功!
安装成功后,查看显卡配置信息,发现cuda会自动降级显卡的驱动版本,从440版本降级到了418版本,这是与版本对应表中对应上的版本号(但是版本对应表上明明写的是>=这个版本啊=、=)
这时还没有安装cudnn,但是在python中运行tensorflow2的检查显卡命令就已经显示GPU状态为可用了,并检出了8块显卡。
不知道是不是新版本的缘故,在安装完cuda后,没有配置cuda的环境变量。
【安装cudnn】
安装命令
# 解压
tar -xzvf cudnn-10.1-linux-x64-v7.6.4.38.tgz
# 复制到cuda下
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*
cudnn的安装没有遇到什么坑,安装成功后的截图如下:
【升级gcc版本】
安装后发现为什么gcc版本没对应上也成功了。。。。。,还是吧gcc升级了吧,当前gcc版本是4.8.5 ,tensorflow2.1的要求是7.3.1,那就升级一下吧。
为什么gcc库中没有7.3.1版本???
下了个7.4.0版本的看看好用不
安装过程:
# 下载
wget http://ftp.gnu.org/gnu/gcc/gcc-7.4.0/gcc-7.4.0.tar.gz
# 解压
tar zxf gcc-7.4.0.tar.gz
#到解压目录中
cd gcc-7.4.0
#安装依赖插件
./contrib/download_prerequisites
# 创建新目录并进入
mkdir build && cd build
#编译安装(花了差不多两个小时。。。。)
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make && make install
# 在路径/usr/local/lib64/libstdc++.so.6.0.24下有一个新的高版本的库,将此库复制到/usr/lib64/路径下并重新建立软连接
cp /usr/local/lib64/libstdc++.so.6.0.24 /usr/lib64/
rm libstdc++.so.6
ln -s libstdc++.so.6.0.25 libstdc++.so.6
【升级cmake版本】
这个是xgboost使用gpu训练时要用到的,先记录到这吧,另外xgb编译需要gcc版本5.0以上
wget https://cmake.org/files/v3.18/cmake-3.18.0-rc1.tar.gz
tar -zxvf cmake-3.18.0-rc1.tar.gz
cd cmake-3.18.0-rc1/
./bootstrap
gmake
gmake install
# 查看版本
cmake --version
安装成功后查看cmake版本发现报错:
将cmake解压后的bin文件夹中cmake文件复制到/usr/bin/即可
[root@ATD bin]# cp cmake /usr/bin/
【查看安装是否成功的一些命令】
# 查看cuda版本
cat /usr/local/cuda/version.txt
# 查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 查看显卡相关信息
nvidia-smi
【最后】
安装过程一定要确认tensorflow版本,显卡型号,cuda,cudnn,gcc,显卡驱动这几项的版本一定要对应上!!!
【References】
https://blog.youkuaiyun.com/wangyjfrecky/article/details/84029668
https://zhuanlan.zhihu.com/p/108507163
https://blog.youkuaiyun.com/wxzjfdcx/article/details/103830939
https://blog.youkuaiyun.com/m1131980108/article/details/88419168
https://www.houzhibo.com/archives/1115
https://blog.youkuaiyun.com/jacson_bai/article/details/50552604
https://www.jianshu.com/p/9c0dee9bb2b7
https://blog.youkuaiyun.com/bat67/article/details/84935538
https://blog.youkuaiyun.com/qxqxqzzz/article/details/102794226
https://blog.youkuaiyun.com/u010801439/article/details/80483036