论文部分内容阅读
自“神威·太湖之光”计算机问鼎世界,我国高性能计算机和高性能计算应用蓬勃发展,位居世界前列。在当下国际激烈竞争中,自主可控技术和自主可控的知识产权显得尤为重要,而仅仅自主可控只是一个良好的开端,如何构建具有足够竞争优势的自主可控产业生态链是需要投入大量时间精力,科研开发人员全身心投入科研实践中去,探究摸索,搭建环境,最重要的是结合架构去优化底层库,使之更好的为上层应用服务。
基础线性代数子函数库(BLAS),作为高性能计算中最基本的数学库,对高性能计算机平台上的数值计算、人工智能等领域应用都起着重要作用。许多大规模科学计算应用,如流体动力学、大气数值模拟等,均依赖于高度优化的BLAS库来获得高效的运行效率。BLAS3级函数是矩阵与矩阵的运算,其中,GEMM是整个BLAS库性能的核心指标。由于矩阵乘法运算,是人工智能领域的重要热点函数,近年来,矩阵乘法的高性能优化成为了学术界和工业界的研究热点。稠密矩阵乘法属于计算密集的函数,且计算访存规则,如何充分利用平台特性,优化出足以发挥平台优势的BLAS库,是提升性能的关键。
目前,还没有能够充分发挥申威1621平台优势的高性能BLAS库。针对上述问题,在申威1621平台上,进行了GotoBLAS的实现与优化。结合申威1621平台特性从算法级优化、线程级优化、指令级优化三个方面进行研究,提出相关的优化技术,并取得了一定的性能提升与加速。本文完成的研究内容和主要贡献如下:
1.本文进行GEMM函数算法优化时,提出了计算模式改进,其思想不仅仅适用于申威1621平台,对于其他平台,同样可获得一定的性能提升。
2.提出了一种使用SIMD向量化进行核心代码优化的算法实现,为满足向量优化的算法实现分别进行了数据重排、计算数据块选择、浮点寄存器分配、向量化指令改写等优化技术。分别比较了SGEMM和DGEMM在Micro-kernel中使用cache行和使用向量化优化的最优数据块选择方案,并使用单核优化方式扩展到多核多线程进行实验验证。测试结果表明,优化后最佳分块下的SGEMM单核性能比GotoBLAS单核单精度浮点数平均加速52.09倍,DGEMM单核性能比GotoBLAS单核双精度浮点数平均加速32.75倍。
3.在多核并行下,提出的多核多线程的三种优化方案,1)初始线程缓冲区大小预设;2)减少计算任务重叠;3)保证线程安全的互斥锁换为原子锁。进一步发挥多核多线程性能优势,SGEMM函数4线程、8线程、16线程较优化后的单线程平均加速比分别为3.43、7.11、14.75;DGEMM函数4线程、8线程、16线程较优化后的单线程平均加速比分别为3.49、7.06、13.66。平均并行效率最高达92.19%。
基础线性代数子函数库(BLAS),作为高性能计算中最基本的数学库,对高性能计算机平台上的数值计算、人工智能等领域应用都起着重要作用。许多大规模科学计算应用,如流体动力学、大气数值模拟等,均依赖于高度优化的BLAS库来获得高效的运行效率。BLAS3级函数是矩阵与矩阵的运算,其中,GEMM是整个BLAS库性能的核心指标。由于矩阵乘法运算,是人工智能领域的重要热点函数,近年来,矩阵乘法的高性能优化成为了学术界和工业界的研究热点。稠密矩阵乘法属于计算密集的函数,且计算访存规则,如何充分利用平台特性,优化出足以发挥平台优势的BLAS库,是提升性能的关键。
目前,还没有能够充分发挥申威1621平台优势的高性能BLAS库。针对上述问题,在申威1621平台上,进行了GotoBLAS的实现与优化。结合申威1621平台特性从算法级优化、线程级优化、指令级优化三个方面进行研究,提出相关的优化技术,并取得了一定的性能提升与加速。本文完成的研究内容和主要贡献如下:
1.本文进行GEMM函数算法优化时,提出了计算模式改进,其思想不仅仅适用于申威1621平台,对于其他平台,同样可获得一定的性能提升。
2.提出了一种使用SIMD向量化进行核心代码优化的算法实现,为满足向量优化的算法实现分别进行了数据重排、计算数据块选择、浮点寄存器分配、向量化指令改写等优化技术。分别比较了SGEMM和DGEMM在Micro-kernel中使用cache行和使用向量化优化的最优数据块选择方案,并使用单核优化方式扩展到多核多线程进行实验验证。测试结果表明,优化后最佳分块下的SGEMM单核性能比GotoBLAS单核单精度浮点数平均加速52.09倍,DGEMM单核性能比GotoBLAS单核双精度浮点数平均加速32.75倍。
3.在多核并行下,提出的多核多线程的三种优化方案,1)初始线程缓冲区大小预设;2)减少计算任务重叠;3)保证线程安全的互斥锁换为原子锁。进一步发挥多核多线程性能优势,SGEMM函数4线程、8线程、16线程较优化后的单线程平均加速比分别为3.43、7.11、14.75;DGEMM函数4线程、8线程、16线程较优化后的单线程平均加速比分别为3.49、7.06、13.66。平均并行效率最高达92.19%。