九州大学スパコンITO-AでDelft3Dのインストール

Table of Contents

九州大学情報基盤センターのスパコンITO-AでDeflt3Dのビルドを行った備忘録です.ITO-AのOSはRedhat Enterprise Linux 7.3で,インテルコンパイラを用い,ホームディレクトリ直下に Delft3D/ ディレクトリを作成し,その中でビルドしました.NetCDFはセンターで用意されているものを利用します.

ソースコードの入手

Delft3Dのユーザー登録を済ませ,こちらのサイトDelft3Dをクリックして,trunkのrevision番号を確認しましょう.2019年6月22日時点では64186でした.次のように subversion で入手します.

svn checkout https://svn.oss.deltares.nl/repos/delft3d/trunk/ 64186

これで,64186 ディレクトリにソースコードがダウンロードされます. なお,revision 59659 を以下のように入手し,全く同様にビルドできることを確認しています.

svn checkout https://svn.oss.deltares.nl/repos/delft3d/tags/delft3d4/59659 59659

環境変数の設定

インテルコンパイラの利用のため,環境変数を設定します.最後の2つは見落としがちです.

export CC=icc
export CXX=icpc
export CFLAGS=-O3 -no-prec-div -fp-model fast=2 -xHost
export CXXFLAGS=-O3 -no-prec-div -fp-model fast=2 -xHost
export F77=ifort
export FC=ifort
export F90=ifort
export FFLAGS=-O3 -no-prec-div -fp-model fast=2 -xHost
export CPP=icc -E
export CXXCPP=icpc -E
export MPIF77=mpiifort
export MPICXX=mpiicpc

NetCDFおよびインテルコンパイラの利用準備

インテルコンパイラから利用できる NetCDF がセンターで準備されています.こちらを参照し,NetCDF のインストールディレクトリを以下のように把握しておきます.

/home/app/a/NetCDF-4.4.1.1

また,インテルコンパイラを利用するため,こちらを参照し,以下のように環境を設定します.

module load intel/2018.3

さらに,which ifort でインテルコンパイラがインストールされているディレクトリを把握しておきましょう.後の build.sh の設定で必要になります.

build.shの編集

64186/src/ に存在する build.sh を以下のように編集します.

## 50行目付近 echo     -intel16 (-intel16.0.3)の下に以下を追記
    echo     -ito (-intel18 on ITO-A)

## 122行目付近 -m|-make) の前行に以下を追記
        -ito)
            compiler='ito'
            ;;

## 169行目付近 intel16) の前行に以下を追記
    ito)
        echo Using Intel 18.3 Fortran ($platform) compiler
        ;;

## 253行目から256行目を以下の様にコメントアウト
#addpath PATH \
#    /opt/automake/bin \
#    /opt/autoconf/bin \
#    /opt/libtool/bin

## 272行目から274行目を以下の様にコメントアウト
    #addpath PATH /opt/mpich2-1.0.8-intel64/bin
    #export MPI_INCLUDE=/opt/mpich2-1.0.8-intel64-PIC/include
    #export MPILIBS_ADDITIONAL=-L/opt/mpich2-1.0.8-intel64-PIC/lib -lfmpich -lmpich

## 276行目のexport MPIFC=を以下のように変更
        export MPIFC=/home/app/intel/intel2018_up3/compilers_and_libraries_2018.3.222/linux/mpi/intel64/bin/mpiifort

## 283行目から288行目を以下の様にコメントアウト
#if [ $compiler = 'gnu' ]; then
#    fflags=''
#else
#    # Intel compilers
#    fflags='-threads'
#fi

## 293行目から298行目を以下の様にコメントアウト
#if [ $compiler = 'gnu' ]; then
#    export LDFLAGSMT_ADDITIONAL= 
#else
#    # Intel compilers
#    export LDFLAGSMT_ADDITIONAL=-lifcoremt
#fi

## 302行目の export NETCDFROOT= を以下のように変更
export NETCDFROOT=/home/app/a/NetCDF-4.4.1.1

## 369行目のflags='-O2' を以下のように変更
    #flags='-O2'
    flags=''

ビルド

準備ができたので,以下のように 64186/src/ ディレクトリでビルドしましょう.かなり時間がかかります.

./build -ito

しかし,ITO-A のログインノードの制限時間内にコンパイルが終わらない場合は(64186 は終わりませんでした),バッチジョブとしてコンパイルします.適当なディレクトリで以下のバッチ処理スクリプト build_batch.sh を作成します.-X はジョブを投入したときのコンソールの環境変数を引き継ぐという意味で,上述の環境変数が設定されている必要があります.その他詳細はこちらを参照ください.

#!/bin/bash
#PJM -L rscunit=ito-a          
#PJM -L rscgrp=ito-ss
#PJM -L vnode=1
#PJM -L vnode-core=36
#PJM -L elapse=2:00:00
#PJM -j
#PJM -X
cd /home/usr*/your_account/Delft3D/64186/src
./build.sh -ito

やり直す場合は make clean できれいにしてから,以下のようにジョブを投入します.

pjsub build_batch.sh

pjstat コマンドで投入したジョブの状態を確認できます.ジョブが終了すると,build_batch.sh.o******* というファイルが生成され,この中に標準出力と標準エラー出力の両者が書き込まれています.最後が Build finished となっていれば成功です.

examplesの実行

ビルドが成功したら,examples/ ディレクトリにあるテストケースを実行してみましょう(parallelでの実行は未確認です).最初のテストは,01_standard/ ディレクトリに移動し,以下のように実行します.

./run.sh

同様に他のテストケースも実行してみましょう.なお,例05では,05_mormerge/merge/ に移動し,同様に ./run.sh で実行しますが,以下のエラーが出ました.

ERROR: Environment parameter ARCH not defined

この場合は環境変数 ARCH を以下のように設定し,やり直します.

export ARCH=$(uname -m)
./run.sh

ITO-Aでは ARCH=x86_64 となりました.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください