トップページ -> インストール,設定,利用 -> Cygwin, MinGW の活用 -> 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 を使う場合

      • GotoBLAS を使う場合

        cd /tmp
        cd SuiteSparse
        make purge
        make CFLAGS="-O -mthreads -I../Include -fexceptions" BLAS="-lgoto2 -lpthread -lg2c" LAPACK="-llapack_LINUX -ltmglib_LINUX"
        
      • ATLAS を使う場合

        cd /tmp
        cd SuiteSparse
        make purge
        make CFLAGS="-mthreads -I../Include -fexceptions" BLAS="-L/usr/atlas/lib -lptf77blas -latlas -lpthread -lg2c" LAPACK="-llapack_LINUX -ltmglib_LINUX"
        

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

      • GotoBLAS を使う場合

        cd /tmp
        cd SuiteSparse
        make purge
        make CC=gcc-4 F77="gfortran-4 -mthreads" CPLUSPLUS="g++-4 -mthreads" CPP=cpp-4 CFLAGS="-mthreads -I../Include -fexceptions" BLAS="-lgoto2 -lpthread -lkernel32 -lm" LAPACK="-llapack_LINUX -ltmglib_LINUX"
        
      • ATLAS を使う場合

        cd /tmp
        cd SuiteSparse
        make purge
        make CC=gcc-4 F77="gfortran-4 -mthreads" CPLUSPLUS="g++-4 -mthreads" CPP=cpp-4 CFLAGS="-mthreads -I../Include -fexceptions" BLAS="-L/usr/atlas/lib -lptf77blas -latlas -lpthread -lkernel32 -lm" LAPACK="-llapack_LINUX -ltmglib_LINUX"
        
    14. ビルドの結果の確認
    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
      

      本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

      問い合わせ先: 金子邦彦(かねこ くにひこ) [image]