摘要

张量在许多实际应用中被用来表示大规模、多源、高维、多模态的数据.稀疏张量分解作为挖掘数据中隐藏信息的有效方法之一,已被广泛应用于机器学习、文本分析、生物医疗等研究领域中.稀疏张量向量乘(Sparse Tensor-Vector Multiplication, SpTV)是张量分解中最基础、耗时最多的运算之一.为加速大数据和人工智能相关应用的运行效率,本文提出了基于CPU-GPU异构结构的多级并行SpTV加速算法.首先,为了将SpTV运算映射到混合、多级并行的分布式CPU-GPU异构多/众核构架,本文设计了一种多维并行SpTV划分方法,采用面向节点级并行的N-1维张量划分和面向GPU线程级并行的矩阵划分,充分利用计算节点间和节点内的多级并行计算能力.其次,设计了一种基于稀疏张量纤维的压缩存储格式,压缩稀疏张量的内存占用,优化SpTV运算的计算和访存模式.最后,提出了基于多流并行的异构高效SpTV算法,进一步设计了稀疏张量的细粒度划分方法、多流并行运行机制和基于张量块排序的多流并行优化技术,实现了SpTV运算中通信开销和计算开销的相互重叠与隐藏.实验结果表明,与相关工作aeSpTV相比,所提出的SpTV算法在所有测试数据集上最高能够获得3.28倍的加速比.