写在前面

建议安装过程尽量选择默认位置。

安装 Nvidia 显卡驱动

进入任务管理器 ——> 性能查看个人的 GPU 型号,然后进入 NVIDIA 官网 选择适合自己的 GPU 型号下载对应驱动。显卡驱动尽量使用最新版本,如果已经安装的可以进行更新。

个人电脑如果是笔记本,产品系列一定要选择带有 Notebooks 字样的进行下载,接下来就是打开下载文件依次点击同意开始安装,选择默认安装目录即可:

最后进入CMD命令窗口,输入nvidia-smi得到如下所示信息则表示安装成功:

注:显卡驱动的CUDA版本表示可安装的最新CUDA版本(可选择≤11.6的版本)

安装 CUDA Toolkit

根据显卡驱动的版本查看对应可安装的CUDA版本,可以参考下表(表格来源 ):

进入 Nvidia 提供的 CUDA Toolkit , 比如我这里对应的 CUDA 版本是11.6,但我选择安装[CUDA Toolkit 11.5.2 (March 2022),点击下载并打开,安装路径依旧使用默认,依次点击同意安装完成即可:

安装完成后重启电脑,查看系统环境变量 Path,发现多出两项关于 CUDA 的路径:

安装 Visual Studio

这里建议安装 Visual Studio 2019 版本,进入Visual studio历史版本页面 选择Visual Studio Community 2019 (version 16.11)进行下载,然后运行安装,安装过程需要勾选红框标注部分配置,其余自选:

根据自己的安装位置进入以下路径,如果找不到文件,建议下载 Everything,帮助我们在Windows上快速查找文件的软件,这里由于我之前安装了 VS2019,因此这里我们直接打开nbody_vs2019.sln这个文件:

接着点击 Windows 搜索框选择进入 Developer Command Prompt for VS2019 应用,输入set TraceDesignTime=true,再输入devenv,然后启动 VS 2019 打开nbody_vs2019.sln文件,切记命令窗口不要关闭

点击生成解决方案,一般情况下会先遇到这个错误:

接着进入提出出现错误的路径,将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\extras\visual_studio_integration\MSBuildExtensions路径下的四个文件复制到对应上图提示的错误路径C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations

然后重新点击生产解决方案,得到以下提示成功!

验证 CUDA 是否安装成功,在 Powershell 中输入以下命令打开 nbody 目录:

cd ‘C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.5\bin\win64\Debug’

执行以下命令运行 nbody,可以看到 CUDA 使用的 GPU,按住Ctrl+C停止运行:

.\nbody.exe

安装 cuDNN

接下来是按照 cuDNN,到这里进入cuDNN网站 ,点击 Download cuDNN,接着注册 Nvidia 的开发者账号并登录,然后选择对应的 CUDA 版本下载对应安装包:

这里有不同的安装方式,最简单的就是下载 .exe 文件,然后依次点击同意即可,这里我选择下载 zip 包的方式安装,以便后续多版本 CUDA 和 cuDNN 管理:

我们将下载好的 zip 包解压,将 CUDA 安装位置C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5的 3 个文件使用解压后的zip文件进行替换,注意是进入每个目录分别替换文件夹

验证安装是否成功

验证 CUDA 安装成功

进入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\extras\demo_suite,路径框输入 cmd 即可进入该目录的终端,运行bandwidthTest.exedeviceQuery.exe这两个应用程序,以下结果表示安装成功:

验证cuDNN安装成功

这里我们直接创建一个 tensorflow≥2.0 的 Python 环境进行测试:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.compat.v1.Session() as sess:
    print (sess.run(c))

如果看到以下输出,则表示安装成功

image-20230411152013829

多个版本的CUDA切换

这里继续安装CUDA 11.6的版本,重复之前安装CUDA Toolkit 步骤,选择对应的 v11.6 的版本即可,在使用 Visual studio 验证部分,v11.6 版本中示例已被移除,并且对应的四个CUDA文件已经被安装到对应位置,因此无需再次复制。这里安装最新的 cuDNN 8.8.1。

进入电脑环境变量设置,发现在重新安装 CUDA 11.6 版本后,系统变量已由之前的 v11.5 变为 v11.6,现在我们重新切换到 CUDA v11.5 环境:

image-20230411144010437
  • 进入电脑环境变量设置,将系统变量下的CUDA PATH中的 v11.6 变为 v11.5
image-20230411144341556
  • 将系统变量下v11.5的两个相关文件置顶
  • 再次验证,CUDA 版本由 v11.6 切换到 v11.5
image-20230411144809291

参考文献

[1] https://machinelearningprojects.net/install-tensorflow-with-cuda-and-cudnn/#Step_6_-_Check_the_successful_installation_of_CUDA

[2] https://github.com/bycloudai/SwapCudaVersionWindows