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]

參考文獻

编辑
  1. ^ (英文)Eijkhout, Victor. Introduction to High Performance Scientific Computing (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页面存档备份,存于互联网档案馆

外部链接

编辑

📚 Artikel Terkait di Wikipedia

Math.NET Numerics

在Microsoft Windows和支持Mono的平台上运行。 可选支持Intel Math Kernel库(Microsoft Windows和Linux)。 可选的F#扩展名,更多的成语用法。 Math.NET Numerics ReadMe. GitHub.com. [2013-05-08]

英特尔集成性能原语

Analytics Acceleration Library(英语:Data Analytics Acceleration Library) (DAAL) Intel Math Kernel Library(英语:Math Kernel Library) (MKL) Intel Threading

JavaScript库列表

SmartClient Webix WinJS Glow Lively Kernel Script.aculo.us YUI库 Google Closure Library Joose JsPHP Microsoft's Ajax library MochiKit PDF.js Rico Socket.IO

Fortran

几个著名的Fortran软件包: IMSL — 国际数学和统计库的数值库 MKL(英语:Math Kernel Library) — Intel数学核心库 NAG(英语:NAG Numerical Library) — 数值算法组的数值库 BLAS — 基本线性代数子程序库 LAPACK — 线性代数软件包

模除

[2022-02-28]. (原始内容存档于2022-11-27).  math package - math - pkg.go.dev. pkg.go.dev. [2022-02-28]. (原始内容存档于2025-07-13).  big package - math/big - pkg.go.dev. pkg.go

Wolfram Mathematica

(原始内容存档于2011-08-23).  MaMa: Calling MATLAB from Mathematica with MathLink -- from Wolfram Library Archive. library.wolfram.com. [2025-01-14]. (原始内容存档于2025-01-24).  R-Link

Xcas

ujf-grenoble.fr. [2023-03-04]. (原始内容存档于2020-09-29). Giac is a C++ library, it is the CAS computing kernel, it may be used inside other C++ programs, and also Python

范畴论

ISBN 978-0-691-14049-0. MR 2522659. arXiv:math.CT/0608040 .  Mac Lane, Saunders. Categories for the Working Mathematician. Graduate Texts in Mathematics