2013年1月17日木曜日

CSDPのVisual Studio2010でのコンパイル方法

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つのプロジェクトのみコンパイルする。

  1. CLAPACK-3.1.1-VisualStudio.zipをダウンロード。
    http://www.netlib.org/clapack/
  2. clapack.slnを開いてVisual Studio 2010形式に変換する。
  3. BLAS/SRC内の以下のファイルをblas.vcxprojに追加する。
    • csrot.c
    • drotm.c
    • drotmg.c
    • dsdot.c
    • sdsdot.c
    • srotm.c
    • srotmg.c
    • zdrot.c
  4. ビルドモードをRelease without wrapにする。
  5. blas, clapack, libf2cのプロジェクトプロパティ/コード生成/ランタイムライブラリでマルチスレッド(/MT)をマルチスレッドDLL(/MD)に変更する。
  6. libf2cプロジェクトのfio.hの111行目をコメントアウトする。
    //extern int isatty(int);
    
  7. blas, clapack, libf2cプロジェクトのみビルド。

CSDPをインストール

  1. CSDPのページにアクセスし、 「​compressed tar archive」からCsdp-6.1.1.tgzをダウンロードして解凍。
  2. ここから Csdp-6.1.1_vcproj.zipをダウンロード。
  3. 解凍するとlibsとvcbuildというフォルダができるのでこの二つをCsdp-6.1.1フォルダ直下にコピー。
  4. vcbuild内のvcbuild.slnを開いてビルドする。

参考