FitenBLAS:面向FT1000微处理器的高性能线性代数库
2015-05-29迟利华刘杰晏益慧谢林川甘新标胡
迟利华 刘杰 晏益慧 谢林川 甘新标 胡庆丰 蒋杰 李胜国


摘 要:BLAS库是基本线性代数子程序库,是许多大型科学与工程计算的核心计算程序,FitenBLAS库是在多核多线FT1000微处理器上开发的基本线性代数库,其研制对FT1000微处理器在科学与工程计算中的应用具有重要意义.根据多级存储结构和寄存器的数目,设计了向量与向量、矩阵与向量和矩阵与矩阵运算的多级循环展开方法,采用指令调度、数据预取等通用优化技术,优化BLAS库串行程序.对于BLAS3子程序,设计了矩阵乘无冗余数据拷贝分块算法,采用指令重排、访存与计算的重叠、分块等技术优化矩阵乘子程序,基于矩阵乘子程序实现了其他BLAS3子程序.研制了汇编线性代数程库FitenBLAS,其核心子程序矩阵乘的双精度计算性能达到6.91Gflops,是峰值性能的86.4%.
关键词:FT1000微处理器;BLAS库;性能优化
中图分类号:TP332.2 文献标识码:A
基本线性代数子程序BLAS(Basic Linear Algebra Subroutines)库,提供最基本的线性代数函数接口[1],分为三级:BLAS 1(Level 1)包括向量与向量操作子程序,如点积、向量相加等.BLAS 2(Level 2)包括矩阵与向量操作子程序,如矩阵向量相乘等.BLAS 3(Level 3)包括矩阵与矩阵操作子程序,如矩阵与矩阵相乘等.
BLAS库是每款微处理器要移植和优化的数学库,是许多大型科学与工程计算的核心计算模块,同时BLAS库子程序可以反映许多应用程序的计算特点,如果BLAS库可以在微处理器上获得高性能,同样的应用程序也可以获得好的性能,BLAS库程序可以验证微处理器的功能和计算性能.因此各个厂家在……
