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
基于RenderscriptAndroid移动终端高性能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.