Octaveのインストール
http://www.db.is.kyushu-u.ac.jp/rinkou/octave/octavelinux.htmlを見ながら進めました。途中いろいろ試行錯誤したので書いておきます。
全体の流れ
- ATLAS (ATLAS3.9.25)
- LAPACK (lapack-3.2.2)
- ATLAS
- METIS (metis-4.0)
- SuiteSparse (SuiteSparse-3.4.0)
- Octave (octave-3.2.4)
の順にコンパイルしてインストールします。
ATLAS 1回目
cat /proc/cpuinfo
とすると、
model name : Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz stepping : 11 cpu MHz : 2659.918
となっており、model nameに書いてある周波数とcpu MHzが違っていて気持ち悪いです。VPSはそんなものなんだろう、と割り切って2660 MHzを使うことにします。コア数は2にしました。
いろいろなページを見てみると「ATLASの最適化を行っている間はCPUの省電力機能などをOFFにしておく」と書いてあって、
cpufreq-set -g performance
というコマンドを使うことになっていますが、これもVPSのせいか動きません。無視して進めます。
さくらのVPSはCentOS5.5、64bitで、入っているのはgcc4.1.2です。-march=nativeを入れて最適化することを考えていたので、事前にgcc4.4.0を入れています。これを呼ぶのにgcc、g++、gfortranのあとに44をつけます。
共有ライブラリを作れるほうが何かと便利なので、-fPICをつけます。(共有ライブラリがつくれないのが、他のソフトのコンパイルが通らないことがある)
../configure -t 2 -m 2660 -b 64 -Fa alg '-fopenmp -fPIC' \ --prefix=/usr/atlas -C acg gcc44 -C if gfortran44
Make.incを確認すると、CDEFSのところに-fPICが入っていなかったので書き加えます。
CDEFS = $(L2SIZE) $(INCLUDES) $(F2CDEFS) $(ARCHDEFS) -DATL_NCPU=$(NPROC) -fPIC
また、gcc44への変更がGOODGCCに反映されていなかったので修正します。
GOODGCC = gcc44 -fopenmp -fPIC -m64
/etc/ld.so.conf
/usr/atlas/lib
を追加して、
/sbin/ldconfig
でリンクを更新すると書かれていますが、私の環境ではエラーが出ます。/usr/atlas/libの代わりに、
/usr/local/lib
の追加が必要でした。
LAPACK
make.incを編集します。
FORTRAN = gfortran44 -fimplicit-none -g OPTS = -O3 -fopenmp -fPIC -m64 -march=native -fexceptions -fomit-frame-pointer -fno-tree-vectorize DRVOPTS = $(OPTS) NOOPT = -fPIC -m64 LOADER = gfortran44 -g LOADOPTS = -L/usr/atlas/lib
BLASLIB = /usr/atlas/lib/libptf77blas.a -latlas -lpthread -lgomp
ATLAS 2回目
../configure -t 2 -m 2660 -b 64 -Fa alg '-fopenmp -fPIC' \ --prefix=/usr/atlas -C acg gcc44 -C if gfortran44 \ -Ss flapack /root/tmp/lapack-3.2.2/SRC -Si latune 1
Make.incにてCDEFSとGOODGCCを1回目と同様に変更します。
METIS
make CC=gcc44 COPTIONS="-O3 -fno-tree-vectorize -fPIC -fexceptions -m64 -march=native"
SuiteSparse
make CC=gcc44 CPLUSPLUS=g++44 F77=gfortran44 \ CFLAGS="-I../Include -O3 -fno-tree-vectorize -fPIC -fexceptions -m64 -march=native" \ F77FLAGS="-O3 -fno-tree-vectorize -fPIC -fexceptions -m64 -march=native" \ BLAS="-L/usr/atlas/lib -lptf77blas -latlas -L/usr/local/lib -lmetis -lpthread -lgfortran -lm" \ LAPACK="-llapack_LINUX -ltmglib_LINUX"
Octaveのコンパイル
CC=gcc44 CXX=g++44 F77=gfortran44 LIBS="-lmetis -lm" \ CFLAGS="-DH5_USE_16_API -O3 -fexceptions -m64 -march=native" \ FFLAGS="-DH5_USE_16_API -O3 -fexceptions -m64 -march=native" \ CPPFLAGS="-DH5_USE_16_API -O3 -fexceptions -m64 -march=native" \ ./configure --prefix=/usr/local --enable-shared --enable-dl --disable-static \ --with-blas="-L/usr/atlas/lib -lptf77blas -latlas -lgfortran -lpthread -lgomp" \ --with-lapack="-L/usr/local/lib -llapack_LINUX -ltmglib_LINUX"