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