论文部分内容阅读
近些年来,随着神经网络的不断发展,卷积神经网络(Convolutional Neural Network,CNN)作为神经网络的一个重要分支,目前已经广泛应用于人工智能(Artificial Intelligence,AI)的诸多领域,例如计算机图像、语音识别、机器人学等。CNN在许多复杂的AI问题上能够达到令人难以置信的准确率,但是CNN的网络规模变得越来越庞大,网络所包含的参数数量也在迅速增加。那么,对于在处理CNN的过程中,如何在不增加硬件开销或丢失精确度的前提下改善整个网络的资源消耗与吞吐率,已经成为CNN研究领域中的一个重要分支。权重删减压缩过的CNN模型会产生大量的稀疏数据结构,一般称这样的CNN为稀疏卷积神经网络(Sparse Convolutional Neural Network,SCNN)。然而在实际的实现过程中,图形处理器(Graphics Processing Unit,GPU)由于其自身体系结构特征并不能很好的处理SCNN的稀疏数据结构。GPU架构下实现的SCNN性能往往达不到预期的提升。针对SCNN在GPU平台上的性能损失,本文主要研究如何针对GPU的体系结构来对SCNN进行优化设计,从而在没有精确度损失和硬件资源开销增加的前提下极大的缩短SCNN的执行时间。本文的主要工作内容和创新点如下:1)采用全新的网络框架卷积算法组合方式。针对经过GSL引导规则删减后的网络模型,其稀疏网络层的稀疏度集中在稀疏度上界和稀疏度下界这个范围内。本文采用根据卷积层的稀疏度选择对应的卷积算法的方式。相比传统单一的卷积算法优化,该方式能够极大程度利用稀疏度对GPU计算性能影响。稀疏卷积层和稠密卷积层分别采用直接稀疏卷积算法(DirectSparse Convolution)和降维算法。2)针对直接稀疏卷积算法,在GPU平台下分别实现了基于TILED和BLOCKED的并行优化策略。该优化策略充分利用数据的稀疏性和网络构来分配线程进行任务调度,利用数据的局部性来管理内存替换。TILED和BLOCKED的区别在于对计算和数据的并行度存在差异。通过TILED方式的优化,相比cuBLAS我们在AlexNet、GoogleNet、ResNet上性能提升分别可以达到1.07×-1.23×、1.17×-3.51×、1.32×-5.00×的加速比,相比cuSPARSE我们在AlexNet、GoogleNet、ResNet上性能提升分别可以达到1.31×-1.42×、1.09×-2.00×、1.07×-3.22×的加速比。此外,BLOCKED在TILED的基础上表现出了更好的优化效果,在Alex Net各层上分别提升了38.1%、27.8%、18.6%、18.1%的性能。