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

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

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

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

ATLAS を Octave に組み込む方法は,別の Web ページで説明する.

GotoBLASについては,「Windows に GotoBLAS と CBLAS をインストール」の Web ページでインストール手順を説明している.

<BLAS の機能の概要(ごく一部)>

<ATLAS のインストールの要点>

<参考情報>

ATLAS 3.9.11 (2009/07/10 時点では unstable) では,make install の後,「cd lib; make dlls ptdlls cdlls」という操作で,Cygwin 上でDLL ファイルを作ることができます.libatlas.dll, libcblas.dll, libclapack.dll libf77blas.dll, liblapack.dll, libptcblas.dll, libptf77blas.dll が生成される. ※ 私には,これは嬉しい.(出来た DLL ファイルを使ってみることは,手が回らなくて,まだできていません).R の処理系とリンクさせたいと思っています.

◆ この Web ページで行うコマンドの概略 (Ubuntu の場合の例)

「-t ... -m ...」のところは,コア数と周波数を正しく設定すること

ライセンス条項の確認は必ず行うこと


cat /proc/cpuinfo
echo please press enter to continue
cat | echo

# LAPACK のダウンロードとビルドとインストール
cd /tmp
if [ ! -f lapack-3.3.1.tgz ]; then 
    wget http://www.netlib.org/lapack/lapack-3.3.1.tgz
fi 
rm -rf lapack-3.3.1
tar -xvzof lapack-3.3.1.tgz
cd /tmp/lapack-3.3.1
cp make.inc.example make.inc
if [ `arch` = 'i686' ]; then
  make FORTRAN="gfortran -fimplicit-none -g -m32" 
elif [ `arch` = 'x86_64' ]; then
  make FORTRAN="gfortran -fimplicit-none -g -m64" 
fi

make install
cp lapack_LINUX.a /usr/local/lib/liblapack_LINUX.a
cp tmglib_LINUX.a /usr/local/lib/libtmglib_LINUX.a
chmod 755 /usr/local/lib/liblapack_LINUX.a
chmod 755 /usr/local/lib/libtmglib_LINUX.a

# ATLAS のダウンロードとビルドとインストール
cd /tmp
if [ ! -f atlas3.9.47.tar.bz2 ]; then 
    wget http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.9.47/atlas3.9.47.tar.bz2
fi

tar -xvjof atlas3.9.47.tar.bz2
mv ATLAS ATLAS3.9.47
cd ATLAS3.9.47
mkdir B2
cd B2

