ホーム » ソフトウェア » BLAS / LAPACK / ScaLAPACK

BLAS / LAPACK / ScaLAPACK

最終更新日:2017年10月2日

LAPACK(Linear Algebra PACKage)は、数学ソフトウェア、スーパーコンピュータの性能評価データなどの情報を提供する netlib(http://www.netlib.org/) で公開されている線形計算ライブラリです。各ルーチンはFortranで記述されています。 利用者は Fortran/C/C++ プログラムから各ルーチンを呼び出します。


LAPACK は、ベクトル演算や行列演算などの『核』となる部分でBLAS(Basic Linear Algebra Subprograms)ライブラリを呼び出します。


LAPACK には、約300種類、各精度を合計すると約1,100本のルーチンが用意されています。 主な機能は以下の通りです:


  • 連立1次方程式(一般密行列、バンド行列、対称 Hermite 行列など)
  • 線形最小二乗問題(最小ノルム解,一般化線形モデル問題など)
  • 固有値問題(対称/非対称固有値問題,一般化固有値問題など)
  • 特異値分解(特異値,特異ベクトルなど)

LAPACK は、一般に問題を解くための機能を提供するドライバルーチン(driver routines)、 個々の問題を解くための機能を提供する計算ルーチン(comutational routines)、および、 補助的な計算や共通に使用される手続きを提供する補助ルーチン(auxiliary routines) で構成されています。


ScaLAPACK は線形代数分野の計算をメッセージパッシングで並列化したライブラリです。 連立一次方程式、逆行列、固有値問題、特異値分解などの問題を解くことができます。


利用方法

利用可能なコンパイラ

BLAS / LAPACK /ScaLAPACKは、富士通コンパイラIntelコンパイラPGIコンパイラから利用することができます。 また NAG ライブラリにもLAPACK互換サブルーチンが提供されています。


富士通コンパイラ:非並列版 BLAS / LAPACK

Fortran では翻訳時オプションに -SSL2 を指定します。

$ frt -SSL2 test.f90

C言語のプログラムで BLAS、LAPACK を利用する場合は、事前にプログラムの main() ルーチンを MAIN__() に変更しておきます。また、各ルーチンの末尾にアンダースコアを二つ付加し、配列以外の変数の先頭には & を付加する必要があります。 翻訳時オプションは -SSL2 です。

$ fcc -SSL2 test.c

富士通コンパイラ:スレッド並列版 BLAS / LAPACK

Fortranでは翻訳時オプションに -SSL2BLAMP オプションを指定します。

$ frt -Kfast,openmp -SSL2BLAMP test.f90

C言語のプログラムで BLAS, LAPACK を利用する場合は、事前にプログラムの main() ルーチンを MAIN__() に変更しておきます。 また、各ルーチンの末尾にアンダースコアを二つ付加し、 配列以外の変数の先頭には & を付加する必要があります。 翻訳時オプションは -SSL2BLAMP です。

$ fcc -Kfast,openmp -SSL2BLAMP test.c

富士通コンパイラ:ScaLAPACK

mpifrt コマンドのオプションとして -SCALAPACK および 使用するBLAS / LAPACK の種類に応じて -SSL2 または -SSL2BLAMP オプションを指定します。 -SSL2BLAMP オプションを指定する場合 -KOMP オプションも一緒に指定します。

例1)逐次版 BLAS / LAPACK を ScaLAPACK から使用する。

$ mpifrt -SCALAPACK -SSL2 a.f90

例2)スレッド並列版 BLAS / LAPACK を ScaLAPACK から使用する。

$ mpifrt -c a.f90
$ mpifrt -KOMP -SCALAPACK -SSL2BLAMP a.o

Intelコンパイラ:BLAS / LAPACK

Intel Math Kernel Library (MLK) の ScaLAPACK を利用する場合は、 翻訳時オプション -mkl およびリンク時オプション -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 を指定します。

$ ifort -mkl test.f90

Intelコンパイラ:ScaLAPACK

Intel Math Kernel Library (MLK) の ScaLAPACK を利用する場合は、 翻訳時オプション -mkl およびリンク時オプション-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 を指定します。

$ mpiifort -mkl ex.f90 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64

PGIコンパイラ:BLAS / LAPACK / ScaLAPACK

オプションはそれぞれ-blas-llapack-Mscalapackです。

参考資料

マニュアル

ルーチン名やプログラム中での呼び出し方法等の利用方法は以下を参考にしてください。