トップページ -> 情報工学,情報スキルの教材 -> Windows で開発環境やツールを整備 -> Windows に Metis バージョン 4 と SuiteSparse バージョン 3.2.0 をビルドとインストール(ソースコードからビルド.Windows 上の Cygwin にインストール)
[サイトマップへ]  

Windows に Metis バージョン 4 と SuiteSparse バージョン 3.2.0 をビルドとインストール(ソースコードからビルド.Windows 上の Cygwin にインストール)

この Web ページでは,Metis と SuiteSparse をソースコードからビルドする手順を書いています.

SuiteSparse をソースコードからビルドするときは,BLAS と LAPACK が必要です(確認済み).

謝辞

本 Web ページの作成にあたっては, 「octave for windowsメモの筆者」様http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html)に, 2ちゃんねる (http://2ch.net/) の「データ解析ツールoctaveを語ろう」掲示板での議論を通して,数々の貴重なご教示,コメント頂きました. 「Metis は再配布不可.ビルドしたバイナリであっても再配布不可」というご指摘, 「SuiteSparse のビルドでは,BLAS (GotoBLAS など) があった方がよいかも」というご示唆など多数です。

敬意を込めて, 「octave for windowsメモの筆者」様の URL を記しておきます. http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html (とてもお世話になりました.ありがとうございました.)


前準備

前もってインストールしておくべきソフトウエア

  1. Cygwin の Web ページの記述に従って,Cygwin のセットアッププログラム setup.exe を入手しておくこと.

  2. BLAS のインストール

前もって調べておく事項


Metis のインストール方法

Metis の取り扱いについて

Metis はフリーソフトウエアではありません.「再配布は原則不可」と心得てください.再配布不可ですから,ソースコードやビルドしたバイナリを人にあげることはできません.(ライセンス条項を各自でよく確認のこと)

Metis のインストールを手動で行う必要はありませんが,参考のため載せています.


SuiteSparse のインストール

SuiteSparse とは

SuiteSparse とは,下記の機能の詰め合わせです.(本当はもっとたくさんの機能があります.詳しくは http://www.cise.ufl.edu/research/sparse/SuiteSparse/).

など

UFconfig は,SuiteSparseQR, AMD, COLAMD, CCOLAMD, CHOLMOD, KLU, BTF, LDL, CXSparse, and UMFPACK のビルドに必要.

AMD とは,疎行列の並び替えの機能を持ったソフトウエアです. これは,Cholesky factorization や, 不完全 LU 分解 (LU factorization) の前処理として行うものです.

SuiteSparse バージョン 3.2.0 を自前でビルドしたいときの手順

GNU の C コンパイラ・バージョン 4 を使って Octave バージョン 3.2.4 をビルドするのは簡単です. 一方で,GNU の C コンパイラ・バージョン 3 では,Octave のプログラムの動作が極端に遅くなることがあるという問題が知られています.それを承知で,バージョン 3 を使いたい,というときは, SuiteSparse バージョン 3.2.0 を自前でビルドする必要も出てくるでしょう(自前でビルドしないと,Octave の configure コマンドの実行時に,警告が出てくるようです).

先ほど,Cygwin のパッケージ を使って,SuiteSparse をインストールしました.これは,GNU の C コンパイラ・バージョン 4 を使ってビルドされたバイナリです (2009/03時点) . Octave を,GNU の C コンパイラ・バージョン 4 を使ってビルドするのであれば,このバイナリがそのまま使えます.

  1. Cygwin のセットアッププログラム setup.exe の起動

  2. パッケージ選択画面 (Select Packages)」まで進む

  3. パッケージ選択画面で,パッケージを選ぶ
    1. まず,下記のパッケージを選ぶ.SuiteSparse のビルドに必要だと判断されるもの.

      「keep」になっている場合には,インストール済みなので,keep のままでよい.

      • Devel/make
      • Devel/patchutils
      • Math/glpk (GNU Linear Programming Kit)
      • Math/libglpk-devel (GNU Linear Programming Kit) development libraries

    2. SuiteSparse のソースコード も欲しいので,「Src」にチェックする

      下の図のように SuiteSparse のところにも チェック

    3. 「GNU のコンパイラ」もチェックしておく

      GNU の C, C++, Fortran コンパイラが必要なので,まだインストールしていないのなら,インストールしておく.

  4. パッケージ選択が終わったらインストールを行う.

  5. Cygwin のコンソールを起動

  6. 必要なファイルを /tmp にコピー

    cd /usr/src
    cp SuiteSparse-3.2.0-2.cygwin.patch /tmp
    cp SuiteSparse-3.2.0-2.src.patch /tmp
    cp SuiteSparse-3.2.0.tar.gz /tmp
    

    ※ ファイルが無いよ,というときは,Cygwin のセットアッププログラムの実行のときに, SuiteSparse の「Src」のチェックを忘れていたということなので, もう一度,Cygwin のセットアッププログラムの実行を繰り返す.

  7. GotoBLAS のインストール(「Windows で GotoBLAS と CBLAS をビルドとインストール」 の Web ページ) または ATLAS のインストール (「Windows で ATLAS と LAPACK をビルドとインストール」 の Web ページ) が終わっていること.

    ファイルSuiteSparse-3.2.0-2.cygwin.patch には,「SuiteSparse のビルドに lapack-3.0 以上と,blas が必要」と書いてあります.

    blas が無いとき,SuiteSparse のビルド時に,以下のようなエラーが出ます.

  8. (確認)GotoBLAS を使うときは,「Windows で LAPACK をビルドとインストール」 の Web ページに従って, LAPACK のインストールが終わっていること.

    lapack が無いとき,SuiteSparse のビルド時に,以下のようなエラーが出ます.

  9. ソースコードの展開

    cd /tmp
    tar -xvzof SuiteSparse-3.2.0.tar.gz
    

  10. パッチ (SuiteSparse へのソースコード・パッチ)

    cd /tmp
    patch -p1 < ./SuiteSparse-3.2.0-2.src.patch
    

    ※ 下記のように「patch: command not found」というようなエラーが出たときは, Cygwin のセットアッププログラム setup.exe をもう1度起動し, パッケージ選択画面で,パッケージを選ぶことからやり直す.

  11. パッチ (SuiteSparse への Cygwin パッチ)

    cd /tmp
    patch -p1 < ./SuiteSparse-3.2.0-2.cygwin.patch
    

  12. 先ほどビルドした /tmp/metis-4.0 を,/tmp/SuiteSparse の直下に移動
    cd /tmp
    mv metis-4.0 /tmp/SuiteSparse
    

  13. SuiteSparse のビルド

    下記の手順で, make を実行して, SuiteSparse のビルドを行う.

    ※ エラーメッセージが出ることがある.しかし,ライブラリファイルがビルドできていればいいので,あまり気にしないことにする.

    ■ GNU コンパイラ・バージョン 3 を使う場合

    ■ GNU コンパイラ・バージョン 4 を使う場合

  14. ビルドの結果の確認


    GNU コンパイラ・バージョン 4 でのビルド結果(例)

  15. インストール

    cd /tmp
    cd SuiteSparse
    cp */Lib/*.a /usr/lib
    mkdir /usr/include/suitesparse
    cp UFconfig/UFconfig.h /usr/include/suitesparse
    cp */Include/*.h /usr/include/suitesparse
    rm -f /usr/include/suitesparse/cs.h
    cp CXSparse/Include/cs.h /usr/include/suitesparse
    

  16. 共有オブジェクト (.so) の生成とインストール
    for i in */Lib/*.a; do
      echo $i
      rm -rf hoge
      mkdir hoge
      cd hoge
      ar x ../$i
      gfortran -shared -o ../`basename $i .a`.so *.o -lcholmod -lcolamd -lamd -llapack_LINUX -lbtf -L/usr/atlas/lib -lptf77blas -latlas -lpthread -lstdc++
      cd ..
    done
    cp *.dll /usr/lib