intel fortran + MKL から,gfortran + Lapack95 に移行したのでメモ.(OSは,fedora 22)
まず,gfortran と LAPACK をインストール.(BLASも依存関係にあるので,同時に入るはず)
#dnf install gcc-gfortran lapack lapack-devel
問題なくインストールできていれば,DGESVのサンプルコード(software.intel.com)を “test.f” に保存して
$gfortran test.f -lblas -llapack
でコンパイルできるはず.
次に,LAPACK95のソースをNetlib(http://www.netlib.org/lapack95/)からダウンロードし,”lapack95.tgz”を適当なところに解凍する.
“LAPACK95″というディレクトリができているはずなので,その中で以下を実行.
$ mv SRC/makefile SRC/Makefile
$ mkdir lapack95_modules
“make.inc” を以下の通り編集.
FC = gfortran
FC1 = gfortran
OPTS0 = -O3
MODLIB = -I./../lapack95_modules
OPTS1 = -c $(OPTS0)
OPTS3 = $(OPTS1) $(MODLIB)
OPTL = -o
OPTLIB =
LAPACK_PATH = -L/usr/lib64
LAPACK95 = -llpack95
LAPACK77 = -llapack
TMG77 = -ltmglib
BLAS = -lblas
最後に,以下を実行してLAPCK95をコンパイル.
$ cd SRC
$ make single_double_complex_dcomplex
これで”lapack95.a” と “lapack95_modules” 内に,モジュール中間ファイルが作成されているはず.
後は,適当なディレクトリ(例えば”/usr/lib64/lapack95″, “/usr/include/lapack95″)を作ってその中にlapack95.aとlapack95_modulesをコピー.
# mkdir /usr/lib64/lapack95
# mkdir /usr/include/lapack95
# cp lapack95.a /usr/lib64/lapack95/liblapack95.a
# cp lapack95_modules/*.mod /usr/include/lapack95
そんでもって “liblapack95.a”に対し,pathの通っている”/usr/lib64″へシンボリックリンクを貼る.
# ln -s /usr/lib64/lapack95/liblapack95.a /usr/lib64/liblapack95.a
これでLAPACK95を使う準備完了のはず.ココ(http://nagappi.hatenablog.com)のサンプルコードを,”inv.f90″に保存して以下が実行できていればOKな「はず」.
$ gfortran inv.f90 -llapack95 -llapack -lblas -I/usr/include/lapack95/
参考
http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/tips/linux/fortran.html