Octave 3.4.3 + Intel Math Kernel Library 10.3 インストール (CentOS 6.2)


平成24年1月28日
計算機管理のページに戻る

感想

ダウンロードしたファイル

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