BLAS

維基百科,自由的百科全書
跳至導覽 跳至搜尋

BLAS(英語:Basic Linear Algebra Subprograms,基礎線性代數程式集)是一個應用程式介面(API)標準,用以規範釋出基礎線性代數操作的數值庫(如向量或矩陣乘法)。該程式集最初釋出於1979年,並用於建立更大的數值程式包(如LAPACK)。在高效能計算領域,BLAS被廣泛使用。例如,LINPACK的運算成績則很大程度上取決於BLAS中子程式DGEMM的表現。

為提高效能,各軟硬件廠商則針對其產品對BLAS介面實現進行高度最佳化。

BLAS級別[編輯]

BLAS按照功能被分為三個級別:[1]

  • Level 1:向量-向量運算
<math>\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y} \!</math>
  • Level 2:矩陣-向量運算
<math>\boldsymbol{y} \leftarrow \alpha A \boldsymbol{x} + \beta \boldsymbol{y} \!</math>
  • Level 3:矩陣-矩陣運算
<math>C \leftarrow \alpha A B + \beta C \!</math>

原理[編輯]

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頁面存檔備份,存於互聯網檔案館

外部連結[編輯]