最近带徒教人深度学习,中间碰到了很多基础知识,在备课的过程中,顺便自己也复习了一遍,深深体会到了“教学相长”的甜头。本文主要是给大家讲授一下关于CUDA与cuDNN方面的内容。

1、什么是CUDA

CUDA全称是:ComputeUnified Device Architecture,是显卡厂商英伟达(NVIDIA)推出的运算平台。CUDA发布于2006年,它是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型。基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。虽然深度学习时代的到来,基于GPU的并行计算已经成为训练深度学习模型的标配。当前,CUDA的最新版本是CUDA 11,其下载地址为:https://developer.nvidia.cn/zh-cn/cuda-toolkit

2、CUDA编程模型基础

CUDA编程模型是一个异构模型,需要CPU和GPU协同工作。在CUDA中,host和device是两个重要的概念,我们用host指代CPU及其内存,而用device指代GPU及其内存。CUDA程序中既包含host程序,又包含device程序,它们分别在CPU和GPU上运行。同时,host与device之间可以进行通信,这样它们之间可以进行数据拷贝。典型的CUDA程序的执行流程如下:

第一步:分配host内存,并进行数据初始化;
第二步:分配device内存,并从host将数据拷贝到device上;
第三步:调用CUDA的核函数在device上完成指定的运算;
第四步:将device上的运算结果拷贝到host上;
第五步:释放device和host上分配的内存。

3、什么是cuDNN

cuDNN是用于深度神经网络的GPU加速库。cuDNN采用简单的插入式设计理念,可以让开发人员专注于设计和实现神经网络模型。从官方安装指南可以看出,只要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计。把cuDNN文件添加CUDA里,cuDNN就是CUDA的扩展计算库,不会对CUDA造成其他影响。

需要注意的是:cuDNN是一个SDK,是一个专门用于神经网络的加速包。它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。

4、cuDNN的安装

去官网下载:https://developer.nvidia.com/rdp/cudnn-download
需要注册信息,然后找CUDA对应的版本下载,所以要记住CUDA是哪个版本,我是 10.1 就选择第一项。

1.png

下载下来是个压缩包,解压后,里面有三个文件夹,如下所示:

2.png

找到 CUDA 的安装路径,我的安装路径是是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1

进行如下操作:

第一步:复制 cuDNN bin 目录下的文件到 CUDA 的 bin 目录下(.dll)

1.png

第二步:复制 cuDNN include 目录下的文件到 CUDA 的 include 目录下(.h)

2.png

第三步:复制 cuDNN lib/x64 目录下的文件到 CUDA 的 lib/x64 目录下(.lib)

3.png

第四步:添加环境变量,把 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64 加到path 中

4.png