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

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

  • スレッド並列処理に必要な環境を設定するためのコマンドなどが必要となります.

計算資源

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

並列計算条件

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

使用するスレッド数を仮想ノードあたりのコア数として指定し,必要な資源の確保を行います. 仮想ノード数は-L "vnode=num",仮想ノード当たりのコア数は-L "vnode-core=num"で指定します.

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

仮想ノード数 1
仮想ノードあたりのコア数 28 (スレッド数と同じ)

ジョブスクリプト例1

OpenMPによるジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx-small"
#PJM -L "vnode=1"
#PJM -L "vnode-core=28"
#PJM -L "elapse=10:00"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64

export OMP_NUM_THREADS=28
export THREAD_STACK_SIZE=8192
	
./a.out

自動並列によるジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx-small"
#PJM -L "vnode=1"
#PJM -L "vnode-core=28"
#PJM -L "elapse=10:00"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64

export PARALLEL=28
export THREAD_STACK_SIZE=8192

./a.out

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

OpenMPと自動並列の併用によるジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx-small"
#PJM -L "vnode=1"
#PJM -L "vnode-core=28"
#PJM -L "elapse=10:00"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64

export OMP_NUM_THREADS=28
export PARALLEL=28
export THREAD_STACK_SIZE=8192
	
./a.out

ジョブスクリプト例2

上記ジョブスクリプトでは,スレッド数の記述が2箇所に必要です. 以下のように書くことで,スレッド数の記述を1箇所にすることも可能です.

OpenMPによるジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx-small"
#PJM --vset "NUM_NODES=1"
#PJM --vset "NUM_THREADS=28"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_NODES}, vnode-core=${NUM_THREADS}"
#PJM -x "VNODE_CORES=${NUM_THREADS}"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64

export OMP_NUM_THREADS=${VNODE_CORES}
export THREAD_STACK_SIZE=8192
	
./a.out

自動並列によるジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx-small"
#PJM --vset "NUM_NODES=1"
#PJM --vset "NUM_THREADS=28"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_NODES}, vnode-core=${NUM_THREADS}"
#PJM -x "VNODE_CORES=${NUM_THREADS}"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64

export PARALLEL=${VNODE_CORES}
export THREAD_STACK_SIZE=8192
	
./a.out

OpenMPと自動並列の併用によるジョブスクリプト例

#!/bin/sh
#PJM -L "rscgrp=cx-small"
#PJM --vset "NUM_NODES=1"
#PJM --vset "NUM_THREADS=28"
#PJM -L "elapse=10:00"
#PJM -L "vnode=${NUM_NODES}, vnode-core=${NUM_THREADS}"
#PJM -x "VNODE_CORES=${NUM_THREADS}"
#PJM -j
#PJM -S

source /center/local/apl/cx/intel/composerxe/bin/compilervars.sh intel64

export OMP_NUM_THREADS=${VNODE_CORES}
export PARALLEL=${VNODE_CORES}
export THREAD_STACK_SIZE=8192
	
./a.out