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