Basic Linear Algebra Subprograms

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
BLAS
最新版
3.8.0 / 2017年11月 (2017-11)
プログラミング
言語
Fortran
種別 数値解析ソフトウェア
公式サイト BLAS (Basic Linear Algebra Subprograms)
テンプレートを表示

Basic Linear Algebra SubprogramsBLAS)は数値線形代数の基礎的演算に必要な関数を定義するAPIである[1]ベクトル行列演算を含む38の関数からなる。1979年に発表された[2]のち多数の実装が作成・整備され続けており、この分野におけるデファクトスタンダードとなっている。BLASの基礎演算を利用してLAPACKなどの上位パッケージが構築されており、科学技術計算高性能計算で多用される。

BLASの関数を多用するソフトウェアにおいてBLAS実装(ライブラリ)の質は速度に直結する。高度な最適化は実装が動くハードウェアにも依存するため、特定CPUに特化したライブラリが提供される場合もある(インテルCPU向け: Intel Math Kernel Library)。オープンソースの最適化 BLAS 実装として OpenBLASATLAS英語版 がある。

LINPACK ベンチマークの性能は、BLAS のサブルーチンである DGEMM(倍精度汎用行列乗算)の性能に大きく影響される。

機能[編集]

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

Level 1[編集]

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

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

Level 2[編集]

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

また、 について解く演算(三角行列)なども含まれる。

Level 3[編集]

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

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

Sparse BLAS[編集]

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

PBLAS[編集]

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

実装[編集]

reference BLAS
netlib による公式リファレンス実装C言語版とFORTRAN版がある。
Accelerate
Appleによる 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/macOS で動作。
MathKeisan
日本電気による実装。NEC SX上のSUPER-UXと、Itanium上のLinuxをサポート。
OpenBLAS
オープンソース実装。x86, x86-64, MIPS, ARM, ARM64 上の Linux, Microsoft Windows, macOS, 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++の最新機能を使ってアルゴリズムを正しく実装することに注力している。

関連項目[編集]

参考文献[編集]

  • C. L. Lawson, R. J. Hanson, D. R. Kincaid, F. T. Krogh. (1979). Basic Linear Algebra Subprograms for Fortran Usage. doi: 10.1145/355841.355847
    • BLAS提唱論文

脚注[編集]

  1. ^ "This paper describes a package, called the BLAS, of thirty-eight FORTRAN-callable subprograms for basic operations of numerical linear algebra." Lawson, et al. (1979).
  2. ^ Lawson, et al. (1979).
  3. ^ Sparse BLAS: A Baseline Implementation of the BLAS Standard
  4. ^ PBLAS Home Page

外部リンク[編集]

  • 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