Build open TELEMAC-MASCARET on Linux (ITO-A) using Intel compiler (MPI)
Open TELEMAC-MASCARETは非構造格子を含む,水圏環境ソフトウエアスイーツで,元々はフランスの電力会社(当時はおそらく公社)EDF (Électricité de France) R&D (Research and Development)が開発した商用ソフトウエアでしたが,2010年よりオープンソース化され,open TELEMAC-MASCARETというコンソーシアムを形成して活発に開発が続けられているようです. 東大とENPC (École des ponts ParisTech,国立土木学校で,ENPCあるいはポンゼショセとも呼ばれるグランゼコールの一つです)の大学間交流の縁で,TELEMACについて調べることになりました.ちなみにグランゼコールは大学とは異なり,学位授与はできないそうですが,給与が支給されるところもあり,トップエリートが集まる,大学,大学院相当のフランス独特の国立学校だそうです.一方,兵役の義務もあるとのことでした.
登録
TELEMACを利用するにはこちらのページで登録する必要があります.入力項目が多いです.
ダウンロード
ログイン後に,ダウンロードページで,SVN Repository
をクリックし,The details of the TELEMAC SVN repository
を参照します.Subversionが必要です.ITO-Aにはインストール済みです.例えば,Ubuntuでインストールするには以下のようにします.
sudo apt install subversion
次に,安定版の最新のリポジトリからダウンロードします.ユーザネームとパスワードは登録した個人のものではなく,ダウンロードページに記載されているものを入力します.一緒にexamplesもダウンロードされました.ダウンロードには45分かかりました.
svn co http://svn.opentelemac.org/svn/opentelemac/tags/v7p2r0/
ビルドの準備
こちらに従って準備を進めます. Python 2.7が必要です.condaで管理していればTELEMAC用の仮想環境telemacを作るとよいでしょう.
conda create -n telemac python=2.7
source activate telemac
conda install numpy
METIS-5.1.0
TELEMACのソースコードディレクトリの下の./optionals/metis-5.1.0
に移動し,Build.txt
に従ってインストールします.
make config cc=icc prefix=${HOME}/local/metis-5.1.0
make
make install
HDF-5
こちらを参考に,hdf-5のソースコードをダウンロードし,適当なディレクトリで展開します.--prefix=
ですが,install-pathは絶対path(ルートから)で指定する必要があります.
tar xf hdf5-1.8.14.tar.gz
cd hdf5-1.8.14
./configure --prefix=$HOME/local/hdf-5
make
make install
HDF-5についてはこちらが参考になるでしょう.
環境変数の設定
ホームディレクトリを$HOME
とします.ディレクトリ$HOME/TELEMAC/v7p2r0/configs/
に存在する,pysource.template.sh
をpysource.intel_mpi.sh
のファイル名でコピーし(ファイル名は自分で決めます),このファイルの中で環境変数を以下のように編集します.HOMETEL
はソースコードの存在するディレクトリです.
# Path to telemac root dir
export HOMETEL=$HOME/TELEMAC/v7p2r0
# Adding python scripts to PATH
export PATH=$HOMETEL/scripts/python27:.:$PATH
# Configuration file
export SYSTELCFG=$HOMETEL/configs/systel.ito_a.cfg
# Name of the configuration to use
export USETELCFG=intel_mpi
# Path to this file
export SOURCEFILE=$HOMETEL/configs/pysource.intel_mpi.sh
### HDF5 -----------------------------------------------------------
export HDF5HOME=$HOME/local/hdf-5
export LD_LIBRARY_PATH=$HDF5HOME/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$HDF5HOME/lib:$MEDHOME/lib:$LD_RUN_PATH
### METIS -------------------------------------------------------------
export METISHOME=$HOME/local/metis-5.1.0
export LD_LIBRARY_PATH=$METISHOME/lib:$LD_LIBRARY_PATH
設定ファイルにはMPIに関する設定例も含まれていますが,Intelコンパイラが利用できるようになっていれば,特にここで設定するものはないようですので,コメントアウトしておきます. 環境変数を設定するには作成されたスクリプトを実行します.
source pysource.intel_mpi.sh
config fileの作成・編集
pysource.intel_mpi.shで定義した,systel_ito_a.cfg
を,$HOMETEL/config/
に存在するcfgファイル例を参考に作成・編集します.主な点は以下の通りです. configs
にintel_mpi
を加えます.このintel_mpi
を以下で定義します.
[Configurations]
configs: intel_mpi
End of Definitions
の前に以下を追記します.
# ____/ ITO-A Intel Fortran MPI /___________________________________/
[intel_mpi]
#
brief: parallel mode, using Intel Fortran MPI on ITO-A at Kyushu University.
#
mpi_cmdexec: mpiexec.hydra -n <ncsize> <exename>
#
cmd_obj: mpiifort -c -ipo -O3 -no-prec-div -fp-model fast=2 -xHost <mods> <incs> <f95name>
cmd_exe: mpiifort -lpthread -v -lm -o <exename> <objs> <libs>
libs_all: $HOME/local/metis-5.1.0/lib/libmetis.a
コンパイル
コンパイルは$HOMETEL/configs
において以下のPythonスクリプトを実行するだけです.もし動かない場合は$HOMETEL/scripts/python27/
のPython scriptに実行形式を付与します.
config.py
コンソールにいろいろ表示された後,My work is done
が表示されて終わればOKです. いよいよコンパイルです.次のようにします.
compileTELEMAC.py
コンパイルは非常に時間がかかりました(1時間弱).途中で何度も止まったように見えますが(リンクの部分と思われます),気長に待ち続けます.最後にMy work is done
が現れれば成功です.$HOMETEL/builds/intel_mpi/bin/
に多くの実行形式がインストールされているはずです.再度コンパイルする際は,$HOMETEL/builds/
を削除しておきます.