JP2016004310A - 並列計算機システム、制御方法およびジョブ管理プログラム - Google Patents

並列計算機システム、制御方法およびジョブ管理プログラム Download PDF

Info

Publication number
JP2016004310A
JP2016004310A JP2014122621A JP2014122621A JP2016004310A JP 2016004310 A JP2016004310 A JP 2016004310A JP 2014122621 A JP2014122621 A JP 2014122621A JP 2014122621 A JP2014122621 A JP 2014122621A JP 2016004310 A JP2016004310 A JP 2016004310A
Authority
JP
Japan
Prior art keywords
nodes
job
node
node group
coordinate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2014122621A
Other languages
English (en)
Inventor
広明 今出
Hiroaki Imade
広明 今出
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014122621A priority Critical patent/JP2016004310A/ja
Priority to US14/729,085 priority patent/US20150365343A1/en
Priority to EP15170551.4A priority patent/EP2960788A3/en
Publication of JP2016004310A publication Critical patent/JP2016004310A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Multi Processors (AREA)

Abstract

【課題】並列計算機システムのノードの稼働率を向上させる。
【解決手段】ノード1a〜1xは、N個の座標軸によって特定されるN次元の座標が付与されており、N次元の座標を用いて接続関係が管理される。管理装置2は、処理に用いるノード群について座標軸毎のノード数を指定した処理要求3を取得すると、ノード1a〜1xの中から使用可能な空きノード群を検出し、空きノード群の各座標軸方向に並ぶノードの数に応じて、処理要求3で指定されたN個の座標軸のノード数のうち2以上の座標軸のノード数を変換する。管理装置2は、変換後の座標軸毎のノード数に応じて、空きノード群に含まれるノードを処理要求3に対して割当てる。
【選択図】図1

Description

