【深度学习】GPU为什么这么高效

报告者: 姜思君

摘要:

机器学习和深度学习通常需要从海量的数据中学习到其中的知识,从而应用于各种任务之中。在学习的过程中,GPU是强大而有效的计算单元,能够大幅缩减训练时间。今天的paper reading将深入这种关键设备的内部,了解其在深度学习中的运作原理。

正文:

  GPU是深度学习使用的关键计算单元,大多数任务都在上面执行。虽然使用GPU实现深度学习已经成为目前的一种通用做法,但广大研究人员实际上对GPU的认知仍处于一种浅薄的层次。然而,对GPU的工作机理进行了解实际对深度学习的研究是具有促进的作用的。例如,能够提高程序运行的速度、提高程序使用GPU的利用率、帮助程序debug、在搭建网络和调参时提供硬件层面的帮助、提高研究人员的市场竞争力等。

  在深入学习GPU的工作机理前,我们需要先对计算机内部程序的运行过程进行简单的了解。首先,python程序在运行前需要执行动态库的链接,将需要运行的函数导入主存中;其次计算机根据程序内部的声明,为这个程序分配一块内存空间;接着,CPU将为该进程创建相关的线程,以此逐步推进运算。

  我们能够针对程序的运行过程提出几个加速的建议。首先,编写程序时可充分利用时间与空间局部性,将需要反复使用的数据尽量分配在同一内存中,尽量减少指令的变更次数,从而降低寻址耗费的时间;其次,优化程序的内存管理,提高内存的使用率,减少频繁的内存申请与释放操作,减少内存碎片的生成;再次,减少不必要的死循环,控制一些进程主动释放计算资源。

  GPU和CPU是同属于计算机的计算单元,但各自的结构和强项都不相同。实际上GPU的结构相较于CPU更加简单。GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器。GPU包括更多的运算核心,但没有逻辑处理核心,因此特别适合数据并行的计算密集型任务,如大型矩阵运算。

397542e8071e079ac99a8a091c711ce6.png

  实际上,GPU在运行程序时的操作单元是一组线程,这组线程以Grid为单位,同一个Grid上的所有线程共享相同的Global Memory,用于显卡计算过程中与CPU发生的数据交换。由于GPU的操作大多是流操作,一组线程计算同一指令的设计降低了时间局部性对于GPU计算的影响。

  一个Grid由多个Block构成,每个Block内包含了多个线程。具体示意图如下:

810533169db5036f4ee580c9d97c0f89.png

  在GPU中,一个Grid将被赋予一个全局内存,允许GPU与CPU进行内存交换。而对于每个Block而言,还具有一个共享内存,允许同一Block的各个线程进行访问和写入。每个Grid还具有只读性质的固定内存和纹理内存,仅在GPU不执行指令时可由CPU导入数据,只读性质的存储能够最大限度地提高GPU的计算效率。

eb8fc630b97d93edd7b5ff96a631e36c.png

  此外,对GPU性能影响最大的部分是信息传输的部分。该部分发生了主存与GPU显存的信息交换,从计算机组成原理来看属于主存到辅存的传输,该环节所耗费的时间从计算机层次结构来看是最长的一段时间。为提高传输效率,应用内存对齐的原理,按每个传输单元128bit的容量来规划信息传输细节,能够尽量降低信息传输对于任务执行效率的影响。

  总而言之,GPU精简的指令集降低了其寻址时间;其内部每个线程单元都有对应的内存空间,减少了不同线程单元之间的读写冲突;GPU内部精准的内存划分,提高了空间的利用率,降低了内存交换的时间消耗;GPU使用多个线程资源响应同一指令,从而降低了计算延时。

  但使用GPU执行程序不一定能提高程序的运算效率,由于GPU的调用需要经过主存-辅存的过程,在传输过程可能会消耗大量的时间。只有计算密集型的任务能够充分发挥GPU的告诉运算优势,而需要大量数据交换的任务并不适合在GPU上运行。

编辑:邓宏宇

 
 

2bd1647a1e64676c57baeff72d6d8dd6.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值