CX400/270 ハイブリッド並列処理ジョブスクリプト例 (Intelコンパイラ利用時)
(2015-05-26更新)
CX400/270において,ハイブリッド並列処理のジョブ実行を想定した記述方法を示します. 富士通コンパイラ利用時と大きく異なる点がありますので,以下を留意してください.
- 各物理ノードへのプロセス配置はIntel MPIで制御します.必要なプロセス数を確保できるように仮想ノード数と仮想ノード当たりのコア数を指定してください.
- 仮想ノード配置ポリシーをAbsolutely UNPACKとしてください.
- スレッド並列処理に必要な環境を設定するためのコマンドが必要となります.
- Intel MPI並列処理に必要な環境を設定するためのコマンドが必要となります.
ジョブスクリプト例1
以下は,8物理ノードを確保し,各物理ノードに1 MPIプロセス,各MPIプロセスのスレッド数を24とする例です.OpenMPや自動並列のスレッド数指定は必要に応じて行ってください.
計算資源
ノード数 (ノードあたりコア数) | 8ノード (24コア) |
経過時間 | 10分 |
並列計算条件
プロセス数 | 8プロセス |
プロセスあたりのスレッド数 | 24スレッド |
このとき,仮想ノード数は以下のようになります.
ジョブスクリプトで指定する仮想計算資源
仮想ノード数 | 8 (物理ノード数と同じ) |
仮想ノードあたりのコア数 | 24 (ノードあたりの物理コア数と同じ) |
仮想ノードポリシー | abs-unpack |
MPI-OpenMPハイブリッド並列処理ジョブスクリプト例
#!/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
PROCS=${PJM_VNODES}
THREADS=24
export I_MPI_PIN_DOMAIN=omp
export I_MPI_HYDRA_BOOTSTRAP=rsh
export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh
export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF}
export OMP_NUM_THREADS=$THREADS
export PARALLEL=$THREADS
mpiexec.hydra -n $PROCS ./a.out
上記ジョブスクリプトは,以下のように書くこともできます.
#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM --vset "NUM_NODES=8"
#PJM --vset "NUM_CORES=24"
#PJM --vset "NUM_THREADS=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_CORES}"
#PJM -x "VNODE_CORES=${NUM_CORES}, THREADS=${NUM_THREADS}"
#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_PIN_DOMAIN=omp
export I_MPI_HYDRA_BOOTSTRAP=rsh
export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh
export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF}
MPI_PERHOST=`expr ${VNODE_CORES} / ${THREADS}`
PROCS=`expr ${PJM_VNODES} \* ${MPI_PERHOST}`
export OMP_NUM_THREADS=${THREADS}
export PARALLEL=${THREADS}
mpiexec.hydra -n $PROCS ./a.out
ジョブスクリプト例2
以下は,8物理ノードを確保し,各物理ノードに2 MPIプロセス,各MPIプロセスのスレッド数を12とする例です.OpenMPや自動並列のスレッド数指定は必要に応じて行ってください.
計算資源
ノード数 (ノードあたりコア数) | 8ノード (24コア) |
経過時間 | 10分 |
並列計算条件
プロセス数 | 16プロセス |
プロセスあたりのスレッド数 | 12スレッド |
このとき,仮想ノード数は以下のようになります.
ジョブスクリプトで指定する仮想計算資源
仮想ノード数 | 8 (物理ノード数と同じ) |
仮想ノードあたりのコア数 | 24 (ノードあたりの物理コア数と同じ) |
仮想ノードポリシー | abs-unpack |
MPI-OpenMPハイブリッド並列処理ジョブスクリプト例
#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM --vset "NUM_NODES=8"
#PJM --vset "NUM_CORES=24"
#PJM --vset "NUM_THREADS=12"
#PJM --mpi "rank-map-bynode"
#PJM -P "vn-policy=abs-unpack"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_NODES}, vnode-core=${NUM_CORES}"
#PJM -x "VNODE_CORES=${NUM_CORES}, THREADS=${NUM_THREADS}"
#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_PIN_DOMAIN=omp
export I_MPI_HYDRA_BOOTSTRAP=rsh
export I_MPI_HYDRA_BOOTSTRAP_EXEC=/bin/pjrsh
export I_MPI_HYDRA_HOST_FILE=${PJM_O_NODEINF}
MPI_PERHOST=`expr ${VNODE_CORES} / ${THREADS}`
PROCS=`expr ${PJM_VNODES} \* ${MPI_PERHOST}`
export OMP_NUM_THREADS=${THREADS}
export PARALLEL=${THREADS}
mpiexec.hydra -n $PROCS ./a.out