本発明は並列計算機システム、制御方法およびジョブ管理プログラムに関する。
科学技術計算などの大規模な計算を行う場合、プロセッサやメモリなどの計算リソースを備えるノードを複数備え、それら複数のノードがネットワークで接続された並列計算機システムを用いることがある。並列計算機システムでは、各ノードは他のノードとは並列に処理を実行することができ、他のノードとデータの受け渡しを行うこともできる。
複数のノードを接続する相互接続網の形態(ネットワークトポロジ)の1つとして、メッシュやトーラスなどの直接網が挙げられる。直接網では、ノード同士が独立のスイッチを経由せずに直接接続されており、各ノードは、宛先ノードに応じてデータを転送するルーティング機能を備える。メッシュ型やトーラス型の並列計算機システムの場合、論理的には複数のノードが格子状に配置されていると見ることができ、各ノードの位置は直交するN個(Nは2以上の整数)の座標軸によって決まるN次元の座標で特定できる。
並列計算機システムにジョブと呼ばれる一纏まりの処理を実行させる(ジョブを投入する)場合、並列計算機システムが備えるノードの中から、当該ジョブの実行に使用するノードを選択することになる。ノードの割当てに関して、ジョブを管理するHPC(High Performance Computing)サーバが提案されている。このHPCサーバは、3次元トーラスの中から、何れのジョブにも割当てられていないノード群である非割当て部分集合を検出する。HPCサーバは、新たなジョブが投入されると、当該ジョブの実行に適した非割当て部分集合があるか判定し、存在すれば当該ジョブに非割当て部分集合を割当てる。一方、適切な非割当て部分集合がない場合、HPCサーバは、投入されたジョブをジョブキューに格納して他のジョブが終了するのを待つ。
また、処理要素として複数のタスクを含むジョブが投入されたとき、複数のノードにタスクを分散して割り付ける並列処理装置が提案されている。この並列処理装置は、ジョブの実行中に各ノードから性能情報を取得する。並列処理装置は、取得した性能情報に基づいて、タスクの割り付けパターンのうちジョブを高速に実行できるパターンを予測する。並列処理装置は、予測した割り付けパターンによって現在よりもジョブの実行速度を改善できるとき、ジョブを中断してノードへのタスクの割り付けを変更する。
また、メッシュ型の並列計算機システムに対してジョブの実行を指示するスケジューリング装置が提案されている。このスケジューリング装置は、待機中のジョブのうち優先度の高いジョブに対して、メッシュ状のノード集合の一部分である長方形のサブメッシュを予約する。このとき、スケジューリング装置は、ジョブの割当ての有無を示す2次元配列を用いてジョブ間の干渉を検出し、予約するサブメッシュを決定する。
特開2005−310139号公報 特開2010−257056号公報 特開2010−267025号公報
格子状の相互接続網をもつ並列計算機システムでは、ノード間の通信のコストは、送信元ノードと宛先ノードの位置に依存する。よって、複数のノードを使用するジョブの実行効率は、使用するノードの総数だけでなく、各座標軸方向に並ぶノードの数(ノード群の形状)にも依存する。例えば、2次元メッシュまたは2次元トーラスにおいて、4×3個のノードを使用する場合と2×6個のノードを使用する場合とでは、ジョブの実行効率が異なる可能性がある。好ましいノード群の形状は、ジョブによって異なる。そこで、並列計算機システムにジョブを投入するにあたっては、ユーザの端末装置やスケジューリング装置などのジョブ投入元から、ノード群の形状が明示的に指定されることがある。
しかし、並列計算機システムの中に、ジョブが要求するノード総数に相当する空きノード群が存在していても、その空きノード群の形状が指定された形状と異なると、そのままでは当該ジョブにノードを割当てることができない可能性がある。例えば、並列計算機システムの中に2×6個の空きノード群が存在していても、4×3個の形状が指定されたジョブにノードを割当てられない可能性がある。そのとき、ノードの割当てが不可であると判断してジョブを待機させてしまうと、ノードの稼働率が低下し、並列計算機システムのスループットが低下するおそれがあるという問題がある。
1つの側面では、本発明は、ノードの稼働率を向上させることができる並列計算機システム、制御方法およびジョブ管理プログラムを提供することを目的とする。
1つの態様では、複数のノードと管理装置とを有する並列計算機システムが提供される。複数のノードは、N個(Nは2以上の整数)の座標軸によって特定されるN次元の座標が付与されており、N次元の座標を用いて接続関係が管理される。管理装置は、処理に用いるノード群について座標軸毎のノード数を指定した処理要求を取得する。管理装置は、複数のノードの中から使用可能な空きノード群を検出する。管理装置は、空きノード群の各座標軸方向に並ぶノードの数に応じて、処理要求で指定されたN個の座標軸のノード数のうち2以上の座標軸のノード数を変換する。管理装置は、変換後の座標軸毎のノード数に応じて、空きノード群に含まれるノードを処理要求に対して割当てる。
また、1つの態様では、N個(Nは2以上の整数)の座標軸によって特定されるN次元の座標が付与されており、N次元の座標を用いて接続関係が管理される複数のノードを含む並列計算機システムが実行する制御方法が提供される。
また、1つの態様では、N個(Nは2以上の整数)の座標軸によって特定されるN次元の座標が付与されており、N次元の座標を用いて接続関係が管理される複数のノードを含む並列計算機システムを制御するジョブ管理プログラムが提供される。
1つの側面では、並列計算機システムのノードの稼働率が向上する。
第1の実施の形態の並列計算機システムを示す図である。 第2の実施の形態の並列計算機システムを示す図である。 管理装置のハードウェア例を示す図である。 ノードのハードウェア例を示す図である。 ノード割当ての問題点を示す図である。 並列計算機システムの機能例を示す図である。 要求テーブルの例を示す図である。 通信テーブルの例を示す図である。 ジョブに2次元のノードを割当てる処理の例を示すフローチャートである。 ジョブに2次元のノードを割当てる処理の具体例を示す図である。 ジョブに2次元のノードを割当てる処理の具体例(続き)を示す図である。 ジョブに3次元以上のノードを割当てる処理の例を示すフローチャートである。 ジョブ形状の変形パターンを特定する処理の例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の並列計算機システムを示す図である。
第1の実施の形態の並列計算機システムは、ノード1a〜1xを含む複数のノードと管理装置2とを有する。ノード1a〜1xは、並列にプロセスを実行することができる処理主体である。ノード1a〜1xはそれぞれ、CPU(Central Processing Unit)などのプロセッサとRAM(Random Access Memory)などのメモリとを有していてもよい。その場合、プロセッサは、メモリに記憶されたプログラムを実行する。管理装置2は、一纏まりの処理であるジョブの投入を管理する。管理装置2は、プロセッサとメモリとを有するコンピュータであってもよい。その場合、以下に説明する管理装置2の処理が、プログラムとして実装されてもよい。また、管理装置2は、ユーザが操作するクライアント装置でもよいし、クライアント装置からアクセスされるサーバ装置でもよい。
ノード1a〜1xを含む複数のノードは、互いに通信できるように、N次元(Nは2以上の整数)の格子状の相互接続網によって接続されている。この相互接続網の例として、N次元メッシュやN次元トーラスなどが挙げられる。各ノードには、N個の座標軸(例えば、互いに直交するN個の座標軸)によって特定される、他のノードとは異なるN次元の座標が付与されている。このN次元の座標を用いて、ノード間の接続関係が管理される。例えば、各ノードは、何れか1つの座標軸の値が1つだけ異なる他のノードと直接接続される。ルーティング時のデータの転送先は、N次元の座標を用いて判定できる。
一例として図1には、座標軸X,Yによって特定される2次元の相互接続網の例が記載されている。ノード1a〜1fには、座標(0,0),(0,1),(0,2),(0,3),(0,4),(0,5)が付与される。ノード1g〜1lには、座標(1,0),(1,1),(1,2),(1,3),(1,4),(1,5)が付与される。ノード1m〜1rには、座標(2,0),(2,1),(2,2),(2,3),(2,4),(2,5)が付与される。ノード1s〜1xには、座標(3,0),(3,1),(3,2),(3,3),(3,4),(3,5)が付与される。
ここでは、ノード1a〜1lは既存のジョブに割当て済の使用中ノードであり、そのジョブが終了するまで新たなジョブに割当てられないものとする。一方、ノード1m〜1xは空きノードであり、新たなジョブに割当て可能であるものとする。説明を簡単にするため、1つのノードは1つのジョブに割当てられるものとする。また、1つのジョブは、連続した(分断されていない)2以上のノードを含むノード群を使用するものとする。使用する各ノードには、ジョブによって指定されたプロセスが配置される。これにより、1つのジョブに属する2以上のプロセスが並列に実行される。
管理装置2は、新たなジョブの投入の要求を示す処理要求3を取得する。処理要求3は、ユーザの操作によって管理装置2に対して入力されてもよいし、ネットワークを介して他の装置から受信されてもよい。処理要求3は、処理に用いるノード群の形状を示す形状情報3aを含む。形状情報3aは、N個の座標軸それぞれの方向に並ぶノードの数を指定している。例えば、「4×3」は、座標軸X方向に4個のノードが並び、座標軸Y方向に3個のノードが並ぶような長方形のノード群を示している。この場合、処理要求3によって要求されたノードの総数は4×3=12個になる。
処理要求3を取得すると、管理装置2は、ノード1a〜1xを含む複数のノードの中から使用可能な空きノード群を検出する。図1の例の場合、管理装置2は、ノード1m〜1xの集合である2×6の空きノード群を検出する。管理装置2は、検出した空きノード群の形状が処理要求3の要求するノード群の形状を包含しているか、すなわち、各座標軸について空きノード群のノード数が形状情報3aの指定するノード数以上であるか判定する。上記の条件を満たす場合、管理装置2は、空きノード群の中から形状情報3aの指定する形状のノード群を選択してジョブに対して割当ててよい。
一方、上記の条件を満たさない場合、管理装置2は、空きノード群の各座標軸方向に並ぶノードの数に応じて、形状情報3aを形状情報3bに変換する。形状情報3bは、N個の座標軸のうち2以上の座標軸について、形状情報3aで指定されたノード数を変換したものである。このノード数の変換は、上記の条件が満たされるように、すなわち、各座標軸について形状情報3bの指定するノード数が空きノード群のノード数以下になるように行われる。好ましくは、管理装置2は、処理要求3が要求するノードの総数が変わらないように、ある座標軸のノード数を減らして他の座標軸のノードを増やす。
このとき、管理装置2は、ある座標軸のノード数を因数分解し、因数分解によって得られた一の因数を他の座標軸に移すようにしてもよい。図1の例では、「4×3」が「2×6」に変換されている。これは、ノードの総数(12個)を変えず、形状情報3aが指定する座標軸Xのノード数を減らして、形状情報3aが指定する座標軸Yのノード数を増やしたものである。また、これは、座標軸Xのノード数「4」の因数の1つである「2」を、座標軸Xから座標軸Yに移動したものと言うこともできる。
そして、管理装置2は、形状情報3bが指定する変換後の座標軸毎のノード数に応じて、空きノード群に含まれるノードをジョブに対して割当てる。図1の例では、ノード1m〜1xの集合である空きノード群の形状が2×6であり、また、形状情報3bが指定するノード群の形状は2×6である。よって、管理装置2は、処理要求3が要求するジョブに対して、ノード1m〜1xを割当てることができる。
並列計算機システムの中に処理要求3が要求するノード総数に相当する空きノード群が存在していても、その空きノード群の形状が指定された形状と異なると、そのままではジョブの実行を開始できない可能性がある。図1の例では、並列計算機システムの中に12個の空きノードが存在するものの、「4×3」を包含する空きノード群は存在しない。よって、処理要求3が示すジョブは開始されず待機状態になる可能性がある。
これに対し、第1の実施の形態の並列計算機システムによれば、検出した空きノード群の形状に応じて、処理要求3が指定したノード群の形状を変換してジョブを実行可能にする。これにより、並列計算機システムのノードの稼働率が向上し、スループットが向上する。また、ジョブの待機時間を減らして、レスポンス時間を短縮することができる。
[第2の実施の形態]
図2は、第2の実施の形態の並列計算機システムを示す図である。第2の実施の形態の並列計算機システムは、管理装置100と並列計算機200とクライアント300とを有する。並列計算機200は、ノード200a〜200iを含む複数のノードを有する。管理装置100とクライアント300は、ユーザアクセス用のネットワークを介して接続されている。ユーザアクセス用のネットワークは、インターネットなどの広域ネットワークを含んでもよい。管理装置100とノード200a〜200iは、管理用のネットワークを介して接続されている。管理用のネットワークは、例えば、ノード200a〜200iが設置されたデータセンタ内のローカルネットワークである。ただし、ユーザアクセス用のネットワークと管理用のネットワークとが分離されていなくてもよい。
管理装置100は、並列計算機200へのジョブの投入を制御する。例えば、管理装置100は、サーバコンピュータである。管理装置100は、クライアント300からジョブ情報を受信する。ジョブ情報は、並列に実行されるべき複数のプロセスを含むジョブを実行するよう要求するものであり、ジョブが使用するノードの数に関する情報を含む。管理装置100は、受信したジョブ情報に基づいて並列計算機200の中から複数のノードを選択して当該ジョブに割当て、ジョブの実行を開始させる。
ノード200a〜200iを含む複数のノードは、互いに通信できるように、管理用のネットワークとは異なる格子状の相互接続網によって接続されている。この相互接続網の例として、メッシュやトーラスなどが挙げられる。並列計算機200のノード間の接続関係は、N次元(Nは2以上の整数)の座標によって管理される。各ノードには、他のノードとは異なるN次元の座標が付与される。各ノードは、何れか1つの座標軸の値が1つだけ異なる他のノード(最大で2N個のノード)と直接接続されている。一のノード(送信元ノード)から他の一のノード(宛先ノード)にデータを送信するにあたり、送信元ノードと宛先ノードとが直接接続されていない場合、その間に位置するノードが宛先ノードの座標に応じてデータを中継する。
図2には、ノード200a〜200iが、X軸・Y軸の2つの座標軸によって定義される2次元メッシュを用いて相互接続されている例が示されている。例えば、ノード200eは、X軸の負の方向にノード200bと直接接続され、X軸の正の方向にノード200hと直接接続されている。また、ノード200eは、Y軸の負の方向にノード200fと直接接続され、Y軸の正の方向にノード200dと直接接続されている。
同様に、ノード200aはノード200b,200dと直接接続され、ノード200bはノード200a,200c,200eと直接接続され、ノード200cはノード200b,200fと直接接続されている。ノード200dはノード200a,200e,200gと直接接続され、ノード200fはノード200c,200e,200iと直接接続されている。ノード200gはノード200d,200hと直接接続され、ノード200hはノード200e,200g,200iと直接接続され、ノード200iはノード200f,200hと直接接続されている。
なお、ノード200a〜200iを2次元トーラスで相互接続した場合、ノード200a,200c,200g,200iは、各座標軸について更に他の1つのノードと直接接続される。例えば、ノード200aは、更にノード200c,200gと接続されてもよい。また、複数のノードを3次元メッシュまたは3次元トーラスを用いて相互接続した場合、各ノードは最大で6個の他のノードと直接接続される。
クライアント300は、ユーザによって利用される端末装置である。例えば、クライアント300は、クライアントコンピュータである。クライアント300は、ジョブの実行のために並列計算機200を利用するとき、管理装置100にジョブ情報を送信する。ジョブ情報には、使用するノードの数に関する情報、複数のノードへのプロセスの配置を示す情報、プロセスの起動に用いるプログラムのファイルの指定(例えば、ファイルのパス)などを含む。
図3は、管理装置のハードウェア例を示す図である。管理装置100は、プロセッサ101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107,107aを有する。各ユニットが管理装置100のバスに接続されている。
プロセッサ101は、管理装置100の全体を制御する。プロセッサ101は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはFPGA(Field Programmable Gate Array)などである。また、プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、管理装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、管理装置100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。管理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、管理装置100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。
入力信号処理部105は、管理装置100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。管理装置100には、複数の種類の入力デバイスが接続されてもよい。
読み取り装置106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、管理用のネットワークを介してノード200a〜200iに接続され、データの送受信を行う。通信インタフェース107aは、クライアント300に接続され、データの送受信を行う。ただし、通信インタフェース107と通信インタフェース107aとが同一であってもよい。
なお、クライアント300も管理装置100と同様のハードウェアにより実現できる。
図4は、ノードのハードウェア例を示す図である。ノード200a〜200iは、同様のハードウェアで実現できる。そのため、ここではノード200aのハードウェアについて説明する。
ノード200aは、プロセッサ201、RAM202、HDD203、管理ポート204および通信ポート205,205a,205b,205cを有する。各ユニットがノード200aのバスに接続されている。
プロセッサ201は、ノード200aの全体を制御する。プロセッサ201は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ201は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ201は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM202は、ノード200aの主記憶装置である。RAM202は、プロセッサ201に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM202は、プロセッサ201による処理に用いる各種データを記憶する。
HDD203は、ノード200aの補助記憶装置である。HDD203は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD203には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。ノード200aは、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
管理ポート204は、管理用のネットワークを介して管理装置100とデータの送受信を行うためのインタフェースである。
通信ポート205,205a,205b,205cは、ノード200aと直接接続する他のノードとの間でデータの送受信を行うためのインタフェースである。通信ポート205はノード200bと直接接続され、通信ポート205aはノード200cと直接接続され、通信ポート205bはノード200dと直接接続され、通信ポート205cはノード200gと直接接続されている。
ノード200aは、通信ポート205,205a,205b,205cを用いて、他のノードとの間のデータの送信・受信やデータの転送を行うことができる。ノード200aは、データを生成した場合、ノード200aの座標と宛先ノードの座標からデータが宛先ノードに近づく方向を判定し、判定した方向の通信ポートからデータを出力する。
また、ノード200aは、何れかの通信ポートからデータを受信した場合、受信したデータの宛先ノードの座標を確認する。宛先ノードの座標は、データに付加されていてもよい。宛先ノードがノード200aである場合、ノード200aは、受信したデータをノード200aに取り込む。一方、宛先ノードが他のノードである場合、ノード200aは、ノード200aの座標と宛先ノードの座標からデータが宛先ノードに近づく方向を判定し、判定した方向の通信ポートからデータを出力する。
ノード200aから宛先ノードに近づく方向を判定するにあたり、ノード200aは、複数の次元のうち優先的に座標の差を小さくする次元を予め決めておいてもよい。X次元とY次元の両方についてノード200aの座標と宛先ノードの座標とが一致していない場合、ノード200aは、X次元の座標の差を小さくする方向にデータを転送することが考えられる。例えば、ノード200aは、宛先ノードが200eであるデータを生成または受信したとき、X次元の方向に隣接するノード200dにデータを転送する。
なお、通信ポート205,205a,205b,205cを利用したデータの転送制御は、プロセッサ201がソフトウェアを用いて行ってもよいし、プロセッサ201と異なるハードウェアであるスイッチング回路が行ってもよい。
次に、ジョブ情報に応じてジョブにノードを割当てるときの問題点を説明する。
図5は、ノード割当ての問題点を示す図である。図5の上部は、並列計算機200に含まれるノード群を示している。1つのブロックは、1つのノードを表している。ここで、図5の左上の頂点を原点Oとする。また、原点Oに対して右方向の座標軸をX軸(X次元ともいう)とする。原点Oに対して下方向の座標軸をY軸(Y次元ともいう)とする。各ノードは、X次元とY次元の2次元の座標によって特定できるものとする。図5では、並列計算機200に12×12個のノードが含まれている。ここで、“12×12”の第1項はX軸方向に12個のノードが連続して並んでいることを表し、第2項はY軸方向に12個のノードが連続して並んでいることを表す。
図5では、(4,0)〜(11,3)の範囲の8×4個のノード群が、ジョブAに使用されている。(0,0)〜(3,7)の範囲の4×8個のノード群が、ジョブBに使用されている。(0,8)〜(3,11)の範囲の4×4個のノード群が、ジョブCに使用されている。以下では、“8×4”や“4×8”など各座標軸方向のノード数の組み合わせを、ジョブの「形状」と言うことがある。一方、(4,4)〜(11,11)の範囲の8×8個のノードは、何れのジョブにも使用されていない空きノード群である。
何れかのジョブに割当てられているノードは、当該ジョブが終了するまで新たなジョブに割当てられないものとする。一方、空きノード群の一部または全部は、即時に新たなジョブに割当て可能である。1つのノードは、同時に複数のジョブに割当てられないものとし、高々1つのジョブに使用されるものとする。また、1つのジョブは、連続した(分断されていない)2以上のノードを含むノード群を使用するものとする。各ノードには、ジョブ情報で指定されたプログラムが送り込まれて(当該ノードにコピーされて)プロセスが配置される。これにより、1つのジョブに属する2以上のプロセスが2以上のノードを用いて並列に実行される。
管理装置100は、クライアント300からジョブ情報を受信する。例えば、管理装置100は、ノード数に関する情報として12×2個の形状を指定したジョブDを示すジョブ情報を受信する。このジョブ情報では、24個のノードそれぞれに配置されるプロセスの番号が指定される。プロセス番号と処理の内容との対応関係は、例えば、ジョブ情報で指定されるプログラムにおいて定義されている。すなわち、プロセス番号によって、12×2個のノードそれぞれに実行させたい処理の内容が特定されることになる。
ここで、管理装置100は、クライアント300から受信したジョブ情報に基づいて、ジョブDを並列計算機200に実行させようとする。このとき、管理装置100は、ジョブDのジョブ情報によって指定された12×2個という形状に合致する空きノード群を、並列計算機200の中から探す。しかし、1つのノードは同時に複数のジョブに割当てられないため、管理装置100は、12×2個の空きノード群を見つけることができない。その場合、例えば、管理装置100は、ジョブDへのノードの割当てができないと判断し、ジョブBまたはジョブCの実行が終了するまでジョブDを待機させておく可能性がある。このように、並列計算機200には64個の空きノードが存在するにもかかわらず、ジョブ形状が合致しないために、24個のノードを要求するジョブDの実行を開始できない可能性がある。ジョブDが待ち状態になると、並列計算機200におけるノードの稼働率が低下し、並列計算機システムのスループットが低下するおそれがあるという問題がある。そこで、管理装置100は、クライアント300から指定されたジョブ形状を変形することを検討する。
図6は、並列計算機システムの機能例を示す図である。管理装置100は、記憶部110、ジョブ受付部120、ノード管理部130および割当算出部140を有する。ジョブ受付部120、ノード管理部130および割当算出部140は、互いに通信可能である。記憶部110は、例えば、RAM102またはHDD103に確保した記憶領域として実装される。ジョブ受付部120、ノード管理部130および割当算出部140は、例えば、プロセッサ101が実行するプログラムのモジュールとして実装される。
記憶部110は、ジョブ受付部120、ノード管理部130および割当算出部140の処理に用いられる情報を記憶する。記憶部110に記憶される情報には、要求テーブルおよび通信テーブルが含まれる。要求テーブルおよび通信テーブルは、クライアント300から取得するジョブ情報に含まれている。後述するように、要求テーブルは、ジョブの形状、すなわち、ジョブが使用するノードの総数を各座標軸のノード数の積として表した情報を含む。また、要求テーブルは、プロセス番号とノードとの対応関係、すなわち、ジョブ形状内での各ノードへのプロセスの配置方法を示す情報を含む。通信テーブルは、複数のプロセスの間の通信関係、すなわち、一のプロセスから他の一のプロセスに対してデータを送信することがあるか否かを示す情報を含む。
ジョブ受付部120は、クライアント300から、並列計算機200を利用したジョブの実行を要求するジョブ情報を受付ける。ジョブ情報には、要求テーブルおよび通信テーブルが含まれる。また、ジョブ情報は、プロセスの起動に用いるプログラムの指定を含む。ジョブ受付部120は、ジョブ情報を受付けると、受付けたジョブ情報に含まれる要求テーブルおよび通信テーブルを記憶部110に格納する。また、ジョブ受付部120は、ジョブ情報を受付けたことを示す応答をクライアント300に返す。このとき、ジョブ受付部120は、要求されたジョブの実行が開始されたか(ノードが割当てられたか)、または、要求されたジョブが待機状態になったか(ノードが割当てられなかったか)をクライアント300に通知してもよい。
ノード管理部130は、並列計算機200の状態を監視し、並列計算機200へのジョブの投入を管理する。ノード管理部130は、並列計算機200からノード構成を示す情報を収集する。ノード構成を示す情報は、並列計算機200に何個のノードが含まれており、それらノードがどのように接続されているかを示す。
また、ノード管理部130は、並列計算機200に含まれる各ノードが使用中か否か、すなわち、何れかのジョブに属するプロセスが配置されているか否かを管理する。例えば、ノード管理部130は、各ノードに定期的に問い合わせることで、各ノードが使用中か否かを把握してもよい。また、ノード管理部130は、あるノードでプロセスの実行が終了したときまたはプロセスの配置が解除されたとき、当該ノードから完了通知を受付けることで、当該ノードが使用中から未使用になったことを把握してもよい。ノード管理部130は、割当算出部140から空きノード群の問い合わせを受付けると、連続する未使用のノードの集合である空きノード群を検索し、割当算出部140に回答する。
また、ノード管理部130は、割当算出部140からの指示に応じて、並列計算機200にジョブを開始させる。例えば、ノード管理部130は、割当算出部140から指定されたノードに対して指定されたプログラムを送信し、当該プログラムを起動する起動コマンドを当該ノードに対して送信する。このとき、ノード管理部130は、割当算出部140から指定されたプロセス番号をパラメータとして指定してもよい。これにより、割当算出部140から指定された番号のプロセスが指定されたノードに配置される。
割当算出部140は、ジョブ受付部120が受付けたジョブ情報が示すジョブに対して、並列計算機200の空きノード群を割当てる。まず、割当算出部140は、ノード管理部130に現在の空きノード群を問い合わせる。割当算出部140は、ジョブ情報が要求するノード総数を満たす空きノードが並列計算機200に存在するか、および、ジョブ情報が指定するジョブ形状を収容できる空きノード群が存在するか判定する。全ての座標軸について、ある空きノード群のノード数がジョブ形状のノード数以上である場合、当該空きノード群は指定されたジョブ形状を収容できる。
指定されたジョブ形状を収容できる空きノード群がある場合、割当算出部140は、ジョブ形状に合致する空きノードを選択して当該ジョブに対して割当てる。そして、割当算出部140は、ノードの割当て結果をノード管理部130に通知して、ジョブが開始されるようにする。また、要求されたノード総数を満たす空きノードが並列計算機200に存在しない場合、割当算出部140は、要求されたジョブに関する情報をキューに格納して当該ジョブを待機させ、実行中の他のジョブが終了して空きノードが増えるのを待つ。
これに対し、ノード総数の条件は満たすもののジョブ形状の条件を満たさない空きノード群が存在する場合、割当算出部140は、要求されたノード総数を変更せずに、指定されたジョブ形状を変化させて、既存の空きノード群を使用できるようにする。割当算出部140は、例えば、12×2個の形状を6×4個の形状に変化させることで、ジョブに空きノード群を割当てることができるようにする。
並列計算機200は、管理装置100から要求されたジョブを実行する。並列計算機200の各ノードは、ノード管理部130から指定されたプログラムを用いて、ノード管理部130から指定されたプロセスを実行する。並列計算機200は、ジョブの実行が終了した場合、その旨を管理装置100に通知してもよい。
クライアント300は、ユーザの操作により、ジョブ情報を作成し、当該ジョブ情報を管理装置100に送信する。
図7は、要求テーブルの例を示す図である。要求テーブル111は、クライアント300が送信するジョブ情報に含まれており、記憶部110に格納される。要求テーブル111は、要求ノード数、プロセスおよび座標の項目を含む。要求ノード数の項目には、割当てを要求するノード数が登録される。要求ノード数は、座標軸毎のノード数の積として表されており、ジョブ形状を表していると言うことができる。プロセスの項目には、プロセス番号が登録される。例えば、プロセス数をnとすると、プロセス番号は0からn−1までの連番として表現できる。1つのノードには1つのプロセスが配置されるため、プロセス数nは、ジョブが要求するノード総数と一致する。座標の項目には、プロセスが配置されるノードの座標が登録される。この座標は、クライアント300から指定されたジョブ形状の中での相対的な位置関係を示すものである。通常、ジョブ形状の中の1つのノードに原点が付与され、そのノードを基点にして他のノードにN次元の座標が付与される。
例えば、要求テーブル111には、図5の下部に示したジョブDに関する情報が登録される。その場合、要求テーブル111には、要求ノード数として“12×2”が登録される。また、要求テーブル111には、プロセス0に対して座標(0,0)、プロセス1に対して座標(1,0)、プロセス23に対して座標(11,1)などの対応関係が登録される。
図8は、通信テーブルの例を示す図である。通信テーブル112は、クライアント300が送信するジョブ情報に含まれており、記憶部110に格納される。列L1は、送信元プロセスのプロセス番号を示している。列L2は、宛先プロセスのプロセス番号を示している。通信テーブル112を参照することで、ある2つのプロセス間で通信を行うことになっているか否かの情報を取得することができる。ある2つのプロセス間で通信が行われるか否かは、それらプロセスを生成するプログラムによって定義されているため、クライアント300のユーザが予め知っている。
例えば、図8の例では、プロセス0は、プロセス0,2にデータを送信することがなく、プロセス1にデータを送信することがある。プロセス1は、プロセス0,1にデータを送信することがなく、プロセス2にデータを送信することがある。プロセス2は、プロセス0,2にデータを送信することがなく、プロセス1にデータを送信することがある。
なお、図8の例では、2つのプロセスの間のデータ送信の有無は非対称である。例えば、プロセス0はプロセス1にデータを送信することがある一方、プロセス1はプロセス0にデータを送信することがない。ただし、2つのプロセスの間のデータ送信の有無が対称である場合も考えられる。その場合、通信テーブル112の記載を簡略化してもよい。
次に、並列計算機200のトポロジが2次元メッシュまたは2次元トーラスである場合を主に想定して、ノードの割当て処理について説明する。
図9は、ジョブに2次元のノードを割当てる処理の例を示すフローチャートである。図9の処理は、ジョブ受付部120がクライアント300からジョブ情報を受付けることにより処理が始まる。以下、図9に示す処理をステップ番号に沿って説明する。
(S11)割当算出部140は、現在存在する空きノード群をノード管理部130に問い合わせる。ノード管理部130は、並列計算機200に存在する空きノード群を検索し、1または2以上の空きノード群それぞれの形状および座標を回答する。
割当算出部140は、要求テーブル111を参照し、クライアント300から要求されたノード総数分の空きノードが並列計算機200に存在するか判定する。例えば、要求されたノード総数が24個(=12×2)の場合、割当算出部140は、24個以上のノードを含む空きノード群が存在するか判定する。ノード総数分の空きノードが存在する場合は、ステップS12に処理が進み、それ以外の場合は処理が終了する。
処理が終了する場合、ジョブ受付部120は、クライアント300にノードの割当てができない旨の通知を行ってもよい。また、割当算出部140は、ノードを割当てられなかったジョブを示す情報をRAM102上のキューに格納して当該ジョブを待機させてもよい。この場合、例えば、割当算出部140は、他のジョブが終了して空きノードが増えたときに、待機しているジョブにノードを割当て可能か判定する。また、割当算出部140は、指定されたジョブ形状を包含する空きノード群が存在すれば、以降の処理を行わずに、要求されたジョブに空きノードを割当てて並列計算機200に実行させる。
(S12)割当算出部140は、指定されたジョブ形状に含まれるX,Y次元それぞれのノード数の約数を全て算出する。
(S13)割当算出部140は、何れか1つの約数を次元間で移動させて、指定されたジョブ形状を変形したパターンを特定する。ただし、変形後のジョブ形状は、何れかの空きノード群に収容できるものに限定する。変形後のジョブ形状は、式(1)および式(2)を用いて算出することができる。
Figure 2016004310
Figure 2016004310
式(1)および式(2)において、M1srcは、変形後の移動元であるsrc次元のノード数を示す。Msrcは、変形前の移動元であるsrc次元のノード数を示す。factは、次元間で移動させる約数を示す。M1dstは、変形後の移動先であるdst次元のノード数を示す。Mdstは、変形前の移動先であるdst次元のノード数を示す。約数factをsrc次元からdst次元に移動することで、scr次元のノード数はfact分の1に減少し、dst次元のノード数はfact倍に増加する。ただし、約数を移動しただけでは、ジョブが要求するノード総数は変化しない。
例えば、割当算出部140は、X次元およびY次元の約数の中から1つを選択して他方の次元に移動し、移動によって得られるジョブ形状が何れかの空きノード群に収容できるものであるか判定する。空きノード群に収容できる場合、割当算出部140は、そのジョブ形状を変形パターンとして採用する。一方、何れの空きノード群にも収容できない場合、割当算出部140は、そのジョブ形状を変形パターンとして採用せずに破棄する。割当算出部140は、考え得る全ての変形パターンを特定する。
(S14)割当算出部140は、ステップS13で特定された1つのパターンを選択し、式(3)および式(4)を用いて、各プロセスの配置を変更する。
Figure 2016004310
Figure 2016004310
式(3)および式(4)において、v1srcは、変形後の移動元であるsrc次元の座標を示す。vsrcは、変形前の移動元であるsrc次元の座標を示す。vsrc/factは、vsrcを約数factで割ったときの整数部を示し、小数点以下は切り捨てられる。v1dstは、変形後の移動先であるdst次元の座標を示す。vdstは、変形前の移動先であるdst次元の座標を示す。vsrc%factは、vsrcを約数factで割った余りを示す。vsrc、vdst、v1srcおよびv1dstは、それぞれ0以上の整数である。式(3)および式(4)によれば、変形前のジョブ形状において座標(vsrc,vdst)に配置されていたプロセスは、変形後のジョブ形状において座標(v1src,v1dst)に配置されることになる。
(S15)割当算出部140は、変形後のジョブ形状の評価値を算出する。評価値の一例として、ここでは、ノード間の通信コストを示す総ホップ数(TotalHop)を用いる。総ホップ数が小さいほど、ノード間の通信コストが低いことを示す。割当算出部140は、通信テーブル112を参照し、式(5)を用いて総ホップ数を算出する。
Figure 2016004310
式(5)において、nはジョブに含まれるプロセスの数を示す。関数hop(i,j)の値は、プロセスiが配置されるノード(ノードi)からプロセスjが配置されるノード(ノードj)までのホップ数を示している。ホップ数は、データが異なるノード間を跨ぐ回数であり、通信の経路長とも言える。ノードiとノードjが隣接しているときホップ数は1であり、ノードiとノードjが離れているほどホップ数は大きくなる。例えば、ホップ数は、ノードiのX座標とノードjのX座標の差+ノードiのY座標とノードjのY座標の差として算出できる。ただし、プロセスiからプロセスjにデータが送信されない場合、関数hop(i,j)の値を0とする。総ホップ数は、全てのプロセスiとプロセスjの組(順序も区別した組)について関数hop(i,j)の値を合計したものである。
(S16)割当算出部140は、ステップS13で特定した全てのパターンに対して、ステップS14,S15を処理済みであるか判定する。処理済みの場合はステップS17に処理が進み、それ以外の場合はステップS14に処理が進む。
(S17)割当算出部140は、要求テーブル111と通信テーブル112を参照して、変形前のジョブ形状の評価値を算出する。一例として、割当算出部140は、変形前のジョブ形状についての総ホップ数を算出する。
(S18)割当算出部140は、ステップS13で特定したパターンの中から、ステップS15で算出した評価値(例えば、総ホップ数)が、ステップS17で算出した変形前のジョブ形状の評価値(例えば、総ホップ数)に最も近いパターンを特定する。割当算出部140は、特定したパターンを変形後のジョブ形状として採用する。なお、割当算出部140は、上記のステップS17,S18に代えて、ステップS13で特定したパターンの中から、ステップS15で算出した評価値が最良のもの(例えば、総ホップ数が最小のもの)を選択するようにしてもよい。
(S19)割当算出部140は、変形後のジョブ形状を空きノード群とマッチングして、ジョブに割当てるノードおよび各ノードに配置するプロセスのプロセス番号を決定する。割当算出部140は、使用するノードの座標(並列計算機200の中での絶対座標)とプロセス番号のリストをノード管理部130に通知する。ノード管理部130は、割当算出部140から指定されたノード(割当てノード)を用いてジョブの実行を開始させる。例えば、ノード管理部130は、ジョブ情報で指定されたプログラムのファイルを割当てノードそれぞれにコピーし、プログラムを起動するコマンドを割当てノードそれぞれに対して送信する。これにより、各割当てノードにおいて、所望の処理を実行するプロセスが立ち上がる。そして、処理を終了する。
このように、ジョブ形状の変形パターンの中から評価値が変形前のジョブ形状に最も近いパターンを特定することで、変形前と近い性能を実現することができる。評価値として総ホップ数を用いた場合、変形前と近い通信性能を実現できる。
図10は、ジョブに2次元のノードを割当てる処理の具体例を示す図である。
ジョブ受付部120は、クライアント300から12×2個の形状であるジョブDのジョブ情報を受付ける。ノード管理部130は、並列計算機200の空きノード数が64(8×8)個であることを確認する。すると、割当算出部140は、ジョブDで要求されたノード総数である24(12×2)個分の空きノードが並列計算機200に存在すると判断する。一方、割当算出部140は、12×2のジョブ形状では、ジョブDにノードを割当てることができないと判断する。
そこで、割当算出部140は、ジョブDが指定するジョブ形状のX,Y次元におけるノード数の約数を算出する。X次元の約数は、1、2、3、4、6、12である。Y次元の約数は、1、2である。そして、割当算出部140は、何れか1つの約数を次元間で移動させることで、指定されたジョブ形状(12×2)を変形させたパターンを算出する。
1つの約数を移動させて得られるジョブ形状としては、24×1、6×4、4×6、3×8、2×12、1×24の6通りが考えられる。ただし、並列計算機200に存在する空きノード群の形状は8×8であるため、空きノード群に収容できないジョブ形状である24×1、2×12、1×24は変形パターンから除外される。よって、6×4、4×6、3×8の3つの変形パターンが候補として挙げられる。
図10(A)は、パターン1として、6×4のジョブ形状を示している。パターン1は、X次元の約数“2”をY次元に移動することに相当する。図10(B)は、パターン2として、4×6のジョブ形状を示している。パターン2は、X次元の約数“3”をY次元に移動することに相当する。図10(C)は、パターン3として、3×8のジョブ形状を示している。パターン3は、X次元の約数“4”をY次元に移動することに相当する。
なお、4×6のジョブ形状は、各次元のノード数という観点では、6×4のジョブ形状を回転させたものである。しかし、プロセスの配置という観点では、4×6のプロセス配置は、6×4のプロセス配置を回転させたものと一致しない。すなわち、4×6のジョブ形状の評価値は、6×4のジョブ形状の評価値と一致しない可能性がある。このため、割当算出部140は、6×4のジョブ形状と4×6のジョブ形状とを別個の変形パターンとして評価している。
図11は、ジョブに2次元のノードを割当てる処理の具体例(続き)を示す図である。図11の上部では、指定されたジョブ形状(12×2)からパターン1のジョブ形状(6×4)に変形させた場合に、変形に伴ってプロセスの配置が変更されることを示している。変更後のプロセスの配置は、割当算出部140が、式(3)および式(4)を用いることで算出できる。
例えば、座標(2,0)に配置されていたプロセス2について、パターン1ではX座標はv1X=2/2=1、変形後のY座標はv1Y=0×2+2%2=0となる。よって、プロセス2は、パターン1では座標(1,0)に移動することになる。また、座標(8,1)に配置されていたプロセス20について、パターン1ではX座標はv1X=8/2=4、変形後のY座標はv1Y=1×2+8%2=2となる。よって、プロセス20は、パターン1では座標(4,2)に移動することになる。
割当算出部140は、通信テーブル112を参照し、式(5)を用いて、パターン1のジョブ形状(6×4)の評価値として総ホップ数を算出する。同様に、割当算出部140は、パターン2のジョブ形状(4×6)、パターン3のジョブ形状(3×8)についても、プロセスの配置を算出し、総ホップ数を算出する。ここでは、パターン1の総ホップ数を120、パターン2の総ホップ数を130、パターン3の総ホップ数を180とする。
また、割当算出部140は、通信テーブル112を参照して、クライアント300から指定されたジョブ形状(12×2)の総ホップ数を算出する。ここでは、算出した結果は100であったものとする。
すると、割当算出部140は、総ホップ数が変形前のジョブ形状の総ホップ数(100)に最も近いパターン1を選択する。図11の下部では、ノード管理部130が、6×4のジョブ形状に変形したジョブDに並列計算機200の空きノードを割当てた状態を示している。ここでは、(4,4)〜(9,7)の範囲にある6×4個のノードが、ジョブDに割当てられている。
このように、要求されたノードの総数を変更せずに、指定されたジョブ形状を変更することを許容することで、ジョブDに並列計算機200の空きノードを割当てることができる。そして、ジョブDを割当てたことで、並列計算機200におけるノード稼働率を向上させることができる。
上記のジョブ形状の変形方法は、並列計算機200のノードを接続する相互接続網が3次元以上である場合に適用することもできる。例えば、割当算出部140は、3以上の座標軸の中から2つの座標軸を選択し、選択した2つの座標軸の間で何れか1つの約数を移動することで変形パターンを算出する。割当算出部140は、選択する2つの座標軸の組み合わせを変えていくことで、様々な変形パターンを算出することができる。ただし、上記以外のジョブ形状の変形方法も考えられる。以下では、主に3次元以上の相互接続網に対して適用することを想定して、他の変形方法の例を説明する。
図12は、ジョブに3次元以上のノードを割当てる処理の例を示すフローチャートである。図12の処理は、ジョブ受付部120がクライアント300からジョブ情報を受付けることにより処理が始まる。ジョブ情報に含まれる要求テーブル111の要求ノード数の項目には、3次元以上のジョブ形状を示す情報が登録されている。例えば、要求テーブル111の要求ノード数の項目には、8×12×15が登録される。これは、X次元のノード数が8、Y次元のノード数が12、Z次元のノード数が15であることを示す。以下、図12に示す処理をステップ番号に沿って説明する。
(S21)割当算出部140は、現在存在する空きノード群をノード管理部130に問い合わせ、クライアントから要求されたノード総数分の空きノードが並列計算機200に存在するか判定する。空きノードが存在する場合は、ステップS22に処理が進み、それ以外の場合は処理が終了する。
また、割当算出部140は、指定されたジョブ形状を包含する空きノード群が存在すれば、以降の処理を行わずに、要求されたジョブに空きノードを割当てて並列計算機200に実行させる。
(S22)割当算出部140は、指定されたジョブ形状に含まれる各次元(X,Y,Z次元など)のノード数を素因数分解する。また、割当算出部140は、並列計算機200に存在する各空きノード群について、当該空きノード群のジョブ形状に含まれる各次元のノード数を素因数分解する。
(S23)割当算出部140は、各空きノード群について、当該空きノード群の全ての次元の素数を集めた集合が、指定されたジョブ形状の素数の集合を包含しているか判断し、該当する空きノード群が少なくとも1つ存在するか判定する。このとき、素数が存在する次元の違いは無視してよい。
例えば、指定されたジョブ形状が8×12×15であり、ある空きノード群の形状が6×15×16であるとする。前者を素因数分解すると(2×2×2)×(2×2×3)×(3×5)=25×32×5となり、後者を素因数分解すると(2×3)×(3×5)×(2×2×2×2)=25×32×5となる。よって、次元の違いを無視すれば、この空きノード群は、指定されたジョブ形状の素数の集合を包含している。
該当する空きノード群が少なくとも1つ存在する場合はステップS24に処理が進み、それ以外の場合は処理が終了する。処理が終了する場合、ジョブ受付部120は、クライアント300にノードの割当てができない旨の通知を行ってもよい。
(S24)割当算出部140は、指定されたジョブ形状を変形するパターンを特定する。図12の処理における変形パターンは、後述するように、ある次元から別の次元に1または2以上の素数を移動する操作を複数定義し、ある順序でそれら複数の操作を実行するものである。最終的な変形後のジョブ形状は、何れかの空きノード群に収容できるものに限定される。パターン特定処理の詳細は後述する。
(S25)割当算出部140は、ステップS24で特定された1つのパターンを選択し、選択したパターンに従って各プロセスの配置を変更する。例えば、割当算出部140は、1または2以上の素数をsrc次元からdst次元に移動する操作1回毎に、前述の式(3)および式(4)を適用して、各プロセスの座標(v1src,v1dst)を算出する。このとき、式(3)および式(4)の約数factは、移動する1または2以上の素数の積とすればよい。割当算出部140は、パターンが示す操作の順序に従って、上記のプロセス配置の変更を連続的に行う。これにより、最終的なジョブ形状におけるプロセス配置を算出することができる。
(S26)割当算出部140は、変形後のジョブ形状の評価値を算出する。一例として、割当算出部140は、通信テーブル112を参照し、式(5)を用いて総ホップ数(TotalHop)を算出する。前述のように、総ホップ数はノード間の通信コストを示しており、総ホップ数が小さいほど通信コストが小さい。
(S27)割当算出部140は、ステップS24で特定した全てのパターンに対して、ステップS25,S26を処理済みであるか判定する。処理済みの場合はステップS28に処理が進み、それ以外の場合はステップS25に処理が進む。
(S28)割当算出部140は、ステップS24で特定したパターンの中から、ステップS26で算出した評価値が最良のパターン(例えば、総ホップ数が最小のパターン)を特定する。割当算出部140は、特定したパターンを変形後のジョブ形状として採用する。なお、割当算出部140は、ステップS28に代えて、変形前のジョブ形状の評価値を算出し、ステップS24で特定したパターンの中から、評価値が変形前のジョブ形状に最も近いパターンを採用するようにしてもよい。
(S29)割当算出部140は、変形後のジョブ形状を空きノード群とマッチングして、ジョブに割当てるノードおよび各ノードに配置するプロセスのプロセス番号を決定する。ノード管理部130は、割当算出部140から指定されたノード(割当てノード)を用いてジョブの実行を開始させる。例えば、ノード管理部130は、ジョブ情報で指定されたプログラムのファイルを割当てノードそれぞれにコピーし、プログラムを起動するコマンドを割当てノードそれぞれに対して送信する。そして、処理を終了する。
図13は、ジョブ形状の変形パターンを特定する処理の例を示すフローチャートである。図13に示す処理は、上記のステップS24の処理に対応する。以下、図13に示す処理をステップ番号に沿って説明する。なお、以下の説明では、この処理を実装したプログラムにおいて用いられる変数名や関数名の例を、括弧書きで記載することがある。また、ここでは、1つの空きノード群についての処理を説明する。ステップS23に該当する空きノード群が2以上がある場合、各空きノード群について図13に示す処理が実行されて、1または2以上のパターンが特定される。
(S31)割当算出部140は、次元を1つ選択する(次元dim)。例えば、並列計算機200の相互接続網が3次元の場合、X次元、Y次元、Z次元のうち1つの次元を選択する。
(S32)割当算出部140は、次元dimについて、クライアント300から指定されたジョブ形状(要求形状req)に存在せず、空きノード群の形状(空き形状sp)に存在する素数を特定する(素数集合multis[dim])。
(S33)割当算出部140は、要求形状reqに存在し、空き形状spに存在しない素数を特定する(素数集合devs[dim])。
(S34)割当算出部140は、ステップS32,S33を全ての次元に対して処理済みであるか否かを判定する。例えば、3次元の相互接続網の場合、割当算出部140は、ステップS31においてX次元、Y次元、Z次元の全てを選択したか判定する。処理済みの場合はステップS35に処理が進み、それ以外の場合はステップS31に処理が進む。
(S35)割当算出部140は、次元を1つ選択する(次元dim)。
(S36)割当算出部140は、次元dim以外の他次元の素数集合devsの中から、素数集合multis[dim]と同じ素数を選択し、次元dimへ移動する候補とする(操作集合moveds[dim])。例えば、3次元の相互接続網において、次元dim=X次元である場合、他次元はY次元とZ次元である。素数集合multis[dim]に2以上の素数が含まれる場合、それら2以上の素数全てを移動することになる。このとき、2以上の素数は、1つの他次元の素数集合devsの中に存在してもよいし、複数の他次元の素数集合devsに分散して存在してもよい。後者の場合、第1の他次元から次元dimへの素数の移動と、第2の他次元から次元dimへの素数の移動とは、別の操作として扱われる。
(S37)割当算出部140は、ステップS36を全ての次元に対して処理済みであるか否かを判定する。処理済みの場合はステップS38に処理が進み、それ以外の場合はステップS35に処理が進む。
(S38)割当算出部140は、全ての次元の操作集合movedsを結合し、結合した操作集合に列挙されている操作の順列を全て算出する。素数の移動操作の順列が変形パターンとなる。そして、処理を終了する。
なお、素数の移動順序が異なると、最終的なジョブ形状が同じであってもプロセスの配置が異なるため、評価値が異なる可能性がある。そこで、図12および図13の処理では、ジョブ形状が同じでプロセス配置の異なる変形も異なる「パターン」として特定して、最適なパターンを選択するようにする。評価対象の複数のパターンの中には、同じ空きノード群について算出された、素数の移動順序が異なるパターン(変形後のジョブ形状が同じでプロセス配置が異なるパターン)が含まれていることがある。また、評価対象の複数のパターンの中には、形状の異なる空きノード群について算出されたパターン(変形後のジョブ形状が異なるパターン)が含まれていることがある。
このように、図12、13の処理によって、3次元以上の相互接続網をもつ並列計算機200の空きノードを、ジョブに対して柔軟に割当てることができる。
次に、3次元の相互接続網のノードをジョブに割当てる処理の具体例を説明する。一例として、ジョブ受付部120は、クライアント300から8×12×15のジョブ形状を指定したジョブ情報を受付ける。このとき、並列計算機200には6×15×16の空きノード群が存在するものとする。割当算出部140は、要求されたノード総数8×12×15=1440個分の空きノードが並列計算機200に存在すると判断する。一方、割当算出部140は、指定された8×12×15のジョブ形状では、当該ジョブにノードを割当てることができないと判断する。
すると、割当算出部140は、指定されたジョブ形状(8×12×15)と空きノード群の形状(6×15×16)の各次元のノード数を素因数分解する。指定されたジョブ形状のX次元は2×2×2、Y次元は2×2×3、Z次元は3×5である。空きノード群の形状のX次元は2×3、Y次元は3×5、Z次元は2×2×2×2である。次に、割当算出部140は、X次元、Y次元、Z次元について素数集合multisと素数集合devsを算出する。multis[X]={3}、multis[Y]={5}、multis[Z]={2×2×2×2}となる。また、devs[X]={2,2}、devs[Y]={2,2}、devs[Z]={3,5}となる。
次に、割当算出部140は、X次元、Y次元、Z次元について操作集合movedsを算出する。moveds[X]={devs[Z]の3}となる。これは、Z次元からX次元に“3”を移動する操作を示す。また、moveds[Y]={devs[Z]の5}となる。これは、Z次元からY次元に“5”を移動する操作を示す。moveds[Z]={devs[X]の2×2、devs[Y]の2×2}となる。これは、X次元からZ次元に“2”と“2”(すなわち、“4”)を移動する操作と、Y次元からZ次元に“2”と”2”(すなわち、“4”)を移動する操作とを示す。
これにより、moveds[X]、moveds[Y]、moveds[Z]に列挙された4つの操作を得ることができる。操作1は、Z次元からX次元への“3”の移動である。操作2は、Z次元からY次元への“5”の移動である。操作3は、X次元からZ次元への“4”の移動である。操作4は、Y次元からZ次元への“4”の移動である。割当算出部140は、これら4つの操作に対する全ての順列を算出する。4つの操作の順列は、以下の24通りになる。すなわち、24通りの「パターン」が算出される。
{1,2,3,4}、{1,2,4,3}、{1,3,2,4}、{1,3,4,2}、{1,4,2,3}、{1,4,3,2}、{2,1,3,4}、{2,1,4,3}、{2,3,1,4}、{2,3,4,1}、{2,4,1,3}、{2,4,3,1}、{3,1,2,4}、{3,1,4,2}、{3,2,1,4}、{3,2,4,1}、{3,4,1,2}、{3,4,2,1}、{4,1,2,3}、{4,1,3,2}、{4,2,1,3}、{4,2,3,1}、{4,3,1,2}、{4,3,2,1}(列挙されている番号は操作番号を示し、番号の順序は操作順序を示す)。
上記のパターンそれぞれについて、ジョブ形状およびプロセス配置を操作の順に沿って算出していく。以下では、代表して{1,2,3,4}のパターンの例を示す。また、一例として、開始時に座標(5,3,8)にあるプロセスの移動先を追うこととする。
割当算出部140は、指定されたジョブ形状(8×12×15)に対して、Z次元からX次元へ“3”を移動する操作1を実行する。操作1が行われた後のジョブ形状は、式(1)および式(2)に従い、(8×3)×12×(15/3)=24×12×5となる。このとき、座標(5,3,8)にあるプロセスは、式(3)および式(4)に従い、(5×3+8%3,3,8/3)=(17,3,2)に移動することになる。
次に、割当算出部140は、24×12×5のジョブ形状に対して、Z次元からY次元へ“5”を移動する操作2を実行する。すると、操作2が行われた後のジョブ形状は、24×(12×5)×(5/5)=24×60×1となる。このとき、操作1の直後に座標(17,3,2)にあったプロセスは、(17,3×5+2%5,2/5)=(17,17,0)に移動することになる。
次に、割当算出部140は、24×60×1のジョブ形状に対して、X次元からZ次元へ“4”を移動する操作3を実行する。すると、操作3が行われた後のジョブ形状は、(24/4)×60×(1×4)=6×60×4となる。このとき、操作2の直後に座標(17,17,0)にあったプロセスは、(17/4,17,0×4+17%4)=(4,17,1)に移動することになる。
次に、割当算出部140は、6×60×4のジョブ形状に対して、Y次元からZ次元へ“4”を移動する操作4を実行する。すると、操作4が行われた後のジョブ形状は、6×(60/4)×(4×4)=6×15×16となる。このとき、操作3の直後に座標(4,17,1)にあったプロセスは、(4,17/4,1×4+17%4)=(4,4,5)に移動することになる。このように、指定された8×12×15のジョブ形状は、空きノード群に収まるように、6×15×16のジョブ形状に変形される。これに伴い、座標(5,3,8)にあったプロセスは、座標(4,4,5)に移動する。
割当算出部140は、上記と同様に他のプロセスについても、当該他のプロセスが最終的に配置されるノードの座標を算出する。素数の移動順序が異なると、最終的なジョブ形状が同じであってもプロセス配置が異なることがある。よって、割当算出部140は、上記の24通りのパターンについてプロセス配置を算出する。そして、割当算出部140は、24通りのパターンについて総ホップ数などの評価値を算出する。他の空きノード群が存在する場合、他の空きノード群についても1または2以上のパターンが特定されて各パターンの評価値が算出される。割当算出部140は、上記の24通りのパターンを含む全てのパターンの中から、評価値が最良のパターン(例えば、総ホップ数が最小のパターン)を採用する。これにより、変形後のジョブ形状とプロセス配置が決定する。
第2の実施の形態の並列計算機システムによれば、並列計算機200の中にクライアント300から指定されたジョブ形状を収容できる空きノード群が存在しないとき、空きノード群の形状に応じてジョブ形状が変形され、ジョブにノードが割当てられる。これにより、ジョブが要求するノード総数に相当する空きノードが並列計算機200に存在するにもかかわらず当該ジョブが待ち状態になることを抑制でき、並列計算機システムのノード稼働率が向上する。また、ノードの計算リソースを有効に活用することができ、並列計算機システムのスループットが向上する。また、ジョブの実行が開始されるまでの待機時間を削減することができ、ジョブの実行を要求したクライアント300にとって、ジョブの要求から実行終了までのレスポンス時間を短縮することができる。
また、複数の変形パターンが考えられるとき、各パターンについて評価値が算出され、評価値が変形前と近いパターンまたは最良のパターンが選択される。これにより、ジョブ形状を変形することによる処理性能の低下を軽減することができる。特に、評価値としてプロセス間の通信コストを示す総ホップ数を用いることで、プロセス間の通信がボトルネックになり得る場合であっても通信性能の低下を軽減できる。よって、他のジョブが終了するのを待ってジョブ形状を変形せずにジョブを開始するよりも、ジョブ形状を変形して早期にジョブを開始した方が、スループットやレスポンス時間が改善すると期待できる。
なお、第1の実施の形態の情報処理は、管理装置2に用いられるプロセッサに、プログラムを実行させることで実現できる。第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、ジョブ受付部120、ノード管理部130、割当算出部140に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。ジョブ受付部120、ノード管理部130、割当算出部140の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、RAM102やHDD103に格納されているDiskなどの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1a〜1x ノード
2 管理装置
3 処理要求
3a,3b 形状情報

