トップページ -> コンピュータ -> Cygwin, MinGW の活用 -> Windows で LAPACK バージョン 3.3.1 をビルドとインストール(Windows 上の Cygwin を使用)
[サイトマップへ], サイト内検索:

Windows で LAPACK バージョン 3.3.1 をビルドとインストール(Windows 上の Cygwin を使用)

サイト構成 連絡先,業績 実践知識 コンピュータ 教材 サポートページ

LAPACK とは,行列に関する種々の問題(連立1次方程式,固有値問題,などなど多数).FORTRAN で書かれています.LAPACK は,BLAS の機能を利用して,種々の機能を実現します.(BLAS を速いものに入れ替えれば,LAPACK も速くなる).

この Web ページでは,LAPACK のインストール手順を図解で説明します.

参考 Web ページ: http://cygwin.com/packages/lapack/lapack-3.0-8-src

謝辞

「octave for windowsメモの筆者」様から, http://c.2ch.net/ の「データ解析ツールoctaveを語ろう」掲示板を通し, さまざまな情報とご示唆を頂きました.さらには,Web ページを丁寧に見て頂きました.感謝します. (ここでは,その詳細を述べるのは差し控えます.この Web ページに間違いが残っていれば,それは,作者である私の責任です).

敬意を込めて, 「octave for windowsメモの筆者」様の URL を記しておきます. http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html (「リンクの許可は要りません」に甘えまして,リンクを張っています) ⇒ この Web ページは,分かりやすく,また,Octave に関係する種々の有益な情報(ここにしか無いオンリー・ワンの情報)が載ったページと言ってよいでしょう.


前準備

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

前もって調べておく事項


LAPACK のコンパイルに必要なソフトウエア等を Cygwin のパッケージを使ってインストール

Cygwin のセットアッププログラム setup.exe を使って, LAPACK バージョン 3.3.1 をソースプログラムからコンパイルするのに必要となる他のソフトウエアをインストールする.簡単にインストールできます.

  1. セットアッププログラムの開始

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

  3. パッケージ選択画面で,パッケージを選ぶ

    下記のパッケージを選ぶ.

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

  4. 終了の確認


Cygwin の Math/liblapack-devel ソースコードパッケージファイルのダウンロード

ここで行うことは,日本国内の Cygwin 配布サイトから, Cygwin の Math/liblapack-develソースコードパッケージファイル をダウンロードすること.

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

  2. 先ほど同様に操作する.今度は,Math/liblapack-develの「Source」を選び,操作を進める.

  3. ファイルの確認

    ls /usr/src/lapack*
    


