Octave 3.4.3 + Intel Math Kernel Library 10.3 インストール (CentOS 6.2)
平成24年1月28日
計算機管理のページに戻る
感想
- CentOS 6.xのgccのバージョンは4.4が標準になって,圧倒的に楽になりました。
- 今回はGPLでない,metisを導入しました。
- Intel MKL, SuiteSparse, qhullのサブバージョンがCentOS 5.7のインストールに比べて上がっています。
- Octave の make checkでErrorが2つ(sqp.m, polyfit.m)出ていますが,あまり問題はないとは思います
(チェック自体は7064個あります)
- 内容は無保証です。
ダウンロードしたファイル
SuiteSparse-3.7.0.tar.gz
arpack96.tar.gz
arpackPatch.tar.gz
cmake-2.8.7.tar.gz
epel-release-6-5.noarch.rpm
fftw-3.3.tar.gz
glpk-4.47.tar.gz
hdf5-1.8.7.tar.gz
l_mkl_10.3.7.256_intel64.tgz
metis-5.0.2.tar.gz
octave-3.4.3.tar.bz2
qhull-2011.2-src.tgz
qrupdate-1.1.1.tar.gz
SuiteSparse-3.7.0.tar.gz
IntelのMath Kernel Library(l_mkl_10.3.7.256_intel64.tgz)は,
Non-Commercial Software Downloadから取ってきてください。
利用は非商用限定です。商用の場合はIntelから購入してください。
他のプログラムはGPLですので,ググれば探せると思います。
本当はrootで作業しない方が良いのでしょうけれど,私は面倒なのでrootで作業しています
(計算専用マシンで,Octave程度しかインストールしないので,壊れたらOSを再インストールします)。
ダウンロードしたファイルは,
mkdir -p /root/Octave343
cd /root/Octave343
としてディレクトリを作成して/root/Octave343の下に置いて,
for i in *gz ; do tar zxvf $i ;done
for i in *bz2 ; do tar jxvf $i ;done
で展開してください。
ライブラリーのインストール
yum -y install \
libpng gcc gcc-c++ gcc-gfortran readline-devel gperf flex bison zlib-devel texinfo gnuplot \
tetex xorg-x11-devel tetex-dvips ImageMagick-devel libjpeg-devel libpng-devel pcre-devel \
ImageMagick-c++-devel ghostscript ncurses-devel compat-readline43 libX11-devel \
libXext-devel libpng-devel libjpeg-devel automake libtool* tetex* texinfo* mesa* make redhat-lsb
GraphicsMagick++
CentOSの標準のライブラリーにないので,epelから取ってきます(epelで検索すれば下のファイルは見つかります)。
rpm -ivh epel-release-6-5.noarch.rpm
yum install GraphicsMagick*
OpenGL, Freetype, Fontconfig, Fltk, Curl
これもepelのライブラリーをだいぶ使います。
yum install freeglut* freetype* fontconfig* fltk* curl*
Intel MKL
xxxx-xxxxxxx
登録のシリアル番号(プロダクトキー)がダウンロード時にWebに表示されると共に,mailでも送られてきていると思います。
cd /root/Octave343/l_mkl_10.3.7.256_intel64
./install.sh
いろいろ聞かれますが,基本的にはyesで答えます。
また,登録のシリアル番号の入力が必要です。
ライブラリーをダイナミックリンクできるように,
次のコマンドを実行する。
echo /opt/intel/mkl/lib/intel64 > /etc/ld.so.conf.d/intel.conf
echo /opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64 >> /etc/ld.so.conf.d/intel.conf
ldconfig
ldconfig -p |less (確認)
QRUPDATE
cd /root/Octave343/qrupdate-1.1.1
vi Makeconf
で,Makeconfの次の部分を書き換えます。
FFLAGS=-fimplicit-none -O3 -funroll-loops -fdefault-integer-8
BLAS=-Wl,--start-group -L/opt/intel/mkl/lib/intel64 -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -Wl,--end-group -Wl,--start-group -L/opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -liomp5 -Wl,--end-group -L/lib64 -L/usr/lib64 -lpthread -lgfortran -lgfortranbegin
LAPACK=
次にライブラリーの作成とインストール・登録です。
make solib
make lib
make install
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
ldconfig
cmake
metisをインストールするためには,cmakeの2.8以上が必要ですが,
yumでは入らないようです。
cd /root/Octave343/cmake-2.8.7
./configure
gmake
gmake install
metis
cd /root/metis-5.0.2/include
vi metis.h
で,整数と浮動小数を64 bitに指定する:
#define IDXTYPEWIDTH 32
#define REALTYPEWIDTH 32
を
#define IDXTYPEWIDTH 64
#define REALTYPEWIDTH 64
に変更する。そして,
cd ..
make config
make install
とする。
SuiteSparse
cd /root/Octave343/SuiteSparse
vi UFconfig/UFconfig.mk
で,UFconfig.mkの次の部分を書き換えます
CC = gcc
CFLAGS = -DLP64 -DLONGBLAS='long int' -DLONG='long int'
F77 = gfortran
BLAS=-Wl,--start-group -L/opt/intel/mkl/lib/intel64 -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -Wl,--end-group -Wl,--start-group -L/opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -liomp5 -Wl,--end-group -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L/lib64 -L/usr/lib64 -lpthread -lgfortran -lgfortranbegin
LAPACK =
METIS_PATH = /root/Octave343/metis-5.0.2/
METIS = /root/Octave343/metis-5.0.2/build/Linux-x86_64/libmetis/libmetis.a
そして,作成とインストールを行います。
make
mkdir /usr/local/include/suitesparse
cp UFconfig/UFconfig.h /usr/local/include/suitesparse
for d in AMD BTF CAMD CCOLAMD CHOLMOD COLAMD CXSparse UMFPACK;
do
cp $d/Lib/lib*a /usr/local/lib
cp $d/Include/*h /usr/local/include/suitesparse
done
参考:cleanの方法
make purge
fftw
ライブラリーの作成とインストールです。
cd /root/Octave343/fftw-3.3
./configure CFLAGS='-fPIC -O3 -fomit-frame-pointer -mtune=native -malign-double -fstrict-aliasing -ffast-math'
make clean
make
make install
floatのライブラリーの作成とインストールです。
make clean
./configure CFLAGS='-fPIC -O3 -fomit-frame-pointer -mtune=native -malign-double -fstrict-aliasing -ffast-math' --enable-float
make clean
make
make install
glpk
作成とインストールです。
cd /root/Octave343/glpk-4.47
./configure CFLAGS='-O2 -fPIC'
make
make install
qhull
Makefileの書き換えが必要です。
cd /root/Octave343/qhulll-2011.2
vi Makefile
として,
CXX_OPTS1 = -O2 -Dqh_QHpointer -Isrc/ -Isrc/libqhullcpp -Isrc/libqhull $(CXX_WARNINGS)
を,
CXX_OPTS1 = -O2 -Dqh_QHpointer -fno-strict-aliasing -Isrc/ -Isrc/libqhullcpp -Isrc/libqhull $(CXX_WARNINGS)
に書き換えます。
次に,作成とインストールです。
make
make install
cd /usr/local/include
ln -s libqhull qhull
cd /usr/local/lib
ln -s libqhullstatic.a libqhull.a
cd /usr/local/include/qhull
ln -s libqhull.h qhull.h
hdf5
作成とインストールです。
cd /root/Octave343/hdf5-1.8.7
./configure --with-pic
make
make install
cd hdf5/lib
cp -r * /usr/local/lib (-r を付けるのはシンボリックリンクのコピーのため)
cd ../include/
cp -r * /usr/local/include
Arpack
cd /root/Octave343/ARPACK/
vi ARmake.inc
として,ARmake.incを次のように書き換えます(変更点だけ記しています)。
home = $(HOME)/Octave343/ARPACK
PLAT =
BLASdir =
LAPACKdir =
LAPACKLIB = -Wl,--start-group -L/opt/intel/mkl/lib/intel64 -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -Wl,--end-group -Wl,--start-group -L/opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -liomp5 -Wl,--end-group -L/lib64 -L/usr/lib64 -lpthread -lgfortran -lgfortranbegin
BLASLIB =
FC = gfotran
FFLAGS = -cpp -O3 -fPIC
MAKE = /usr/bin/make
作成とインストールです。
make lib
cp libarpack_.a /usr/local/lib/libarpack.a
参考:make cleanに相当することをしたいとは
(makeにcleanのターゲットがありません),
rm -f SRC/*.o UTIL/*.o
Octave
ldconfig
cd octave-3.4.3
./configure --libdir='/usr/local/lib' --enable-64 \
--with-blas='-Wl,--start-group -L/opt/intel/mkl/lib/intel64 -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -Wl,--end-group -Wl,--start-group -L/opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -liomp5 -Wl,--end-group -L/lib64 -L/usr/lib64 -lpthread -lgfortran -lgfortranbegin' \
--with-lapack='-Wl,--start-group -L/opt/intel/mkl/lib/intel64 -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -Wl,--end-group -Wl,--start-group -L/opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -liomp5 -Wl,--end-group -L/lib64 -L/usr/lib64 -lpthread -lgfortran -lgfortranbegin'
make
make check
make install
これで,インストールは終了です。
参考:セグメンテーションフォールト時
./run-octave -g
とすれば,デバッグモードで立ち上がります(今回はだいぶお世話になりました)。
他のマシンへのインストール
既に上記インストールをしてあるマシンhostがあれば,
かなり簡単に環境をコピーできます。
まず,yumによるインストールを行ってください。
yum -y install \
libpng gcc gcc-c++ gcc-gfortran readline-devel gperf flex bison zlib-devel texinfo gnuplot \
tetex xorg-x11-devel tetex-dvips ImageMagick-devel libjpeg-devel libpng-devel pcre-devel \
ImageMagick-c++-devel ghostscript ncurses-devel compat-readline43 libX11-devel \
libXext-devel libpng-devel libjpeg-devel automake libtool* tetex* texinfo* mesa* make redhat-lsb
rpm -ivh epel-release-6-5.noarch.rpm
yum install GraphicsMagick* freeglut* freetype* fontconfig* fltk* curl*
その後で,コンパイルしたライブラリーをコピーして,
octaveをインストールするだけです。
rsync -av -e ssh host:Octave343 /root
rsync -av -e ssh host:/opt /
rsync -av -e ssh host:/etc/ld.so.conf.d /etc
rsync -av -e ssh host:/usr/local/lib /usr/local
rsync -av -e ssh host:/usr/local/include /usr/local
ldconfig
cd /root/Octave343/octave-3.4.3
make check
make install