Basic Linear Algebra Subprograms

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

Basic Linear Algebra SubprogramsBLAS)は、ベクトル行列に関する基本線型代数操作を実行するライブラリAPIデファクトスタンダードである。1979年に初公開され、これを使ったLAPACKなどの上位パッケージが構築されている。科学技術計算高性能計算で多用される

高度に最適化(高速な実装)された BLAS API の実装がインテルIntel Math Kernel Library)などの各ハードウェアベンダーなどから提供されている。オープンソースの最適化 BLAS 実装として OpenBLASATLAS がある。LINPACK ベンチマークの性能は、BLAS のサブルーチンである DGEMM(倍精度汎用行列乗算)の性能に大きく影響される。

機能[編集]

BLASの機能は以下の3レベルに分類される。

Level 1[編集]

このレベルには、以下のような形式のベクトル演算が含まれる。

\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y} \!

他にもドット積ノルムなどが含まれる。

Level 2[編集]

このレベルには、以下のような形式の行列ベクトル演算が含まれる。

\boldsymbol{y} \leftarrow \alpha A \boldsymbol{x} + \beta \boldsymbol{y} \!

また、T \boldsymbol{x} = \boldsymbol{y}x について解く演算(T三角行列)なども含まれる。

Level 3[編集]

このレベルには、以下のような形式の行列同士の演算が含まれる。

C \leftarrow \alpha A B + \beta C \!

また、B \leftarrow \alpha T^{-1} B を三角行列 T について解く演算なども含まれる。このレベルにはよく使われる汎用行列乗算(GEMM)操作が含まれる。

Sparse BLAS[編集]

Sparse BLASは、疎行列を対象としたBLAS[1]

PBLAS[編集]

PBLASは、コンピュータ・クラスター並列計算)向けの並列BLAS(Parallel Basic Linear Algebra Subprograms)[2]MPI などの上で動作する BLACS を通信プロトコルとして利用する。

実装[編集]

reference BLAS
netlib による公式リファレンス実装C言語版とFORTRAN版がある。
Accelerate
アップルによる Mac OS X 向けフレームワーク。PowerPCIntel Core 向けに最適化されたBLASとLAPACKを含む。
ACML
AMD Core Math Library。Athlon および Opteron 上のLinuxWindowsをサポート。
ATLAS
オープンソース実装(C言語Fortran 77
clBLAS
AMD が提供する主に GPU 向けの OpenCL 上で動くオープンソース実装。
cuBLAS
NVIDIA CUDA SDK には、NVIDIA の GPU 上で動作するBLAS機能(C言語インタフェース)が含まれる。
ESSL
IBMの Engineering and Scientific Subroutine Library。PowerPC上のAIXおよびLinuxで動作。
GotoBLAS
後藤和茂が GotoBLAS を開発し、OpenBLAS へと引き継がれている。GotoBLAS は2010年2月が最後のバージョン。
HP MLIB
ヒューレット・パッカードの数学ライブラリ。IA-64/PA-RISC/x86/Opteron上のHP-UXおよびLinuxで動作。
Intel Math Kernel Library
インテルによる実装。x86, x86-64, IA64, Xeon Phi 上の Linux/Windows/Mac OS X で動作。
MathKeisan
日本電気による実装。NEC SX上のSUPER-UXと、Itanium上のLinuxをサポート。
OpenBLAS
オープンソース実装。x86, x86-64, MIPS, ARM, ARM64 上の Linux, Microsoft Windows, OS X, FreeBSD で動作。
PDLIB/SX
1994年に発表された日本電気SX-4向け数学ライブラリ(パブリックドメイン)。現在は配布されていない。
SCSL
SGIの実装。LAPACK も含む。IRIX上で動作。
Sun Performance Linaray
SPARC/AMD64上の Solaris 8, 9, 10 で動作する BLAS および LAPACK 実装。

BLASではないが類似ライブラリ[編集]

Elemental
分散メモリコンピュータ・クラスター)用の密行列・疎行列の線形代数および最適化ライブラリ。
GNU Scientific Library
C言語での実装。
uBLAS
BLAS機能を提供する汎用C++テンプレートクラスライブラリ。Boostライブラリの一部。高性能を追求するというよりも、C++の最新機能を使ってアルゴリズムを正しく実装することに注力している。

関連項目[編集]

参照[編集]

外部リンク[編集]

  • BLAS FAQ
  • BLAS operations GNU Scientific Library reference manual
  • BLAS Quick Reference Guide LAPACK Users' Guide
  • Lawson Oral History BLAS設計者の1人 Charles L. Lawson のインタビュー。by Thomas Haigh, 6 and 7 November, 2004, San Clemente, California. Society for Industrial and Applied Mathematics, Philadelphia, PA.
  • Dongarra Oral History BLAS、LINPACK、ATLAS 設計に関わった Jack J. Dongarra のインタビュー。 by Thomas Haigh, 26 April, 2005, University of Tennessee, Knoxville TN. Society for Industrial and Applied Mathematics, Philadelphia, PA