Claims (6)

  1. N個(Nは2以上の整数)の座標軸によって特定されるN次元の座標が付与されており、前記N次元の座標を用いて接続関係が管理される複数のノードと、
    処理に用いるノード群について座標軸毎のノード数を指定した処理要求を取得すると、前記複数のノードの中から使用可能な空きノード群を検出し、前記空きノード群の各座標軸方向に並ぶノードの数に応じて、前記処理要求で指定された前記N個の座標軸のノード数のうち2以上の座標軸のノード数を変換し、変換後の座標軸毎のノード数に応じて、前記空きノード群に含まれるノードを前記処理要求に対して割当てる管理装置と、
    を有する並列計算機システム。
  2. 前記管理装置は、前記処理要求で要求されたノードの総数が変わらないように、前記N個の座標軸のうち第1の座標軸について指定されたノード数を減らし、前記N個の座標軸のうち第2の座標軸について指定されたノード数を増やす、
    請求項1記載の並列計算機システム。
  3. 前記管理装置は、前記第1の座標軸について指定されたノード数を因数分解し、因数分解によって得られた一の因数を前記第1の座標軸から前記第2の座標軸に移動する、
    請求項2記載の並列計算機システム。
  4. 前記処理要求は、並列に実行される複数のプロセスの間の通信状況を示す情報を含み、
    前記管理装置は、前記2以上の座標軸のノード数を変換する方法として複数の変換方法の候補があるとき、前記通信状況を示す情報に基づいて、前記複数の変換方法の候補それぞれについて、前記複数のプロセスにノードを割当てた場合にノード間で発生する通信のコストを示す指標値を算出し、前記指標値に基づいて一の変換方法を選択する、
    請求項1乃至3の何れか一項に記載の並列計算機システム。
  5. N個(Nは2以上の整数)の座標軸によって特定されるN次元の座標が付与されており、前記N次元の座標を用いて接続関係が管理される複数のノードを含む並列計算機システムが実行する制御方法であって、
    処理に用いるノード群について座標軸毎のノード数を指定した処理要求を取得し、
    前記複数のノードの中から使用可能な空きノード群を検出し、
    前記空きノード群の各座標軸方向に並ぶノードの数に応じて、前記処理要求で指定された前記N個の座標軸のノード数のうち2以上の座標軸のノード数を変換し、
    変換後の座標軸毎のノード数に応じて、前記空きノード群に含まれるノードを前記処理要求に対して割当てる、
    制御方法。
  6. N個(Nは2以上の整数)の座標軸によって特定されるN次元の座標が付与されており、前記N次元の座標を用いて接続関係が管理される複数のノードを含む並列計算機システムを制御するジョブ管理プログラムであって、コンピュータに、
    処理に用いるノード群について座標軸毎のノード数を指定した処理要求を取得し、
    前記複数のノードの中から使用可能な空きノード群を検出し、
    前記空きノード群の各座標軸方向に並ぶノードの数に応じて、前記処理要求で指定された前記N個の座標軸のノード数のうち2以上の座標軸のノード数を変換し、
    変換後の座標軸毎のノード数に応じて、前記空きノード群に含まれるノードを前記処理要求に対して割当てる、
    処理を実行させるジョブ管理プログラム。
