この Web ページでは, ATLAS と CBLAS のインストール手順を図解で説明する.
※ ATLAS を Octave に組み込む方法は,別の Web ページで説明する.
※ GotoBLASについては,「Windows に GotoBLAS と CBLAS をインストール」の Web ページでインストール手順を説明している.
<BLAS の機能の概要(ごく一部)>
<ATLAS のインストールの要点>
ATLAS は BSD ライセンスとなっているようです.ライセンス条項は,各自でよく確認してください.
※ Linux での手順は,別のページで説明している
※ FreeBSD での手順は,別のページで説明している
■ ATLAS バージョン 3.9.12 以上
../configure -t 8 -m 3411 -b 32 -D c -DWALL --prefix=/usr/atlas \ -Ss flapack /tmp/lapack-3.3.1/SRC -Si latune 1
■ ATLAS バージョン 3.9.11 以下 (バージョン 3.8.ほにゃらら, 3.9.ほにゃららのとき)
../configure -t 8 -m 3411 -b 32 -D c -DWALL --prefix=/usr/atlas \ --with-netlib-lapack=/tmp/lapack-3.3.1/lapack_LINUX.a
【設定の要点】
CPU の種類によって設定すべき引数値
<他の CPU の場合の設定例>
■ Intel Core2 Quad Q9550 の場合: ../configure -t 4 -m 2830 -b 32
■ Intel Core2 Duo E8500 の場合: ../configure -t 2 -m 3160 -b 32
Intel Core2 Quad Q9550 のマシンで試すと,
X = rand(2000,2000); Y = rand(2000,2000); tic(); Z = X * Y; toc()
の時間が,「-t 4」なしのとき,1.77〜1.808秒だったのが,「-t 4」を付けると 0.562〜0.609秒(およそ 3倍).(詳しくは下記).
<参考情報>
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 の性能をより引き出す方法(そのヒント)なども得られることでしょう.
Cygwin のセットアッププログラム setup.exe を使って, lapack など, ATLAS をソースプログラムからコンパイルするのに必要となる他のソフトウエアをインストールする.簡単にインストールできる.
下記のパッケージを選ぶ.
※ 「keep」になっている場合には,インストール済みなので,keep のままでよい.
次の操作を行っておく
cp /usr/lib/lapack/cygblas-0.dll /usr/bin cp /usr/lib/lapack/cyglapack-0.dll /usr/bin
lapack のソースコードを /tmp/lapack-3.3.1に展開
lapack のソースコードの入手手順については,別のページで説明している
Cygwin で「probably corrupted stack」が出たときの対処法 を見て,レジストリの設定を行う
CPU のビット数は,「32」か「64」のいずれか.必ず調べておく.
CPU の周波数と論理コア数は,「cat /proc/cpuinfo」を使って,簡単に分かる.
cat /proc/cpuinfo
ここでの説明は,CPU の種類,物理コア数,クロック周波数,ビット数が下記の通りであるとして説明を続けるので, 適切に読み替えてください.
【本 Web ページでの設定】
■ Intel Corei7-2600K の場合
⇒ 各自,読み替えてください.
http://math-atlas.sourceforge.net/atlas_install/atlas_install.html
最新のファイル が欲しいので,「Developer (unstable)をクリック
※ 最新の Stable が欲しいという場合には,下の方の Stable を展開して,ダウンロードする.
※ 但し,Core i7 のように新しい CPU を使う場合には,Stable よりも,最新のファイル(たとえ unstable であっても)うまくいく可能性がある.
クリックすると,ダウンロードが始まる.
Cygwin インストールディレクトリが C:\Cygwin のときは atlas3.9.47.tar.bz2 を,C:\Cygwin\tmp にコピーすることになる.
以下の操作は,Cygwin のコンソールを開いて行う.
cd /tmp tar -xvjof altas3.9.47.tar.bz2
【本 Web ページでの設定】
■ Intel Corei7 2600K の場合
⇒ 各自,読み替えてください.
■ 「-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 以下のときは, 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
mkdir B2 は,作業用のディレクトリの作成です.「B2」のところは好きな名前でよい.
マルチコアの CPU では,「-t <コア数>」を引数に含めます. 「-t 8 」は、「コア数が 8 個」というような意味.コア数が 2 個のときは -t 2 になる. 「-t <コア数>」を付けると,ATLAS のシングルスレッド版とマルチスレッド版の両方のライブラリファイルがビルドされる.
マルチコアの CPU でない場合には,「-t <コア数>」を付けないで下さい. ATLAS のシングルスレッド版のライブラリファイルだけがビルドされる.
周波数 (MHz 単位)
64 ビットの時は -b 64 になる.
「0」にしているので,「CYGWIN である」という意味になる.
※ 逆に CYGWINでないことを明示的に指示したいときは「-Si nocygwin 1」になる.
--cc=gcc-4 -C acg gcc-4 -C ic gcc-4 -C xc gcc-4 -C dk gcc-4 -C dm gcc-4 -C if gfortran-4
使用するコンパイラを明示的に指定.
※ configure では「-D c -DPentiumCPS=3411」のような指定を行うのは、cygwin では避けた方が良い(バージョン 3.9.25 では、これが原因でエラーが出た、ということを経験しました)。
エラーメッセージが出ていたら,「rm -rf /tmp/ATLAS3.9.47/B2」を行なった後,上記に書いている「mkdir B2」まで戻ってやり直す.
make
「make」の結果,エラーメッセージが出ないことを確認しておく.
※ もし,下のように,「probably corrupted stack ...」というエラーメッセージが出たときは,レジストリの設定を行い、「make clean; make」でやり直す.
make check
「make check」 の結果,エラーメッセージが出ないことを確認しておく.
make ptcheck
「make ptcheck」 の結果,エラーメッセージが出ないことを確認しておく.
※ 「-t <コア数>」を付けていなかったとき
マルチコアの CPU を使っていないときは,上記の 「../configure ・・・」において,「-t <コア数>」を付けていなかったはずなので,当然, 「make ptcheck」でエラーが出ます.これは,気にする必要はありません.
make time
※ 「-m ...」を付けていなかったとき
上記の 「../configure ・・・」において,「-m ...」を付けていなかったときは, CPU の周波数を聞いてくるので入力する.
「make time」 の結果,エラーメッセージが出ないことを確認しておく.
「rm -f /usr/atlas/lib/*.so /usr/atlas/lib/*.a」は,前のバージョンのライブラリファイルを消すための操作
rm -f /usr/atlas/lib/*.so /usr/atlas/lib/*.a make install
エラーメッセージが出ていないことを確認する.
※ 「-t <コア数>」を付けていなかったとき
上記の 「../configure ・・・」において,「-t <コア数>」を付けていなかったときは, 「libptcblas.a が無いよ」, 「libptf77blas.a が無いよ」 という警告メッセージが出ます(下記の通り).これらは ATLAS のマルチスレッド版ライブラリファイルが無いというだけの警告なので,無視して構いません.
※ ATLAS のマルチスレッド版ライブラリファイルがないとき(つまり,ATLAS の configure において「-t <コア数>」を付けていなかったとき) は,libptcblas.a と libptf77blas.a がない
cd lib grep LIBS Make.inc make LIBS="-lpthread -lkernel32 -lm -lcygwin" dlls ptdlls cdlls cd .. make install
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" ...」のように書く.
【要点】 Octave は,ソースコードからビルド, Intel Corei7 9200, Cygwin, Windows XP, Octave バージョン 3.0.3 + ATLAS バージョン 3.9.12
実測値. ATLAS のマルチスレッド版ライブラリファイルの場合
【要点】 Octave は,ソースコードからビルド, Intel Core2 Quad Q9550, Cygwin, Windows XP, Octave バージョン 3.0.3 + ATLAS バージョン 3.8.3
2000×2000の行列の積.
【要点】 Octave は,ソースコードからビルド, Intel Core2 Duo 8500, Cygwin, Windows XP, Octave バージョン 3.0.3 + ATLAS バージョン 3.8.3
2000×2000の行列の積.
あくまでも参考値です. ここの性能値を鵜呑みにしないで下さい.
ATLAS errata ファイルを読みきっていない,ATLAS の説明書を読みきっていない等の問題を自覚している.ここの性能値を鵜呑みにしないで下さい.
※ 解凍ソフトの種類によっては,/tmp/CBLAS ではなくて,/tmp/cblas という名前になる場合もあるので,確認しておくこと.
cd /tmp/CBLAS gcc -I/usr/atlas/include cblas_example1.c -L/usr/atlas/lib -lptcblas -lptf77blas -latlas -lpthread ./a.exe
cblas_example1.c を引用すると次の通り。
本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.
問い合わせ先: 金子邦彦(かねこ くにひこ) ![]()