OCTOPUSでは、GNUコンパイラを使用する際に、OpenMPIライブラリが利用可能です。
MPIとは、分散メモリ並列処理におけるメッセージパッシング(複数のプロセス間でデータをやり取りするために用いるメッセージ通信操作)の標準規格のことです。事前に環境変数の設定を変更する必要がありますのでご注意ください。
コンパイル コマンド
事前に環境変数を設定してください。
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
コンパイルコマンドは下記の通りです。
C言語 | C++言語 | Fortran言語 |
---|---|---|
mpicc | mpic++ | mpif90 |
実行スクリプト
OpenMPIを実行する際のコマンドは下記の通りです。
mpirun ${NQSII_MPIOPTS} -np (総並列数) 実行ファイル名
OpenMPI(GNUコンパイラ)でのスクリプト例は下記の通りです。
32ノード並列実行、1ノードにつき24並列実行(計768並列実行)、経過時間 10時間でOpenMPIのバッチリクエストを実行するスクリプトになります。6行目は、「コンパイラの選択方法」で解説している環境変数の設定になります。
1 2 3 4 5 6 7 8 9 10 |
#!/bin/sh #PBS -q OCTOPUS #PBS -l elapstim_req=10:00:00,cpunum_job=24,stacksz_prc=8388608 #PBS -T openmpi #PBS -b 32 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 cd $PBS_O_WORKDIR mpirun ${NQSII_MPIOPTS} -np 768 ./a.out |
マルチノード実行時の注意点
ジョブスクリプトで「setenv (オプション名)」などでオプションや環境変数を指定した場合、マスターノードにのみ設定され、スレーブノードには設定されません。全ノードに設定を反映させたい場合は「#PBS -v (オプション名)」と指定してください。(上述のOpenMPIの環境変数設定はマスターノードのみの設定で問題ありません)
詳細は下記に記載しております。
ジョブスクリプトの書き方 環境変数の指定