基于鲲鹏处理器的LAPACK对称矩阵方程求解例程的性能优化研究
作者单位:兰州大学
学位级别:硕士
导师姓名:陈文波;张洋
授予年度:2022年
学科分类:08[工学] 081201[工学-计算机系统结构] 0812[工学-计算机科学与技术(可授工学、理学学位)]
主 题:鲲鹏处理器 线性代数 LAPACK 对称矩阵方程求解 性能优化
摘 要:随着高性能计算解决的问题不断增多,对计算架构多样性的需求也在不断增加。2019年,华为推出了首个基于ARM架构的国产处理器鲲鹏920,它高性能、高吞吐、高集成和高能效的优势可以为更多的企业和研究机构构建高性能、低功耗的新计算平台。面对高性能计算应用性能的挑战,除了可靠的硬件还需要依赖高性能的软件如编译器、数学库、MPI通信库等,尤其是线性代数库。线性代数中的对称矩阵方程求解问题常出现在工程领域,如流固耦合问题、航空航天中的动力学问题等,并且多为大规模稠密对称矩阵,使用LAPACK库的对称矩阵方程求解的相关例程加速计算,可以有效地缩短计算时间。但是当前对称矩阵的相关研究主要针对特征值计算和矩阵分解的问题,并且大多基于X86架构进行研究,对方程求解以及基于非X86架构的研究非常少。此外,目前基于鲲鹏架构的软件生态仍旧匮乏,尤其是LAPACK中关于对称矩阵方程求解的相关例程在鲲鹏架构上的性能表现不佳。因此基于鲲鹏处理器优化LAPACK对称矩阵方程求解相关例程不仅可以提升应用程序计算性能,还可以完善国产高性能计算平台的计算生态。针对这一问题,本文基于鲲鹏处理器对LAPACK库的对称矩阵方程求解相关例程进行优化。首先分析LAPACK中的对称矩阵方程求解相关例程。经过性能分析,本文发现对于单精度的SYSV例程,应对相应精度的SYTRF和SYTRS进行优化。在优化的过程中,应重点优化其调用的GEMM、GER、GEMV例程。而对于双精度的SYSV例程,应对相应精度的SYTRF和SYTRS2进行优化,优化的重点是其调用的GEMM和TRSM例程。因此本文在鲲鹏处理器上针对LAPACK对称矩阵方程求解相关例程的优化从三个层面入手。首先,本文对例程中的参数NB进行测试,找到其在鲲鹏架构上的最优值。接着,根据前面的性能分析结果进行代码优化:(1)对SYTRF、LASYF、SYTF2和SYTRS进行语句优化,替换旧的Fortran语法以及将循环中的分支放到循环外;(2)对调用的GEMM、GER、GEMV和TRSM进行循环展开;(3)在SYTRF、SYTRS和SYTRS2中进行数据预取;(4)在SYSV中使用Open MP和MPI编程方式对调用SYTRS或SYTRS2的过程进行并行化。最后,从编译的角度,为LAPACK选取合适的编译选项,利用编译器的自动优化功能进一步地优化例程的性能。完成前述优化后,本文对优化前后的例程进行性能对比分析,并与目前基于ARM架构优化的两个数学库ARMPL和KML以及基于Intel处理器优化的Intel MKL中相同功能的例程进行性能对比。最后,本文将优化后的LAPCK对称矩阵方程求解相关例程用于高性能计算应用DFTB+的部署,验证优化后的LAPCK对称矩阵方程求解相关例程可以为DFTB+带来性能提升。本文的研究结果表明,经过优化后,LAPACK对称矩阵方程求解相关例程的性能大幅提升。与优化前的LAPACK对称矩阵方程求解相关例程的有效计算相比,单精度实数下可获得的加速比为12.857,双精度实数下可获得的加速比高达21.161,单精度复数下加速比为11.761,双精度复数下加速比为12.497。在与基于ARM架构优化的数学库ARMPL和KML的相同功能例程的性能对比中,本文优化的对称矩阵方程求解相关例程的性能表现也更好。另外与Intel平台上的Intel MKL相同功能的例程进行性能对比,本文优化的LAPACK对称矩阵方程求解相关例程可获得的最高加速比达5.842。将本文优化的LAPACK应用于DFTB+的部署,测试结果也显示计算性能明显提升,并且通过计算结果可视化和DOS对比证明优化后的LAPACK在提升DFTB+性能的同时不影响其最终的计算结果。本文基于鲲鹏处理器设计了LAPACK对称矩阵方程求解相关例程的优化方案,并进行实现和性能对比分析,为进一步优化LAPACK和优化其它线性代数库提供了一个思路,可供其他研究人员参考。