关键词:
稀疏张量运算
并行算法设计
CPU-GPU平台
性能分析
张量核心
摘要:
作为高维数据的一种表示方式,稀疏张量在学术界和工业界引起了广泛关注,其高维稀疏的特性为稀疏张量运算的计算和存储带来了巨大挑战。随着高性能计算平台由单一架构向异构架构的演进,高效的并行算法和性能优化方法的设计变得更加复杂。异构计算架构为稀疏张量运算库的设计和性能优化研究提供了新的机遇和挑战。不同类型的硬件核心适用于不同的稀疏张量运算,同时还需要解决体系结构差异和数据传输开销等问题。因此,充分发挥异构平台的优势以实现高效的稀疏张量并行计算和内存管理仍然是一个亟待解决的问题。
本文的研究主要集中在中央处理器-图形处理器(CPU-GPU)平台上的稀疏张量运算库的设计与性能优化方面。首先,对稀疏张量运算的并行算法设计和性能优化所面临的挑战进行了分析,并将常见的稀疏张量运算归纳为四种类型,包括内存限制类型、批量计算类型、高维计算类型以及链乘计算类型。其次,对CPU-GPU平台上的并行算法设计和性能优化存在的问题进行了分析,将这些问题总结为两个难题,即高速计算单元导致的内存墙问题和异构硬件之间的性能差异问题。随后,设计了一个异构自适应稀疏张量库(HASTensor),通过构建切片粒度和张量块粒度两种稀疏张量格式类型,以适应数据中复杂的稀疏分布和最新的高速计算硬件。最后,介绍了HASTensor中四类典型的稀疏张量运算的并行算法设计和性能分析优化方法,包括内存限制类型的稀疏张量乘以向量(SpTV)、批量计算类型的稀疏张量乘以矩阵(SpTTM)、高维计算类型的稀疏张量缩并(SpTC)以及链乘计算类型的稀疏张量矩阵链乘(SpTMCM)。
具体而言,本文取得的主要创新性研究成果如下:
1.针对访存受限型稀疏张量运算中的计算效率问题,本文以SpTV为例,设计了输入感知的自适应流水线SpTV(IAP-SpTV)方法,以缓解GPU的高速计算带来的内存墙问题。该方法首先采用一种混合切片格式的张量数据表示形式,并研究了基于该格式的流水线SpTV算法,以应对非零值的稀疏分布导致的性能下降。其次,构建了一个图卷积神经网络模型,为每个切片选择合适的存储格式。随后,通过建立流水线性能分析模型,实现了传输时间和计算时间的最大程度重叠,进一步缩短整体计算时间,提高了计算效率。最后,在两种不同的CPU-GPU平台上进行了一系列实验,结果显示,与现有方法相比,IAP-SpTV获得了1.25倍至1.58倍的加速比。
2.针对批量计算型稀疏张量运算中的批量处理过程,本文以SpTTM为例,设计了异构逐切片的SpTTM(HS-SpTTM)方法,以充分发挥异构平台上各硬件架构的独特特性。该方法首先描述了HS-SpTTM在CPU-GPU平台上的处理流程,并给出了不同稀疏格式的SpTTM并行执行策略。接着通过对处理器的理论计算能力和任务计算量的估算,以实现在CPU和GPU之间任务划分的负载平衡。然后讨论了一种用图结构描述张量稀疏结构的方法,并设计了一个用于为张量选择储存格式的图卷积神经网络。最后,在CPU-GPU平台上进行了一系列实验,结果显示,与现有方法相比,HS-SpTTM获得了1.31倍至2.64倍的加速比。
3.针对高维计算类型的稀疏张量运算中的高维特征,本文以SpTC为例,设计了基于位坐标位图的SpTC(BCB-SpTC)方法,以应对张量核心的矩形计算所导致的内存墙问题。该方法首先通过采用位压缩和位图技术,设计了一种稀疏张量存储格式,旨在减少高维张量的存储成本,从而显著提升内存访问效率。接着引入了一种冲突解决方法,通过构建任务列表和解除任务间的依赖关系,有效提高了线程块的利用率。然后通过设计高效的张量核心填充策略,以确保在处理各类张量缩并任务时充分利用张量核心的计算能力。最后,在GPU上使用一系列真实场景的稀疏张量进行了实验验证,结果显示,与现有方法相比,BCB-SpTC获得了1.10倍至21.27倍的加速比。
4.针对链乘计算类型的稀疏张量运算中计算依赖特性,本文以SpTMCM为例,设计了一种基于混合线性格式的张量矩阵链乘运算(HLSTO)方法,以应对SpTMCM在GPU的新兴张量核心上所面临的挑战。首先,与之前的研究相比,HLSTO为SpTMCM提供了统一的存储格式和优化方法。接着,采用了多维分块的混合张量格式和高效的内存访问模式,以降低连续计算过程中的计算依赖,从而有助于实现SpTMCM的高效并行计算。然后,还开发了一种基于张量核心的高效并行算法,以提升内存带宽的利用效率。最后,在GPU上使用一系列真实场景的稀疏张量进行了实验验证,结果显示,与现有方法相比,HLSTO获得了1.16倍至24.12倍的加速比。
对于上述研究内容,本文在稀疏张量运算库的设计与性能优化研究领域取得了一系列的研究成果,这些成果具有重要的理论价值和广泛的应用前景,而且进一步丰富和完善了