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
です。
参考資料
マニュアル
ルーチン名やプログラム中での呼び出し方法等の利用方法は以下を参考にしてください。
- LAPACKの公式ホームページ(http://www.netlib.org/lapack/)
- ScaLAPACKの公式ホームページ(http://www.netlib.org/scalapack/)
- 『BLAS LAPACK ScaLAPACK使用手引書』(富士通コンパイラ版; ITO Portalから参照可能)
- 『Intel Parallel Studio XE Cluster Edition for Linux 2017』(Intelコンパイラ版; ITO Portalから参照可能)