線形代数計算ライブラリをインストール
できる限り高速な線形代数計算をさせるためにライブラリを入れることにした.
つか,基本的な演算だったらライブラリ探した方が手間も少なし,圧倒的に速い.
環境
- Windows2000
- Microsoft Visual C++6.0
条件
- UUSBDと同居させる
- とにかく速く連立方程式を解く
候補ライブラリ
- CLAPACK
- Intel Math Kernel Library
やったこと
CLAPACK
LinuxではCLAPACKを使っていたのでまずそれを試す.BLASは付属のものを使用.
http://www.alab.t.u-tokyo.ac.jp/~bond/doc/clapack.htmlここの通りに実行
http://www.netlib.org/clapack/に行き,CLPACK3-windows.zipをダウンロード.
展開してVCのプロジェクトを探してビルド(F7)
以下のファイルを探してどこかわかりやすいところにコピー.
- CLAPACK/BLAS/Release/blas.lib
- CLAPACK/Release/clapack.lib
- CLAPACK/F2CLIBS/Release/libF77.lib
- CLAPACK/F2CLIBS/Release/libI77.lib
コピー先ディレクトリをVCのlibraryディレクトリに登録.
今度はヘッダファイル.
- CLAPACK/clapack.h
- CLAPACK/F2CLIBS/f2c.h
これもコピー先ディレクトリをincludeディレクトリに登録
作ったプロジェクトのリンクに
- libF77.lib libI77.lib blas.lib clapack.lib
を追加.
ここまで参考ページの通りに実行
#include "f2c.h" #include "clapack.h" dgesv_(&n,&nrhs,A,&lda,ipiv,b,&ldb,&info);
こんな関数.どんなことやるのかはGoogle頼み.マニュアルはほとんどない.
でも,Linuxで動いてたプログラムが動かない・・・.
どうやっても動かないので,悩んでた所で,共有ファイルサーバにインテルのマス・カーネル・ライブラリがあったのを思い出した.
Intel Math Kernel Library (Intel MKL)
ファイルサーバのマニュアル通りにインストール.
ライセンスファイルをProgram Files\Intel\Lisences\に置く
.exeをクリックしてインストール.
インストールデフォルトなら
- Program Files\Intel\mkl60\include をincludeディレクトリに登録.
- Program Files\Intel\mkl60\ia32\lib をlibraryディレクトリに登録.
プロジェクトのリンクに
- mkl_lapack.lib mkl_c.lib
を追加.lapackの方はいらないかも.
参考ページ
http://stat.scphys.kyoto-u.ac.jp/~ryoichi/CP/visualc.html
インテル(R) マス・カーネル・ライブラリ Windows* 版 - Microsoft* Visual C/C++* でのコンパイルとリンク
#include "mkl.h" dgesv(&n,&nrhs,A,&lda,ipiv,b,&ldb,&info);
こんな関数.clapackで必要だった_(アンダーバー)が不要.