BLAS
外觀
BLAS(英語:Basic Linear Algebra Subprograms,基礎線性代數程式集)是一个應用程式介面(API)標準,用規範釋出基礎線性代數操作的數值庫(如向量抑是矩陣乘法)。 該當是程式集上頭先開佇一九七九年,閣較用佇咧建立閣較大的數值程式包(如 LAPACK)。 佇高效能計算領域,BLAS 予人廣泛使用。比如講,LINPACK 的運算是成績真大程度攏著愛決定 BLAS 中子程式 DGEMM 的表現。
為著提高效能,各軟硬體廠商是針對其產品著 BLAS 介面實現進行懸度最佳化。
BLAS 級別
BLAS 按照功能被分做三个級別:
- Level 一:向量-向量運算
- $ { \ boldsymbol { y } } \ leftarrow \ alpha { \ boldsymbol { x } } + { \ boldsymbol { y } } \ ! $
- Level 二:矩陣-向量運算
- $ { \ boldsymbol { y } } \ leftarrow \ alpha A { \ boldsymbol { x } } + \ beta { \ boldsymbol { y } } \ ! $
- Level 三:矩陣-矩陣運算
- $ C \ leftarrow \ alpha AB + \ beta C \ ! $
原理
BLAS 實現攏一般對記持體階層最佳化(Memory Hierarchy Optimization), 使數據咧欲取重用、甚至減少轉譯後備來緩衝區失誤(TLB miss)就提高運算效能。
實現
Netlib BLAS
- 官方來參考實現,程式語言為 Fortran 七十七。
ACML(AMD Core Math Library)
- 廠商 AMD 的 BLAS 實現。
ATLAS
- BSD 授權條款開源的 BLAS 實現。
CUDA SDK
- NVIDIA CUDA SDK 包括著矣 BLAS 功能,通過 C 編程實這馬 GeForce 八系列抑是更新一代顯示卡上執行。
GotoBLAS
- 德克薩斯進階計算中心後藤和茂開發的 BSD 授權條款開源的 BLAS 實現,但已經停止矣就活跳跳,後繼者為 OpenBLAS。
OpenBLAS
- 繼任啦 GotoBLAS 的開源 BLAS 的實現,主要是由中國科學院軟件研究所並列軟體佮計算科學實驗室做開發。
ESSL
- IBM 的科學工程數值庫 ESSL,支援 AIX 和 Linux 系統下的 PowerPC 架構。
Intel MKL
- Intel 核心數學庫,支援 Pentium,Intel Core 佮 ItaniumCPU 系列。實現平台包括 Linux , Windows 佮 OS X。
GSL
- GNU 科學數值庫(GNU Scientific Library)包括著矣 GNU 落有偌平台 C 語言實現。
RenderScript IntrinsicBLAS
- 是因為 Renderscript 的 Android 行動終端高效能 BLAS 實現。