27
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

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」を開き、以下のように編集する。

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

参考URL

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
27
Help us understand the problem. What are the problem?