文章目录
深度学习 — GPU 相关概念 及其环境搭建(CUDA & cuDNN)
一、相关概念
1. CPU vs GPU
1.1. CPU
- 概念:
- 中央处理器(CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。
- CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线
1.2. GPU
- 概念:
- 图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
1.3. 差异点
-
CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。打个比方,GPU就像成千上万的苦力,每个人干的都是类似的苦力活,相互之间没有依赖,都是独立的,简单的人多力量大;CPU就像包工头,虽然也能干苦力的活,但是人少,所以一般负责任务分配,人员调度等工作。
-
可以看出GPU加速是通过大量线程并行实现的,因此对于不能高度并行化的工作而言,GPU就没什么效果了。而CPU则是串行操作,需要很强的通用性,主要起到统管和分配任务的作用。
2. CUDA vs cuDNN
- CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。
cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。
但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
2.1. CUDA
- 概念:
- CUDA(Compute Unified Device Architecture,统一计算架构),是显卡厂商NVIDIA推出的运算平台,该架构使GPU能够解决复杂的计算问题。
- CUDA 是NVIDIA推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能够进行复杂的并行计算。只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。
主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库。
2.2. cuDNN
- NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
二、GPU 环境搭建
-
以 CUDA10.0,cudnn7.6.5.32版本为例进行搭建 GPU 环境
2.1 CUDA 安装
-
下载链接:
-
参考资料:
-
安装目录参考:
-
环境变量:
-
CUDA_PATH:E:\develop_tools\cuda\cuda-install\cuda-toolkit
-
CUDA_PATH_V10_0:E:\develop_tools\cuda\cuda-install\cuda-toolkit
-
path:
- E:\develop_tools\cuda\cuda-install\cuda-toolkit\bin
- E:\develop_tools\cuda\cuda-install\cuda-toolkit\libnvvp
- E:\develop_tools\cuda\cuda-install\cuda-toolkit\lib\x64
-
-
查看是否安装成功:
nvcc --version
2.2 cuDNN 安装
-
下载链接:cuDNN
-
安装步骤:
-
下载与CUDA 对应的 cuDNN:
-
下载之后进行解压,将解压之后的文件直接复制到 CUDA 的
Toolkit
文件夹中:
-
-
参考资料:
2.3 验证安装
-
通过NVIDIA提供的
deviceQuery.exe
和bandwidthTest.exe
来查看GPU的状态,
两者均在安装目录的extras\demo_suite
文件夹中: -
分别在
cmd
中运行deviceQuery.exe
和bandwidthTest.exe
,如果两个返回都是 PASS,则代表安装成功,否则需要重新安装-
deviceQuery.exe:
-
bandwidthTest.exe:
-