BLAS

BLAS英語:,基础线性代数程序集)是一个应用程序接口(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
德克萨斯高级计算中心後藤和茂开发的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
基于Renderscript的Android移动终端高性能BLAS实现。[11]

參考文獻

  1. (英文)Eijkhout, Victor. (PDF). 2011: Page 349 [2012-01-02]. ISBN 978-1-257-99254-6. (原始内容存档 (PDF)于2019-09-19).
  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. (英文)OpenBLAS 页面存档备份,存于
  9. (英文)Engineering and Scientific Subroutine Library (ESSL)
  10. (英文)Math Kernel Library from Intel 页面存档备份,存于
  11. (英文)ScriptIntrinsicBLAS | Android Developers 页面存档备份,存于
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.