2015年1月28日水曜日

「Linux上でLapackをインストールし、使用確認する方法」



現在のシェルを調べる
echo $SHELL

まずLapackがなんであるか、自分の環境にはどのバージョンをダウンロードすればよいかを判断するために以下のサイトを参考にした。

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

Linux Distribution


·       Fedora, RedHat, Suse, Mandriva RPM

·       Debian Lapack Debian package
·       Cygwin Pick up lapack from the Math category during installation.
·       Ubuntu Lapack Ubuntu package
·       Gentoo Lapack Gentoo package
·       Quantian Lapack package

とあるように、どのバージョンをインストールすればよいか、OSを確認。


LinuxのOSが分からない時の確認方法


cat /proc/version


Linux version 2.6.32-358.23.2.el6.x86_64 (mockbuild@x86-022.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Sat Sep 14 05:32:37 EDT 2013


と表示される。つまり、Red Hat4.4.7-3というOSのバージョンということ。

Red Hatではi386、x86_64があるのでどちらのバージョンか調べるには “uname- a”とやる。

Linux *****-1 2.6.32-358.23.2.el6.x86_64 #1 SMP Sat Sep 14 05:32:37 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux

という感じで表示されるので、私の使っているサーバーはx86_64バージョンいう事になる 。

http://rpmfind.net/linux/rpm2html/search.php?query=lapack

上記のサイトから自分のバージョンにあうパッケージをダウンロード
私の場合はlapack-3.2.2.tgzをダウンロード
注:rpmファイルはサーバーの管理者用のファイルなので私はhttp://www.netlib.org/lapack/のサイトから lapack-3.2.2用のlapack-3.2.2.tgzを自分のホームディレクトリ にダウンロード

~/tmp/lapack-3.2.2.tgz

“tar xvfz lapack-3.2.2.tgz”によってファイルを解凍

解凍するとlapack-3.2.2ができているはず。lapack-3.2.2のフォルダの中にINSTALLというフォルダがある。その中にgfortran, ifort など各コンパイラごとに使うmakefileがあるのでそれをlapack-3.2.2フォルダの下にコピー。私はインテル用のfortran77コンパイラを使うのでmake.inc.ifortを下記のようにコピー。


cp INSTALL/make.inc.ifort ./make.inc


ここからblas, lapack,tmgのライブラリを下記のように作成。
>make blaslib
>make lapacklib
>make tmglib


ここで注意!コピーしたばかりのmake.incファイルでblaslib.aファイルを作ると、単精度の計算をするライブラリが作られることになる。倍精度で計算をしようと考えている人はmake.incを編集し、以下の箇所を倍精度が計算できるように変更。その後、"make blaslib"をする。


#  Location of the extended-precision BLAS (XBLAS) Fortran library
#  used for building and testing extended-precision routines.  The
#  relevant routines will be compiled and XBLAS will be linked only if
#  USEXBLAS is defined.
#
USEXBLAS    = Yes
#XBLASLIB     =

XBLASLIB    = -lxblas

うまくいけば blas_LINUX.a,lapack_LINUX.a,tmg_LINUX.a の3つのファイル(ライブラリファイル)が完成している。これを任意のディレクトリに置く。管理者なら /usr/local/lib,自分用のライブラリ専用ディレクトリを作るなら ホームディレクトリ以下の~/local/lib/lapack/ あたりに置くと良い。

ライブラリファイル(lapack95.aファイル)はgfortran、ifortなどで、オプションとして指定したいときにliblapack95.aと名前を変えておくと、引数-lを使って指定できるので下記のように名前を変える。同じように.aのライブラリファイルがあれば、ファイル名の最初にlibが使われてなかったら、mvコマンドで名前を変えておくのがよい。


mv blas_LINUX.a libblas.a
mv lapack_LINUX.a liblapack.a
mv tmg_LINUX.a libtmg.a

これらのlapackのライブラリファイルをカレントディレクトリから使うには

ifort -I/home/****/lib mode_conv3.f -L/home/****/lib  -llapack -lblas 
のようにLAPACKのライブラリファイルがあるフォルダーを指定する必要がある。

--------------------------------------------------------------------------------------------


Lapackがうまくインストールされたかどうかチェックするには、固有値のテスト計算をしてみればよい。

以下のサイトは固有値、固有ベクトルを計算するサンプルプログラムが置かれている。

http://people.sc.fsu.edu/~jburkardt/f77_src/test_eigen/test_eigen.html
http://people.sc.fsu.edu/~jburkardt/f77_src/lapack_examples/lapack_prb.f
http://people.sc.fsu.edu/~jburkardt/f77_src/eispack/eispack.html

何種類かの方法で固有値が計算できるようになっているので、うまくテスト計算がでてきたらインストール成功といえよう。

このテストプログラムは、自分でLapackを使った固有値計算が必要なときにも参考になるのでテスト計算はおすすめ。注意すべきことは、ここにあるほとんどのサブルーチンが対称行列の計算を対象としている。ヤコビ法などがそれ。私が確認した限りでは、eispack_prb.fの中のtest04のみ非対称行列でも計算が可能だった。

--------------------------------------------------------------------------------------------


Fortran95 を使っている方は、別途、Lapack95をインストールする。

0 件のコメント:

コメントを投稿