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