| [サイトマップへ] |
LAPACK とは,行列に関する種々の問題(連立1次方程式,固有値問題,などなど多数).FORTRAN で書かれています.LAPACK は,BLAS の機能を利用して,種々の機能を実現します.(BLAS を速いものに入れ替えれば,LAPACK も速くなる).
この Web ページでは,LAPACK のインストール手順を図解で説明します.
わざわざ,LAPACK のソースコードからビルドしている理由は, GotoBLAS あるいはATLAS とリンクしたいから.
LAPACK 3.3.1 では,GNU の FORTRAN コンパイラ・バージョン 3 を使うことはできません.
LAPACK バージョン 3.3.1 のビルドには,FORTRAN 90 コンパイラが必要であり, GNU の FORTRAN コンパイラでは,バージョン 4 が必要ということになります. ※ GNU の FORTRAN コンパイラでは,バージョン 3 は,FORTRAN 90 コンパイラではない.
参考 Web ページ: http://cygwin.com/packages/lapack/lapack-3.0-8-src
「octave for windowsメモの筆者」様から, http://c.2ch.net/ の「データ解析ツールoctaveを語ろう」掲示板を通し, さまざまな情報とご示唆を頂きました.さらには,Web ページを丁寧に見て頂きました.感謝します. (ここでは,その詳細を述べるのは差し控えます.この Web ページに間違いが残っていれば,それは,作者である私の責任です).
敬意を込めて, 「octave for windowsメモの筆者」様の URL を記しておきます. http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html (「リンクの許可は要りません」に甘えまして,リンクを張っています) ⇒ この Web ページは,分かりやすく,また,Octave に関係する種々の有益な情報(ここにしか無いオンリー・ワンの情報)が載ったページと言ってよいでしょう.
Windows に GotoBLAS と CBLAS をインストールの Web ページの記述に従って,GotoBLAS のインストールを終えていること.
ATLAS のビルド時に,同時に LAPACK をビルドするのが都合が良い. ATLAS と LAPACK のビルドとインストールの手順は,別の Web ページにまとめて説明しています.
※ GotoBLAS も ATLAS も,どちらも素晴らしいソフトウエアです(いずれにしても,ライセンス条項をよく確認すること).
Cygwin のセットアッププログラム setup.exe を使って, LAPACK バージョン 3.3.1 をソースプログラムからコンパイルするのに必要となる他のソフトウエアをインストールします.簡単にインストールできます.
下記のパッケージを選ぶ.
「keep」になっている場合には,インストール済みなので,keep のままでよい.
ここで行うことは,日本国内の Cygwin 配布サイトから, Cygwin の Math/liblapack-develソースコードパッケージファイル をダウンロードすること.
ls /usr/src/lapack*
この Web ページで注意事項を確認
ダウンロード
cd /tmp tar -xvzof /tmp/lapack-3.3.1.tar.gz
cd /tmp ln -s lapack-3.3.1 lapack-3.2.2 patch -p1 < /usr/src/lapack-3.2.2-2.src.patch
途中でエラーが出る.Enter キーを押し続けてスキップする
cd /tmp patch -p1 < /usr/src/lapack-3.2.2-2.cygwin.patch
Cygwin のコンソール で,次のコマンドを実行
cd /tmp/lapack-3.3.1 cp make.inc.example make.inc
BLASLIIB の行 には,BLAS のライブラリファイル名(1つ)を書きます.
次のようになります.これは一例です.※ LOADOPTS の設定は必要ありません.
■ GNU のコンパイラを使う場合の実行例
BLASLIB = /usr/lib/libgoto2.a
■ MinGW のコンパイラを使う場合の実行例
BLASLIB = /usr/lib/libgoto2.lib
次のようになります.これは一例です.
BLASLIB = /usr/atlas/lib/libptf77blas.a -latlas -lpthread
LOADOPTS = -L/usr/atlas/lib
BLASLIB = /usr/atlas/lib/libf77blas.a -latlas
LOADOPTS = -L/usr/atlas/lib
ATLAS のインストール時の設定によって変わるので, 詳細を,別の Web ページに記述しています.
■ GNU のコンパイラを使う場合の設定例
FORTRAN = gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
...
LOADER = gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
■ MinGW のコンパイラを使う場合の設定例
FORTRAN = i686-w64-mingw32-gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
...
LOADER = i686-w64-mingw32-gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
make.inc を編集し,TIMER の行を書き換えます。
TIMER = INT_ETIME
■ GNU のコンパイラを使う場合の設定例
LAPACKLIB = liblapack_LINUX.a
TMGLIB = libtmglib_LINUX.a
■ MinGW のコンパイラを使う場合の設定例
LAPACKLIB = liblapack_LINUX.lib
TMGLIB = libtmglib_LINUX.lib
make.inc を編集し,OPTS の行を書き換えます。
OPTS の設定例は,次の通り.(意味がよく分からないという人は,無理に OPTS を書き換える必要はありません)
OPTS = -O
※ Core2 プロセッサの場合は, 「OPTS = -O3 -fno-tree-vectorize -msse4.2 -march=native」のように設定してもいいでしょう.※ -fno-tree-vectorize を付けているのは gcc4.4 におけるバグ(=伝聞情報)の回避のため.
■ GNU のコンパイラを使う場合の実行例
make CC=gcc-4 CPP=cpp-4
■ MinGW のコンパイラを使う場合の設定例
cd /usr/i686-w64-mingw32/sys-root/mingw/bin cp * /usr/bin cd /tmp/lapack-3.3.1 make CC=i686-w64-mingw32-gcc CPP=i686-w64-mingw32-cpp
■ GNU のコンパイラを使う場合の実行結果例
※ 次のようにリンクエラーが出る場合には,GotoBLAS2 や ATLAS のインストールが済んでいない.だが,インストールまで強行した方が良い.
■ MinGW のコンパイラを使う場合の実行結果例
MinGW のコンパイラを使うとき、次のようなエラーメッセージが出ることがあります。 そのときは、make.inc の FORTRAN, LOADER の行の設定を変えて、make clean; make を実行するとエラーが解決する場合があります.
※ ファイルが無いよ! というときは、 まず、ビルド時にエラーメッセージが出ていないことを確認.あとは make.inc の LAPACKLIB, TMGLIB を確認。
■ GNU のコンパイラを使う場合の実行手順例
cd /tmp/lapack-3.3.1 cp liblapack_LINUX.a /usr/lib cp libtmglib_LINUX.a /usr/lib
■ GNU のコンパイラを使う場合の実行手順例
cd /tmp/lapack-3.3.1 cp liblapack_LINUX.lib /usr/lib cp libtmglib_LINUX.lib /usr/lib
rm -rf hoge mkdir hoge cd hoge ar x ../lapack_LINUX.a gfortran -shared -o ../lapack_LINUX.dll ./*.o -L/usr/atlas/lib -lptf77blas -latlas -lgfortran cd .. cp lapack_LINUX.dll /usr/lib/liblapack_LINUX.dll rm -rf hoge mkdir hoge cd hoge ar x ../tmglib_LINUX.a gfortran -shared -o ../tmglib_LINUX.dll ./*.o -llapack_LINUX -L/usr/atlas/lib -lptf77blas -latlas -lgfortran cd .. cp tmglib_LINUX.dll /usr/lib/libtmglib_LINUX.dll
make variants
make variants_testing cd SRC/VARIANTS/LIB cp *.a /usr/lib