论文部分内容阅读
计算机数值模拟是推动工业和科学发展的重要助力。随着计算机的发展,众核架构越来越成为高端系统的首要选择,例如目前世界上最快的5台超级计算机都选用众核处理器。由于众核核数越来越多,向量化长度越来越长,对于线程级和指令级并行的性能优化研究就显得越来越重要和迫切。在数值模拟中,用迭代法求解大规模稀疏线性方程组是其中重要一环。在求解过程中,稀疏矩阵向量乘法和预条件子是耗时最长的计算核心。这些计算核心存在严重的数据局部性、写冲突、负载均衡、计算依赖、难以向量化等问题。与硬件结合后还会存在频繁缓存判断和细粒度访存等问题。因此这些计算核心也理所当然成为了当前众核性能优化的难点和研究热点。本文面向国产众核架构,以申威26010国产众核处理器为平台,选择对稀疏矩阵向量乘法,以及两个重要的预条件子计算核心–稀疏下三角方程求解器和三对角方程求解器,在线程级和指令级并行的层面上进行细粒度的并行算法设计和优化实现。本文工作的创新主要有:·针对申威架构设计了并行稀疏矩阵向量乘法算法:算法通过将矩阵分成若干规则小块并进行合理任务分配,可以解决稀疏矩阵向量乘法所包含的数据局部性差、写冲突、负载不均衡、频繁手动缓存判断和细粒度访存问题。通过测试佛罗里达稀疏矩阵数据集中的所有2710个算例,该算法可以获得与主核上的串行算法相比11.7倍的平均加速和55.0倍的最高加速。·针对申威架构设计了并行稀疏下三角方程求解器:首次提出了稀疏层次块布局和生产者消费者配对计算方式。前者解决数据局部性差、计算依赖、频繁缓存判断和细粒度访存的问题,后者解决利用规则寄存器通信完成不规则计算与同步的问题。通过测试佛罗里达稀疏矩阵数据集中所有2057个方阵,该算法可以获得与主核上串行算法相比7.8倍的平均加速和117.3倍的最高加速。与同时代的Intel KNC和Nvidia Kepler处理器上最新算法相比,可以在1624个算例上获得最优性能。·针对不同众核架构设计了三对角方程求解器:针对申威架构,设计了分布式循环消去法以充分利用向量化和有限缓存。针对MIC和GPU架构,设计了RegisterPCR(-half)-p Thomas算法以充分利用寄存器资源,并与循环消去类算法结合提出CR-Register-PCR(-half)-p Thomas算法以取得更好的计算与访存平衡。在5个不同架构上的测试显示,本文设计的算法均获得与串行最快算法相比满意的加速效果。