李浩然,王 磊
1(中原工学院 计算机学院,郑州 450007)
2(中原工学院 前沿信息技术研究院,郑州 450007)
BLAS (Basic Linear Algebra Subprograms)基础线性代数库是一个基本线性代数操作的数学函数标准,支撑着许多计算机应用领域的数值线性代数计算,BLAS一般分为三级,一级主要完成向量与向量之间的操作;二级主要完成向量与矩阵之间的操作;三级主要完成向量与向量之间的操作.其不仅被广泛应用于科学计算领域,并且在深度学习方面,底层调用BLAS 库进行加速运算已经十分常见了.例如基于矩阵类的深度学习有90%或更多的时间是通过BLAS来进行计算的,因此一个高性能的BLAS 库具有十分重要的意义.目前各大主流处理器厂商都对其硬件平台做了深度优化工作,例如Intel的MKL (Math Kernel Library,数学核心库)、AMD的ACML (AMD Core Math Library)、以及在Nvidia 上使用的CuBLAS 等.
申威1621 处理器基于第三代“申威64”核心的国产高性能多核处理器,主要面向高性能计算和中高端服务器应用.设计目标主频为2.0 GHz,单芯片集成了16个64 位申威处理器核心,双精度浮点性能可达512 Gflpos.申威1621 处理器具有16 核心共享32 MB的三级Cache,支持256 位SIMD 指令,可以在最大程度上提升系统的数据级并行.
目前来说,BLAS 三级函数的研究已经较为成熟[1],因此本文的研究内容主要在于优化工作相对较少的BLAS一级函数上.首先BLAS 一级函数属于访存密集型函数,性能主要受限制于处理器本身的缓存大小和访存带宽,对这些函数优化难度较大[2];其次在于计算数据规模和排布的不确定性,又给优化工作带来新的难题……