iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

BLAS, LINPACK, LAPACK

BLAS とは

ベクトルと行列に関する積や和などの基本的な操作を提供するライブラリのことっぽい。機能はレベルに分類されるらしい。

  • Level 1:ベクトル演算
  • Level 2:行列ベクトル演算
  • Level 3:行列同士の演算

有名な操作として GEMM (ジェム)がある。GEMM とは General Matrix Multiplication のことで、C = αAB + βC を計算する。

精度を頭につけて識別する。例えば SGEMM は 32bit float、DGEMM は 64bit float。

LINPACK, LAPACK とは

線形方程式や固有値問題などを解くための線形代数のライブラリ。BLAS を利用している。LAPACK は LINPACK の後継。両方 Fortran で書かれている。

BLAS と同様の命名規則が採用されているようだ。 DGESV は double (D) の一般行列 (GE) の方程式の求解 (SV) である。

BLAS の実装

ありがたい情報を貰いました……感謝!!

MKL は BLAS のみならず LAPACK や FFTW と互換性のある関数群も含んでいるらしいです。

CUDA の BLAS には NVIDIA 公式の cuBLAS がある。CUDA の LAPACK には CULA と MAGMA というものがあるようだ(どちらも公式ではなさそう)。

BLAS, LAPACK の間接的な利用