Last modified : 2013/10/01

FrontISTRをubuntu-13.04へインストール

FrontISTRをubuntu-13.04へソースコードからインストールします。

必要となるソフトウェアは出来るだけ、バイナリパッケージから導入します。

バイナリパッケージのインストール

ubuntuでバイナリパッケージが用意されている物は、それを利用します。

バイナリパッケージは、apt-get を使いインストールしてください。

    % sudo apt-get install build-essential gfortran ruby doxygen swig libmumps-dev
    % sudo apt-get install libopenmpi-dev openmpi-bin blcr-dkms libboost-all-dev

別途ダウンロードが必要なソフトウェア

バイナリパッケージでインストール出来なかったソフトは、ソースを各サイトからダウンロードしてから、ビルドする必要があります。

ダウンロードしたソフトウェアのビルド

ダウンロードしたソフトのビルド方法を説明します。

ここでは、各ソフトウェアを $HOME/Software 以下に展開するとして説明します。

REVOCAP Refinerのビルド

    % cd $HOME/Software
    % tar xvf REVOCAP_Refiner-1.1.01.tgz
    % cd REVOCAP_Refiner-1.1.01
    % vi MakefileConfig.in

MakefileConfig.in は、適宜編集して下さい。コンパイラに gfortran を使う場合、編集の必要はありません。

配布されている REVOCAP Refiner のソースファイルの中に、一部記述が足りない部分があります。そこで以下のように追記してからビルドをして下さい。

    % vi RevocapIO/kmbHecmwIO_V3.cpp
        #include <cstdlib>
    % make

REVOCAP Couplerのビルド

    % cd $HOME/Software
    % tar xvf REVOCAP_Coupler-2.0.tgz
    % cd REVOCAP_Coupler-2.0
    % export REFINER_HOME="$HOME/Software/REVOCAP_Refiner-1.1.01"
    % env \
      REFINER_LIBS="-L$REFINER_HOME/lib/x86_64-linux -lRcapRefiner -lstdc++" \
      REFINER_INCLUDES="-I$REFINER_HOME/Refiner" \
      ./configure \
          --prefix=$HOME/local \
          --with-mpicc=mpicc \
          --with-mpif90=mpif90
    % make

metisのビルド

    % cd $HOME/Software
    % tar xvf metis-4.0.3.tar.gz
    % cd metis-4.0.3
    % vi Makefile.in
    % make

FrontISTRのビルド

FrontISTR をビルドする準備が出来ました。今度は、FrontISTR 本体をビルドしていきます。

    % cd $HOME/Software
    % tar xvf FrontISTR_V42c.tar.gz
    % cd FrontISTR

ビルドの設定は Makefile.conf で行います。テンプレートが用意してありますので、これをコピーして編集すると良いでしょう。

    % cp Makefile.conf.org Makefile.conf
    % vi Makefile.conf

これまで用意した環境では、Makefile.conf は以下のようになります。

##################################################
#                                                #
#     Setup Configulation File for FrontISTR     #
#                                                #
##################################################

# MPI
MPIDIR         = /usr
MPIBINDIR      = $(MPIDIR)/bin
MPILIBDIR      = $(MPIDIR)/lib
MPIINCDIR      = $(MPIDIR)/include
MPILIBS        = -lmpi -lmpi_cxx -lmpi_f90

# for install option only
PREFIX         = $(HOME)/FrontISTR
BINDIR         = $(PREFIX)/bin
LIBDIR         = $(PREFIX)/lib
INCLUDEDIR     = $(PREFIX)/include

# Metis
METISDIR       = $(HOME)/Software/metis-4.0.3
METISLIBDIR    = $(METISDIR)
METISINCDIR    = $(METISDIR)/Lib

# ParMetis (ParMetisは現在利用されていません)
PARMETISDIR    = $(HOME)/ParMetis-3.1
PARMETISLIBDIR = $(PARMETISDIR)
PARMETISINCDIR = $(PARMETISDIR)/ParMETISLib

# Refiner
REFINERDIR     = $(HOME)/Software/REVOCAP_Refiner-1.1.01
REFINERINCDIR  = $(REFINERDIR)/Refiner
REFINERLIBDIR  = $(REFINERDIR)/lib/x86_64-linux

