CX400/270 フラットMPI並列処理ジョブスクリプト例 (Intelコンパイラ利用時)

CX400/270において,MPI並列処理のジョブ実行を想定した記述方法を示します. 富士通コンパイラ利用時と大きく異なる点がありますので,以下を留意してください.

  • 各物理ノードへのプロセス配置はIntel MPIで制御します.必要なプロセス数を確保できるように仮想ノード数と仮想ノード当たりのコア数を指定してください.
  • 仮想ノード配置ポリシーをAbsolutely UNPACKとしてください.
  • Intel MPI並列処理に必要な環境を設定するためのコマンドが必要となります.

以下は,8物理ノードを確保し,各物理ノードに24プロセスずつ,合計192プロセス起動させる例です.Flat MPIやPure MPIと呼ばれる並列処理方法です.

計算資源

ノード数 (ノードあたりコア数) 8ノード (24コア)
経過時間 10分

並列計算条件

プロセス数 192プロセス
プロセスあたりのスレッド数 1スレッド

このとき,仮想ノード数は以下のようになります.

ジョブスクリプトで指定する仮想計算資源

仮想ノード数 8 (物理ノード数と同じ)
仮想ノードあたりのコア数 24 (ノードあたりの物理コア数と同じ)
仮想ノードポリシー abs-unpack

フラットMPI並列処理ジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM -L "vnode=8"
#PJM -L "vnode-core=24"
#PJM --mpi "rank-map-bynode"
#PJM -P "vn-policy=abs-unpack"
#PJM -L "elapse=10:00"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64
source /center/local/apl/cx/intel/impi/4.1.1.036/bin64/mpivars.sh

export I_MPI_HYDRA_BOOTSTRAP=rsh
export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh
export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF}

mpiexec.hydra -n 192 ./a.out

上記ジョブスクリプトは,以下のように書くこともできます.

#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM --vset "NUM_NODES=8"
#PJM --vset "NUM_MPI_PER_NODE=24"
#PJM --mpi "rank-map-bynode"
#PJM -P "vn-policy=abs-unpack"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_NODES}, vnode-core=${NUM_MPI_PER_NODE}"
#PJM -x "VNODE_CORES=${NUM_MPI_PER_NODE}"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64
source /center/local/apl/cx/intel/impi/4.1.1.036/bin64/mpivars.sh

PROCS=`expr ${PJM_VNODES} \* ${VNODE_CORES}`
export I_MPI_HYDRA_BOOTSTRAP=rsh
export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh
export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF}

mpiexec.hydra -n $PROCS ./a.out