JP2014122621A 2014-06-13 2014-06-13 並列計算機システム、制御方法およびジョブ管理プログラム Withdrawn JP2016004310A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014122621A JP2016004310A (ja) 2014-06-13 2014-06-13 並列計算機システム、制御方法およびジョブ管理プログラム
US14/729,085 US20150365343A1 (en) 2014-06-13 2015-06-03 Parallel computer system and control method
EP15170551.4A EP2960788A3 (en) 2014-06-13 2015-06-03 Parallel computer system, control method, and job management program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014122621A JP2016004310A (ja) 2014-06-13 2014-06-13 並列計算機システム、制御方法およびジョブ管理プログラム

Publications (1)

Publication Number Publication Date
JP2016004310A true JP2016004310A (ja) 2016-01-12

Family

ID=53396256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014122621A Withdrawn JP2016004310A (ja) 2014-06-13 2014-06-13 並列計算機システム、制御方法およびジョブ管理プログラム

Country Status (3)

Country Link
US (1) US20150365343A1 (ja)
EP (1) EP2960788A3 (ja)
JP (1) JP2016004310A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019008649A (ja) * 2017-06-27 2019-01-17 富士通株式会社 情報処理システム、管理装置及びプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8336040B2 (en) * 2004-04-15 2012-12-18 Raytheon Company System and method for topology-aware job scheduling and backfilling in an HPC environment
US7433931B2 (en) * 2004-11-17 2008-10-07 Raytheon Company Scheduling in a high-performance computing (HPC) system
JP2010257056A (ja) 2009-04-22 2010-11-11 Fujitsu Ltd 並列処理装置、並列処理方法及び並列処理プログラム
JP5402226B2 (ja) 2009-05-13 2014-01-29 富士通株式会社 管理装置、情報処理システム、情報処理システムの制御プログラムおよび情報処理システムの制御方法
JP5678573B2 (ja) * 2010-02-24 2015-03-04 富士通株式会社 経路計算システム、経路計算方法及び経路計算プログラム
US20120059938A1 (en) * 2010-06-28 2012-03-08 Cray Inc. Dimension-ordered application placement in a multiprocessor computer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019008649A (ja) * 2017-06-27 2019-01-17 富士通株式会社 情報処理システム、管理装置及びプログラム

