论文部分内容阅读
BLAS(Basic Linear Algebra Subprograms)是一个以向量和矩阵为操作对象的基础函数库。该库中函数分为3个级别,各个级别分别提供了向量-向量(1级)、向量-矩阵(2级)、矩阵-矩阵(3级)之间的基本运算。BLAS函数库作为计算机处理数值线性代数基础运算的标准,在诸如数值模拟、矩阵计算、神经网络等领域有着广泛的应用,因此国外研究机构及处理器厂商均对该库开展了大量深入的性能调优工作,对提升实际应用的性能具有重要现实意义。本文在新兴申威26010众核处理器上设计实现了部分BLAS-1、2级函数并研究了其性能优化方法,申威26010CPU采用了异构众核架构,其众多计算核心提供的大规模并行处理能力,使单块芯片拥有3TFLOPS的双精度浮点计算性能。本文研究如何在申威26010众核处理器上对一些BLAS-1、2级函数进行并行实现,并充分利用平台特性对它们进行深度的性能调优,从而归纳总结程序在申威26010平台上的并行实现与优化技巧,为其它类似程序优化提供借鉴。通过使用诸如向量压缩、LDM双缓存、任务动态调度及数据子总线亲和等方法,大幅提高了目标函数的性能。本文的主要贡献有以下三点: 在申威26010众核处理器单核组上并行实现部分BLAS-1、2级函数,相对于GotoBLAS库参考实现而言,BLAS-1级函数平均加速比约为11倍,BLAS-2级函数平均加速比为12倍。 本论文采用了包括双缓冲、向量压缩、动态负载均衡等诸多行之有效的性能优化手段,充分提高了目标程序的性能,为今后在申威26010平台上程序优化工作提供了积极的借鉴意义。 通过在LAPACK函数中调用这些高效实现的BLAS-1、2级函数,发现相应的调用函数性能有显著提升,充分说明了本文工作的应用价值。