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
