JP6891680B2 - 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JP6891680B2
JP6891680B2 JP2017136498A JP2017136498A JP6891680B2 JP 6891680 B2 JP6891680 B2 JP 6891680B2 JP 2017136498 A JP2017136498 A JP 2017136498A JP 2017136498 A JP2017136498 A JP 2017136498A JP 6891680 B2 JP6891680 B2 JP 6891680B2
Authority
JP
Japan
Prior art keywords
job
arithmetic units
unit
allocation unit
server
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.)
Active
Application number
JP2017136498A
Other languages
English (en)
Other versions
JP2019020852A (ja
Inventor
真弘 三輪
真弘 三輪
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 JP2017136498A priority Critical patent/JP6891680B2/ja
Priority to US16/029,140 priority patent/US10896057B2/en
Publication of JP2019020852A publication Critical patent/JP2019020852A/ja
Application granted granted Critical
Publication of JP6891680B2 publication Critical patent/JP6891680B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/102Packet switching elements characterised by the switching fabric construction using shared medium, e.g. bus or ring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/14Two-way operation using the same type of signal, i.e. duplex

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

本発明は、情報処理装置、情報処理システム、情報処理方法及び情報処理プログラムに関する。
スーパーコンピュータやPC(Personal Computer)クラスタシステムでは、多数のサーバが高速なネットワークで接続されている。サーバは、ノードと呼ばれる場合がある。このサーバ間のネットワークの接続方法は、ネットワークトポロジと呼ばれる。そして、スーパーコンピュータやPCクラスタシステムで用いられるネットワークトポロジには、FatTreeトポロジやフルメッシュトポロジといった様々な種類が存在する。
FatTreeトポロジは、ツリー形のネットワークにおいて上流側への接続リンクを多重化したトポロジである。また、フルメッシュトポロジは、サーバが接続されたスイッチ間を全て直接繋いだ形のネットワークトポロジである。ここで、直接繋ぐとは、他のスイッチを介さずに接続されることを指す。
フルメッシュトポロジは、FatTreeトポロジに比べて、同一のスイッチ数でより多くのサーバが接続できる。また、フルメッシュトポロジは、FatTreeトポロジに対し最短経路での通信ホップ数を小さくすることができる。
一方、あるサーバが他のいずれかのサーバとの間で通信を行う場合、FatTreeトポロジを用いたネットワークであれば、通信を行うサーバ間で複数の通信経路が存在する。これに対して、フルメッシュトポロジを用いたネットワークの場合、通信を行うサーバ間では経路がFatTreeトポロジの場合よりも少ない。
なお、ネットワークにおける通信技術として、リング状の通信パスを用いるネットワークシステムの従来技術がある。
特表2014−533449号公報
ここで、ネットワーク上の複数のサーバにジョブが割り当てられ、それぞれのジョブが通信を行う、すなわち、異なるサーバの通信が重なる場合を考える。FatTreeトポロジを用いたネットワークであれば、各通信に対してそれぞれ異なる通信経路を割り当てることにより、競合の発生が抑えられる。しかしながら、フルメッシュトポロジを用いた場合、異なるサーバが同じ通信経路を用いて同じ方向への通信を行うことが考えられる。その場合、競合リンクが発生してしまい、ネットワークにおける通信性能が低下するおそれがある。
そこで、競合リンクを回避するために同一スイッチに直接接続される複数のサーバにジョブを割り当てないようにする方法が考えられる。しかしながら、同一スイッチに直接接続される複数のサーバにジョブを割り当てない場合、割り当てるジョブがあるにもかかわらず未使用のサーバが存在する事態が発生し、システム全体の利用効率が低下するおそれがある。
また、フルメッシュトポロジを用いたネットワーク上で、単にリング状の通信パスを用いた場合、競合リンクの発生を抑えることは困難である。
開示の技術は、上記に鑑みてなされたものであって、競合リンクの発生を抑える情報処理装置、情報処理システム、情報処理方法及び情報処理プログラムを提供することを目的とする。
本願の開示する情報処理装置、情報処理システム、情報処理方法及び情報処理プログラムの一つの態様において、第1割当部は、環状に結ばれた演算装置において前記環状の順番にデータを送信して処理を行うリングアルゴリズムを用いる第1ジョブを、複数の演算装置が接続された複数のスイッチのそれぞれが互いに全二重の通信経路で接続されたフルメッシュトポロジを用いたネットワークを有する情報処理システムにおける前記演算装置のうちの複数の第1演算装置に割り当てる。第2割当部は、前記リングアルゴリズムを用いる第2ジョブを、前記第1ジョブによる処理で用いられる前記ネットワーク上の通信経路と同じ通信経路を用いる場合、前記第1ジョブがデータを送信する方向と逆方向にデータを送信するように、前記演算装置のうちの複数の第2演算装置に割り当てる。
1つの側面では、本発明は、競合リンクの発生を抑えることができる。
図1は、フルメッシュトポロジを用いたネットワーク構成の一例を表す図である。 図2は、ジョブ入力を説明するための図である。 図3は、実施例1に係る管理装置のブロック図である。 図4は、ジョブの割り当ての一例を説明するためのネットワーク構成図である。 図5は、割当管理表の一例を表す図である。 図6は、ホストリストの一例を表す図である。 図7は、ジョブの割り当ての他の例を説明するためのネットワーク構成図である。 図8は、割当管理表の他の例を表す図である。 図9は、ホストリストの他の例を表す図である。 図10は、グローバル番号の割付処理のフローチャートである。 図11は、スイッチ毎のサーバへのグローバル番号の割付処理のフローチャートである。 図12は、ジョブ割当処理全体のフローチャートである。 図13は、リングアルゴリズム使用可能判定処理のフローチャートである。 図14は、サーバへのジョブの割当処理のフローチャートである。 図15は、ジョブ終了処理のフローチャートである。 図16は、実施例2に係る管理装置のブロック図である。 図17は、3つのジョブの割当状態の一例を表す図である。 図18は、3つのジョブの割当状態の他の例を表す図である。 図19は、4つのジョブの割当状態の一例を表す図である。 図20は、多層フルメッシュトポロジの概念図である。 図21は、ハードウェア構成図である。
以下に、本願の開示する情報処理装置、情報処理システム、情報処理方法及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム、情報処理方法及び情報処理プログラムが限定されるものではない。
図1は、フルメッシュトポロジを用いたネットワーク構成の一例を表す図である。図1に示すように、本実施例に係るネットワークは、全てのスイッチ2同士が他のスイッチ2を介さずに直接繋がるフルメッシュトポロジを用いて構成される。スイッチ2同士は、全二重通信の通信線で接続される。そして、各スイッチ2には、サーバ1が複数接続される。図1では、スイッチ2が4つの場合のネットワーク構成を示したが、スイッチ2の数は3以上であれば他の数でもよい。
サーバ1は、スイッチ2を介して他のサーバ1と通信を行う。図1では、1つのスイッチ2につき2台のサーバ1が接続される場合を示したが、各スイッチ2に接続されるサーバ1の数は特に制限は無い。また、サーバ1は、各スイッチ2にそれぞれ異なる数が接続されてもよい。
次に、図2を参照して、サーバ1を管理する管理装置10を含む情報処理システム100について説明する。図2は、ジョブ入力を説明するための図である。図2では、サーバ1同士が管理用ネットワーク3及び計算用ネットワーク4で接続される構成を記載したが、実際には、サーバ1は、他の通信機器を経由して相互に接続されてもよい。例えば、計算用ネットワーク4は、実際には、図1のフルメッシュトポロジを用いたネットワークにあたり、サーバ1は、スイッチ2を介して相互に接続される。
サーバ1及び管理装置10は、それぞれがCPU(Central Processing Unit)及びメモリなどを有する。サーバ1は、計算ノードと呼ばれる場合がある。また、管理装置10は、管理ノードと呼ばれる場合がある。
例えば、管理装置10は、ジョブスケジューラコントローラ101が動作する。ジョブスケジューラコントローラ101は、操作者からジョブを実行させるためのプログラムのパス、プログラムが同時に使用するサーバ1の数である並列数及びプログラムの実行時間などを含むジョブ情報103の入力を受ける。そして、ジョブスケジューラコントローラ101は、並列数などに基づきジョブを実行させるサーバ1を選択する。その後、ジョブスケジューラコントローラ101は、選択したサーバ1のジョブスケジューラデーモン102に対してジョブの実行を、管理用ネットワーク3を介して指示する。ジョブスケジューラコントローラ101によるジョブを実行させるサーバ1の選択及び選択したサーバ1へのジョブの実行の指示が、ジョブの割り当てにあたる。
本実施例では、管理装置10は、リングアルゴリズムを用いる集合通信(Collective Communication Operation)を行うジョブをサーバ1に実行させる。リングアルゴリズムとは、環状にデータを巡回させることで処理が行われるアルゴリズムである。また、集合通信は、集団通信とも呼ばれ、2つ以上のサーバ1の間でデータの送受信を行う通信である。管理装置10によるジョブの割り当てについては後で詳細に説明する。本実施例では、管理装置10がサーバ1を3つ以上用いてジョブを実行させる場合について説明する。
各サーバ1では、ジョブスケジューラデーモン102が動作する。ジョブスケジューラデーモン102は、ジョブの実行の指示を管理装置10で動作するジョブスケジューラコントローラ101から受ける。そして、各サーバ1のジョブスケジューラデーモン102は、指示されたジョブをサーバ1に実行させる。サーバ1は、計算用ネットワーク4を介して他のサーバ1と通信を行うことでジョブを実行する。ここで、サーバ1は、それぞれに接続された個別のストレージを有し、実行するプログラムや使用するデータを自己に接続されたストレージから読み出してジョブを実行してもよい。また、他の方法としては、サーバ1が接続する1台のファイルサーバを用意し、各サーバ1は、実行するプログラムや使用するデータをファイルサーバから読み出してジョブを実行してもよい。このサーバ1が、「演算装置」の一例にあたる。
また、本実施例では、ジョブスケジューラコントローラ101を動作させる装置としてジョブを実行するサーバ1とは別に管理装置10を配置したが、サーバ1の何れかにジョブスケジューラコントローラ101を実行させてもよい。
次に、図3を参照して、管理装置10によるジョブの割り当てについて説明する。図3は、実施例1に係る管理装置のブロック図である。図3に示すように、管理装置10は、情報取得部11、識別番号設定部12、管理表作成部13、記憶部14及びジョブ割当部15を有する。
記憶部14は、メモリなどの記憶装置である。そして、記憶部14は、各サーバ1に対するジョブの割当状態を表す割当管理表140及び各ジョブで利用されるサーバ1の利用順を表すホストリスト141を有する。
情報取得部11は、情報処理システム100内の使用可能な各スイッチ2の情報及び各スイッチ2に接続されたサーバ1の情報を含むネットワーク構成情報を取得する。例えば、情報取得部11は、管理装置10が有するキーボードなどの入力装置を用いて操作者から入力されたネットワーク構成情報を取得する。そして、情報取得部11は、ネットワーク構成情報を識別番号設定部12へ出力する。
ここでは、情報取得部11は、図4に示すネットワーク構成の情報の入力を受けた場合で説明する。すなわち、情報取得部11は、3つのスイッチ2がフルメッシュトポロジを用いたネットワークで接続され、且つ、各スイッチ2にサーバ1が2台ずつ接続されたことを表すネットワーク構成情報を取得する。以下では、3つのスイッチ2をそれぞれ、図4に示すようにスイッチSW0〜SW2として説明する。
また、情報取得部11は、ジョブ情報の入力を受ける。そして、情報取得部11は、取得したジョブ情報をジョブ割当部15へ出力する。
識別番号設定部12は、情報処理システム100内の使用可能な各スイッチ2の情報及び各スイッチ2に接続されたサーバ1の情報の入力を情報取得部11から受ける。次に、識別番号設定部12は、各スイッチ2に接続されるサーバ1に対してローカル番号を設定する。ローカル番号とは、1つのスイッチ2に接続されるサーバ1においてそれぞれを識別するための番号である。本実施例では、識別番号設定部12は、スイッチ2のそれぞれに接続される2台のサーバ1に##0及び##1というローカル番号を設定する。ここで、1つのスイッチ2の配下のサーバ1はいずれも同等であり区別しなくてよいので、識別番号設定部12は、サーバ1に対して自由にローカル番号を設定してよい。
次に、識別番号設定部12は、全てのサーバ1に対してグローバル番号を設定する。具体的には、識別番号設定部12は、それぞれが重複せず、且つ、あるスイッチ2の配下のサーバ1のグローバル番号が、他のスイッチ2の配下のサーバ1のグローバル番号の最大値より大きい又は最小値より小さくなるように設定する。言い換えれば、識別番号設定部12は、あるスイッチ2の配下のグローバル番号の最大値と最小値との範囲に、他のスイッチ2の配下のグローバル番号が含まれないように、グローバル番号を設定する。
本実施例では、識別番号設定部12は、各スイッチ2の配下のサーバ1のグローバル番号が連番となり、且つ、全てのサーバ1のグローバル番号が連番になるようにグローバル番号をサーバ1に設定する。具体的には、識別番号設定部12は、スイッチSW0の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#0及び#1に設定する。また、識別番号設定部12は、スイッチSW1の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#2及び#3に設定する。さらに、識別番号設定部12は、スイッチSW2の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#4及び#5に設定する。
これにより、図4に示すように各サーバ1にローカル番号及びグローバル番号が設定される。図4において、各サーバ1の近傍に記載した括弧内の符号がローカル番号を表し、その括弧の前の符号がグローバル番号を表す。
そして、識別番号設定部12は、各サーバ1に設定したローカル番号及びグローバル番号をネットワーク構成情報とともに管理表作成部13へ出力する。
管理表作成部13は、ネットワーク構成情報、並びに、各サーバ1に設定されたローカル番号及びグローバル番号の入力を識別番号設定部12から受ける。そして、管理表作成部13は、図5に示すように、記憶部14に格納された割当管理表140にグローバル番号及びローカル番号を登録する。図5は、割当管理表の一例を表す図である。図4のスイッチSW0〜SW2に対応する各行はスイッチSW0〜SW2のそれぞれの配下に存在するサーバ1に対応する。
ここでは、管理表作成部13は、スイッチSW0〜SW2のそれぞれの配下の各サーバ1にローカル番号##0及び##1を登録する。そして、管理表作成部13は、スイッチSW0の配下のローカル番号##0のサーバ1のグローバル番号として#0を登録する。また、管理表作成部13は、スイッチSW0の配下のローカル番号##1のサーバ1のグローバル番号として#1を登録する。また、管理表作成部13は、スイッチSW1の配下のローカル番号##0のサーバ1のグローバル番号として#2を登録する。また、管理表作成部13は、スイッチSW1の配下のローカル番号##1のサーバ1のグローバル番号として#3を登録する。また、管理表作成部13は、スイッチSW2の配下のローカル番号##0のサーバ1のグローバル番号として#4を登録する。また、管理表作成部13は、スイッチSW2の配下のローカル番号##1のサーバ1のグローバル番号として#5を登録する。このグローバル番号が、「識別番号」の一例にあたる。
ジョブ割当部15は、ジョブ情報の入力を情報取得部11から受ける。ここでは、ジョブ割当部15は、3つのサーバ1を使用するリングアルゴリズムを用いた集合通信を行う2つのジョブに関するジョブ情報の入力を受ける。以下では、2つのジョブの一方をジョブAとし、他方をジョブBとする。
ジョブ割当部15は、ジョブA及びBのそれぞれに関して第1割当部151及び第2割当部152という2つの機能部を動作させる。ここで、本実施例では2つのジョブを動作させる場合であるため、ジョブ割当部15に第1割当部151及び第2割当部152という2つが存在するが、3つ以上のジョブの場合、そのジョブの数に応じた同様の機能部が存在する。ここで、本実施例では、説明の都合上、各ジョブに対応する第1割当部151及び第2割当部152をジョブ割当部15が有するように説明したが、機能としては同様の機能を有するため、各ジョブに対応する割当を行う機能を有する1つの機能部としてまとめてもよい。
第1割当部151は、ジョブAのジョブ情報を取得する。次に、第1割当部151は、ジョブAがリングアルゴリズムを使用可能な集合通信か否かを判定する。例えば、第1割当部151は、ジョブを実行するためのプログラムからMPI(Message Passing Interface)関数名情報を取得する。関数名情報の取得方法として、例えば、Linux(登録商標)におけるnmコマンドを用いたシンボルテーブルの取得により関数名情報を得る方法がある。そして、第1割当部151は、取得したMPI関数名情報が、リングアルゴリズムを用いる集合通信を表すか否かを判定する。例えば、第1割当部151は、MPI関数名情報がMPI Allgather(v)、MPI Allreduce又はMPI Bcastの何れかであるか否かを判定することで、リングアルゴリズムを用いる集合通信を表すか否かを判定する。
MPI Allgather(v)は、全てのプロセスが他のプロセスのデータを集める通信を表す。MPI Allreduceは、集めたデータの演算結果を全てのプロセスに送信する通信を表す。MPI Bcastは、あるプロセスのデータを他の全てのプロセスに送信する通信を表す。そして、取得したMPI関数名情報がリングアルゴリズムを用いる集合通信を表す場合、第1割当部151は、ジョブAがリングアルゴリズムを使用可能と判定する。ここで、プロセスとは、ジョブの実行単位にあたり、具体的には、ジョブを実行する各サーバ1上で動作するジョブに対する処理機能を表す。
そして、第1割当部151は、割当不可フラグに割り当てを表す値が設定されてないスイッチ2の中から、使用するスイッチ2を選択する。ここで、割当管理表140における割当不可フラグは、値が「1」であれば、そのスイッチ2へのジョブの割り当てが禁止されていることを表し、値が「0」であれば、そのスイッチ2へのジョブの割り当てが可能であることを表す。割当管理表140における割当不可フラグは、初期値として「0」に設定される。
ここでは、第1割当部151は、スイッチSW0〜SW2を選択する。さらに、第1割当部151は、割当管理表140を確認して、スイッチSW0〜SW2それぞれの配下のサーバ1にジョブが割り当て済みか否かを判定する。ここでは、第1割当部151は、スイッチSW0〜SW2の配下の何れのサーバ1にもジョブが割り当てられていないことを確認する。
次に、第1割当部151は、スイッチSW0〜SW2の中の適当なスイッチ2を1つ選択し、その配下のサーバ1を1つ選択する。そして、第1割当部151は、割当管理表140における選択したサーバ1に対応する1つ目ジョブの欄にジョブAを登録する。これは、1つ目ジョブの欄にジョブAを登録されたサーバ1に、1つ目のジョブであるジョブAを実行させることを表す。同様に、第1割当部151は、スイッチSW0〜SW2の中の未選択のスイッチ2から1つ選択し、その配下のサーバ1を1つ選択して、割当管理表140に1つ目ジョブを登録する。さらに、第1割当部151は、スイッチSW0〜SW2の中の残りのスイッチ2の配下のサーバ1を1つ選択して、割当管理表140に1つ目ジョブを登録する。例えば、第1割当部151は、スイッチSW0の配下のグローバル番号が#0のサーバ1、スイッチSW1の配下のグローバル番号が#2のサーバ1及びスイッチSW2の配下のグローバル番号が#4のサーバ1にジョブAを実行させると決定する。この第1割当部151により選択されたサーバ1が「第1演算装置」の一例にあたる。
次に、第1割当部151は、グローバル番号の小さい順、すなわちグローバル番号の昇順にジョブAが利用するサーバ1の順番を決定する。ここで、各プロセスには、ジョブにおける処理の順番を表すランク番号が割り振られる。すなわち、ランク番号にしたがって各プロセスが処理を実行することで、ジョブが実行される。そこで、第1割当部151は、グローバル番号の昇順にジョブAにおけるランク番号を小さいものから割り振ることで、ジョブAが利用するサーバ1の順番を決定する。ここでは、グローバル番号が#0,#2及び#4のサーバ1にジョブAを実行させるとしたので、第1割当部151は、グローバル番号#0,#2,#4の順にジョブAが利用するサーバ1の順番を決定する。
そして、第1割当部151は、ランク番号順にそのランク番号が割り振られたプロセスを実行するサーバ1のグローバル番号を表すホストリスト141を作成し記憶部14に格納する。例えば、第1割当部151は、図6のホストリスト141Aを作成する。図6は、ホストリストの一例を表す図である。ホストリスト141Aでは、上から下に向かってランク番号が増えていく。
そして、第1割当部151は、ホストリスト141Aにしたがってリングアルゴリズムを用いた集合通信が行われるようにジョブAの実行をグローバル番号が#0,#2及び#4のサーバ1に指示する。これにより、第1割当部151は、図4における実線矢印で処理が進むようにグローバル番号#0,#2及び#4のサーバ1にジョブAを割り当てる。
その後、ジョブAの実行が終了した場合、第1割当部151は、ジョブAの情報を割当管理表140から消去する。さらに、第1割当部151は、ジョブAが割り当てられたサーバ1が接続するスイッチ2の割当不可フラグが「1」であれば、「0」に変更する。ここでは、第1割当部151は、スイッチSW0〜SW2の割当不可フラグを「0」に変更する。
ここで、本実施例では、1つ目のジョブであるジョブAがリングアルゴリズムを使用可能である場合で説明したが、ジョブAがリングアルゴリズムを不使用の場合も考えられる。ジョブAがリングアルゴリズムを不使用の場合、ジョブAでは一方向に向かってデータが流れることが保証されない。そのため、ジョブAが他のジョブとデータを流す経路を供給した場合、競合リンクが発生するおそれがある。そこで、ジョブAがリングアルゴリズムを不使用の場合、第1割当部151は、ジョブAを割り当てたサーバ1を収容するスイッチ2の割当不可フラグを全て「1」に設定する。これにより、ジョブAが使用するスイッチ2は他のジョブが使用しなくなり、競合リンクの発生を回避することができる。
次に、図3に戻って説明を続ける。第2割当部152は、ジョブBのジョブ情報を取得する。次に、第2割当部152は、第1割当部151と同様に、ジョブBがリングアルゴリズムを使用可能な集合通信か否かを判定する。
次に、第2割当部152は、割当不可フラグが「0」のスイッチ2の中から、使用するスイッチ2を選択する。ここでは、第2割当部152は、スイッチSW0〜SW2を選択する。さらに、第2割当部152は、割当管理表140を確認して、スイッチSW0〜SW2それぞれの配下のサーバ1にジョブが割り当て済みか否かを判定する。ここでは、第2割当部152は、スイッチSW0〜SW2のそれぞれの配下のサーバ1にジョブAが既に割り当てられていることを確認する。
次に、第2割当部152は、スイッチSW0〜SW2の中から適当なスイッチ2を1つ選択し、その配下のジョブAが割り当てられていないサーバ1を選択する。そして、第2割当部152は、割当管理表140における選択したサーバ1に対応する2つ目ジョブの欄にジョブBを登録する。さらに、第2割当部152は、スイッチSW0の割当不可フラグに割当不可を表す値である「1」を設定する。同様に、第2割当部152は、スイッチSW0〜SW2の中の未選択のスイッチ2から1つ選択し、その配下のジョブAが割り当てられていないサーバ1を1つ選択して、割当管理表140に2つ目ジョブを登録する。さらに、第2割当部152は、スイッチSW0〜SW2の中の残りのスイッチ2の配下のジョブAが割り当てられていないサーバ1を1つ選択して、割当管理表140に2つ目ジョブを登録する。例えば、第2割当部152は、スイッチSW0の配下のグローバル番号が#1のサーバ1、スイッチSW1の配下のグローバル番号が#3のサーバ1及びスイッチSW2の配下のグローバル番号が#5のサーバ1にジョブBを実行させると決定する。この第2割当部152により選択されたサーバ1が「第2演算装置」の一例にあたる。
ここで、本実施例では、スイッチSW0〜SWE2の全てにおいて配下のサーバ1の全てにジョブが割り当てられた。しかし、スイッチ2の数及び各ジョブで使用するサーバ1の数に応じて、第2割当部152によるジョブの割り当て時に、配下のサーバ1の一部にジョブが割り当てられる場合がある。その場合、第2割当部152は、ジョブが割り当てられていないサーバ1が接続されるスイッチ2の割当不可フラグは「0」のままとする。
次に、第2割当部152は、グローバル番号の大きい順、すなわちグローバル番号の降順にジョブBが利用するサーバ1の順番を決定する。具体的には、第2割当部152は、グローバル番号の降順にジョブBにおけるランク番号を小さいものから割り振ることで、ジョブBが利用するサーバ1の順番を決定する。ここでは、グローバル番号が#1,#3及び#5のサーバ1にジョブBを実行させるとしたので、第2割当部152は、グローバル番号#5,#3,#1の順にジョブAが利用するサーバ1の順番を決定する。
そして、第2割当部152は、ランク番号順にそのランク番号が割り振られたプロセスを実行するサーバ1のグローバル番号を表すホストリスト141を作成し記憶部14に格納する。例えば、第2割当部152は、図6のホストリスト141Bを作成する。ホストリスト141Bにおいても、上から下に向かってランク番号が増えていく。
そして、第2割当部152は、ホストリスト141Bにしたがってリングアルゴリズムを用いた集合通信が行われるようにジョブBの実行をグローバル番号が#1,#3及び#5のサーバ1に指示する。これにより、第2割当部152は、図4における破線矢印で処理が進むようにグローバル番号#1,#3及び#5のサーバ1にジョブBを割り当てる。
また、ジョブBがリングアルゴリズムを不使用の場合、第2割当部152は、配下のサーバ1にジョブが1つも割り当てられていないスイッチ2を選択し、その選択したスイッチ2の配下のサーバ1にジョブを割り当てる。その場合、第2割当部152は、配下のサーバ1にジョブを割当てたスイッチ2の割当不可フラグを「1」に設定する。
その後、ジョブBの実行が終了した場合、第2割当部152は、ジョブBの情報を割当管理表140から消去する。さらに、第2割当部152は、ジョブBが割り当てられたサーバ1が接続するスイッチ2の割当不可フラグが「1」であれば、「0」に変更する。ここでは、第1割当部151は、スイッチSW0〜SW2の割当不可フラグを「0」に変更する。
このように、ジョブA及びジョブBが割り当てられることで、図4に示すように、ジョブAは実線矢印の方向にデータが流され、ジョブBは破線矢印の方向にデータが流される。すなわち、ジョブAのデータの伝送方向と、ジョブBのデータの伝送方向とは、どのスイッチ2の間においても反対を向くため、図4のネットワークにおいて競合リンクが発生しない。
また、以上では、スイッチ2が3つの場合で説明したが、ジョブ割当部15は、スイッチ2が増えても同様にジョブを割り当てることができる。
たとえば、図7に示すように、スイッチ2が5台あり、各スイッチ2にサーバ1が2台ずつ接続される場合を考える。図7は、ジョブの割り当ての他の例を説明するためのネットワーク構成図である。以下では、5台のスイッチ2をそれぞれスイッチSW0〜SW4として説明する。さらに、ここではジョブAが4台のサーバ1を使用し、ジョブBが3台のサーバ1を使用する場合で説明する。
この場合、識別番号設定部12は、各スイッチ2の配下のサーバ1にローカル番号##0及び##1を設定する。さらに、識別番号設定部12は、スイッチSW0の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#0及び#1に設定する。また、識別番号設定部12は、スイッチSW1の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#2及び#3に設定する。また、識別番号設定部12は、スイッチSW2の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#4及び#5に設定する。また、識別番号設定部12は、スイッチSW3の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#6及び#7に設定する。また、識別番号設定部12は、スイッチSW4の配下のサーバ1のローカル番号の小さい順に、グローバル番号を#8及び#9に設定する。
管理表作成部13は、図8に示すように、識別番号設定部12の設定したグローバル番号及びローカル番号を割当管理表140に登録する。図8は、割当管理表の他の例を表す図である。
第1割当部151は、割当管理表140における使用不可フラグが「0」のスイッチ2の中から4台のスイッチ2を選択する。ここでは、第1割当部151は、スイッチSW1,SW2,SW3及びSW4を選択する。そして、第1割当部151は、選択したスイッチ2の配下のサーバ1を1台ずつ選択し、ジョブAを実行させるサーバ1とする。ここでは、第1割当部151は、グローバル番号が#2,#4,#6及び#8のサーバ1をジョブAを実行させるサーバ1と決定する。
そして、第1割当部151は、グローバル番号の昇順でジョブAの処理が行われるように、ジョブAで利用するサーバ1の順番を決定し、図9に示すホストリスト141Aを作成する。図9は、ホストリストの他の例を表す図である。その後、第1割当部151は、ホストリスト141Aにしたがって、グローバル番号が#2,#4,#6及び#8のサーバ1にジョブAの実行を指示する。
同様に、第2割当部152は、割当管理表140における使用不可フラグが「0」のスイッチ2の中から3台のスイッチ2を選択する。ここでは、第2割当部152は、スイッチSW1,SW2及びSW3を選択する。そして、第2割当部152は、選択したスイッチ2の配下のサーバ1を1台ずつ選択し、ジョブBを実行させるサーバ1とする。ここでは、第2割当部152は、グローバル番号が#3,#5及び#7のサーバ1をジョブBを実行させるサーバ1と決定する。さらに、第2割当部152は、配下の2つのサーバ1の何れにもジョブが割り当てられたスイッチ2に対して、割当管理表140の割当不可フラグを「1」に設定する。ここでは、第2割当部152は、スイッチSW1及びSW2のわいあて不可フラグを「1」に設定する。
そして、第2割当部152は、グローバル番号の降順でジョブBの処理が行われるように、ジョブBで利用するサーバ1の順番を決定し、図9に示すホストリスト141Bを作成する。その後、第2割当部152は、ホストリスト141Bにしたがって、グローバル番号が#3,#5及び#7のサーバ1にジョブBの実行を指示する。
このように、ジョブA及びジョブBが割り当てられることで、図7に示すように、ジョブAは実線矢印の方向にデータが流され、ジョブBは破線矢印の方向にデータが流される。すなわち、スイッチ2が5台の場合にも、ジョブAのデータの伝送方向と、ジョブBのデータの伝送方向とは、どのスイッチ2の間においても反対を向くため、図7のネットワークにおいて競合リンクが発生しない。
次に、図10を参照して、識別番号設定部12によるグローバル番号の割付処理の流れについて説明する。図10は、グローバル番号の割付処理のフローチャートである。ここでは、スイッチ2に対して、スイッチ番号がSW0,SW1,SW2・・・と割り当てられた場合で説明する。
識別番号設定部12は、スイッチ番号を表すiを初期化して0に設定する(ステップS101)。
次に、識別番号設定部12は、iが最大のスイッチ番号より大きいか否かを判定する(ステップS102)。ここで、iが最大のスイッチ番号より大きいとは、スイッチ番号のSWの後の数字が最大のものよりも大きい場合を指す。iがスイッチ番号より大きい場合(ステップS102:肯定)、識別番号設定部12は、グローバル番号の割付処理を終了する。
これに対して、iがスイッチ番号以下の場合(ステップS102:否定)、識別番号設定部12は、スイッチ番号がSWiのスイッチを選択する(ステップS103)。
次に、識別番号設定部12は、選択したスイッチに接続されたサーバ1にグローバル番号を付ける処理を行う(ステップS104)。
そして、識別番号設定部12は、iを1つインクリメントし(ステップS105)、ステップS102に戻る。
次に、図11を参照して、識別番号設定部12によるスイッチ2毎のサーバ1へのグローバル番号の割付処理の流れについて説明する。図11は、スイッチ毎のサーバへのグローバル番号の割付処理のフローチャートである。図11のフローチャートで表される処理は、図10のステップS104において実行される処理の一例にあたる。ここでは、識別番号設定部12が、各サーバ1にローカル番号を##1,##2,##3・・・と設定している場合で説明する。また、この場合、識別番号設定部12が、スイッチ番号がSWnのスイッチ2に接続されたサーバ1に対するグローバル番号の設定を行う場合で説明する。
識別番号設定部12は、サーバ1のローカル番号を表すjを初期化して0に設定する(ステップS141)。
次に、識別番号設定部12は、jが最大のローカル番号より大きいか否かを判定する(ステップS142)。ここで、jが最大のローカル番号より大きいとは、ローカル番号の##の後の数字が最大のものよりも大きい場合を指す。jがローカル番号より大きい場合(ステップS142:肯定)、識別番号設定部12は、対象のスイッチ2におけるグローバル番号の割付処理を終了する。
これに対して、jがローカル番号以下の場合(ステップS142:否定)、識別番号設定部12は、選択したスイッチ2のローカル番号が##jのサーバを選択する(ステップS143)。
次に、識別番号設定部12は、選択したサーバ1のグローバル番号をiとnとを乗算した値にjを加算した値(i*n+j)とする(ステップS144)。
次に、識別番号設定部12は、jを1つインクリメントし(ステップS145)、ステップS142に戻る。
次に、図12を参照して、ジョブ割当処理の全体的な流れについて説明する。図12は、ジョブ割当処理全体のフローチャートである。ここで、第1割当部151及び第2割当部152のいずれも同様の処理を行うので、ジョブ割当部15が第1割当部151及び第2割当部152の何れかの処理を行うものとして説明する。
ジョブ割当部15は、与えられたジョブがリングアルゴリズムを使用可能な集合通信を行うか否かを判定する(ステップS201)。
与えられたジョブがリングアルゴリズムを使用可能な集合通信を行う場合(ステップS201:肯定)、ジョブ割当部15は、サーバ1にジョブを割り当てるサーバ割当処理を実行する(ステップS202)。そして、ジョブ割当部15は、ジョブ割当処理を終了する。
これに対して、与えられたジョブがリングアルゴリズムを使用可能な集合通信を行わない場合(ステップS201:否定)、ジョブ割当部15は、サーバ1にジョブを割り当てるサーバ割当処理を実行する(ステップS203)。
次に、ジョブ割当部15は、ジョブを割り当てたサーバ1が接続されたスイッチ2の割当不可フラグを「1」に設定する(ステップS204)。そして、ジョブ割当部15は、ジョブ割当処理を終了する。
次に、図13を参照して、ジョブ割当部15によるリングアルゴリズムの使用可能判定処理の流れについて説明する。図13は、リングアルゴリズム使用可能判定処理のフローチャートである。図13のフローチャートで表される処理は、図12のステップS201において実行される処理の一例にあたる。
ジョブ割当部15は、ジョブを実行するためのプログラムからMPI関数名情報を取得する(ステップS211)。
次に、ジョブ割当部15は、MPI関数名情報からジョブがリングアルゴリズムを使用する集団通信にあたる所定の通信を使用するか否かを判定する(ステップS212)。この所定の通信には、例えば、MPI Allgather(v)、MPI Allreduce及びMPI Bcastなどが含まれる。
所定の通信を使用する場合(ステップS212:肯定)、ジョブ割当部15は、ジョブがリングアルゴリズムを使用可能な集合通信を行うと判定する(ステップS213)。
これに対して、所定の通信を使用しない場合(ステップS212:否定)、ジョブ割当部15は、ジョブがリングアルゴリズムを不使用の集合通信を行うと判定する(ステップS214)。
次に、図14を参照して、ジョブ割当部15によるサーバ1へのジョブの割当処理の流れについて説明する。図14は、サーバへのジョブの割当処理のフローチャートである。図14のフローチャートで表される処理は、図12のステップS202及びS203において実行される処理の一例にあたる。ここでは、1つのスイッチ2あたり2つのサーバ1が接続された場合で説明する。
ジョブ割当部15は、ジョブ情報からジョブを実行するために利用するスイッチ2の数である利用スイッチ数を算出する(ステップS221)。
次に、ジョブ割当部15は、割当管理表140において割当不可フラグの値が「0」、すなわち、割当不可フラグが未設定のスイッチ2からサーバ1を選択する(ステップS222)。
次に、ジョブ割当部15は、1つ目のジョブは割り当て済みか否かを判定する(ステップS223)。
1つ目のジョブが割り当て済みでない場合(ステップS223:否定)、ジョブ割当部15は、グローバル番号の小さい順にランク番号が増えるようにホストリスト141に登録する(ステップS224)。その後、ジョブ割当部15は、サーバ1へのジョブの割当処理を終了する。
これに対して、1つ目のジョブが割り当て済みの場合(ステップS223:肯定)、ジョブ割当部15は、グローバル番号の大きい順にランク番号が増えるようにホストリスト141に登録する(ステップS225)。
そして、ジョブ割当部15は、割当管理表140において、接続された2つのサーバ1の両方にジョブが割り当てられたスイッチ2の割当不可フララグを「1」に設定する。その後、ジョブ割当部15は、サーバ1へのジョブの割当処理を終了する(ステップS226)。
次に、図15を参照して、ジョブ終了時の処理の流れについて説明する。図15は、ジョブ終了処理のフローチャートである。
ジョブ割当部15は、ジョブの実行が終了した場合、実行が終了したジョブの情報を割当管理表140から消去する(ステップS301)。
次に、ジョブ割当部15は、そのジョブが割り当てられたサーバ1が接続するスイッチ2の割当不可フラグを「0」に設定する(ステップS302)。
以上に説明したように、本実施例に係る管理装置は、スイッチ間でグローバル番号の範囲が重ならないように配下のサーバにグローバル番号を振る。管理装置は、2つのリングアルゴリズムを用いるジョブが利用するスイッチが重複する場合、一方のジョブをグローバル番号の昇順でデータが送られるようにサーバに投入し、他方のジョブをグローバル番号の降順でデータが送られるようにサーバに投入する。これにより、フルメッシュトポロジを用いたネットワーク上で、競合リンクの発生を抑制し、システムの性能低下を軽減することができる。また、利用されないサーバの数を減少させることができ、システムの利用効率を向上させることができる。さらには、競合リンクの発生を回避できるため、ジョブの実行時間の予測を正確に行うことが可能となる。
図16は、実施例2に係る管理装置のブロック図である。本実施例に係る管理装置10は、3つのジョブをサーバ1に割り当てる。本実施例に係る管理装置10のジョブ割当部15は、第1割当部151、第2割当部152及び第3割当部153を有する。図16において図3と同じ符号を有する各部は特に説明のない限り同じ機能を有するものとする。
3つのジョブが存在する場合、第1割当部151、第2割当部152及び第3割当部153は以下の処理を行い、図17に示すようなジョブの割当を行う。図17は、3つのジョブの割当状態の一例を表す図である。
第1割当部151は、例えば、1つ目のジョブに対して枠201で囲われた3つのスイッチ2を選択する。そして、第1割当部151は、複数のサーバ1が順番に1つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が昇順となるように、選択したスイッチ2に接続するサーバ1に1つ目のジョブを割り当てる。これにより、1つめのジョブは、実線矢印の方向にデータを流す。
また、第2割当部152は、枠201と重なる枠202で囲われた3つのスイッチ2を2つ目のジョブに対して選択する。そして、第2割当部152は、複数のサーバ1が順番に1つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が降順となるように、選択したスイッチ2に接続するサーバ1に2つ目のジョブを割り当てる。これにより、2つ目のジョブは、一点鎖線矢印の方向にデータが流れる。
さらに、第3割当部153は、1つ目のジョブ及び2つ目のジョブの通信経路に含まれない枠203で囲われた4つのスイッチ2を選択する。この第3割当部153により選択されたスイッチ2が「第3演算装置」の一例にあたる。そして、第3割当部153は、複数のサーバ1が順番に3つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が昇順となるように、選択したスイッチ2に接続するサーバ1に3つ目のジョブを割り当てる。
この場合、図17に示すように、実線矢印と一点鎖線矢印とは反対方向を向く。すなわち、1つ目のジョブのデータと2つ目のジョブのデータとは反対方向に流れるため、競合リンクが発生しない。さらに、3つ目のジョブのデータは、1つ目のジョブのデータ及び2つ目のジョブのデータが流れる経路を流れないため、競合リンクは発生しない。
したがって、3つのジョブがある場合であっても、以上に説明したようにジョブを割り当てれば競合リンクの発生を抑制することができる。
(変形例)
以上では、1つのジョブに1つのジョブが重なる場合を説明したが、2つのジョブが重なる状態であれば、1つのジョブに複数のジョブが重なってもよい。図18は、3つのジョブの割当状態の他の例を表す図ある。
第1割当部151は、例えば、1つ目のジョブに対して枠201で囲われた3つのスイッチ2を選択する。そして、第1割当部151は、複数のサーバ1が順番に1つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が昇順となるように、選択したスイッチ2に接続するサーバ1に1つ目のジョブを割り当てる。これにより、1つめのジョブは、実線矢印の方向にデータを流す。
また、第2割当部152は、枠201と重なる枠202で囲われた4つのスイッチ2を2つ目のジョブに対して選択する。そして、第2割当部152は、複数のサーバ1が順番に2つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が降順となるように、選択したスイッチ2に接続するサーバ1に2つ目のジョブを割り当てる。これにより、2つ目のジョブは、一点鎖線矢印の方向にデータが流れる。
さらに、第3割当部153は、1つ目のジョブの通信経路に含まれず且つ2つ目のジョブの通信経路に含まれるスイッチ2であり、枠202と重なる枠203で囲われた4つのスイッチ2を3つ目のジョブに対して選択する。そして、第3割当部153は、複数のサーバ1が順番に3つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が昇順となるように、選択したスイッチ2に接続するサーバ1に3つ目のジョブを割り当てる。これにより、3つ目のジョブは、破線矢印の方向にデータが流れる。
この場合、図18に示すように、実線矢印と一点鎖線矢印とは反対方向を向く。すなわち、1つ目のジョブのデータと2つ目のジョブのデータとは反対方向に流れるため、競合リンクが発生しない。また、一点鎖線矢印と破線矢印とは反対方向を向く。すなわち、2つ目のジョブのデータと3つ目のジョブのデータとは反対方向に流れるため、競合リンクが発生しない。
したがって、3つのジョブがある場合であっても、以上に説明したようにジョブを割り当てれば競合リンクの発生を抑制することができる。このように、同じスイッチ2を最大2つのジョブが共有するようにスイッチ2を選択し、利用するサーバ1の順番を決定する際にグローバル番号の選び方を一方が昇順となり他方が降順となるように選択すれば、競合リンクの発生を抑制することができる。
さらに、実施例2では、3つのジョブを割り当てる場合で説明したが、4つ以上のジョブでも同様である。一例として4つのジョブの割当について説明する。図19は、4つのジョブの割当状態の一例を表す図である。4つのジョブの場合、ジョブ割当部15は、第1割当部151、第2割当部152及び第3割当部153に加えて、図示しない第4割当部を有する。ここでは、第1割当部151、第2割当部152及び第3割当部153は、上述した3つのジョブの割当の場合と同様にジョブを割り当てる。
さらに、ジョブ割当部15の第4割当部は、1つ目のジョブ及び2つ目のジョブの通信経路に含まれず、且つ、3つ目のジョブに通信経路に含まれる枠204で囲われた3つのスイッチ2を選択する。そして、第4割当部は、複数のサーバ1が順番に4つ目のジョブの処理を行っていく場合に、ジョブを行うサーバ1のグローバル番号が降順となるように、選択したスイッチ2に接続するサーバ1に4つ目のジョブを割り当てる。これにより、4つ目のジョブは、二点鎖線矢印の方向にデータが流れる。
この場合、図19に示すように、実線矢印と一点鎖線矢印とは反対方向を向く。すなわち、1つ目のジョブのデータと2つ目のジョブのデータとは反対方向に流れるため、競合リンクが発生しない。また、破線矢印と二点鎖線矢印とは反対方向を向く。すなわち、3つ目のジョブのデータと4つ目のジョブのデータとは反対方向に流れるため、競合リンクが発生しない。さらに、3つ目のジョブ及び4つ目のジョブのデータは、1つ目のジョブのデータ及び2つ目のジョブのデータが流れる経路を流れないため、それらの間で競合リンクは発生しない。
したがって、4つのジョブがある場合であっても、以上に説明したようにジョブを割り当てれば競合リンクの発生を抑制することができる。
次に、実施例3について説明する。本実施例に係る管理装置10は、多層フルメッシュトポロジを構成するネットワークにおいてリングアルゴリズムを用いた集合通信を行うジョブをサーバ1に割り当てる。
図20は、多層フルメッシュトポロジの概念図である。多層フルメッシュトポロジを用いたネットワークは、フルメッシュトポロジを用いたネットワークが多層化されたネットワークである。
ネットワーク301〜303は、多層フルメッシュトポロジの各層を形成するフルメッシュトポロジを用いたネットワークである。そして、スイッチ2は、各層のフルメッシュトポロジを用いたネットワークを構成する。スイッチ2は、リーフスイッチ(Leaf Switch)と呼ばれる場合がある。スイッチ5は、各層を接続するスイッチである。スイッチ5は、スパインスイッチ(Spine Switch)と呼ばれる場合がある。
この場合、管理装置10は、各層のネットワーク301〜303毎に、サーバ1へのジョブの割当をおこなう。この場合、管理装置10は、各層毎にジョブの割当を行うため、上記実施例と同様にジョブの割当を行うことで、異なるジョブが同じ通信経路にデータを流す場合に、データの送信方向を逆向きにすることができる。
以上に説明したように、本実施例に係る管理装置は、多層フルメッシュトポロジを用いたネットワークにおける競合リンクを軽減することができる。
また、以上では、ジョブが重なる場合に、最初に割り当てるジョブの処理をグローバル番号の昇順の各サーバ1が順番に処理を行い、次に割り当てるジョブの処理をグローバル番号の降順の各サーバ1が順番に処理を行うように設定した。しかし、一方のジョブを処理するサーバ1のグローバル番号の順番が昇順で、他方のジョブを処理するサーバ1のグローバル番号の順番が降順であればよい。すなわち、最初に割り当てるジョブの処理をグローバル番号の降順の各サーバ1が順番に処理を行い、次に割り当てるジョブの処理をグローバル番号の昇順の各サーバ1が順番に処理を行うように設定してもよい。
(ハードウェア構成)
図21は、ハードウェア構成図である。ノード90は、例えば、サーバ1及び管理装置10を実現する。
ノード90は、CPU91、メモリ92及びNIC(Network Interface Card)93を有する。ノード90により管理装置10を実現する場合、NIC93は、サーバ1との通信のための通信インタフェースとなる。
また、メモリ92は、図3及び16に例示した記憶部14の機能を実現する。さらに、メモリ92は、図3及び16に例示した情報取得部11、識別番号設定部12、管理表作成部13及びジョブ割当部15の機能を実現するためのプログラムを含む各種プログラムを格納する。
CPU91は、メモリ92から各種プログラムを読み出し、メモリ92上に展開して実行する。これにより、CPU91は、図3及び16に例示した情報取得部11、識別番号設定部12、管理表作成部13及びジョブ割当部15の機能を実現する。
1 サーバ
2 スイッチ
3 管理用ネットワーク
4 計算用ネットワーク
5 スイッチ
10 管理装置
11 情報取得部
12 識別番号設定部
13 管理表作成部
14 記憶部
15 ジョブ割当部
101 ジョブスケジューラコントローラ
102 ジョブスケジューラデーモン
103 ユーザジョブ
140 割当管理表
141 ホストリスト
151 第1割当部
152 第2割当部
153 第3割当部

Claims (7)

  1. 環状に配置された演算装置において前記環状の順番にデータを送信して処理を行うリングアルゴリズムを用いる第1ジョブを、複数の演算装置が接続された複数のスイッチのそれぞれが互いに全二重の通信経路で接続されたフルメッシュトポロジを用いたネットワークに配置された前記演算装置のうちの複数の第1演算装置に割り当てる第1割当部と、
    前記リングアルゴリズムを用いる第2ジョブを、前記第1ジョブによる処理で用いられる前記ネットワーク上の通信経路と同じ通信経路を用いる場合、前記第1ジョブがデータを送信する方向と逆方向にデータを送信するように、前記演算装置のうちの複数の第2演算装置に割り当てる第2割当部と
    を備えたことを特徴とする情報処理装置。
  2. 各前記スイッチに接続された前記演算装置に割り当てた識別番号が、前記スイッチのうちの他のスイッチに接続された演算装置に割り当てた識別番号の最大値と最小値との間に含まれないように識別番号を設定する番号設定部を備え、
    前記第1割当部は、前記第1ジョブで使用する前記第1演算装置を選択し、前記識別番号の昇順又は降順に前記第1ジョブがデータを送信するように前記第1演算装置に第1ジョブを割り当て、
    前記第2割当部は、前記第2ジョブで使用する前記第2演算装置を選択し、前記識別番号の昇順又は降順のうち前記第1ジョブのデータの送信順とは逆の順番に前記第2ジョブがデータを送信するように前記第2演算装置に前記第2ジョブを割り当てる
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1割当部は、前記第1ジョブの通信経路に使用するスイッチを選択し、選択したスイッチ毎に接続された演算装置から前記第1演算装置を選択し、
    前記第2割当部は、前記第2ジョブの通信経路に使用するスイッチを選択し、選択したスイッチ毎に接続された演算装置から前記第2演算装置を選択する
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記リングアルゴリズムを用いる第3ジョブの通信経路が前記第1ジョブ及び前記第2ジョブの双方の通信経路となっている通信経路と重複せず、且つ、前記第1ジョブの通信経路又は前記第2ジョブの通信経路の一方との重複を許してスイッチを選択し、選択したスイッチ毎に接続された演算装置から第3演算装置を選択し、前記識別番号の昇順又は降順のうち通信経路の重複を許した前記第1ジョブ又は前記第2ジョブのデータの送信順とは逆の順番に前記第3ジョブがデータを送信するように前記第3演算装置に前記第3ジョブを割り当てる第3割当部をさらに備えたことを特徴とする請求項3に記載の情報処理装置。
  5. 複数の演算装置が接続されたスイッチのそれぞれが互いに全二重の通信経路で接続されたフルメッシュトポロジを用いたネットワーク及び前記演算装置にジョブを割り当てて実行させる情報処理装置を有する情報処理システムであって、
    前記情報処理装置は、
    環状に配置された演算装置において前記環状の順番にデータを回して処理を行うリングアルゴリズムを用いる第1ジョブを、前記演算装置のうちの複数の第1演算装置に割り当てる第1割当部と、
    前記リングアルゴリズムを用いる第2ジョブを、前記第1ジョブによる処理で用いられる前記ネットワーク上の通信経路と同じ通信経路を用いる場合、前記第1ジョブがデータを送信する方向と逆方向にデータを送信するように、前記演算装置のうちの複数の第2演算装置に割り当てる第2割当部と
    を備えたことを特徴とする情報処理システム。
  6. 環状に配置された演算装置において前記環状の順番にデータを送信して処理を行うリングアルゴリズムを用いる第1ジョブを、複数の演算装置が接続されたスイッチのそれぞれが互いに全二重の通信経路で接続されたフルメッシュトポロジを用いたネットワークに配置された前記演算装置のうちの複数の第1演算装置に割り当て、
    前記リングアルゴリズムを用いる第2ジョブを、前記第1ジョブによる処理で用いられる前記ネットワーク上の通信経路と同じ通信経路を用いる場合、前記第1ジョブがデータを送信する方向と逆方向にデータを送信するように、前記演算装置のうちの複数の第2演算装置に割り当てる
    ことを特徴とする情報処理方法。
  7. 環状に配置された演算装置において前記環状の順番にデータを送信して処理を行うリングアルゴリズムを用いる第1ジョブを、複数の演算装置が接続されたスイッチのそれぞれが互いに全二重の通信経路で接続されたフルメッシュトポロジを用いたネットワークに配置された前記演算装置のうちの複数の第1演算装置に割り当て、
    前記リングアルゴリズムを用いる第2ジョブを、前記第1ジョブによる処理で用いられる前記ネットワーク上の通信経路と同じ通信経路を用いる場合、前記第1ジョブがデータを送信する方向と逆方向にデータを送信するように、前記演算装置のうちの複数の第2演算装置に割り当てる
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
JP2017136498A 2017-07-12 2017-07-12 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム Active JP6891680B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017136498A JP6891680B2 (ja) 2017-07-12 2017-07-12 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム
US16/029,140 US10896057B2 (en) 2017-07-12 2018-07-06 Job assignment apparatus, job assignment method, and network system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017136498A JP6891680B2 (ja) 2017-07-12 2017-07-12 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2019020852A JP2019020852A (ja) 2019-02-07
JP6891680B2 true JP6891680B2 (ja) 2021-06-18

Family

ID=64999518

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017136498A Active JP6891680B2 (ja) 2017-07-12 2017-07-12 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム

Country Status (2)

Country Link
US (1) US10896057B2 (ja)
JP (1) JP6891680B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109145053B (zh) * 2018-08-01 2021-03-23 创新先进技术有限公司 数据处理方法和装置、客户端、服务器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4676463B2 (ja) * 2007-07-13 2011-04-27 株式会社日立製作所 並列計算機システム
JP2012252591A (ja) * 2011-06-03 2012-12-20 Hitachi Ltd プロセス割当システム、プロセス割当方法、およびプロセス割当プログラム
GB2491915A (en) * 2011-06-08 2012-12-19 Inst Information Industry Super operating system for a heterogeneous computer system
DE102011082969B4 (de) 2011-09-19 2015-04-30 Siemens Aktiengesellschaft Verfahren zum Betreiben eines Kommunikationsnetzwerkes und Netzwerkanordnung
JP6303613B2 (ja) * 2014-03-05 2018-04-04 富士通株式会社 経路データ生成装置、経路データ生成方法及び経路データ生成プログラム
JP6176162B2 (ja) * 2014-03-19 2017-08-09 株式会社デンソー データ処理装置
JP6520344B2 (ja) * 2014-05-14 2019-05-29 富士通株式会社 並列計算機システム、並列計算機システムの制御方法、及び情報処理装置
JP6492977B2 (ja) * 2015-06-01 2019-04-03 富士通株式会社 並列演算装置、並列演算システム、ノード割当プログラム及びノード割当方法

Also Published As

Publication number Publication date
US10896057B2 (en) 2021-01-19
JP2019020852A (ja) 2019-02-07
US20190018704A1 (en) 2019-01-17

Similar Documents

Publication Publication Date Title
JP2020504552A (ja) リソース割り当てシステム、方法、およびプログラム
KR102074468B1 (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
JP2020184745A (ja) 遅延保証を備えたモニタリングに基づくエッジコンピューティングサービス
KR20160087706A (ko) 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법
US20140130059A1 (en) Lattice Computing
JP2017076967A (ja) マルチドメイン・ネットワークにおけるバーテックス中心のサービス機能チェーン形成
JP4806362B2 (ja) 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法
JP2014513852A (ja) クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散
JP6809360B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN112181585A (zh) 虚拟机的资源分配方法及装置
Wei et al. Topology-aware partial virtual cluster mapping algorithm on shared distributed infrastructures
JP2022522320A (ja) 光ネットワークを用いた再構成可能な計算ポッド
CN111443870A (zh) 一种数据处理的方法、设备及存储介质
JP6891680B2 (ja) 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム
Douglis et al. Fleet—fast lanes for expedited execution at 10 terabits: Program overview
US8892937B2 (en) Parallel computer system, control device, and controlling method
JP6459630B2 (ja) データ転送制御装置、データ転送制御プログラム、および並列計算システム
Dimolitsas et al. Time-efficient distributed virtual network embedding for round-trip delay minimization
Ergenc et al. Service-based resilience for embedded iot networks
CN115208770B (zh) 用于实现网络规划的方法、设备和计算机可读介质
JP6357807B2 (ja) タスク割当プログラム、タスク実行プログラム、マスタサーバ、スレーブサーバおよびタスク割当方法
CN110609744B (zh) 处理计算任务的方法、设备和计算机程序产品
JP6874563B2 (ja) 情報処理システム及び情報処理方法
Wu et al. Broadcasting in faulty hypercubes
JP2018074258A (ja) 情報処理装置、情報処理方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210510

R150 Certificate of patent or registration of utility model

Ref document number: 6891680

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150