# Coupler
REVOCAPDIR     = $(HOME)/Software/REVOCAP_Coupler-2.0
REVOCAPINCDIR  = $(REVOCAPDIR)/librcap
REVOCAPLIBDIR  = $(REVOCAPDIR)/librcap

# MUMPS
MUMPSDIR       = /usr
MUMPSINCDIR    = $(MUMPSDIR)/include
MUMPSLIBDIR    = $(MUMPSDIR)/lib

# C compiler settings
CC             = mpicc
CFLAGS         =
LDFLAGS        = -lm
# コンパイルオプションはお好みで
OPTFLAGS       = -Ofast -msse -msse2 -march=native -mtune=native -mfpmath=sse -fbounds-check -Wuninitialized

# C++ compiler settings
CPP            = mpic++
CPPFLAGS       =
CPPLDFLAGS     =
CPPOPTFLAGS    = $(OPTFLAGS)

# Fortran compiler settings
F90            = mpif90
F90FLAGS       =
F90LDFLAGS     =
F90OPTFLAGS    = $(OPTFLAGS)

MAKE           = make
AR             = ar ruv
CP             = cp -f
RM             = rm -f
MKDIR          = mkdir -p

Makefile.conf の編集が済んだら、以下のシェルスクリプトを実行します。

    % ./setup.sh -g -p --with-tools --with-refiner --with-revocap --with-metis \
        --with-mumps --with-paracon

すると、各ディレクトリに Makefile が生成されます。最後に

    % make
    % make install

で FrontISTR をビルドします。

ビルドにはマシンによって20分から30分かかる事があります。無事ビルドされたら、$PATH環境変数にパスを通しておきましょう。$HOME/.profile等に記述しておくと便利です。

    % vi $HOME/.profile
       export PATH=$HOME/FrontISTR/bin:$PATH

FrontISTRのテスト実行

FrontISTR の配布物の中には、幾つかのサンプルが同梱されています。試しに実行してみましょう。

FrontISTR のコマンド名は fistr1 です。

シリアル版のテスト

    % cd FrontISTR/tutorial/01_elastic_hinge
    % fistr1

これで計算が始まります。計算が終了し、正常終了すると

    FrontISTR Completed!!
と表示されます。

MPI版のテスト

MPI版の場合、最初にメッシュを分割します。例題は領域を4分割し実行します。メッシュ分割ツールのコマンド名は hecmw_part1 です。

    % cd FrontISTR/tutorial/02_elastic_hinge_parallel
    % hecmw_part1
    Aug 01 13:48:33 Info: Reading mesh file...
    Aug 01 13:48:33 Info: Starting domain decomposition...
    Aug 01 13:48:34 Info: Creating local mesh for domain #0 ...
    Aug 01 13:48:34 Info: Creating local mesh for domain #1 ...
    Aug 01 13:48:34 Info: Creating local mesh for domain #2 ...
    Aug 01 13:48:34 Info: Creating local mesh for domain #3 ...
    Aug 01 13:48:34 Info: Domain decomposition done

メッシュが分割されたら、以下のようにして FrontISTR を実行します。

    % mpirun -np 4 fistr1

これも、正常終了すると

    FrontISTR Completed!!

と表示されます。

FrontISTRのドキュメント

FrontISTRの配布物の中には、様々なドキュメントが同梱されています。

    % cd $HOME/Software/FrontISTR
    % ls doc
     FrontISTR_install_manual.pdf
     FrontISTR_install_manual_en.pdf
     FrontISTR_tutorial_guide.pdf
     FrontISTR_tutorial_guide_en.pdf
     FrontISTR_user_manual_Ver34.pdf
     FrontISTR_user_manual_Ver34_en.pdf
     FrontISTR_user_manual_Ver42.pdf
     FrontISTR_user_manual_Ver42_en.pdf

この中の FrontISTR_tutorial_guide.pdf 辺りから読み進めると良いでしょう。必要に応じてFrontISTR_user_manual_Ver34.pdfも参考にして下さい。