CSDPは半正定値計画問題(Semidefinite Programming)を取り扱うC言語ライブラリ。 内部ではLPACKが使用されており予めインストールされている必要がある。 ここでは、CLAPACKをソースコードからコンパイルして準備する方法も含めて書き留めておく。
動作環境
- Visual Studio 2010 SP1
- Windows 7 Pro SP1
CLAPACKをインストール
/MTオプションでコンパイルされたものや、Intel Compilersが必要なものしか見つからなかったので、ソースコードからコンパイルすることにした。Visual Studio用のパックが準備されているが、そのままではコンパイルが通らない。プロジェクトの設定を変更してもすべてのエラーを取り除くことはできないが、ここではCSDPに使うことのみを考え、blas, clapack, libf2cの3つのプロジェクトのみコンパイルする。
-
CLAPACK-3.1.1-VisualStudio.zipをダウンロード。
http://www.netlib.org/clapack/ - clapack.slnを開いてVisual Studio 2010形式に変換する。
-
BLAS/SRC内の以下のファイルをblas.vcxprojに追加する。
- csrot.c
- drotm.c
- drotmg.c
- dsdot.c
- sdsdot.c
- srotm.c
- srotmg.c
- zdrot.c
- ビルドモードをRelease without wrapにする。
- blas, clapack, libf2cのプロジェクトプロパティ/コード生成/ランタイムライブラリでマルチスレッド(/MT)をマルチスレッドDLL(/MD)に変更する。
- libf2cプロジェクトのfio.hの111行目をコメントアウトする。
//extern int isatty(int);
- blas, clapack, libf2cプロジェクトのみビルド。
CSDPをインストール
- CSDPのページにアクセスし、 「compressed tar archive」からCsdp-6.1.1.tgzをダウンロードして解凍。
- ここから Csdp-6.1.1_vcproj.zipをダウンロード。
- 解凍するとlibsとvcbuildというフォルダができるのでこの二つをCsdp-6.1.1フォルダ直下にコピー。
- vcbuild内のvcbuild.slnを開いてビルドする。
参考
- CLAPACK
http://www.netlib.org/clapack/ - CSDP
https://projects.coin-or.org/Csdp - CLAPACK prebuild libraries for windows machine
http://www.netlib.org/clapack/LIB_WINDOWS/prebuilt_libraries_windows.html - LAPACK for Windows
http://icl.cs.utk.edu/lapack-for-windows/lapack/ - CLAPACK-3.1.1-VisualStudio を利用する
http://d.hatena.ne.jp/KrdLab/20090507/1241626832