インストール手順

  1. LAPACK の Web ページを開く

    http://www.netlib.org/lapack

    この Web ページで注意事項を確認

    ダウンロード

  2. いまダウンロードしたソースコードファイル lapack.tgz を解凍

    cd /tmp
    tar -xvzof /tmp/lapack-3.3.1.tar.gz
    

  3. パッチ (lapack へのソースコード・パッチ)

    cd /tmp
    ln -s lapack-3.3.1 lapack-3.2.2
    patch -p1 < /usr/src/lapack-3.2.2-2.src.patch
    

    途中でエラーが出る.Enter キーを押し続けてスキップする

  4. パッチ (lapack への cygwin パッチ)

    cd /tmp
    patch -p1 < /usr/src/lapack-3.2.2-2.cygwin.patch
    

  5. make.inc を作成

    Cygwin のコンソール で,次のコマンドを実行

    cd /tmp/lapack-3.3.1
    cp make.inc.example make.inc
    

  6. make.inc を編集し,BLASLIB と LOADOPTS を設定

    BLASLIIB の行 には,BLAS のライブラリファイル名(1つ)を書きます.

  7. make.inc を編集し,FORTRAN, LOADER の行を設定

    GNU のコンパイラを使う場合の設定例

    FORTRAN = gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
    ...
    LOADER  = gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
    

    MinGW のコンパイラを使う場合の設定例

    FORTRAN = i686-w64-mingw32-gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
    ...
    LOADER  = i686-w64-mingw32-gfortran -fimplicit-none -g -fexceptions -m32 -mthreads
    

  8. make.inc を編集し,TIMER を設定

    make.inc を編集し,TIMER の行を書き換えます.

    TIMER     = INT_ETIME
    

  9. make.inc を編集し,LAPACKLIB, TMGLIB を設定

    GNU のコンパイラを使う場合の設定例

    LAPACKLIB    = liblapack_LINUX.a
    TMGLIB       = libtmglib_LINUX.a
    

    MinGW のコンパイラを使う場合の設定例

    LAPACKLIB    = liblapack_LINUX.lib
    TMGLIB       = libtmglib_LINUX.lib
    

  10. (オプション)make.inc を編集し,OPTS を設定

    make.inc を編集し,OPTS の行を書き換えます.

    OPTS の設定例は,次の通り.(意味がよく分からないという人は,無理に OPTS を書き換える必要はありません)

    OPTS     = -O
    

    Core2 プロセッサの場合は, 「OPTS = -O3 -fno-tree-vectorize -msse4.2 -march=native」のように設定してもいいでしょう.※ -fno-tree-vectorize を付けているのは gcc4.4 におけるバグ(=伝聞情報)の回避のため.

  11. ビルド

    GNU のコンパイラを使う場合の実行例

    make CC=gcc-4 CPP=cpp-4
    

    MinGW のコンパイラを使う場合の設定例

    cd /usr/i686-w64-mingw32/sys-root/mingw/bin
    cp * /usr/bin
    cd /tmp/lapack-3.3.1
    make CC=i686-w64-mingw32-gcc CPP=i686-w64-mingw32-cpp
    

  12. ビルド結果の確認

    GNU のコンパイラを使う場合の実行結果例


    GotoBLAS の場合の make の結果(例)

    ※ 次のようにリンクエラーが出る場合には,GotoBLAS2 や ATLAS のインストールが済んでいない.だが,インストールまで強行した方が良い.

    MinGW のコンパイラを使う場合の実行結果例

    MinGW のコンパイラを使うとき、次のようなエラーメッセージが出ることがあります. そのときは、make.inc の FORTRAN, LOADER の行の設定を変えて、make clean; make を実行するとエラーが解決する場合があります.

  13. インストール

    ファイルが無いよ! というときは、 まず、ビルド時にエラーメッセージが出ていないことを確認.あとは make.inc の LAPACKLIB, TMGLIB を確認。

    GNU のコンパイラを使う場合の実行手順例

    cd /tmp/lapack-3.3.1
    cp liblapack_LINUX.a /usr/lib
    cp libtmglib_LINUX.a /usr/lib
    

    GNU のコンパイラを使う場合の実行手順例

    cd /tmp/lapack-3.3.1
    cp liblapack_LINUX.lib /usr/lib
    cp libtmglib_LINUX.lib /usr/lib
    

  14. (オプション)ダイナミックリンクライブラリの生成とインストール

    rm -rf hoge
    mkdir hoge
    cd hoge
    ar x ../lapack_LINUX.a
    gfortran -shared -o ../lapack_LINUX.dll ./*.o -L/usr/atlas/lib -lptf77blas -latlas -lgfortran
    cd ..
    cp lapack_LINUX.dll /usr/lib/liblapack_LINUX.dll
    
    rm -rf hoge
    mkdir hoge
    cd hoge
    ar x ../tmglib_LINUX.a
    gfortran -shared -o ../tmglib_LINUX.dll ./*.o -llapack_LINUX -L/usr/atlas/lib -lptf77blas -latlas -lgfortran
    cd ..
    cp tmglib_LINUX.dll /usr/lib/libtmglib_LINUX.dll
    

  15. (オプション)variants のビルド

    make variants
    

  16. (オプション)make variants_testing の実行とインストール

    make variants_testing
    cd SRC/VARIANTS/LIB
    cp *.a /usr/lib