Also Published As

Publication number Publication date
US20150365343A1 (en) 2015-12-17
EP2960788A3 (en) 2016-02-10
EP2960788A2 (en) 2015-12-30

Similar Documents

Publication Publication Date Title
CN109885377B (zh) 统一资源调度协调器及其创建虚拟机和/或容器的方法、统一资源调度系统
JP5088366B2 (ja) 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
CN107111517B (zh) 针对归约器任务的虚拟机优化分配和/或生成
CN114138486B (zh) 面向云边异构环境的容器化微服务编排方法、系统及介质
US20080229320A1 (en) Method, an apparatus and a system for controlling of parallel execution of services
KR20130119285A (ko) 클러스터 컴퓨팅 환경에서의 자원 할당 장치 및 그 방법
US20080294872A1 (en) Defragmenting blocks in a clustered or distributed computing system
JP2015001828A (ja) 割当プログラム、割当装置および割当方法
US9535756B2 (en) Latency-hiding context management for concurrent distributed tasks in a distributed system
KR20160087706A (ko) 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법
JP5056844B2 (ja) 一意情報集団通信プログラム、計算ノード、および一意情報集団通信方法
US10164904B2 (en) Network bandwidth sharing in a distributed computing system
KR102522958B1 (ko) 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체
US10084860B2 (en) Distributed file system using torus network and method for configuring and operating distributed file system using torus network
KR102028428B1 (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법
TW202015606A (zh) 用於多個清潔裝置之任務區域分配方法以及其系統
JP2024020271A (ja) 機械学習ワークロードのためのタスクスケジューリング
JPWO2005116832A1 (ja) 分散処理環境におけるジョブの実行を制御するためのコンピュータシステム、方法及びプログラム
JP6010975B2 (ja) ジョブ管理装置、ジョブ管理方法、及びプログラム
JP6617461B2 (ja) 制御装置、制御プログラム、及び制御方法
JP2014211767A (ja) 情報処理システム、制御装置及び情報処理システムの制御方法
JP2012252591A (ja) プロセス割当システム、プロセス割当方法、およびプロセス割当プログラム
JP2016004310A (ja) 並列計算機システム、制御方法およびジョブ管理プログラム
US20140089473A1 (en) Information processing system and management method thereof
JP2019087183A (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170309

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20171106