FrontISTR v5.0αのインストール
(macOS High Sierra 10.13.4)
ここでは、FrontISTR v5.0α を macOS High Sierra 10.13.4 でビルドする方法を紹介します。
注意
この文章は公式のものではありません。また、内容の正確性について保証するものではありません。また、筆者は一切の責任を負いません。
はじめに
FrontISTRは東京大学 奥田研究室で開発されている、本格的な構造解析プログラムです。FrontISTR研究会から、研究会の案内や資料、ソフトウェアが入手できます。
スパコンからWindowsパソコンまで動かすことが出来る点が特徴の一つです。
準備
予め macOS High Sierra 10.13.4 が動作可能な状態にしてください。
Homebrewによるパッケージのインストール
本資料では、環境構築のために、macOS 用パッケージマネージャー Homebrewを利用します。
はじめに、https://brew.sh/index_jaからHomebrewのインストールを行ってください。
その後、以下のコマンドで、コンパイル環境をインストールします。
$ brew install gcc
$ brew install cmake
$ brew install open-mpi
ライブラリのビルドとインストール
FrontISTRのビルドに必要なライブラリをビルドし、インストールします。
必要なライブラリは、
- OpenBLAS (LAPACK)
- Scalapack
- Metis 5
- MUMPS
- Trilinos ML
- REVOCAP_Refiner
- OpenMPI
です。この内、OpenMPIについては前の手順でインストールしました。
ソースのダウンロード
ソフトウェア名 | ダウンロード先 | 備考 |
---|---|---|
OpenBLAS-0.2.20 | http://www.openblas.net | リファレンスのLAPACKよりも速い |
metis-5.1.0 | http://glaros.dtc.umn.edu/gkhome/metis/metis/download | scotch-metisも利用可 |
scalapack-2.0.2 | http://www.netlib.org/scalapack/ | MUMPSで利用 |
MUMPS_5.1.2 | http://mumps.enseeiht.fr/ | 要ユーザ登録、直接法ソルバ |
trilinos-12.12.1 | https://trilinos.org/download/ | 要ユーザ登録、反復法前処理に利用 |
REVOCAP_Refiner-1.1.04 | http://www.multi.k.u-tokyo.ac.jp/FrontISTR | 要ユーザ登録、FrontISTRリザーバの「最新版FrontISTRおよびREVOCAP_PrePost」よりダウンロード |
ライブラリのビルド
作業をするディレクトリは $HOME/Software
、ライブラリをインストールするディレクトリは $HOME/.local
として説明をします。
$ cd $HOME
$ mkdir Software
$ mkdir .local
PATH 環境変数を確認してください。
$ echo $PATH
/usr/lib64/openmpi/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/home/user/.local/bin:/home/user/bin
また、$HOME/.local/bin
へPATH
を通しておくと便利です。
% mkdir -p $HOME/.local/bin
% cd $HOME/.local/bin
% export PATH=`pwd`:$PATH
OpenBLASの構築
OpenBLASは、高速なLAPACK/BLASのフリーの実装です。
OpenMPを有効にしたライブラリを構築します。
% tar xvf OpenBLAS-0.2.20.tar.gz
% cd OpenBLAS-0.2.20
% make BINARY=64 NO_SHARED=1
% make PREFIX=$HOME/.local install
OpenBLASをLAPACKとして利用する場合、-llapack
の代わりに-lopenblas
と指定してください。
METISの構築
グラフパーティショナのライブラリです。この他、Scotchに同梱されるmetis互換層も利用できます。
OpenMPを有効にしたライブラリを構築します。
METISの構築にはcmake
が必要ですので、予めインストールしておいてください。
% tar xvf metis-5.1.0.tar.gz
% cd metis-5.1.0
% make config prefix=$HOME/.local cc=gcc
% make
% make install
Scalapackの構築
scalapackは、この後説明をするMUMPSの構築に必要となります。
また、scalapackの構築には、予めMPIがインストールされている必要があります。
% tar xvf scalapack-2.0.2.tgz
% cd scalapack-2.0.2
% mkdir build
% cd build
% cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local \
..
% make
% make install
MUMPSの構築
MUMPSは直接法のソルバです。
% tar xvf MUMPS_5.1.1.tar.gz
% cd MUMPS_5.1.1
% sed -e "s|mpiicc|mpicc|g" -e "s|mpiifort|mpif90|g" -e "s|-nofor_main| |g" -e "s|-qopenmp| |g" Make.inc/Makefile.INTEL.PAR > Makefile.inc
% make d
% cp lib/*.a $HOME/.local/lib
% cp include/*.h $HOME/.local/include
Trilinos MLの構築
Trilinosには多くのライブラリ含まれていますが、FrontISTRに必要なのはML
とzoltan
だけです。
% tar xvf trilinos-12.10.1-Source.tar.gz
% cd trilinos-12.10.1-Source
% mkdir build
% cd build
% cmake \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
-DTPL_ENABLE_MPI=ON \
-DTrilinos_ENABLE_CXX11=OFF \
-DTrilinos_ENABLE_Fortran:BOOL=OFF \
-DTrilinos_ENABLE_OpenMP:BOOL=OFF \
-DTrilinos_ENABLE_Zoltan=ON \
-DTrilinos_ENABLE_ML=ON \
-DTPL_ENABLE_ParMETIS=OFF \
-DParMETIS_LIBRARY_DIRS=$HOME/.local/lib \
-DParMETIS_INCLUDE_DIRS=$HOME/.local/include \
-DTPL_BLAS_LIBRARIES:STRING="-lopenblas" \
-DTPL_LAPACK_LIBRARIES:STRING="-lopenblas" \
-DCMAKE_INSTALL_PREFIX=$HOME/.local \
..
% make
% make install
ここで示した手順では、ライブラリを$HOME/.local
以下にインストールをしました。
macOS以外のOSでも基本的には同様に構築することができます。
FrontISTRの構築
必要なライブラリの導入が済んだらFrontISTRを構築します。
FrontISTRで有効にする機能は
- hecmw_part1領域分割ツールなどのツール群生成
- REVOCAP_Refiner (メッシュの細分化機能)
- MPI (PCクラスタ等の並列実行環境)
- OpenMP (マルチコアCPUを利用)
- METIS (メッシュの領域分割のために必要)
- MUMPS (直接法ソルバー)
- LAPACK (CG法やGMRES法を用いた前処理適用後の条件数推定機能を利用)
- Trilinos-ML (代数マルチグリッド法に基づく前処理)
です。これらの機能を有効にしたバイナリを作成します。
% git clone https://github.com/FrontISTR/FrontISTR.git
Makefile.confの編集
% cp Makefile.conf.org Makefile.conf
% vi Makefile.conf
以下の内容でMakefile.conf
を編集してください。
##################################################
# #
# Setup Configulation File for FrontISTR #
# #
##################################################
# MPI
MPIDIR =
MPIBINDIR =
MPILIBDIR =
MPIINCDIR =
MPILIBS =
# for install option only
PREFIX = $(HOME)/FrontISTR
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
INCLUDEDIR = $(PREFIX)/include
# Metis
METISDIR = $(HOME)/FrontISTR_tools
METISLIBDIR = $(METISDIR)/lib
METISINCDIR = $(METISDIR)/include
HECMW_METIS_VER= 5
# ParMetis
PARMETISDIR = $(HOME)/ParMetis-3.1
PARMETISLIBDIR = $(PARMETISDIR)
PARMETISINCDIR = $(PARMETISDIR)/ParMETISLib
# Refiner
REFINERDIR = $(HOME)/FrontISTR_tools
REFINERINCDIR = $(REFINERDIR)/include
REFINERLIBDIR = $(REFINERDIR)/lib
# Coupler
REVOCAPDIR = $(HOME)/REVOCAP_Coupler
REVOCAPINCDIR = $(REVOCAPDIR)/librcap
REVOCAPLIBDIR = $(REVOCAPDIR)/librcap
# MUMPS
MUMPSDIR = $(HOME)/FrontISTR_tools
MUMPSINCDIR = $(MUMPSDIR)/include
MUMPSLIBDIR = $(MUMPSDIR)/lib
# MKL PARDISO
MKLDIR = $(HOME)/
MKLINCDIR = $(MKLDIR)/include
MKLLIBDIR = $(MKLDIR)/lib
# ML
MLDIR = $(HOME)/FrontISTR_tools
MLINCDIR = $(MLDIR)/include
MLLIBDIR = $(MLDIR)/lib
# C compiler settings
CC = mpicc
CFLAGS =
LDFLAGS = -lm
OPTFLAGS = -O3
# C++ compiler settings
CPP = mpic++
CPPFLAGS =
CPPLDFLAGS =
CPPOPTFLAGS = -O3
# Fortran compiler settings
F90 = mpif90
F90FLAGS =
F90LDFLAGS =
F90OPTFLAGS = -O2
F90FPP = -cpp
F90LINKER = mpif90
MAKE = make
AR = - ar ruv
MV = mv -f
CP = cp -f
RM = rm -f
MKDIR = mkdir -p
この手順で用いるMETISはVersion5.1.0です。HECMW_METIS_VER = 5
を指定してください。
gfortranのプリプロセッサ指定は -cpp
です。F90FPP = -cpp
を指定してください。
また、特徴として、ar
コマンドがGNU準拠のものではないので、エラーがある場合にMakefileが止まってしまいます。これを避けるために、ar
コマンドの先頭にハイフンを挟む必要があります。
あわせて、OpenMPによるスレッド並列を実施したい場合には、-fopenmp
オプションを当該部分に追記してください。この場合、領域分割プログラム(パーティショナ)などがスレッド並列による出力に対応され、計算時間の大きな短縮に繋がります。
# C compiler settings
CC = mpicc
CFLAGS =
LDFLAGS = -lm
OPTFLAGS = -O3 -fopenmp
# C++ compiler settings
CPP = mpic++
CPPFLAGS =
CPPLDFLAGS =
CPPOPTFLAGS = -O3 -fopenmp
# Fortran compiler settings
F90 = mpif90
F90FLAGS =
F90LDFLAGS =
F90OPTFLAGS = -O2 -fopenmp
F90FPP = -cpp
F90LINKER = mpif90
編集が出来たらsetup.sh
を実行してください。
% ./setup.sh -p --with-tools --with-metis --with-mumps --with-lapack --with-ml
setup.sh
の実行が済んだらコンパイルしてバイナリを作成します。
% make
% make install
構築したバイナリをインストールをすると、$(HOME)/FrontISTR/bin
以下に
% ls $HOME/FrontISTR/bin
fistr1 hec2rcap hecmw_part1 hecmw_vis1 neu2fstr rconv rmerge
などのバイナリがコピーされ実行できる状態になります。
通常はここまでの手順で十分です。
謝辞
本記事は、以下の記事を参考に、著者の許可を得て作成したものです。感謝いたします。
オープンソース大規模並列FEM非線形構造解析プログラム FrontISTR v4.6のインストール (CentOS 7.3)