DenseNet性能分析

在本系列这一篇中所说的性能,是指运算速度之类的性能。

0 GPU体系结构与计算性能

本节的目的不是介绍GPU的体系结构,而是谈几点必要的概念以便读者能更好的理解本文所讨论的性能分析。NVIDIA的GPU和CUDA编程模型是现在深度学习的主要硬件平台,我们将基于它们进行讨论。

下面的手绘图完整的展示了PC以及GPU内部的硬件结构,图中故意忽略了某些硬件单元以便集中在主要概念上。
DenseNet性能分析_第1张图片
GPU的全局内存相当于PC中的主存(也就是我们一般说的内存),显存容量就是指全局内存的大小。GPU程序中任何的全局变量都需要保存在全局内存中,比如在深度学习网络的训练过程中,网络参数,各层的输出,以及梯度值等等都需要保存在GPU的全局内存里。而GPU中的SM就相当于PC里的CPU,每个GPU有多个SM,每个SM内又包含若干个SP,一个SP有点类似于多核CPU中的一个核,因此GPU可以同时执行大量的并行计算,编写GPU程序的主要目标就是尽量充分的使用GPU的计算能力。

在CUDA编程模型中,使用kernel function来定义在GPU上运行的并行计算函数,按照调用时的执行参数,由大量的并行线程来同时执行kernel function,每个线程对应到一个SP上。CPU上的主程序调用kernel function并把计算数据传给它。从上图可以看出CPU通过PCI-E总线把数据传输给GPU,GPU把数据保存在自己的全局内存中后,真正要计算的时候,还要把数据load到寄存器里。可以想象,数据从硬盘/主存跨越物理距离来到SM的寄存器需要耗费多少GPU的时钟周期。为了抵消这种延时,SM会把一组线程的内存访问请求合并起来,当这组线程等待内存访问请求的结果时,调度另一组就绪的线程运行,这样使GPU始终处在高负荷的

你可能感兴趣的:(人工智能,深度学习与人工智能)