BLAS

規範釋出基礎線性代數操作的數值庫

BLAS(英语:Basic Linear Algebra Subprograms,基础线性代数程序集)是一个应用程序接口(API)标准,用以规范发布基础线性代数操作的数值库(如矢量或矩阵乘法)。该程序集最初发布于1979年,并用于建立更大的数值程序包(如LAPACK)。在高性能计算领域,BLAS被广泛使用。例如,LINPACK的运算成绩则很大程度上取决于BLAS中子程序DGEMM的表现。

为提高性能,各软硬件厂商则针对其产品对BLAS接口实现进行高度优化。

BLAS级别

BLAS按照功能被分为三个级别:[1]

  • Level 1:矢量-矢量运算
 
  • Level 2:矩阵-矢量运算
 
  • Level 3:矩阵-矩阵运算
 

原理

BLAS实现都一般对存储器层次结构优化(Memory Hierarchy Optimization),使数据在缓存重用、甚或减少转译后备缓冲器失误(TLB miss)而提高运算性能。[2] [3]

实现

Netlib BLAS
官方参考实现,程序语言为Fortran 77[4]
ACML(AMD Core Math Library)
厂商AMD的BLAS实现。[5]
ATLAS
BSD许可证开源的BLAS实现。[6]
CUDA SDK
NVIDIA CUDA SDK包含了BLAS功能,通过C编程实现在GeForce 8系列或更新一代显卡上运行。
GotoBLAS
德克萨斯高级计算中心英语Texas Advanced Computing Center后藤和茂开发的BSD许可证开源的BLAS实现,但已停止了活跃开发,后继者为OpenBLAS。[7]
OpenBLAS
继任GotoBLAS的开源BLAS的实现,主要由中国科学院软件研究所并行软件与计算科学实验室进行开发。[8]
ESSL
IBM的科学工程数值库ESSL,支持AIXLinux系统下的PowerPC架构。[9]
Intel MKL
Intel核心数学库,支持PentiumIntel CoreItaniumCPU系列。实现平台包括Linux, WindowsOS X[10]
GSL
GNU科学数值库(GNU Scientific Library)包含了GNU下的多平台C语言实现。
RenderScript IntrinsicBLAS
基于RenderscriptAndroid移动终端高性能BLAS实现。[11]

参考文献

外部链接