Tensorflow的版本需要和CUDA、cuDNN版本相对应,具体的对应关系可以查看https://www.tensorflow.org/install/source中给出的对应列表。我要跑的一个开源程序需要用到的Tensorflow版本为1.10.0,查阅可知,需要的CUDA版本为9、cuDNN版本为7。
安装NVIDIA驱动
CUDA的安装分在线和离线两种方式。离线方式下载的安装包自带NVIDIA 驱动,在线方式需要自己安装NVIDIA 驱动。由于我以后可能会同时安装并存多种版本的CUDA,所以我选择手动安装NVIDA驱动然后在线安装CUDA的方法。如果你选择的是离线安装CUDA的话只需要下载对应的离线CUDA包进行安装就可以了,不需要自己手动安装NVIDIA驱动。
NVIDIA驱动的安装过程参考了博客https://www.vicw.com/groups/water/topics/200的指导。
安装CUDA10.0
下载
从网站https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork下载与Ubuntu18.04系统对应的在线安装包,下载后的文件名为cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
。
安装
按照下载页面给出的安装命令进行安装
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update`
sudo apt-get install cuda-10-0`
上述命令运行过程中可能出现依赖的包不会被安装的问题,这时循环使用apt update
和apt upgrade
命令,直到所有的包都达到最新就可以了。如果这个过程中出现了明明有包需要更新,但是apt upgrade
命令就是没办法更新它们的情况,那么用apt dist-upgrade
命令来代替apt upgrade
命令,并结合使用apt autoremove
来进行更新。
哎呀网络不行啊,要下载1天零5个小时。
使用sudo apt install cuda-libraries-10-0
来安装所有的library包。
修改环境变量
编辑/etc/profile文件,在最后加上下面这一行:
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
验证安装结果
重启系统,输入如下命令
cat /proc/driver/nvidia/version
返回如下结果
输入如下命令
nvcc -V
返回如下结果
证明安装成功。
安装cuDNN
https://www.tensorflow.org/install/source#linux表明版本为7.4的cuDNN经过测试,是可以和CUDA10.0、Tensorflow1.14.0一起正常使用的,所以我选择下载安装cuDNN7.4,具体来说,是cuDNN 7.4.2,从网站https://developer.nvidia.com/rdp/cudnn-archive上下载(你需要注册NVIDIA的账号并登录)。
下载
下载如下图中的三个包
安装runtime library
sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
安装developer library
sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb
安装code samples和cuDNN Library User Guide
sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb
验证安装结果
cp -r /usr/src/cudnn_samples_v7/ ./
cd cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
出现test passed
信息,表明安装成功。
安装libcupti-dev library
sudo apt install libcupti-dev
安装GPU版本的Tensorflow-1.14.0
pip3 install --user tensorflow-gpu==1.14.0
验证安装结果
运行如下代码
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
出现如下信息
2020-03-19 15:41:41.961101: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 986 MB memory) -> physical GPU (device: 0, name: GeForce MX250, pci bus id: 0000:02:00.0, compute capability: 6.1)
Device mapping:
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device
/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce MX250, pci bus id: 0000:02:00.0, compute capability: 6.1
2020-03-19 15:41:41.961625: I tensorflow/core/common_runtime/direct_session.cc:296] Device mapping:
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device
/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce MX250, pci bus id: 0000:02:00.0, compute capability: 6.1
表明GPU版本的TensorFlow1.14.0安装成功。