ubuntu18搭建tensorflow-gpu环境

1、安装显卡驱动

首先删除旧的Nvidia驱动文件

sudo apt-get purge nvidia-*

加入PPA源

sudo add-apt-repository ppa:graphics-drivers/ppa

安装Nvidia驱动:
找到自己显卡最新的一个版本后执行安装,比如1080ti当前最新版为nvidia-driver-396

sudo apt-get install nvidia-driver-396tab键可补充列出其他版本)

安装完毕后重启机器,运行 nvidia-smi,看看生效的显卡驱动;(在确保独立显卡安装成功的情况下,禁用集成显卡,连接独立显卡到显示器),即可在系统信息中看见被识别出型号的Nvidia显卡

2、安装CUDA 9.0(CUDA 9.1需要驱动至少为nvidia-387,我们可以选择安装CUDA 9.0及cuDNN7.0)

从NVIDIA官网Legacy Releases下载CUDA 9.0版本的.run安装包(https://developer.nvidia.com/cuda-90-download-archive)。
由于CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,故手动安装gcc-6与g++-6:

sudo apt-get install gcc-6 g++-6

之后切换至/usr/bin目录修改符号链接,使GCC 6成为默认使用版本:

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-6 gcc
sudo rm g++
sudo ln -s g++-6 g++

安装:
为CUDA 9.0安装包赋予运行权限并运行之:

chmod 775 cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run --no-opengl-libs

安装过程中选择不安装驱动,仅安装CUDA与Samples。若提示”You are attempting to install on an unsupported configuration.”选择y强制安装(如果前面修改了GCC版本,此处应不报该错误)。安装完成后若提示安装失败,可参考错误提示增加–override参数重新安装。
测试:
进入Samples所在目录(默认为~/NVIDIA_CUDA-9.0_Samples),运行命令(所需时间较长)

make

3、安装cuDNN 7.0

从官网下载,这个需要注册https://developer.nvidia.com/rdp/cudnn-download
下载压缩包cudnn-9.0-linux-x64-v7.solitairetheme8(版本号必须严格对应,cuda9.0对应cudnn7.0),然后解压,把相应的文件复制到cuda,进行权限的更改。

cp cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.tgz
tar -xvf cudnn-9.0-linux-x64-v7.tgz 
cd到cuda的上一级目录
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*

4、配置环境变量

vim ~/.bashrc
# cuda
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}} 
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 
export CUDA_HOME=/usr/local/cuda
source ~/.bashrc

这里cuda是个软链接,多个cuda版本存在时候,应该对指向cuda-9.0

5、查看cudnn和cuda版本是否正确

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
nvcc --version

打印cudnn7.0*和cuda9.0*代表没错

4、tensorflow的GPU版本测试

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

打印出gpu信息代表成功

猜你喜欢

转载自blog.csdn.net/hao5335156/article/details/80936879