FLASH codeは、オープンソースの物理ソルバーです。本項では、OCTOPUSでFLASH codeを使用するためのインストール方法、ジョブ投入方法について解説します。
ソフトウェアの取得
下記のページから、FLASH codeをダウンロードしてください。ユーザ登録が必要となりますので、ご自身で登録の上ダウンロードをお願いいたします。
FLASH code(Flash Center, University Chicago)
コンパイル前の事前準備
FLASH codeをコンパイルするためには、事前にOpenMPの設定及び、HDF5、PnetCDF、HYPREのインストールが必要となります。
OpenMPIの設定
-
FLASH code及び全ての関連ソフトウェアはOpenMPIおよびGNUコンパイラを用いてコンパイルします。
コンパイルする前に、以下のコマンドを実行し、OpenMPI-GNUコンパイラを設定してください。
BASE=/octfs/apl/HPC-X/hpcx-v2.2.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64
source ${BASE}/hpcx-init.sh
hpcx_load
OpenMPIの利用方法については下記を参考にしてください。
OpenMPI利用方法
HDF5のインストール
HDF5(Hierarchical Data Format 5)とは階層化されたデータを格納し、管理するデータモデル、ライブラリ、ファイル形式のことです。柔軟かつ効率的なI/O、大量で複雑なデータ向けに設計されています。
本項では、hdf5-1.8.20をダウンロードし、自身のhomeディレクトリ配下にインストールする際の手順を示します。
HDF5配布元 HDF Gourp
1. 下記よりhdf5-1.8.20のソースコードをダウンロードします。
2. 任意のディレクトリに設置し、解凍してください。
tar xvzf hdf5-1.8.20.tar.gz
3. make,make installを実施します。
cd hdf5-1.8.20
./configure --prefix=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HDF5/ --enable-fortran CC=mpicc F9X=mpif90 --enable-parallel
make
make install
PnetCDFのインストール
PnetCDFとは、NetCDF形式(配列指向のデータアクセスの為の形式)のファイルにアクセスするための高性能並列I/Oライブラリです。
本項では、PnetCDF-1.9.0をダウンロードし、自身のhomeディレクトリ配下にインストールする際の手順を示します。
PnetCDF配布元
1. 下記よりPnetCDF-1.9.0のソースコードをダウンロードします。
2. 任意のディレクトリに設置し、解凍してください。
tar xvzf parallel-netcdf-1.9.0.tar.gz
3. make,make installを実施します。
cd parallel-netcdf-1.9.0
./configure --prefix=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/PnetCDF/
make
make install
HYPREのインストール
HYPRE-2.11.2をダウンロードし、自身のhomeディレクトリ配下にインストールする際の手順を示します。
HYPRE配布元
1. 下記よりHYPRE-2.11.2のソースコードをダウンロードします。
2. 任意のディレクトリに設置し、解凍してください。
tar -xzvf hypre-2.11.2.tar.gz
3. make,make installを実施します。
cd hypre-2.11.2/src
./configure --prefix=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HYPRE/ CC=mpicc F9X=mpif90
make
make install
コンパイル方法
-
本項ではFLASH code 4.5でLaserSlab Simulationをコンパイルする方法を解説します。
公式よりコンパイル方法や利用方法を解説するマニュアルが提供されておりますので、併せてご参照ください。
FLASH code サポートページ
1.FLASH codeを任意のディレクトリに設置・解凍してください。
2.setupスクリプトを実行します。
cd FLASH4.5/
./setup -auto LaserSlab
3.Makefileを修正します。
cd object
vi Makefile.h
以下を修正してください。
MPI_PATH = /octfs/apl/HPC-X/hpcx-v2.2.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64/ompi/
HDF5_PATH = /octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HDF5
NCMPI_PATH = /octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/PnetCDF
HYPRE_PATH = /octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HYPRE
※ご自身のグループ名は"id -gn"コマンド等で確認可能です。
4.LD_LIBRARY_PATHを設定します。
export LD_LIBRARY_PATH=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HDF5/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/PnetCDF/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HYPRE/lib:$LD_LIBRARY_PATH
5.makeを実行します。
make
再コンパイルする際はmake cleanコマンドを実行した後に、makeコマンドを実行してください。
コンパイルに成功すると、"flash4"という実行ファイルが生成されます。
実行方法
-
FLASH codeはバッチリクエストによる処理のみ許可しております。
フロントエンドノードに接続し、計算に必要な入力ファイル、ジョブスクリプトを作成後、ジョブ投入して行います。
FLASH codeを利用する際のジョブスクリプト例と、ジョブ実行方法について以下で解説いたします。
ジョブスクリプトの作成
以下の例は96プロセス(4ノード使用、ノード当たり24プロセス)で実行する場合のジョブスクリプト例です。
ファイル名に特に指定はありませんが、本項ではflash.shとしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash #PBS -q OCTOPUS # 利用するキューを指定 #PBS -l elapstim_req=1:00:00,stacksz_prc=8388608 # 利用制限 #PBS -T openmpi # Open MPI 実行時に必須 #PBS -b 4 # 利用するノード数を指定 BASE=/octfs/apl/HPC-X/hpcx-v2.2.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64 source ${BASE}/hpcx-init.sh hpcx_load export LD_LIBRARY_PATH=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HDF5/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/PnetCDF/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/octfs/work/(ご自身のグループ名)/(ご自身の利用者番号)/HYPRE/lib:$LD_LIBRARY_PATH cd $PBS_O_WORKDIR mpirun ${NQSII_MPIOPTS} -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH} -np 96 ./flash4 |
実行方法
作成したジョブスクリプトを投入します。
% qsub flash.sh
実行が成功すると、結果ファイルに計算結果が出力されます。