CX400/270 ハイブリッド並列処理ジョブスクリプト例 (富士通コンパイラ利用時)
CX400/270において,ハイブリッド並列処理のジョブ実行を想定した記述方法を示します.
ジョブスクリプト例1
以下は,8物理ノードを確保し,各物理ノードに1 MPIプロセス,各MPIプロセスのスレッド数を24とする例です. OpenMPや自動並列のスレッド数指定は必要に応じて行ってください.
計算資源
ノード数 (ノードあたりコア数) | 8ノード (24コア) |
経過時間 | 10分 |
並列計算条件
プロセス数 | 8プロセス |
プロセスあたりのスレッド数 | 24スレッド |
このとき,仮想ノード数と仮想ノード当たりのコア数は以下のようになります. 仮想ノード数は-L "vnode=num",仮想ノード当たりのコア数は-L "vnode-core=num"で指定します.
ジョブスクリプトで指定する仮想計算資源
仮想ノード数 | 8ノード (MPIプロセス数と同じ) |
仮想ノード当たりのコア数 | 24コア (MPIプロセスあたりのスレッド数と同じ) |
MPI-OpenMPハイブリッド並列処理ジョブスクリプト例
#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM -L "vnode=8"
#PJM -L "vnode-core=24"
#PJM -L "elapse=10:00"
#PJM -j
#PJM -S
export OMP_NUM_THREADS=24
export PARALLEL=24
mpiexec ./a.out
上記ジョブスクリプトは,以下のように書くこともできます.
#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM --vset "NUM_PROCS=8"
#PJM --vset "NUM_THREADS=24"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_PROCS}, vnode-core=${NUM_THREADS}"
#PJM -x "VNODE_CORES=${NUM_THREADS}"
#PJM -j
#PJM -S
export OMP_NUM_THREADS=${VNODE_CORES}
export PARALLEL=${VNODE_CORES}
mpiexec ./a.out
ジョブスクリプト例2
ノード内におけるMPIプロセス数とスレッド数の最適な割合は利用されるプログラムによって異なります. 以下は,8物理ノードを確保し,各物理ノードに2 MPIプロセス,各MPIプロセスのスレッド数を12とする例です.
計算資源
ノード数 (ノードあたりコア数) | 8ノード (24コア) |
経過時間 | 10分 |
並列計算条件
プロセス数 | 16プロセス |
プロセスあたりのスレッド数 | 12スレッド |
このとき,仮想ノード数と仮想ノード当たりのコア数は以下のようになります. 仮想ノード数は-L "vnode=num",仮想ノード当たりのコア数は-L "vnode-core=num"で指定します.
ジョブスクリプトで指定する仮想計算資源
仮想ノード数 | 16ノード (MPIプロセス数と同じ) |
仮想ノード当たりのコア数 | 12コア (MPIプロセスあたりのスレッド数と同じ) |
MPI-OpenMPハイブリッド並列処理ジョブスクリプト例
#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM -L "vnode=16"
#PJM -L "vnode-core=12"
#PJM -L "elapse=10:00"
#PJM -j
#PJM -S
export OMP_NUM_THREADS=12
export PARALLEL=12
mpiexec ./a.out
上記ジョブスクリプトは,以下のように書くこともできます.
#!/bin/sh
#PJM -L "rscgrp=cx2-small"
#PJM --vset "NUM_PROCS=16"
#PJM --vset "NUM_THREADS=12"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_PROCS}, vnode-core=${NUM_THREADS}"
#PJM -x "VNODE_CORES=${NUM_THREADS}"
#PJM -j
#PJM -S
export OMP_NUM_THREADS=${VNODE_CORES}
export PARALLEL=${VNODE_CORES}
mpiexec ./a.out