​ジョブ管理ソフト UGE の利用方法

3. ​qsub -bindingオプションの使用方法 (v8.5以前)

ジョブスケジューラを使用してジョブを投入すると、空いている任意のCPUコアでプロセスが実行されます。並列計算の実行時などは、同一CPU内コアを使用させるとパフォーマンスの向上が期待出来る場合がありますが、必ずしもそのような配置でジョブが実行されるとは限りません。そこでbindingオプションを使用すると、指定したポリシーに基づき、適切なCPUコアへプロセスを配置してジョブを実行することが可能になります。

CPU構成の確認

bindingオプションのご利用には、ご利用の計算機がどのようなCPU構成か把握しておくことが重要となります。その確認には以下のコマンドを実行します。14個の物理コアを搭載するCPUをサーバー1台あたり合計2個搭載する計算ノード(node01、node02)の実行例です。

$ qstat -F m_topology,m_topology_inuse,m_socket,m_core,m_thread
all.q@node02                   BIP   0/0/28         0.00     lx-amd64
        hl:m_topology=SCCCCCCCCCCCCCCSCCCCCCCCCCCCCC
        hl:m_topology_inuse=SCCCCCCCCCCCCCCSCCCCCCCCCCCCCC
        hl:m_socket=2
        hl:m_core=28
        hl:m_thread=28
---------------------------------------------------------------------------------
all.q@node01                   BIP   0/8/28         0.00     lx-amd64
        hl:m_topology=SCCCCCCCCCCCCCCSCCCCCCCCCCCCCC
        hl:m_topology_inuse=SccccccccCCCCCCSCCCCCCCCCCCCCC
        hl:m_socket=2
        hl:m_core=28
        hl:m_thread=28

[出力項目]
m_topology : Sは1つのソケット(CPU)、Cは1つのコアを表わしています。
m_topology_inuse : S, C はm_topologyと同義ですが、小文字のcは使用中のコアを表します。
m_socket : マシンの総ソケット数。
m_core : マシンの総コア数。
m_thread : マシンの総スレッド数。

上記node01のm_topologyの出力を見てみると、S(CPU)が2個、Cが28個表示されていることがわかります。また、m_topology_inuseでは1番目のCPUの最初から8コア分が使用中であることが示されています。

CPUコアの指定方法
指定方法には以下の3つがあり、書式は以下のとおりです。

1, 連続したコアを確保

linear:<amount>
<amount>数の連続したコアを確保します。

(例)
linear:8 → 連続した8コアを確保して実行します。

(コア使用例)
m_topology_inuse=SccccccccCCCCCCSCCCCCCCCCCCCCC


2, コアを跨いで確保

striding:<amount>:<n>
(<n> - 1)おきのコアを<amount>分確保します。

(例)
striding:4:3 → 2コアおきの4コアを使用して実行します。

(コア使用例)
m_topology_inuse=ScCCcCCcCCcCCCCSCCCCCCCCCCCCCC


3, コアを明示的に指定して確保

explicit:<socket,core>[:<socket,core>[...]]
socketとcoreの番号を直接指定して実行します。
※socket、core番号のはじまりはどちらも0です。

(例)
explicit:0,0:0,1:1,0:1,1
 → 1番目のCPU(socket0)の0と1、2番目のCPU(socket1)の0と1を使用して実行します。

(コア使用例)
m_topology_inuse=SccCCCCCCCCCCCCSccCCCCCCCCCCCC

ジョブスクリプトの例

#$ -S /bin/sh
#$ -cwd
#$ -V
#$ -q all.q
#$ -binding linear:8

上記の最後の行のように、「#$ -binding」ではじまる行を1行追記します。「linear:8」の箇所は適宜置き換えてください。

 

また、実行プロセス数(並列数など)の指定がある場合には、bindingで指定するコア数と同じ値にする必要があることにご注意ください。

(例1)
#$ -binding linear:8
#$ -pe openmpi 8

(例2)

#$ -binding striding:4:3
#$ -pe openmpi 4

© 2006-2019 HPC Technologies Co., Ltd. All rights reserved.