BLAS
BLAS(英語:Basic Linear Algebra Subprograms,基础线性代数程序集)是一个应用程序接口(API)标准,用以规范发布基础线性代数操作的数值库(如矢量或矩阵乘法)。该程序集最初发布于1979年,并用于建立更大的数值程序包(如LAPACK)。在高性能计算领域,BLAS被广泛使用。例如,LINPACK的运算成绩则很大程度上取决于BLAS中子程序DGEMM的表现。
为提高性能,各軟硬件厂商则针对其產品对BLAS接口实现进行高度最佳化。
BLAS級別编辑
原理编辑
實現编辑
- 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,支持AIX和Linux系统下的PowerPC架构。[9]
- Intel MKL
- Intel核心数学库,支持Pentium,Intel Core与ItaniumCPU系列。实现平台包括Linux, Windows及OS X。[10]
- GSL
- GNU科学数值库(GNU Scientific Library)包含了GNU下的多平台C语言实现。
- RenderScript IntrinsicBLAS
- 基于Renderscript的Android移动终端高性能BLAS实现. [11]
參考文獻编辑
- ^ (英文)Eijkhout, Victor. Introduction to High Performance Scientific Computing (PDF). 2011: Page 349. ISBN 978-1-257-99254-6.
- ^ (简体中文)BLAS庫在多核處理器上的性能測試與分析
- ^ (英文)Anatomy of High-Performance Matrix Multiplication 互联网档案馆的存檔,存档日期2010-06-14.
- ^ (英文)BLAS (Basic Linear Algebra Subprograms)
- ^ (英文)AMD Core Math Library 互联网档案馆的存檔,存档日期2012-01-18.
- ^ (英文)Automatically Tuned Linear Algebra Software (ATLAS)
- ^ (英文)GOTOBLAS2
- ^ (英文)OpenBLAS
- ^ (英文)Engineering and Scientific Subroutine Library (ESSL)
- ^ (英文)Math Kernel Library from Intel
- ^ (英文)ScriptIntrinsicBLAS | Android Developers