理解GPU、CUDA、CUDNN
- GPU
GPU相对于CPU而言,它有更多的运算单元ALU,更少的控制单元和缓存单元,所以GPU擅长高强度计算,且是并行计算,而CPU更加擅长高效分发任务和指令,且是串行计算。
可以看出GPU加速是通过大量线程并行实现的,因此对于不能高度并行化的工作而言,GPU就没什么效果了。而CPU则是串行操作,需要很强的通用性,主要起到统管和分配任务的作用。
- CUDA
官方文档这么介绍它:a general purpose parallel computing platform and programming model that leverages the parallel compute engine in NVIDIA GPUs to solve many complex computational problems in a more efficient way than on a CPU.
换句话说CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。
在 CUDA 的架构下,一个程序分为两个部份:host 端和 device 端。Host 端是指在 CPU 上执行的部份,而 device 端则是在显示芯片上执行的部份。Device 端的程序又称为 “kernel”。通常 host 端程序会将数据准备好后,复制到显卡的内存中,再由显示芯片执行 device 端程序,完成后再由 host 端程序将结果从显卡的内存中取回。
- CUDNN
(CUDA Deep Neural Network library)是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。
下载CUDA、CUDNN
CUDA
- 选择安装的版本
这里需要查看自己电脑显卡支持的最高cuda版本号。
- 打开NVIDIA控制面板
- 点击“帮助”下的“系统信息”
- 点击“组件”
我的显卡是GTX 3070,支持最高版本是11.1.106,故可以安装这个版本及其以下的版本号,我这里下载CUDA10.0.
- 下载CUDA Toolkit 10.0
https://developer.nvidia.com/CUDA-TOOLKIT-ARCHIVE
选择自己的版本需求,对应下载,我这里选择10.0
Installer Type有两个选项,前面是网络安装,后面是本地安装,网络安装就是下载一个很轻巧的一个工具包,大概20M,如果选择本地安装,就会将所有相关的东西都下载下来,安装过程中无需再次下载。推荐后者。
CUDNN
https://developer.nvidia.com/rdp/cudnn-download
第一次下载需要注册登录,选择自己对应的cuda版本。
安装CUDA及配置
安装
- 双击下载后的CUDA运行文件,先设置安装路径,推荐默认位置,即C盘里。
- 进入配置界面,设置相关配置
- 推荐选择自定义安装
- 下图的安装路径需要注意,后面环境配置需要使用。
安装完成后,会自动配置两个环境变量。
配置
- 系统变量添加
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
- 系统变量PATH配置
在系统变量 PATH 的末尾添加:
%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp
将上面两条路径添加到PATH上。
- 验证是否安装成功
打开cmd,输入 nvcc -V
配置CUDNN
-
解压缩zip文件
-
将解压缩后的文件夹cuda目录下的文件复制到下图对应位置
验证
配置完成后,我们可以验证是否配置成功,主要使用CUDA内置的deviceQuery.exe 和 bandwithTest.exe,在所在目录下打开cmd