if [ `arch` = 'i686' ]; then
`  ../configure -b 32 -t 8 -m 3411 --prefix=/usr/atlas -Si nocygwin 0  -Si nof77 0 -Ss flapack /tmp/lapack-3.3.1/SRC -Si latune 1
elif [ `arch` = 'x86_64' ]; then
  ../configure -b 64 -t 8 -m 3411 --prefix=/usr/atlas -Si nocygwin 0  -Si nof77 0 -Ss flapack /tmp/lapack-3.3.1/SRC -Si latune 1
fi

make
make time
rm -f /usr/atlas/lib/*.so /usr/atlas/lib/*.a
make install

# CBLAS のサンプルプログラム
cd /tmp
if [ ! -f cblas.tgz ]; then 
    wget http://www.netlib.org/blas/blast-forum/cblas.tgz
fi 
cd /tmp
rm -rf /tmp/CBLAS
tar -xvzof cblas.tgz
cd /tmp/CBLAS
cd examples
gcc -o a.out -I/usr/atlas/include cblas_example1.c -L/usr/atlas/lib -lptcblas -lptf77blas -latlas -lpthread -lgomp
./a.out

<この Web ページについて>

情報共有のために,この Web ページを公開している.ATLAS の情報減としては、 ATLAS errata ファイルや,ATLAS の説明書を読みきっていない等の問題を自覚している. 参考情報としてお使いください.

謝辞など

Octave や ATLAS に関しては,「octave for windowsメモの筆者」様が, http://c.2ch.net/ の「データ解析ツールoctaveを語ろう」掲示板 に書かれた内容を読み,掲示板での議論を通して,いくつかの貴重な示唆,ヒントを頂きました.この掲示板の匿名の投稿者の方々からも,やはり,重要な示唆を頂きました. この掲示板が無ければ,この Web ページはなかったでしょう. ありがとうございました.この場を借りてお礼申し上げます. ごく一部を以下に紹介しておきます(私の判断で,大胆にまとめると次のようになる.詳しくは掲示板をご覧下さい).

ここで,敬意を込めて, 「octave for windowsメモの筆者」様の URL を記しておきます. http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html (「リンクの許可は要りません」に甘えまして,リンクを張っています) ⇒ この Web ページは,分かりやすく,また,Octave に関係する種々の有益な情報が載ったページです.この Web ページからもたくさんの情報を得ました. (ごく一部紹介しますと,Octave の MinGW ライブラリキットのリリース等々で,昔から継続的に多大な貢献をされておられます).

※ 本 Web ページに残っているであろうミスは,掲示板等のミスではなく,本 Web ページの作者である私の責任です.

http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html のように,Octave については,すでに多数の優れた情報源があります, Octave を使いたい方は,そちらを見ていただきたいと考えています.例えば,ATLAS の性能をより引き出す方法(そのヒント)なども得られることでしょう.


前準備

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

事前に決めておく事項

前もって調べておく事項


インストール手順

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

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

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

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

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

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

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

  4. 終了の確認


Cygwin の lapack の dll ファイルのコピー

次の操作を行っておく

cp /usr/lib/lapack/cygblas-0.dll /usr/bin
cp /usr/lib/lapack/cyglapack-0.dll /usr/bin


LAPACK バージョン 3.3.1 のソースコードの展開

lapack のソースコードを /tmp/lapack-3.3.1に展開

lapack のソースコードの入手手順については,別の Web ページで説明している


Windows のレジストリの調整

Cygwin で「probably corrupted stack」が出たときの対処法 を見て,レジストリの設定を行う


CPU の論理コア数,クロック周波数,ビット数の確認


ATLAS のビルドとインストール

ここでの説明は,CPU の種類,物理コア数,クロック周波数,ビット数が下記の通りであるとして説明を続けるので, 適切に読み替えてください.

【本 Web ページでの設定】

■ Intel Corei7-2600K の場合

⇒ 各自,読み替えてください.

ATLAS のダウンロード

  1. ATLAS の「インストール概要」の Web ページを開く.

    http://math-atlas.sourceforge.net/atlas_install/atlas_install.html

  2. この Web ページの「Turn off CPU throttling when installing ATLAS」にあるように, CPU の周波数を落として節電する,というような機能があれば無効にしておく.

  3. ATLAS の Web ページを開く

    http://math-atlas.sourceforge.net/

  4. SourceForge Summary Page」をクリック

  5. Files」をクリック

  6. ファイルの選択

    最新のファイル が欲しいので,「Developer (unstable)をクリック

    最新の Stable が欲しいという場合には,下の方の Stable を展開して,ダウンロードする.

    ※ 但し,Core i7 のように新しい CPU を使う場合には,Stable よりも,最新のファイル(たとえ unstable であっても)うまくいく可能性がある.

    クリックすると,ダウンロードが始まる.


ATLAS のビルドとインストール

  1. ダウンロードしたファイルを Cygwin の /tmp にコピー

    Cygwin インストールディレクトリが C:\Cygwin のときは atlas3.9.47.tar.bz2 を,C:\Cygwin\tmp にコピーすることになる.

  2. tar コマンドを用いて解凍

    以下の操作は,Cygwin のコンソールを開いて行う.

    cd /tmp
    tar -xvjof altas3.9.47.tar.bz2
    

  3. 解凍終了の確認

  4. mv ATLAS ATLAS3.9.47」の実行

  5. configure コマンドの実行

    【本 Web ページでの設定】

    ■ Intel Corei7 2600K の場合

    • CPU の物理コア数: 8
    • CPU のクロック周波数: 3411
    • CPU のビット数(ポインタの幅): 32

    ⇒ 各自,読み替えてください.

    「-t ... -m ...」のところは,コア数と周波数を正しく設定すること.

    cd /tmp
    cd ATLAS3.9.47
    mkdir B2
    cd B2
    ../configure -t 8 -m 3411 -b 32  -D c -DWALL  --prefix=/usr/atlas -Ss flapack /tmp/lapack-3.3.1/SRC -Si latune 1
    

    lapack のソースコードを /tmp/lapack-3.3.1に展開しなかった! というときは 「-Ss flapack /tmp/lapack-3.3.1/SRC -Si latune 1」を外すこと。

    core2 プロセッサを使っているときは, 次のように,-Fa alg -march=core2」を付けてもいいでしょう.(私が確かめた限りでは、ビルドはうまくいく)。 (-march=native はコアダンプしました).

    ※ 但し,ATLAS バージョン 3.9.11 以下 (バージョン 3.8.ほにゃらら, 3.9.ほにゃららのとき)

    ATLAS バージョン 3.9.11 以下のときは, configure コマンドの引数に「--with-netlib-lapack=/tmp/lapack-3.3.1/lapack_LINUX.a 」を付けます. ■ 「-t ... -m ...」のところは,コア数と周波数を正しく設定すること.

    cd /tmp
    cd ATLAS3.9.47
    mkdir B2
    cd B2
    ../configure -t 8 -m 3411 -b 32  -D c -DWALL  --prefix=/usr/atlas \
    --with-netlib-lapack=/tmp/lapack-3.3.1/lapack_LINUX.a
    

    ※ configure では「-D c -DPentiumCPS=3411」のような指定を行うのは、cygwin では避けた方が良い(バージョン 3.9.25 では、これが原因でエラーが出た、ということを経験しました)。

  6. configure コマンドの結果の確認

    エラーメッセージが出ていたら,「rm -rf /tmp/ATLAS3.9.47/B2」を行なった後,上記に書いている「mkdir B2」まで戻ってやり直す.

  7. make の実行
    make
    

    「make」の結果,エラーメッセージが出ないことを確認しておく.

    ※ もし,下のように,「probably corrupted stack ...」というエラーメッセージが出たときは,レジストリの設定を行い、「make clean; make」でやり直す.

  8. make check」 の実行
    make check
    

    「make check」 の結果,エラーメッセージが出ないことを確認しておく.

  9. make ptcheck」 の実行
    make ptcheck
    

    「make ptcheck」 の結果,エラーメッセージが出ないことを確認しておく.

    ※ 「-t <コア数>」を付けていなかったとき

    マルチコアの CPU を使っていないときは,上記の 「../configure ・・・」において,「-t <コア数>」を付けていなかったはずなので,当然, 「make ptcheck」でエラーが出ます.これは,気にする必要はありません.

  10. make time の実行
    make time
    

    ※ 「-m ...」を付けていなかったとき

    上記の 「../configure ・・・」において,「-m ...」を付けていなかったときは, CPU の周波数を聞いてくるので入力する.

  11. make time の結果の確認

    「make time」 の結果,エラーメッセージが出ないことを確認しておく.

  12. インストール

    「rm -f /usr/atlas/lib/*.so /usr/atlas/lib/*.a」は,前のバージョンのライブラリファイルを消すための操作

    rm -f /usr/atlas/lib/*.so /usr/atlas/lib/*.a
    make install
    

  13. make install」 の結果の確認

    エラーメッセージが出ていないことを確認する.

    ※ 「-t <コア数>」を付けていなかったとき

    上記の 「../configure ・・・」において,「-t <コア数>」を付けていなかったときは, 「libptcblas.a が無いよ」, 「libptf77blas.a が無いよ」 という警告メッセージが出ます(下記の通り).これらは ATLAS のマルチスレッド版ライブラリファイルが無いというだけの警告なので,無視して構いません

  14. ファイルの確認

    ※ ATLAS のマルチスレッド版ライブラリファイルがないとき(つまり,ATLAS の configure において「-t <コア数>」を付けていなかったとき) は,libptcblas.a と libptf77blas.a がない

  15. (オプション)dll ファイルの生成とインストール
    cd lib
    grep LIBS Make.inc
    make LIBS="-lpthread -lkernel32 -lm -lcygwin" dlls ptdlls cdlls
    cd ..
    make install
    

性能測定の例

■ 測定に用いた Octave プログラム

2000行2000列の行列の掛け算(下記)

X = rand(2000,2000);
Y = rand(2000,2000);
tic(); Z = X * Y; toc()

末尾の「;」は,結果を表示しないという意味。

※ 末尾の「;」をつけないと、「x=rand(2000,2000);」などの実行で、x などが表示されるのですが,表示が始まるまでかなり(数十秒以上)待たされる.

■ ハードウエアとソフトウエア

■ ソフトウエアのインストール手順

基本的には,「Windows に Octave バージョン 3 と octave-forge をインストール」の Web ページの末尾に記述した,インストール用スクリプトを使用した.

【要点】ATLAS のマルチスレッド版ライブラリファイルを使いたいときは,configure の引数を,「... --with-blas="-L/usr/atlas/lib -lptf77blas -latlas -lpthread" ...」のように書く. ATLAS のシングルスレッド版ライブラリファイルを使いたいときは, 「... --with-blas="-L/usr/atlas/lib -lf77blas -latlas" ...」のように書く.

■ 実測値の例 (CPU: Intel Corei7 9200

【要点】 Octave は,ソースコードからビルド, Intel Corei7 9200, Cygwin, Windows XP, Octave バージョン 3.0.3 + ATLAS バージョン 3.9.12


(a) 行列と行列の積

(b) 分散共分散行列

(c) 分散共分散行列の固有値と固有ベクトル(主成分分析)

(d) 条件分岐プログラム( 2ch の「データ解析ツールoctaveを語ろう」掲示板で話題になっているもの.この掲示板のプログラムを引用している)

実測値. ATLAS のマルチスレッド版ライブラリファイルの場合

■ 実測値の例 (CPU: Intel Core2 Quad Q9550

【要点】 Octave は,ソースコードからビルド, Intel Core2 Quad Q9550, Cygwin, Windows XP, Octave バージョン 3.0.3 + ATLAS バージョン 3.8.3

2000×2000の行列の積.


実測値. ATLAS のシングルスレッド版ライブラリファイルの場合


実測値. ATLAS のマルチスレッド版ライブラリファイルの場合

■ 実測値の例 (CPU: Intel Core2 Duo E8500

【要点】 Octave は,ソースコードからビルド, Intel Core2 Duo 8500, Cygwin, Windows XP, Octave バージョン 3.0.3 + ATLAS バージョン 3.8.3

2000×2000の行列の積.


実測値. ATLAS のシングルスレッド版ライブラリファイルの場合


実測値. ATLAS のマルチスレッド版ライブラリファイルの場合

■ お断り

あくまでも参考値です. ここの性能値を鵜呑みにしないで下さい.

ATLAS errata ファイルを読みきっていない,ATLAS の説明書を読みきっていない等の問題を自覚している.ここの性能値を鵜呑みにしないで下さい.


CBLAS のテスト

  1. BLAS Technical Forum の Web ページを開く

    http://www.netlib.org/blas/blast-forum/

  2. Reference implementation for the C interface to the Legacy BLAS」をクリック.ダウンロードが始まる.

  3. ダウンロードしたソースコードを,/tmp の下に展開./tmp/CBLAS ができる

    ※ 解凍ソフトの種類によっては,/tmp/CBLAS ではなくて,/tmp/cblas という名前になる場合もあるので,確認しておくこと.

  4. Reference implementation for the C interface to the Legacy BLAS」に同梱のサンプルプログラムのテスト実行
    cd /tmp/CBLAS
    gcc -I/usr/atlas/include cblas_example1.c -L/usr/atlas/lib -lptcblas -lptf77blas -latlas -lpthread
    ./a.exe
    

cblas_example1.c を引用すると次の通り。