NVIDIA显卡驱动+CUDA+CUDNN+Tensorflow+Keras之间的关系(含各版本对应关系表)

基础介绍

  • Driver

    与键盘驱动、鼠标驱动、打印机驱动没本质区别,硬件统一CPU和外设通信的接口,以驱动程序的形式呈现

    可使用nvidia-smi命令查看,需要注意的是,显卡支持的驱动一直是在更新的

  • CUDACompute Unified Device Architecture,NVIDIA推出的显卡并行计算框架

    tensorflow-gpu的运行需要它的底层支持,它是一个计算框架,抽象层次比驱动高,每个版本的CUDA都是基于一定版本的驱动建立的,所以它对驱动的最低版本是有要求的

  • cuDNNThe NVIDIA CUDA Deep Neural Network library基于CUDA架构的神经网络库

    是专门用于神经网络计算的加速包,可以看作是CUDA的一部分(并行计算框架下的一个包),cuDNN和CUDA的版本也存在对应关系

  • tensorflow-gpu

    tensorflow-gpu的运行需要用到CUDA框架, 特别是cuDNN库,就像CUDA是基于特定版本驱动构建一样,tensorflow-gpu也是调用特定版本的CUDA,二者存在对应关系

  • 关系图

    NVIDIA显卡驱动+CUDA+CUDNN+Tensorflow+Keras之间的关系(含各版本对应关系表)_第1张图片

  • 综上所述

    driver决定了CUDA的版本

    CUDA决定了cuDNN的版本

    CUDA决定了tensorflow-gpu的版本

    tensorflow-gpu决定了python的版本

    与此同时,tensorflow-gpu和Keras也存在对应关系

参考博客:

https://blog.csdn.net/ProLayman/article/details/104721901

版本对应关系表

Driver与CUDA的对应关系表

NVIDIA显卡驱动+CUDA+CUDNN+Tensorflow+Keras之间的关系(含各版本对应关系表)_第2张图片

官网地址:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

CUDA与CUDNN、CUDA与tensorflow对应关系表

Linux CPU:(这是CPU版)

NVIDIA显卡驱动+CUDA+CUDNN+Tensorflow+Keras之间的关系(含各版本对应关系表)_第3张图片

Linux GPU:(这是GPU版)

NVIDIA显卡驱动+CUDA+CUDNN+Tensorflow+Keras之间的关系(含各版本对应关系表)_第4张图片

Tensorflow与Keras对应关系表

Tensorflow Keras
Tensorflow 2.1 Keras 2.3.1
Tensorflow 2.0 Keras 2.3.1
Tensorflow 1.15 Keras 2.3.1
Tensorflow 1.14 Keras 2.2.5
Tensorflow 1.13 Keras 2.2.4
Tensorflow 1.12 Keras 2.2.4
Tensorflow 1.11 Keras 2.2.4
Tensorflow 1.10 Keras 2.2.0
Tensorflow 1.9 Keras 2.2.0
Tensorflow 1.8 Keras 2.1.6
Tensorflow 1.7 Keras 2.1.6
Tensorflow 1.5 Keras 2.1.6
Tensorflow 1.4 Keras 2.0.8
Tensorflow 1.3 Keras 2.0.6
Tensorflow 1.2 Keras 2.0.6
Tensorflow 1.1 Keras 2.0.6
Tensorflow 1.0 Keras 2.0.6
Tensorflow 0.12 Keras 1.2.2

查看配置

  • 查看Driver版本

    nvidia-smi
    

NVIDIA显卡驱动+CUDA+CUDNN+Tensorflow+Keras之间的关系(含各版本对应关系表)_第5张图片

  • 查看CUDA版本

    1.方法一,查看文件:

    cat  /usr/local/cuda/version.txt
    

在这里插入图片描述

2.方法二:输入命令:

nvcc --version

3.方法三:

nvidia-smi

4.综上三种方法:

前两种得到的是运行(runtime)API,最后一种得到的是驱动(driver)API

平常运行程序时所使用的是运行API,即是版本之间的对应是针对运行API来讲的。

  • 查看CUDNN版本

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    
  • conda虚拟环境中查看Tensorflow版本

    conda list tensorflow 
    
  • conda虚拟环境中查看Keras版本

    conda list keras
    

问题:conda环境安装的cuda和cudnn与系统中安装的cuda和cudnn有什么区别?

答:

conda安装仅仅服务于conda可以安装的一些pytorch/tensorflow神经网络框架所需,是系统中安装的cuda子集

在conda创建的虚拟环境中安装tensorflow-gpu后,会自动安装cudatoolkit和cudnn,cudatoolkit不包含完整安装的cuda的全部文件,只是包含了用于tensorflow、pytorch、xgboost和Cupy等所需要的共享库文件。一般情况下会直接调用anaconda的cudatoolkit工具包。

  1. 虚拟环境中的cuda安装路径:统一存放在envs/虚拟环境名/lib or include目录下
  2. 系统cuda安装的路径:一般是放置在/usr/local/cuda*目录下

此时虚拟环境中使用tensorflow时,若涉及到GPU的计算,需要调用哪个cuda库时,大致过程是:

先查看默认cuda系统安装目录/usr/local/cuda,再去寻找cudart库文件目录(可能通过conda安装的cudatoolkit搜索到cuda库)。

参考博客:

https://blog.csdn.net/weixin_37707670/article/details/121451114

https://blog.csdn.net/u013066730/article/details/108604536

小白一个,望指正,个人整理,仅作学习记录,侵删 :)

你可能感兴趣的:(机器学习,tensorflow,keras,机器学习,cuda,cudnn)