Octave 3.4.3 + Intel Math Kernel Library 10.3 インストール (CentOS 5.7)
平成23年11月3日
計算機管理のページに戻る
内容は無保証です。
感想
ダウンロードしたファイル
arpack96.tar.gz
arpackPatch.tar.gz
epel-release-5-4.noarch.rpm
fftw-3.3.tar.gz
glpk-4.47.tar.gz
hdf5-1.8.7.tar.gz
l_mkl_10.3.6.233_intel64.tgz
octave-3.4.3.tar.bz2
qhull-2011.1-src.tgz
qrupdate-1.1.1.tar.gz
SuiteSparse-3.6.1.tar.gz
IntelのMath Kernel Library(l_mkl_10.3.6.233_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 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* gcc44* libstdc++44*
GraphicsMagick++
CentOSの標準のライブラリーにないので,epelから取ってきます。
wget download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
yum install GraphicsMagick*
OpenGL, Freetype, Fontconfig, Fltk, Curl
yum install freeglut* freetype* fontconfig* fltk* curl*
Intel MKL
プロダクトキーがmailで送られてきていると思います。
cd /root/Octave343/l_mkl_10.3.6.233_intel64
./install.sh
いろいろ聞かれますが,基本的にはyesで答えます。
また,プロダクトーの入力が必要です。
ライブラリーをダイナミックリンクできるように,
次のコマンドを実行する。
echo /opt/intel/mkl/lib/intel64 > /etc/ld.so.conf.d/intel.conf
ldconfig
ldconfig -p |less (確認)
QRUPDATE
cd /root/Octave343/qrupdate-1.1.1
vi Makeconf
で,Makeconfの次の部分を書き換えます。
FC=gfortran44
FFLAGS=-fimplicit-none -O3 -funroll-loops -fdefault-integer-8
BLAS=-L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4 -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.6.233/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
SuiteSparse
cd /root/Octave343/SuiteSparse
vi UFconfig/UFconfig.mk
で,UFconfig.mkの次の部分を書き換えます
(GPLでないmetisは使わないように設定します)。
CC = gcc44
CFLAGS = -fPIC -O -DLP64 -DLONGBLAS='long int' -DLONG='long int'
CPLUSPLUS = g++44
F77 = gfortran44
F77FLAGS = -fPIC -O -fdefault-integer-8
F77LIB = -L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4
LIB = -L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4 -lm
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.6.233/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 =
METIS =
CHOLMOD_CONFIG = -DNPARTITION
SPQR_CONFIG = -DNPARTITION
次に,
vi CHOLMOD/Demo/Makefile
で,LIB2をMetisを使わないものにし,
COLANDの後に Libを挿入します(ミスと思われます)。
LIB2 = ../Lib/libcholmod.a ../../AMD/Lib/libamd.a ../../COLAMD/Lib/libcolamd.a \
$(LAPACK) $(BLAS) $(XERBLA) $(LIB)
CHOLMODのDI version のテストをしないようにします。上と同じMakefileにおいて,
下の行を削除する
./cholmod_demo < Matrix/bcsstk01.tri
./cholmod_demo < Matrix/lp_afiro.tri
./cholmod_demo < Matrix/can___24.mtx
./cholmod_demo < Matrix/c.tri
./cholmod_simple < Matrix/c.tri
./cholmod_simple < Matrix/can___24.mtx
./cholmod_simple < Matrix/bcsstk01.tri
を削除します。
ファイル名の書き間違いと思われる修正をします。
vi AMD/Lib/Makefile
として,
$(C) -DDINT -c ../Source/amd_1.c -o amd_i_1.o
$(C) -DDINT -c ../Source/amd_2.c -o amd_i_2.o
$(C) -DDLONG -c ../Source/amd_1.c -o amd_l_1.o
$(C) -DDLONG -c ../Source/amd_2.c -o amd_l_2.o
を
$(C) -DDINT -c ../Source/amd_1.c -o amd_i1.o
$(C) -DDINT -c ../Source/amd_2.c -o amd_i2.o
$(C) -DDLONG -c ../Source/amd_1.c -o amd_l1.o
$(C) -DDLONG -c ../Source/amd_2.c -o amd_l2.o
に書き換えます。
さらにその下の$(AR)の部分も同様に変更します。
同じ間違いのために,
vi CAMD/Lib/Makefile
として,
AMDI = $(addsuffix .o, $(subst amd_,amd_i_,$(AMD)))
AMDL = $(addsuffix .o, $(subst amd_,amd_l_,$(AMD)))
md_i_%.o: ../Source/amd_%.c $(INC)
$(C) -DDINT -c $< -o $@
amd_l_%.o: ../Source/amd_%.c $(INC)
$(C) -DDLONG -c $< -o $@
を
AMDI = $(addsuffix .o, $(subst amd_,amd_i,$(AMD)))
AMDL = $(addsuffix .o, $(subst amd_,amd_l,$(AMD)))
md_i%.o: ../Source/amd_%.c $(INC)
$(C) -DDINT -c $< -o $@
amd_l%.o: ../Source/amd_%.c $(INC)
$(C) -DDLONG -c $< -o $@
に書き換えます。
また,リンクの指定において,
ライブラリーを書く順番を間違えているところを修正します。
vi UMFPACK/Demo/Makefile
として,
UMFPACK = ../Lib/libumfpack.a ../../AMD/Lib/libamd.a \
../../CHOLMOD/Lib/libcholmod.a ../../COLAMD/Lib/libcolamd.a \
../../CAMD/Lib/libcamd.a $(METIS) \
../../CCOLAMD/Lib/libccolamd.a
を
UMFPACK = ../Lib/libumfpack.a \
../../CHOLMOD/Lib/libcholmod.a ../../COLAMD/Lib/libcolamd.a \
../../AMD/Lib/libamd.a ../../CAMD/Lib/libcamd.a $(METIS) \
../../CCOLAMD/Lib/libccolamd.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 clean
rm -f `find . -name '*.a'`
fftw
ライブラリーの作成とインストールです。
cd /root/Octave343/fftw-3.3
./configure LDFLAGS='-L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4' CC=gcc44 F77=gfortran44 CFLAGS='-fPIC -dPIC -O3 -fomit-frame-pointer -fstrict-aliasing -ffast-math'
make clean
make
make install
floatのライブラリーの作成とインストールです。
make clean
./configure LDFLAGS='-L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4' CC=gcc44 F77=gfortran44 CFLAGS='-fPIC -dPIC -O3 -fomit-frame-pointer -fstrict-aliasing -ffast-math' --enable-float
make
make install
glpk
作成とインストールです。
cd /root/Octave343/glpk-4.47
./configure LDFLAGS='-L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4' CC='gcc44 CFLAGS='-g -O2 -fPIC -dPIC'
make
make install
qhull
Makefileの書き換えが必要です。
cd /root/Octave343/qhulll-2010.1
vi Makefile
として,
CC = gcc
CXX = g++
CXX_WARNINGS = -Wall -Wcast-qual -Wextra -Wwrite-strings -Wno-sign-conversion -Wshadow -Wconversion
を,
CC = gcc44
CXX = g++44
CXX_WARNINGS = -Wall -Wcast-qual -Wextra -Wwrite-strings -Wshadow -Wconversion
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 LDFLAGS='-L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4' CC=gcc44 CXX=g++44 FC=gfortran44 --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.6.233/compiler/lib/intel64 -liomp5 -Wl,--end-group -L/lib64 -L/usr/lib64 -lpthread -lgfortran -lgfortranbegin
BLASLIB =
FC = gfortran44
FFLAGS = -cpp -O3 -fPIC -dPIC
LDFLAGS = -L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4
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 LDFLAGS='-L/usr/lib/gcc/x86_64-redhat-linux6E/4.4.4' CC=gcc44 CXX=g++44 F77=gfortran44 --libdir='/usr/local/lib' --enable-64 --enable-docs=no\
--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.6.233/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.6.233/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 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* gcc44* libstdc++44*
wget download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
yum install GraphicsMagick*
yum install 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