BLAS

维基百科,自由的百科全书
跳转至: 导航搜索

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

为提高性能,各軟硬件厂商则针对其產品对BLAS接口实现进行高度最佳化。

BLAS級別[编辑]

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

  • Level 1:矢量-矢量运算
\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y} \!
  • Level 2:矩阵-矢量运算
\boldsymbol{y} \leftarrow \alpha A \boldsymbol{x} + \beta \boldsymbol{y} \!
  • Level 3:矩阵-矩阵运算
C \leftarrow \alpha A B + \beta C \!

原理[编辑]

BLAS實現都一般對記憶體階層最佳化(Memory Hierarchy Optimization),使數據在快取重用、甚或減少轉譯後備緩衝區失誤(TLB miss)而提高運算效能。[2] [3]

實現[编辑]

參考文獻[编辑]

  1. ^ (英文)Eijkhout, Victor. Introduction to High Performance Scientific Computing (PDF). 2011. Page 349. ISBN 978-1-257-99254-6. 
  2. ^ (简体中文)BLAS庫在多核處理器上的性能測試與分析
  3. ^ (英文)Anatomy of High-Performance Matrix Multiplication
  4. ^ (英文)BLAS (Basic Linear Algebra Subprograms)
  5. ^ (英文)AMD Core Math Library
  6. ^ (英文)Automatically Tuned Linear Algebra Software (ATLAS)
  7. ^ (英文)GOTOBLAS2
  8. ^ (英文)Engineering and Scientific Subroutine Library (ESSL)
  9. ^ (英文)Math Kernel Library from Intel