cuda和tensorflow-gpu对应版本的安装及测试

版本

CUDA、cuDNN 和 tensorflow-gpu 版本的推荐配置:configure page
cuda和tensorflow-gpu对应版本的安装及测试_第1张图片
cuda和tensorflow-gpu对应版本的安装及测试_第2张图片
查看自己的 CUDA 和 cudnn 的版本:

1)直接用 nvcc --version 查看:
在这里插入图片描述
2)CUDA 一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了 CUDA 的版本信息,执行语句:

cat /usr/local/cuda/version.txt 

3)cuDNN 的信息在其头文件里,执行语句:

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

cuda和tensorflow-gpu对应版本的安装及测试_第3张图片
这里可以到看到 CUDA 版本是 9.0,cuDNN 版本是 7.0.5,官方推荐的 tensorflow 对应版本是:1.5 / 1.6 / 1.7 / 1.8 / 1.9 / 1.10 / 1.11 / 1.12

如果报错版本不对的话,可以按照下面的解决方法:

pip uninstall tensorflow-gup==1.0.1
pip install tensorflow-gpu==1.5.0

测试

安装好以后,可以进行如下测试,如果没有报错就没问题:

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

查看日志信息若包含gpu信息,就是使用了gpu。

import tensorflow as tf
tf.test.is_gpu_available()

>>>
True

其他方法:跑计算量大的代码,通过 nvidia-smi 命令查看gpu的内存使用量。

多版本CUDA的切换

如果安装了多个版本的 CUDA,可以在 /usr/local/ 目录下看到自己安装了哪些版本:
在这里插入图片描述
cuda 是一个软链接,它指向我们指定的 cuda 版本(在设置环境变量时,也使用的是 cuda,而不是 cuda-具体版本,这主要是为了方便我们切换 cuda 版本,可以让我们不用每次都去该环境变量的值)

进入 local 文件夹下,使用 stat 命令查看当前 cuda 软链接指向的哪个 cuda 版本:
cuda和tensorflow-gpu对应版本的安装及测试_第4张图片
可以看到,cuda 软链接的文件类型是symbolic link,指向的目录是 /usr/local/cuda-9.0,当我们想使用 cuda-8.0 版本时,只需要删除该软链接,然后重新建立指向 cuda-8.0 版本的软链接即可(注意名称还是cuda,因为要与 bashrc 文件里设置的保持一致)

sudo rm -rf cuda
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda

需要修改的只是上面的版本号而已。

CUDA驱动程序版本跟CUDA的运行时版本不匹配

如果在测试时报错:

InternalError: cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version

说明 CUDA 驱动程序版本跟 CUDA 的运行时版本不匹配。

(1)查看 CUDA driver version(驱动版本):就是NVIDIA GPU的驱动程序版本

查看命令:nvidia-smi

看以看到 Driver Version:384.111
在这里插入图片描述
(2)查看 CUDA runtime version(运行时版本):在 python 中安装的 cudatoolkit 和cudnn 程序包的版本

查看命令:pip list / conda list

在这里插入图片描述
可以看到 python 安装的 cudatoolkit 和 cudnn 程序包版本是:9.2

(3)nvidia 驱动和 cuda runtime 版本对应关系

来源:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

运行时版本 驱动版本
CUDA 9.1 387.xx
CUDA 9.0 384.xx
CUDA 8.0 375.xx (GA2)
CUDA 8.0 367.4x
CUDA 7.5 352.xx
CUDA 7.0 346.xx
CUDA 6.5 340.xx
CUDA 6.0 331.xx
CUDA 5.5 319.xx
CUDA 5.0 304.xx
CUDA 4.2 295.41
CUDA 4.1 285.05.33
CUDA 4.0 270.41.19
CUDA 3.2 260.19.26
CUDA 3.1 256.40
CUDA 3.0 195.36.15

(4)解决

从驱动和运行时的版本对应关系来看,版本为 384.111 的驱动程序对应的运行时版本是9.0,也就是说目前在 python 中安装的 cudatoolkit 和 cudnn 程序包版本 9.2 是过高了。

先卸载 python 中安装的 cudatoolkit 和 cudnn 程序包:

pip/conda uninstall cudnn
pip/conda uninstall cudatoolkit

然后安装对应版本的 cudatoolkit 和 cudnn 程序包:

pip install cudatoolkit=9.0
pip install cudnn

(5)出现问题的原因
一般出现这种情况是因为在 python 中安装 tensorflow 的 gpu 版本时,pip 会检查 tensorflow 依赖的其他的包,如果依赖的包没有安装,则会先安装最新版本的依赖包,最终导致 gpu 驱动版本和 cuda 运行时版本不匹配。

你可能感兴趣的:(#,Tensorflow,深度学习)