オープンソース大規模並列FEM非線形構造解析プログラム FrontISTR v5.0αのインストール (macOS High Sierra 10.13.4)

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/binPATHを通しておくと便利です。

% 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に必要なのはMLzoltanだけです。

% 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を指定してください。

編集が出来たら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)

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.