BLASとは何? わかりやすく解説 Weblio辞書 (original) (raw)

Reference BLAS

開発元 The University of Tennessee and The University of Tennessee Research Foundation, The University of California Berkeley, The University of Colorado Denver[1]
最新版 3.12.0 / 2023年11月25日 (22か月前) (2023-11-25)[2]
リポジトリ github.com/Reference-LAPACK/lapackBLASとLAPACKをまとめて実装している
プログラミング言語 FortranC言語
種別 数値線形代数
ライセンス 三条項BSDライセンス
公式サイト www.netlib.org/blas/
テンプレートを表示

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

BLASの関数を多用するソフトウェアにおいてBLAS実装(ライブラリ)の質は速度に直結する。高度な最適化は実装が動くハードウェアに依存するため、多くのハードウェアベンダーが自社デバイスに特化したライブラリを提供している(インテルIntel oneAPI Math Kernel Library)。オープンソースの最適化 BLAS 実装として OpenBLAS などがある。

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

対応しているデータ型は単精度浮動小数点数倍精度浮動小数点数。近年 CPU および GPU で広く実装されている bfloat16 は、各 BLAS 実装が独自拡張[5]として実装していていて、今のところ、公式の BLAS 実装では実装されていない。

機能

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

Level 1

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

y ← α x + y {\displaystyle {\boldsymbol {y}}\leftarrow \alpha {\boldsymbol {x}}+{\boldsymbol {y}}\!} カテゴリ