LAPACK(Linear Algebra PACKage)は、線形計算のための数値解析ソフトウェアライブラリである。
これを用いることで、
- 線形方程式
- 線形最小2乗問題
- 固有値問題
- 特異値問題
などを数値的に解くことができる。
今回は、このような便利なツールであるLAPACKを、Ubuntuのgfortranで使えるようにするための方法を紹介する。
1. LAPACKパッケージのダウンロード
http://www.netlib.org/lapack/
からできる(2020/01/06時点で、最新版は3.9.0)。
2. LAPACKパッケージを適当なディレクトリで解凍する
パッケージを解凍すると、「lapack-3.9.0」というディレクトリができているはずなので、下記のコマンドを順々に実行。
$ cd lapack-3.9.0/
$ cp make.inc.example make.inc
$ make blaslib
$ make lapacklib
$ make tmglib
この時点で、ディレクトリ内に「librefblas.a」「liblapack.a」「libtmglib.a」という3つのファイルができているはずである。引き続き下記のコマンドを実行。
$sudo cp librefblas.a /usr/local/lib/libblas.a
$sudo cp liblapack.a /usr/local/lib/liblapack.a
$sudo cp libtmglib.a /usr/local/lib/libtmg.a
3. LAPACK95パッケージのダウンロード
http://www.netlib.org/lapack95
からできる(2020/01/06時点で最新版は3.0)。
4. LAPACK95パッケージを適当なディレクトリで解凍する
パッケージを解凍すると、「LAPACK95」というディレクトリができているはずなので、下記のコマンドを順々に実行。
$ cd LAPACK95/
$ mkdir lapack95_modules
続いて、LAPACK95/以下に入っている「make.inc」を開き、以下のように編集する。
FC=gfortran
FC1=gfortran
OPTS0=-O3 (<- Oは大文字のO(オー))
MODLIB=-I./../lapack95_modules (←4.で作ったディレクトリと同じ名前)
LAPACK_PATH=/usr/local/lib/ (←2.で「librefblas.a」などの移動先に指定したのと同じディレクトリ)
LAPACK95=../lapack95.a
LAPACK77=$(LAPACK_PATH)/liblapack.a
TMG77 =$(LAPACK_PATH)/libtmg.a
BLAS =$(LAPACK_PATH)/libblas.a
続いて下記のコマンドを実行。
$cd SRC/
$make single_double_complex_dcomplex
これによって、LAPACK95/に「lapack95.a」が生成されているはず。これを/usr/local/lib/に移動させて、更にファイル名を「liblapack95.a」に変更する(ファイル名の頭文字に"lib"がついてないといけないらしい)。
最後に、
LAPACK95/lapack95_modules/以下に入っているファイルを全て、
/usr/local/include/
に移動させる。
以上で終了。あとはコンパイルするだけ。
LAPACK95を使用したfortranプログラムのコンパイル方法は、
http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/tips/linux/fortran.html
に掲載されております。
(その他にも、「lapack fortran」で検索すれば色々と出てくるはず)
基本的に、
$gfortran [fortranファイル名] -I/usr/local/include -llapack95 -llapack -lblas
と入力すればコンパイルできるはず。
(オプションの順番が大事。例えば”-llapack”と"-lblas"を逆にするとコンパイルできない。)