整体上有两种方案:
1. 手动安装 nvidia 提供的 CUDA、cuDNN 组件包(多见于tensorflow的安装)
2. 安装 cuda 提供的 cudatoolkit 精简运行包(多见于pytorch的安装)
方案1:手动安装 nvidia 提供的CUDA组件包
Tensorflow 版本及依赖
tensorflow 与 CUDA、cuDNN 对照表:
win版本对照:https://www.tensorflow.org/install/source_windows
linux版本对照:https://www.tensorflow.org/install/source#gpu_support_3
注意:
当前最新版本如果未列出,则继续使用列表中最高版本的cuda和cudnn版本
CUDA版本不要追求最新,一般满足版本要求的最低版本,可以一次性安装成功,带有小版本的升级版本反而会出现安装错误
一般表中给出的是 X.X,默认指的是 X.X.0 ,选择 CUDA 版本都一致的,即使小版本号不一致,也会导致安装失败
NVIDIA CUDA Toolkit 安装
CUDA Toolkit 也即 CUDA
nvidia 版本确认:
在 CMD/ shell 中输入:nvidia-smi
其中,看到的 cuda 版本只是驱动程序的编译版本,实际 tf 不一定会调用该 cuda 版本
这里主要关注的是驱动程序的版本号
GPU驱动程序与 CUDA 版本之间的匹配关系:Release Notes :: CUDA Toolkit Documentation
CUPTI默认位于CUDA中,需要环境变量指定
CUDA安装
CUDA默认安装
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
安装时若遇到
“You already have a newer version of the NVIDIA Frameview SDK installed”
先把电脑已经存在的FrameView SDK 卸载掉,把C:\Program Files\NVIDIA Corporation\FrameViewSDK文件夹删掉
NVIDIA cuDNN 安装
cuDNN安装
方式一:将cuDNN解压后直接复制到CUDA路径中覆盖
方式二:cuDNN 安装至其他位置
C:\tools\cudnn-9.0-windows10-x64-v7.6.2.24\cuda
C:\tools\cudnn-10.0-windows10-x64-v7.5.1.10\cuda
环境变量配置
powershell快捷配置
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp;%PATH%
SET PATH=C:\tools\cuda\bin;%PATH%
手动环境变量配置
系统中多个运行环境并存,通过修改全局环境变量CUDA_PATH、CUDNN_PATH实现运行环境切换
分别定义不同版本的CUDA环境变量,
CUDA_PATH_V9_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
CUDA_PATH_V10_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
统一定义一个全局变量,用于环境变量的切换,实现切换不同运行环境的功能
CUDA_PATH=%CUDA_PATH_V9_0%
添加到PATH中
%CUDA_PATH%\include
%CUDA_PATH%\bin
%CUDA_PATH%\extras\CUPTI\libx64
%CUDA_PATH%\libnvvp
cuDNN 采用方式二安装时,需要配置环境变量
分别定义不同版本的cuDNN环境变量
CUDNN_PATH_V10_0_V7_5_1_10=C:\NVIDIA\cudnn\cudnn-10.0-windows10-x64-v7.5.1.10
CUDNN_PATH_V9_0_V7_4_2_24=C:\NVIDIA\cudnn\cudnn-9.0-windows10-x64-v7.4.2.24
CUDNN_PATH_V9_0_V7_4_1_5=C:\NVIDIA\cudnn\cudnn-9.0-windows10-x64-v7.4.1.5
统一定义一个全局变量,用于环境变量的切换,实现切换不同运行环境的功能
CUDNN_PATH=%CUDNN_PATH_V9_0_V7_4_2_24%
添加到PATH中
%CUDNN_PATH%\cuda\bin
安装结果验证
查看 nvidia 版本
这里显示的是 CUDA Driver 版本
nvidia-smi
注意:显卡驱动自带一个 CUDA Driver ,其版本 >= CUDA RunTime 版本 ,否则就会报错
查看 cuda 核心版本:
这里显示的是 CUDA RunTime 版本
nvcc -V
验证 cudnn
运行cuda 安装路径下 extras/demo_suite/下
deviceQuery.exe 和 bandwidthTest.exe 两个程序
两个都显示为 PASS 表示验证通过
tensorflow 安装
推荐使用pip安装,conda安装会导致奇奇怪怪的问题
pip install tensorflow
pip install tensorflow-gpu
pip install tensorflow-gpu==1.12.0
pip install tensorflow-gpu==2.0.0-rc0
pip install tensorflow-gpu==1.14 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install tensorflow-gpu==2.8 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
验证
>>> import tensorflow as tf >>> tf.enable_eager_execution()
>>> tf.add(1, 2).numpy() 3
>>> hello = tf.constant('Hello, TensorFlow!')
>>> hello.numpy() 'Hello, TensorFlow!'
查看GPU是否可用:
import tensorflow as tf tf.test.is_gpu_available()
报错:
import tensorflow as tf 时报错 ImportError: DLL load failed: 找不到指定的模块。
替换CUDA版本解决
如果 python 中无法使用GPU训练模型,提示 找不到 cudnn_x64_8.lib,则表示cuda版本选错了,
需要重新安装 CUDA 并且 pip 卸载 tensorflow-gpu keras 并重新安装
安装 keras(可选,一般tf自带的keras就够用了)
pip install keras==2.2.5 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install h5py==2.10.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
方案二:安装 cuda 提供的 cudatoolkit 精简运行包
使用 conda 安装 cudatoolkit
两者区别:
1.官方版本,包含完整的编译测试工具和依赖,以及编译好的动态链接库
2. conda版本,仅包含编译好的动态链接库。大多数直接调用的情况下(tf,pytorch)可运行,少部分需要编译的情况时需要完整的CUDA toolkit包,就会报错。
安装
conda install -c anaconda cudatoolkit
conda install -c anaconda cudatoolkit=10.2
安装 Pytorch
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
参考文章:
显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? - marsggbo - 博客园
conda安装的cudatoolkit与Nvidia官方提供的cudatoolkit的区别_马圈圈马的博客-CSDN博客_conda cudatoolkit与cuda的区别