Mac で数値計算:qt4, blas, lapack, atlas

web page 消失につき,
http://72.14.235.104/search?q=cache:J22sGZRqG8oJ:www.cmpt.phys.tohoku.ac.jp/~kusu/programming.html+mac+lapack&hl=ja&ct=clnk&cd=1&gl=jp&client=firefox-a
キャッシュまるまる転載

Hiroaki Kusunose Web Site

Theoretical Condensed Matter and Statistical Physics Group, Graduate School of Science, Tohoku University
Periodic Light

* ホーム
* 連絡先
* リンク

* 研究メモ
* プログラミング
* 気になること

* 教育
* 活動記録


Programming


* Qt4/Mac install (Mac OS X Tiger) : 25 June. 2006

$ cd qt-mac-opensource-src-4.1.4
$ echo "yes" | ./configure -plugin-sql-sqlite \
-qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg \
-platform macx-g++ -pch
$ make
$ sudo make install

[~/.bashrc]
...
export QTDIR=/usr/local/Trolltech/Qt-4.1.4
export PATH=$QTDIR/bin:$PATH
export QMAKESPEC=$QTDIR/mkspecs/macx-g++
export DYLD_LIBRARY_PATH=$QTDIR/lib




* gnuplot + 補完機能 のインストール (Mac OS X Tiger) : 25 June. 2006
o Aqua Termのインストール: Aqua Term
最新版のdmgファイルをダウンロードしてインストール
o GNU readlineのインストール: GNU readline
Tiger付属のreadlineは古いので、最新版のreadlineを/usr以下にインストールする。

$ ./configure --prefix=/usr
$ make
$ sudo make install

o gnuplotのインストール: gnuplot
gnuplotの最新版をコンパイル、インストール

$ ./configure --prefix=/usr/local --with-readline=gnu \
--enable-history-file --with-x=no
$ make
$ sudo make install

以上で、ヒストリ、補完機能つきのgnuplotをaqua termで使用することができます。ただし、aqua termを用いているので、3次元グラフの視点をマウスを使って変更することはできません。



* Fortran to C translator (f2c) のインストール (Mac OS X Tiger) : 15 May. 2006
o f2c のパッケージをダウンロード: ftp://netlib.bell-labs.com/netlib/f2c.tar
o 解凍

$ tar xvf f2c.tar
$ cd f2c
$ gzip -d *.gz
$ unzip libf2c.zip
$ cd src
$ gzip -d *.gz

o f2c の make

$ cp makefile.u makefile
$ make xsum.out
$ make f2c
$ cd ..

o libf2c の make

$ cd libf2c
$ makefile.u の ld -r -x -o $*.xxx $*.o という行から -x オプションを取り除く。
$ make -f makefile.u
$ cd ..

o /usr/local 以下にインストール

$ sudo cp src/f2c /usr/local/bin
$ sudo cp libf2c/libf2c.a /usr/local/lib
$ sudo cp f2c.h /usr/local/include
$ sudo cp f2c.1 /usr/local/share/man/man1
$ sudo ranlib /usr/local/lib/libf2c.a

o テスト

--- a.f ---
PROGRAM A
X=10
Y=2
WRITE(6,*) X+Y, X*Y
STOP
END
-----------
$ f2c a.f
$ gcc a.c -lf2c

a.out
12. 20.




* BLAS+LAPACK(ATLAS)のインストール (Mac OS X Tiger) : 30 Aug. 2005

ATLAS は BLASLAPACK の一部を CPU に応じて最適化するためのパッケージである。行列の積など単純な演算では10倍程度、固有値問題などでも3倍程度速くなる。

インストールの手順は以下の通り。まず、ATLAS をコンパイルする。

$ tar xvjf atlas3.4.1.tar.bz2
$ cd ATLAS
ATLAS$ make
ATLAS$ make install arch=OSX_PPCG4AltiVec

質問は、ほとんどデフォルトでOK。./lib/OSX_PPCG4AltiVec/ に liblapack.a, libcblas.a, libf77blas.a, libatlas.a などができる。

liblapack.a には、ATLAS で使用可能な LAPACK ルーチンのみが入っているので、以下のように残りの LAPACK ルーチンを liblapack.a に追加する。まず普通に LAPACK を作る。

$ tar xvzf lapack.tgz
$ cd LAPACK
LAPACK$ cp INSTALL/make.inc.LINUX make.inc (-O3 flag だけ残す)
LAPACK$ make lapacklib

その後、

LAPACK$ mkdir tmp
LAPACK$ cd tmp
LAPACK/tmp$ ar x ../lapack_LINUX.a
LAPACK/tmp$ ar x ../../ATLAS/lib/OSX_PPCG4AltiVec/liblapack.a
LAPACK/tmp$ ar rc ../../ATLAS/lib/liblapack.a *.o

として、ATLAS の liblapack.a にオリジナルの LAPACK を追加する。最後に /usr/local/lib にインストール。

LAPACK/tmp$ cd ../../ATLAS
ATLAS$ ranlib lib/OSX_PPCG4AltiVec/*.a
ATLAS$ ranlib lib/liblapack.a
ATLAS$ sudo cp lib/OSX_PPCG4AltiVec/*.a /usr/local/lib
ATLAS$ sudo cp lib/liblapack.a /usr/local/lib
ATLAS$ sudo mkdir -p /usr/local/include/atlas
ATLAS$ sudo cp include/cblas.h /usr/local/include/atlas
ATLAS$ sudo cp include/clapack.h /usr/local/include/atlas
ATLAS$ sudo cp bin/OSX_PPCG4AltiVec/INSTALL_LOG/ConfSummary.log /usr/local/include/atlas
ATLAS$ sudo cp bin/OSX_PPCG4AltiVec/INSTALL_LOG/SUMMARY.log /usr/local/include/atlas

オリジナルの LAPACK, BLAS も念のために、liblapack_noatlas.a などとリネームしてインストールしておいた方がよい。

ATLAS は、BLAS すべてと LAPACK の一部のルーチンに対して C のインターフェイスを提供している (C の BLAS インターフェイスは CBLAS の標準インターフェイスに準拠している、例えば GSL のマニュアル参照)。インターフェイスのヘッダはそれぞれ /usr/local/include/atlas/cblas.h と /usr/local/include/atlas/clapack.h にある。ATLAS でカバーされている LAPACK ルーチンは CBLAS を呼び出すので、ATLAS の LAPACKBLASインターフェイスを介して呼び出す場合に必要なリンクは、

$ gcc a.c [-llapack] -lcblas -latlas

となる。インターフェイスを介さずに呼び出す場合には更に g2c をリンクする必要がある。 ATLAS でカバーされない LAPACK ルーチンは F77BLAS を呼び出すため

$ gcc a.c -llapack -lf77blas -latlas -lg2c

と F77BLAS を CBLAS に代わりにリンクする必要がある。FORTRAN から呼び出す場合も同様。ただし、g2c は必要ない。以下のようにリンクすれば、どんな場合もOKである。

$ gcc a.c -llapack -lf77blas -lcblas -latlas -lg2c
$ g77 a.f -llapack -lf77blas -lcblas -latlas [-lcc_dynamic]

Since 14 Dec, 2004. Copyright © 2004, Hiroaki Kusunose. All rights reserved.