论文部分内容阅读
图形处理单元(Graphic Processing Unit,GPU)由于复杂的体系结构和较高的编程难度,充分利用其计算资源和有效发挥性能面临巨大的挑战。在软件方面,需要充分了解GPU的并行加速特性,有效利用各种计算资源,充分发掘性能潜力;在软硬件结合方面,需要充分利用特定硬件优势,针对特定软件计算模式进行资源优化和性能加速;在硬件方面,需要进行体系结构的设计优化,改进资源调度策略,减少硬件开销。本文从资源优化和性能提升两个角度入手,分别从GPU应用程序优化研究、基于INT8量化的神经网络优化策略研究和GPU缓存调度策略优化研究三个方面,分析GPU现有的优化问题,提出了相应的优化策略。具体的研究内容如下:(1)根据GPU的并行加速特点,进行传统算法并行性分析和优化,充分提高算法性能。本文选取经典图像细化算法进行并行加速,根据并行性分析结果,提出两个加速策略,(1)滑动窗口(Sliding Windows,SW)用于减少不必要的内存传输;(2)将模板转化为查找表(Templates-to-Lookup-Table,TPL2LUT)用于解决算法流程中的条件分支问题。实验结果表明加速策略能有效解决冗余拷贝和条件分支问题,获得平均2.17倍的加速效果。(2)利用GPU的INT8硬件加速技术,结合量化策略进行神经网络线上推理加速。硬件方面,利用NVIDIA GPU的INT8硬件加速技术,对矩阵乘操作进行加速。软件方面,调研INT8量化算法,从精度损失和性能提升两个方面分析利弊,并选取量化算法开发GPU INT8加速库。实验结果证明,该加速卡普适性高,精度损失低,不需要额外的步骤来保持精度,加速效果明显,模型压缩率可观。(3)通过对现有的GPU体系结构缓存调度策略进行分析,不断完善调度策略,达到充分利用GPU计算资源并提升性能的目的。针对GPU缓存模型无法满足大规模线程并行的需求导致的缓存竞争问题,分析出基于局部性的Decoupled L1D(D-L1D)算法存在的缺陷:固定的局部性阈值(Locality Threshold,LT)会影响性能提升。为了解决该缺陷,提出了基于探索的动态D-L1D(Dynamic D-L1D,DD-L1D)算法,根据运行时缓存状态动态地调整LT的值。本文实验结果表明,DD-L1D在性能提升和资源优化方面均优于D-L1D算法。