Edited at

Ubuntu/gfortranでLAPACKを使用するために

More than 1 year has passed since last update.

LAPACK(Linear Algebra PACKage)は、線形計算のための数値解析ソフトウェアライブラリである。

これを用いることで、


  • 線形方程式

  • 線形最小2乗問題

  • 固有値問題

  • 特異値問題

などを数値的に解くことができる。

今回は、このような便利なツールであるLAPACKを、Ubuntuのgfortranで使えるようにするための方法を紹介する。


1. LAPACKパッケージのダウンロード

http://www.netlib.org/lapack/

からできる(2015/10/11時点で、最新版は3.5.0)。


2. LAPACKパッケージを適当なディレクトリで解凍する

パッケージを解凍すると、「lapack-3.5.0」というディレクトリができているはずなので、下記のコマンドを順々に実行。

$ cd lapack-3.5.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

からできる(2015/10/11時点で最新版は3.0)。


4. LAPACK95パッケージを適当なディレクトリで解凍する

パッケージを解凍すると、「LAPACK95」というディレクトリができているはずなので、下記のコマンドを順々に実行。

$ cd LAPACK95/

$ mkdir lapack95_modules

続いて、LAPACK95/以下に入っている「make.inc」を開き、以下のように編集する。


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
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"を逆にするとコンパイルできない。)