JP7193733B2 - 通信制御プログラム、通信制御方法および情報処理装置 - Google Patents

通信制御プログラム、通信制御方法および情報処理装置 Download PDF

Info

Publication number
JP7193733B2
JP7193733B2 JP2019077726A JP2019077726A JP7193733B2 JP 7193733 B2 JP7193733 B2 JP 7193733B2 JP 2019077726 A JP2019077726 A JP 2019077726A JP 2019077726 A JP2019077726 A JP 2019077726A JP 7193733 B2 JP7193733 B2 JP 7193733B2
Authority
JP
Japan
Prior art keywords
communication
nodes
node
relay devices
data
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
JP2019077726A
Other languages
English (en)
Other versions
JP2020178180A (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 JP2019077726A priority Critical patent/JP7193733B2/ja
Priority to US16/827,752 priority patent/US11082325B2/en
Publication of JP2020178180A publication Critical patent/JP2020178180A/ja
Application granted granted Critical
Publication of JP7193733B2 publication Critical patent/JP7193733B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/1523Parallel switch fabric planes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/46Cluster building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は通信制御プログラム、通信制御方法および情報処理装置に関する。
複数の情報処理装置をノードとして含む並列処理システムがある。並列処理システムは、同一のジョブに属する複数のプロセスを複数のノードに割り振り、それら複数のプロセスを複数のノードにより並列に実行する。ジョブの中ではノード間で通信を行うことがある。ノード間で通信を行うユーザプログラムは、MPI(Message Passing Interface)ライブラリなどの通信ライブラリを利用して実装されることがある。ノード間の通信としては、ジョブに使用される複数のノードが一斉にデータ送信に参加するコレクティブ通信(集合通信または集団通信と言うこともある)がある。コレクティブ通信には、1つのノードから複数の他のノードに同一データをコピーするブロードキャスト通信が含まれる。
ところで、並列処理システムが多数のノードを含む場合、単一のスイッチなど単一の中継装置に全てのノードを直接接続することは難しい。そのため、複数のノードおよび複数の中継装置の接続形態を示すネットワークトポロジ(単にトポロジと言うことがある)が問題となる。1つのノードと別の1つのノードとの間の通信が、2以上の中継装置を経由することがある。並列処理システムのトポロジの選択では、ノード間の通信経路の冗長性や、中継装置の個数などのコストが考慮されることがある。
並列処理システムの1つとして、多層フルメッシュトポロジをもつ多層フルメッシュシステムが提案されている。提案の多層フルメッシュシステムは、複数のノードと複数のLeaf(葉)スイッチと複数のSpine(背骨)スイッチを含み、複数の層(レイヤ)を形成する。各ノードは何れか1つのLeafスイッチに接続され、各Leafスイッチは何れか1つの層に属し、各Spineスイッチは複数の層を貫通する。
層内では、2以上のLeafスイッチがフルメッシュトポロジにより接続されている。Leafスイッチのペア毎に、他のLeafスイッチを経由しない通信経路が存在する。ただし、Leafスイッチのペア毎に、その間に1つのSpineスイッチが配置されている。よって、層内では、1つのLeafスイッチは別の1つのLeafスイッチと、1つのSpineスイッチを経由して通信することになる。このSpineスイッチは複数の層を接続している。よって、当該1つのLeafスイッチは別の層に属する1つのLeafスイッチとも、1つのSpineスイッチを経由して通信できる。
なお、ツリー状に接続された複数の中継装置を用いて1つの送信端末から複数の受信端末にデータを配信するデータ配信システムが提案されている。提案のデータ配信システムは、各受信端末の属性情報を、ツリーの末端からルートに向かって転送することで送信端末に集約する。送信端末が属性条件を指定したパケットを出力すると、各中継装置は、属性条件に合致する受信端末が存在する方向にパケットを転送する。
特開2018-26657号公報 特開2018-185650号公報
ブロードキャスト通信のアルゴリズムには、始点ノードからコピーされたデータを受信したノードが、その後は送信元ノードとして動作することで、並列にデータを送信するノードが増加していくものがある。例えば、ブロードキャスト通信のアルゴリズムとしてBinomialTree(二項木)アルゴリズムがある。BinomialTreeアルゴリズムでは、第1フェーズにおいて、プロセス0がプロセス1にデータを送信し、第2フェーズにおいて、プロセス0がプロセス2にデータを送信すると共に、プロセス1がプロセス3にデータを送信する。これにより、送信元ノード数が2の累乗で増加する。
しかし、並列処理システムのトポロジによっては、ブロードキャスト通信において並列にデータを送信するノードが増加すると、通信が競合するリスクが高くなるという問題がある。プロセス0がプロセス2にデータを送信し、これと並列にプロセス1がプロセス3にデータを送信するにあたり、2つの通信経路が同じリンクを使用することになる場合、通信が競合し得る。通信が競合すると、パケットの送信待ちが発生する、1つのリンクの通信帯域が分割されるなどにより、通信遅延が発生して通信時間が長くなる。
例えば、前述の多層フルメッシュシステムでは、2つのLeafスイッチの間に存在する最短経路の個数は、当該2つのLeafスイッチに共通に接続されているSpineスイッチの個数に相当する。同じ層に属する2つのLeafスイッチの間にある最短経路は1つのみである。よって、1つのLeafスイッチの配下にプロセス0,1が配置され、別の1つのLeafスイッチの配下にプロセス2,3が配置されている場合、プロセス0からプロセス2への通信とプロセス1からプロセス3への通信が競合することがある。
1つの側面では、本発明は、ノード間の通信の競合を抑制できる通信制御プログラム、通信制御方法および情報処理装置を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させる通信制御プログラムが提供される。複数のノードと複数の第1の中継装置と複数の第2の中継装置とを含み、複数のノードそれぞれが複数の第1の中継装置の1つと接続され、複数の第1の中継装置それぞれが複数の第2の中継装置の一部である2以上の第2の中継装置と接続されたシステムにおいて、接続された2以上の第2の中継装置が同一でない異なる第1の中継装置に接続された異なるノードが、異なるグループに分類されるように、システムに含まれる複数のノードを複数のグループに分類する。複数のグループそれぞれから代表ノードを選択する。複数のグループに対応する複数の代表ノードの間で実行される第1のブロードキャスト通信の通信順序を、1つの代表ノードが最初の送信元ノードとして動作し、データを受信した代表ノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定する。複数のグループそれぞれについて、第1のブロードキャスト通信の後に当該グループに含まれる2以上のノードの間で実行される第2のブロードキャスト通信の通信順序を、当該グループの代表ノードが最初の送信元ノードとして動作し、データを受信したノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定する。
また、1つの態様では、コンピュータが実行する通信制御方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
1つの側面では、ノード間の通信の競合を抑制できる。
第1の実施の形態の情報処理システムの例を説明する図である。 第2の実施の形態の多層フルメッシュシステムの例を示す図である。 多層フルメッシュシステムの配線例を示す図である。 サーバのハードウェア例を示すブロック図である。 スイッチのハードウェア例を示すブロック図である。 BinomialTreeアルゴリズムの例を示すシーケンス図である。 ブロードキャスト通信の競合例を示す図である。 プロセスの配置例を示す図である。 二段階ブロードキャスト通信の例を示すシーケンス図である。 グループ間通信の競合回避例を示す図である。 グループ内通信の競合回避例を示す図である。 サーバとジョブスケジューラの機能例を示す図である。 プロセス配置テーブルの例を示す図である。 通信手順テーブルの例を示す図である。 通信手順決定の処理例を示すフローチャートである。 ブロードキャスト通信の処理例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理システムの例を説明する図である。
第1の実施の形態の情報処理システムは、並列に情報処理を行う複数のノードの間のブロードキャスト通信を制御する。ブロードキャスト通信を行う対象のシステムは、例えば、多層フルメッシュトポロジをもつ多層フルメッシュシステムである。ただし、対象のシステムは、後述する構成を備えていれば多層フルメッシュシステムでなくてもよい。
第1の実施の形態の情報処理システムは、情報処理装置10を含む。情報処理装置10は、ブロードキャスト通信を行う対象のシステムを制御するジョブスケジューラなどの制御装置でもよいし、対象のシステムに含まれるノードの1つであってもよい。
情報処理装置10は、記憶部および処理部を有する。記憶部は、RAM(Random Access Memory)などの揮発性メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、メモリに記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
ブロードキャスト通信を行う対象のシステムは、ノード11,12,13,14,15,16,17,18を含む複数のノードを有する。また、対象のシステムは、中継装置21,22,23,24,25,26,27,28を含む複数の中継装置を有する。中継装置21,22,23,24は、下位の中継装置(第1の中継装置)である。中継装置25,26,27,28は、上位の中継装置(第2の中継装置)である。中継装置21,22,23,24,25,26,27,28は、接続関係に応じてデータを転送する。
複数のノードはそれぞれ、複数の第1の中継装置のうちの1つと接続される。複数の第1の中継装置はそれぞれ、複数の第2の中継装置の一部である2以上の第2の中継装置と接続される。図1の例では、ノード11,12が中継装置21に接続され、ノード13,14が中継装置22に接続され、ノード15,16が中継装置23に接続され、ノード17,18が中継装置24に接続される。中継装置21が中継装置25,26に接続され、中継装置22が中継装置25,26に接続され、中継装置23が中継装置26,27に接続され、中継装置24が中継装置26,27に接続される。
情報処理装置10は、対象のシステム上で実行されるブロードキャスト通信について、複数のノードの間の通信順序を決定する。ブロードキャスト通信は、例えば、複数のフェーズに分割して実行される。1つのフェーズの中で、2以上のノードが並列にデータを送信することがある。ブロードキャスト通信の通信順序の決定では、例えば、各フェーズにおいて何れのノードが送信元ノードとして動作するかが決定される。
まず、情報処理装置10は、対象のシステムに含まれる複数ノードを複数のグループに分類する。このとき、情報処理装置10は、複数の第1の中継装置を、接続された2以上の第2の中継装置の同一性に基づいて複数のグループに分類する。接続された2以上の第2の中継装置が一致しない第1の中継装置を、異なるグループに振り分けるようにする。情報処理装置10は、あるグループに分類した第1の中継装置に接続されたノードを、当該グループに属するノードと判定する。1つのノードは何れか1つのグループに属する。
図1の例では、中継装置21と中継装置22は共に、上位の中継装置として中継装置25,26と接続されている。中継装置23と中継装置24は共に、上位の中継装置として中継装置26,27と接続されている。そこで、中継装置21と中継装置22は同一のグループに分類してもよい。また、中継装置23と中継装置24は同一のグループに分類してもよい。一方、中継装置21と中継装置23,24は異なるグループに分類する。また、中継装置22と中継装置23,24は異なるグループに分類する。
ここでは、情報処理装置10は、中継装置21に接続されたノード11,12および中継装置22に接続されたノード13,14を、グループ31に分類する。また、情報処理装置10は、中継装置23に接続されたノード15,16および中継装置24に接続されたノード17,18を、グループ32に分類する。ただし、ノード11,12とノード13,14を異なるグループに分類することも許容される。また、ノード15,16とノード17,18を異なるグループに分類することも許容される。
次に、情報処理装置10は、複数のグループそれぞれから代表ノードを選択する。ここでは、各グループから1つのノードが代表ノードとして選択されればよく、何らかの選択基準を予め定めておけばよい。例えば、情報処理装置10は、グループ内の2以上のノードのうち、実行するプロセスの識別番号が最小のノードを選択する。図1の例では、情報処理装置10は、グループ31からノード11を代表ノードとして選択する。また、情報処理装置10は、グループ32からノード15を代表ノードとして選択する。
次に、情報処理装置10は、複数のグループに対応する複数の代表ノードの間で実行されるブロードキャスト通信33(第1のブロードキャスト通信)の通信順序を決定する。また、情報処理装置10は、複数のグループそれぞれについて、ブロードキャスト通信33の後に当該グループに含まれる2以上のノードの間で実行されるブロードキャスト通信34(第2のブロードキャスト通信)の通信順序を決定する。
ブロードキャスト通信33とブロードキャスト通信34は、それぞれ全体のブロードキャスト通信の一部として実行され、異なる段階として区別されて実行される。ブロードキャスト通信33はグループ間通信であり、ブロードキャスト通信34はグループ内通信である。ブロードキャスト通信33では、グループ毎に1つの代表ノードのみが通信に参加する。複数のグループのブロードキャスト通信34は並列に実行してもよい。
情報処理装置10は、ブロードキャスト通信33が以下の条件を満たすように、複数のグループに対応する複数の代表ノードの間の通信順序を決定する。複数の代表ノードのうち、1つの代表ノードが最初の送信元ノードとして動作する。データ受信した代表ノードが以降は送信元ノードとして動作することで、並列にデータを送信する送信元ノードが増加する。例えば、フェーズが1つ進む毎に、並列にデータを送信する送信元ノードの数が2倍になる。ここで決定されるブロードキャスト通信33の通信順序は、BinomialTreeアルゴリズム(二項木アルゴリズム)に基づいていてもよい。
また、情報処理装置10は、ブロードキャスト通信34が以下の条件を満たすように、グループ内の2以上のノードの間の通信順序を決定する。グループ内の2以上のノードのうち、代表ノードが最初の送信元ノードとして動作する。代表ノードには、上記のブロードキャスト通信33によってデータがコピーされている。データ受信したノードが以降は送信元ノードとして動作することで、並列にデータを送信する送信元ノードが増加する。例えば、フェーズが1つ進む毎に、並列にデータを送信する送信元ノードの数が2倍になる。ここで決定されるブロードキャスト通信34の通信順序は、ブロードキャスト通信33と同様に、BinomialTreeアルゴリズムに基づくものであってもよい。
情報処理装置10は、ブロードキャスト通信33の通信順序とブロードキャスト通信34の通信順序とを結合して、全体のブロードキャスト通信の通信手順を決定する。情報処理装置10は、決定した通信手順を示す通信制御情報を生成して記憶する。情報処理装置10がノードの1つである場合、情報処理装置10は、生成した通信制御情報を参照してブロードキャスト通信を実行してもよい。情報処理装置10が制御装置である場合、情報処理装置10は、生成した通信制御情報を複数ノードに配布してもよい。
第1の実施の形態の情報処理システムによれば、接続された上位の中継装置が同一でないような異なる下位の中継装置に接続された異なるノードが、異なるグループに分類されるように、ノードがグループ分けされ、グループ毎に代表ノードが選択される。そして、全体のブロードキャスト通信が、代表ノード間のブロードキャスト通信とグループ内のブロードキャスト通信に分けて実行される。代表ノード間のブロードキャスト通信およびグループ内のブロードキャスト通信それぞれでは、並列にデータを送信する送信元ノードが段階的に増加するアルゴリズムに従って通信順序が決定される。
代表ノード間のブロードキャスト通信およびグループ内のブロードキャスト通信それぞれでは、異なるノードペアの間のデータ送信が並列に実行されるため、ブロードキャスト通信が高速化される。また、上記のグループ内通信では、下位の中継装置と上位の中継装置との間の通信経路が冗長化されているため、通信競合が抑制される。また、グループ間通信に参加するノードはグループ毎に1つであるため、グループ間の通信経路の冗長度が低い場合であっても通信競合が抑制される。従って、ブロードキャスト通信の全体を通じて通信競合を抑制でき、通信遅延を抑制して通信時間を短縮できる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の多層フルメッシュシステムの例を示す図である。
第2の実施の形態の多層フルメッシュシステムは、複数のサーバおよび複数のスイッチを含み、それら複数のサーバおよび複数のスイッチが多層フルメッシュトポロジで接続された並列処理システムである。サーバは、ユーザプログラムを実行可能なノードであり、コンピュータや情報処理装置と言うこともできる。
スイッチは、サーバ間で送信されるデータを中継する通信装置である。後述するように、スイッチはLeafスイッチとSpineスイッチとに分類される。LeafスイッチとSpineスイッチは、同様のハードウェアをもつスイッチであってもよい。第2の実施の形態では、説明を簡単にするため、スイッチのポート数が6であるとする。ただし、スイッチのポート数は、8や10や36など6より大きい偶数であってもよい。
多層フルメッシュシステムは、複数の層を形成する。各サーバは、何れか1つのLeafスイッチに接続される。各Leafスイッチは、何れか1つの層に属する。各Spineスイッチは、複数の層を貫通しており、複数の層のLeafスイッチに接続される。
層内では、複数のLeafスイッチがフルメッシュトポロジを形成する。よって、Leafスイッチのペア毎に、他のLeafスイッチを経由しない最短経路が存在する。2つのLeafスイッチの間には、複数の層を貫通するSpineスイッチが配置される。よって、同じ層に属する2つのLeafスイッチは、1つのSpineスイッチを経由する通信経路によって通信することができる。異なる層に属する2つのLeafスイッチも、1つのSpineスイッチを経由する通信経路によって通信することができる。Leafスイッチは、データをその宛先に応じて最短経路で転送するよう設定される。
ポート数が6である第2の実施の形態では、多層フルメッシュシステムは3つの層を形成する。各層は4つのLeafスイッチを含む。各Leafスイッチには、3つのサーバと3つのSpineスイッチが接続される。各Spineスイッチには、層毎に2つのLeafスイッチが接続され、3つの層の合計で6つのLeafスイッチが接続される。多層フルメッシュシステムは6つのSpineスイッチを含む。
一般に、ポート数がp(pは6以上の偶数)であるスイッチを使用すると、多層フルメッシュシステムはp/2個の層を形成する。各層はp/2+1個のLeafスイッチによってp/2+1角形を形成する。多層フルメッシュシステムは、p(p+2)/8個のサーバと3p(p+2)/8個のスイッチを含む。p=8の場合、多層フルメッシュシステムは、5角形の4層を形成し、80個のサーバと30個のスイッチを含む。p=10の場合、多層フルメッシュシステムは、6角形の5層を形成し、150個のサーバと45個のスイッチを含む。p=36の場合、多層フルメッシュシステムは、19角形の18層を形成し、6156個のサーバと513個のスイッチを含む。
第2の実施の形態の多層フルメッシュシステムは、層41,42,43を形成する。層41は、Leafスイッチ200,210,220,230を含む。Leafスイッチ200,210,220,230にはそれぞれ3つのサーバが接続される。
Leafスイッチ200とLeafスイッチ210の間にSpineスイッチ240が配置される。Leafスイッチ200とLeafスイッチ220の間にSpineスイッチ241が配置される。Leafスイッチ200とLeafスイッチ230の間にSpineスイッチ242が配置される。Leafスイッチ210とLeafスイッチ220の間にSpineスイッチ243が配置される。Leafスイッチ210とLeafスイッチ230の間にSpineスイッチ244が配置される。Leafスイッチ220とLeafスイッチ230の間にSpineスイッチ245が配置される。
層42,43も、Leafスイッチ200,210,220,230に対応するLeafスイッチを含む。Spineスイッチ240,241,242,243,244,245は、層41,42,43を貫通しており層41,42,43の間で共通である。
例えば、層42は、Leafスイッチ200,220,230に対応するLeafスイッチ201,221,231を含む。Leafスイッチ201とLeafスイッチ231の間にSpineスイッチ242が配置される。Leafスイッチ221とLeafスイッチ231の間にSpineスイッチ245が配置される。層43は、Leafスイッチ202,222,232を含む。Leafスイッチ202とLeafスイッチ232の間にSpineスイッチ242が配置される。Leafスイッチ222とLeafスイッチ232の間にSpineスイッチ245が配置される。
また、第2の実施の形態の多層フルメッシュシステムは、ジョブスケジューラ300を含む。ジョブスケジューラ300は、ユーザからジョブ要求を受け付け、ジョブに使用するサーバ(ノード)を選択するサーバ装置である。ジョブスケジューラ300は、コンピュータや情報処理装置と言うこともできる。ジョブは、ユーザプログラムから起動される複数のプロセスを含む。ユーザプログラムは、MPIライブラリなどの通信ライブラリを用いることがある。複数のプロセスには、ランクと呼ばれる非負整数の識別番号が付与される。1つのサーバには1つのプロセスが配置される。ジョブスケジューラ300は、プロセスの配置を決定し、サーバに対してプロセス配置に関する情報を通知する。
ジョブスケジューラ300とサーバとの間の通信には、上記のLeafスイッチやSpineスイッチを含むデータ用ネットワークを使用してもよいし、データ用ネットワークとは異なる管理用ネットワークを使用してもよい。
図3は、多層フルメッシュシステムの配線例を示す図である。
図3は、図2の多層フルメッシュシステムに含まれるサーバとLeafスイッチとSpineスイッチの間の配線を、図2とは異なる形式で表現したものである。
多層フルメッシュシステムは、Spineスイッチ240,241,242,243,244,245(SpineスイッチA,B,C,D,E,F)を含む。
また、多層フルメッシュシステムは、Leafスイッチ200,201,202(Leafスイッチa1,a2,a3)を含む。Leafスイッチ200,201,202はそれぞれ、Spineスイッチ240,241,242の3つのSpineスイッチに接続されている。Leafスイッチ200には、サーバ100,101,102が接続されている。Leafスイッチ201には、サーバ103,104,105が接続されている。Leafスイッチ202には、サーバ106,107,108が接続されている。
また、多層フルメッシュシステムは、Leafスイッチ210,211,212(Leafスイッチb1,b2,b3)を含む。Leafスイッチ210,211,212はそれぞれ、Spineスイッチ240,243,244の3つのSpineスイッチに接続されている。Leafスイッチ210には、サーバ110,111,112が接続されている。Leafスイッチ211には、サーバ113,114,115が接続されている。Leafスイッチ212には、サーバ116,117,118が接続されている。
また、多層フルメッシュシステムは、Leafスイッチ220,221,222(Leafスイッチc1,c2,c3)を含む。Leafスイッチ220,221,222はそれぞれ、Spineスイッチ241,243,245の3つのSpineスイッチに接続されている。Leafスイッチ220には、サーバ120,121,122が接続されている。Leafスイッチ221には、サーバ123,124,125が接続されている。Leafスイッチ222には、サーバ126,127,128が接続されている。
また、多層フルメッシュシステムは、Leafスイッチ230,231,232(Leafスイッチd1,d2,d3)を含む。Leafスイッチ230,231,232はそれぞれ、Spineスイッチ242,244,245の3つのSpineスイッチに接続されている。Leafスイッチ230には、サーバ130,131,132が接続されている。Leafスイッチ231には、サーバ133,134,135が接続されている。Leafスイッチ232には、サーバ136,137,138が接続されている。
このように、各Leafスイッチには、上位スイッチとして3つのSpineスイッチが接続されている。層41,42,43の間の対応する位置にあるLeafスイッチは、同一のSpineスイッチに接続されている。第2の実施の形態では、接続されている3つのSpineスイッチが全て同一であるLeafスイッチおよびその配下のサーバを、「層間グループ」または単に「グループ」と言うことがある。
Leafスイッチ200,201,202およびその配下のサーバ100,101,102,103,104,105,106,107,108は、1つのグループ(グループa)を形成する。Leafスイッチ210,211,212およびその配下のサーバ110,111,112,113,114,115,116,117,118は、1つのグループ(グループb)を形成する。Leafスイッチ220,221,222およびその配下のサーバ120,121,122,123,124,125,126,127,128は、1つのグループ(グループc)を形成する。Leafスイッチ230,231,232およびその配下のサーバ130,131,132,133,134,135,136,137,138は、1つのグループ(グループd)を形成する。
図4は、サーバのハードウェア例を示すブロック図である。
サーバ100は、CPU151、RAM152、HDD153、画像インタフェース154、入力インタフェース155、媒体リーダ156およびHCA(Host Channel Adapter)157を有する。上記ユニットはバスに接続されている。他のサーバやジョブスケジューラ300も、サーバ100と同様のハードウェアを有する。
CPU151は、プログラムの命令を実行するプロセッサである。CPU151は、HDD153に記憶されたプログラムやデータの少なくとも一部をRAM152にロードし、プログラムを実行する。なお、CPU151は複数のプロセッサコアを備えてもよく、サーバ100は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM152は、CPU151が実行するプログラムやCPU151が演算に使用するデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ100は、RAM以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
HDD153は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。なお、サーバ100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。
画像インタフェース154は、CPU151からの命令に従って、サーバ100に接続された表示装置161に画像を出力する。表示装置161として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。また、サーバ100に、プリンタなど表示装置161以外の出力デバイスが接続されてもよい。
入力インタフェース155は、サーバ100に接続された入力デバイス162から入力信号を受け付ける。入力デバイス162として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。また、サーバ100に複数種類の入力デバイスが接続されてもよい。
媒体リーダ156は、記録媒体163に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体163として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ156は、例えば、記録媒体163から読み取ったプログラムやデータを、RAM152やHDD153などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU151によって実行される。なお、記録媒体163は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体163やHDD153を、コンピュータ読み取り可能な記録媒体と言うことがある。
HCA157は、InfiniBandの通信インタフェースである。HCA157は、全二重通信が可能であり、データの送信と受信を並列に行える。HCA157は、Leafスイッチ200に接続される。ただし、サーバ100は、HCA157に代えてまたはHCA157に加えて、他の通信規格の通信インタフェースを有してもよい。
図5は、スイッチのハードウェア例を示すブロック図である。
Leafスイッチ200は、CPU251、RAM252、ROM253および通信ポート254,255,256,257,258,259を有する。他のLeafスイッチやSpineスイッチも、Leafスイッチ200と同様のハードウェアを有する。
CPU251は、通信制御プログラムを実行するプロセッサである。CPU251は、通信制御プログラムに従い、受信されたパケットをその宛先に応じた通信ポートに出力する。CPU251は、ROM253に記憶された通信制御プログラムの少なくとも一部をRAM252にロードし、通信制御プログラムを実行する。ただし、通信制御の少なくとも一部を、専用のハードウェア回路を用いて実装することもできる。
RAM252は、CPU251が実行する通信制御プログラムや通信制御に使用するデータを一時的に記憶する揮発性の半導体メモリである。データには、パケットの宛先と出力先の通信ポートとを対応付けたルーティング情報が含まれる。ROM253は、通信制御プログラムを記憶する不揮発性ストレージである。ただし、Leafスイッチ200は、フラッシュメモリなど書き換え可能な不揮発性ストレージを備えてもよい。
通信ポート254,255,256,257,258,259は、InfiniBandの通信インタフェースである。通信ポート254,255,256,257,258,259は、全二重通信が可能であり、データの送信と受信を並列に行える。通信ポート254は、サーバ100に接続される。通信ポート255は、サーバ101に接続される。通信ポート256は、サーバ102に接続される。通信ポート257は、Spineスイッチ241に接続される。通信ポート258は、Spineスイッチ242に接続される。通信ポート259は、Spineスイッチ243に接続される。ただし、Leafスイッチ200は、通信ポート254,255,256,257,258,259に代えてまたは通信ポート254,255,256,257,258,259に加えて、他の通信規格の通信インタフェースを有してもよい。
次に、多層フルメッシュシステム上のブロードキャスト通信について説明する。
同一のジョブに属する複数のプロセスは、それら複数のプロセスが一斉にデータ送信に参加するコレクティブ通信を行うことがある。ユーザプログラムがMPIライブラリのコレクティブ通信の命令を呼び出すことで、一斉のデータ送信を開始できる。コレクティブ通信の1つの種類として、ブロードキャスト通信がある。ブロードキャスト通信では、ランク0のプロセスなど特定のプロセスがもつデータを、他の全てのプロセスにコピーする。1ノード1プロセスを仮定すると、ブロードキャスト通信は、あるサーバ(ノード)から他の全てのサーバ(ノード)にデータをコピーするものであると言える。ブロードキャスト通信のアルゴリズムの1つに、BinomialTreeアルゴリズムがある。
図6は、BinomialTreeアルゴリズムの例を示すシーケンス図である。
ここでは、サーバ110がランク0のプロセスを実行し、サーバ111がランク1のプロセスを実行し、サーバ120がランク2のプロセスを実行し、サーバ121がランク3のプロセスを実行するものとする。また、サーバ130がランク4のプロセスを実行し、サーバ131がランク5のプロセスを実行し、サーバ100がランク6のプロセスを実行し、サーバ101がランク7のプロセスを実行するものとする。また、ランク0のプロセスがランク1,2,3,4,5,6,7のプロセスに同一データを渡すことを考える。
BinomialTreeアルゴリズムでは、あるフェーズでデータを受信したサーバが、次以降のフェーズではデータの送信元として動作する。これにより、同一データを保持しているサーバが2の累乗の速度で増加する。
フェーズt1では、サーバ110がサーバ111にデータを送信する(S10)。これにより、サーバ110,111が同一データを保持する。フェーズt2では、サーバ110がサーバ120にデータを送信し(S11)、これと並列にサーバ111がサーバ121にデータを送信する(S12)。これにより、サーバ110,111,120,121が同一データを保持する。フェーズt3では、サーバ110がサーバ130にデータを送信し(S13)、これと並列にサーバ111がサーバ131にデータを送信する(S14)。更に、これと並列にサーバ120がサーバ100にデータを送信し(S15)、これと並列にサーバ121がサーバ101にデータを送信する(S16)。
BinomialTreeアルゴリズムのフェーズ数は、ブロードキャスト通信に参加するプロセスの数をNとすると、O(logN)である。具体的には、フェーズ数nは、2n-1<N≦2を満たす自然数である。例えば、プロセス数N=8の場合は通信フェーズ数n=3である。プロセス数N=36の場合はフェーズ数n=6である。プロセス数N=80の場合はフェーズ数n=7である。
ただし、単純なBinomialTreeアルゴリズムでは、フェーズの進行に伴ってデータ通信の並列度が増加する。よって、プロセスの配置状況によっては、データ通信が競合するリスクが高くなる。同じフェーズにおいて2つのデータ通信が同じリンクを同じ方向に使用する場合、データ通信が競合している(衝突している)と言える。データ通信が競合すると、パケットの送信待ちが発生する、1つのリンクの通信帯域が分割されるなどにより、通信遅延が発生して通信時間が長くなるおそれがある。
図7は、ブロードキャスト通信の競合例を示す図である。
前述のフェーズt2では、サーバ110がサーバ120にデータを送信し、サーバ111がサーバ121にデータを送信する。サーバ110からサーバ120への最短経路と、サーバ111からサーバ121への最短経路は共に、Leafスイッチ210、Spineスイッチ243、Leafスイッチ220を順に経由するものであり、競合している。
また、フェーズt3では、サーバ110がサーバ130にデータを送信し、サーバ111がサーバ131にデータを送信する。サーバ110からサーバ130への最短経路と、サーバ111からサーバ131への最短経路は共に、Leafスイッチ210、Spineスイッチ244、Leafスイッチ230を順に経由するものであり、競合している。
また、フェーズt3では、サーバ120がサーバ100にデータを送信し、サーバ121がサーバ101にデータを送信する。サーバ120からサーバ100への最短経路と、サーバ121からサーバ101への最短経路は共に、Leafスイッチ220、Spineスイッチ241、Leafスイッチ200を順に経由するものであり、競合している。
そこで、第2の実施の形態の多層フルメッシュシステムは、通信競合が生じないようにブロードキャスト通信の手順を規定する。具体的には、各グループから1つの代表プロセスを選択し、選択した代表プロセスの間でBinomialTreeアルゴリズムを実行する。そして、各グループの代表プロセスにデータがコピーされた後、グループの内部で代表プロセスを始点とするBinomialTreeアルゴリズムを実行する。以下、第2の実施の形態のブロードキャスト通信の手順を説明する。
図8は、プロセスの配置例を示す図である。
第2の実施の形態のブロードキャスト通信の手順を説明するにあたり、36個のサーバのうちの32個のサーバに、32個のプロセスを配置することを考える。4つのグループそれぞれに、32個のプロセスのうちの8個のプロセスが配置される。
グループaのサーバ100,101,102,103,104,105,106,107に、ランク0,4,8,12,16,20,24,28のプロセスが配置される。グループbのサーバ110,111,112,113,114,115,116,117に、ランク1,5,9,13,17,21,25,29のプロセスが配置される。グループcのサーバ120,121,122,123,124,125,126,127に、ランク2,6,10,14,18,22,26,30のプロセスが配置される。グループdのサーバ130,131,132,133,134,135,136,137に、ランク3,7,11,15,19,23,27,31のプロセスが配置される。
図9は、二段階ブロードキャスト通信の例を示すシーケンス図である。
まず、グループa,b,c,dそれぞれから代表プロセスが選択される。代表プロセスは、例えば、グループ内で最もランクが小さいプロセスである。ここでは、グループaからランク0のプロセスが選択され、グループbからランク1のプロセスが選択され、グループcからランク2のプロセスが選択され、グループdからランク3のプロセスが選択される。ただし、代表プロセスを他の基準で選択してもよい。また、ここでは4つのプロセスが同一の層に配置されているが、異なる層に配置されたプロセスが混在してもよい。
代表プロセスが選択されると、まず代表プロセスの間でBinomialTreeアルゴリズムが実行される。ランク0のプロセスのデータをブロードキャストする場合、フェーズt1では、サーバ100がサーバ110にデータを送信する(S20)。フェーズt2では、サーバ100がサーバ120にデータを送信し(S21)、これと並列にサーバ110がサーバ130にデータを送信する(S22)。これにより、代表プロセスが配置されたサーバ100,110,120,130が同一データを保持する。
代表プロセスの間のデータコピーが完了すると、グループa,b,c,dそれぞれの内部でBinomialTreeアルゴリズムが実行される。ここでは、グループaの通信手順を説明する。グループaと並列にグループb,c,dでも同様の通信が行われる。
フェーズt3では、サーバ100がサーバ101にデータを送信する(S23)。フェーズt4では、サーバ100がサーバ102にデータを送信し(S24)、これと並列にサーバ101がサーバ103にデータを送信する(S25)。フェーズt5では、サーバ100がサーバ104にデータを送信し(S26)、これと並列にサーバ101がサーバ105にデータを送信する(S27)。更に、これと並列にサーバ102がサーバ106にデータを送信し(S28)、これと並列にサーバ103がサーバ107にデータを送信する(S29)。これにより、グループaに属するサーバ100,101,102,103,104,105,106,107が同一データを保持する。
次に、グループ間通信とグループ内通信の通信経路を説明する。
図10は、グループ間通信の競合回避例を示す図である。
上記のフェーズt1のステップS20では、サーバ100から、Leafスイッチ200とSpineスイッチ240とLeafスイッチ210を経由して、サーバ110にデータが送信される。上記のフェーズt2のステップS21では、サーバ100から、Leafスイッチ200とSpineスイッチ241とLeafスイッチ220を経由して、サーバ120にデータが送信される。また、上記のフェーズt2のステップS22では、サーバ110から、Leafスイッチ210とSpineスイッチ244とLeafスイッチ230を経由して、サーバ130にデータが送信される。
このように、各グループから代表プロセスを選択し、代表プロセスが配置されたサーバのみが通信を行うようにすると、グループ間通信において競合が生じない。これは、異なるグループに属するLeafスイッチの間にはフルメッシュの通信経路が存在するためである。フルメッシュの通信経路が存在することから、グループaとグループcの間の通信経路は、グループbとグループdの間の通信経路とリンクを共有しない。代表プロセスの配置されたサーバが異なる層に跨がっていても同様である。
図11は、グループ内通信の競合回避例を示す図である。
上記のフェーズt3のステップS23では、サーバ100から、Leafスイッチ200を経由してサーバ101にデータが送信される。
上記のフェーズt4のステップS24では、サーバ100から、Leafスイッチ200を経由してサーバ102にデータが送信される。上記のフェーズt4のステップS25では、サーバ101から、Leafスイッチ200とSpineスイッチ240とLeafスイッチ201を経由して、サーバ103にデータが送信される。
上記のフェーズt5のステップS26では、サーバ100から、Leafスイッチ200とSpineスイッチ241とLeafスイッチ201を経由して、サーバ104にデータが送信される。上記のフェーズt5のステップS27では、サーバ101から、Leafスイッチ200とSpineスイッチ242とLeafスイッチ201を経由して、サーバ105にデータが送信される。上記のフェーズt5のステップS28では、サーバ102から、Leafスイッチ200とSpineスイッチ240とLeafスイッチ202を経由して、サーバ106にデータが送信される。上記のフェーズt5のステップS29では、サーバ103から、Leafスイッチ201とSpineスイッチ241とLeafスイッチ202を経由して、サーバ107にデータが送信される。
なお、図11はグループaの内部のデータ通信を表しているが、グループb,c,dの内部のデータ通信も同様である。ただし、グループbは、上位スイッチとしてSpineスイッチ240,243,244を使用する。グループcは、上位スイッチとしてSpineスイッチ241,243,245を使用する。グループdは、上位スイッチとしてSpineスイッチ242,244,245を使用する。
このように、グループ内通信では競合が生じない。これは、グループ内ネットワークがFatTreeトポロジに相当するためである。FatTreeトポロジは、Treeトポロジに含まれる上位の通信装置を多重化することで、異なる下位の通信装置の間の通信経路を多重化し、トラフィックの混雑を軽減するネットワークトポロジである。
第2の実施の形態の多層フルメッシュシステムでは、3つのLeafスイッチそれぞれがもつSpineスイッチ側のリンクは3本であり、サーバ側のリンクと同数である。また、1つのLeafスイッチから別の1つのLeafスイッチに到達する通信経路は3つある。3つのLeafスイッチと3つのSpineスイッチの間には合計で9つの通信経路が存在することになり、3つのLeafスイッチに接続されたサーバと同数である。よって、1つのサーバに対してLeafスイッチとSpineスイッチの間の1つの通信経路を割り当てれば、9つのサーバは競合なしにデータ通信を行うことができる。
次に、サーバとジョブスケジューラの機能について説明する。
図12は、サーバとジョブスケジューラの機能例を示す図である。
サーバ100は、通信手順決定部171、通信手順記憶部172およびブロードキャスト実行部173を有する。通信手順記憶部172は、例えば、RAM152またはHDD153の記憶領域を用いて実現される。通信手順決定部171およびブロードキャスト実行部173は、例えば、CPU151が実行するプログラムを用いて実現される。他のサーバもサーバ100と同様のモジュールを有する。
通信手順決定部171は、ジョブスケジューラ300から、ジョブに属する複数のプロセスの配置を示すプロセス配置情報を受信する。プロセス配置情報は、例えば、プロセスのランクとプロセスが配置されたサーバを識別するノードIDとを対応付ける。通信手順決定部171は、受信したプロセス配置情報に基づいて、ブロードキャスト通信における複数のプロセスの間の通信手順を決定する。通信手順決定部171は、決定した通信手順を示す通信手順情報を生成し、通信手順記憶部172に格納する。
ブロードキャスト通信の通信手順は、MPIライブラリなどの通信ライブラリの初期化時に決定される。通信ライブラリを使用するユーザプログラムが複数のサーバに配置され、それら複数のサーバでユーザプログラムが起動されると、通信ライブラリが初期化される。通信ライブラリの初期化時には、サーバ間で通信が行われることがある。通信手順の決定に使用するプロセス配置情報を、ジョブスケジューラ300から受信する代わりに、サーバ間の通信によって収集するようにしてもよい。また、ブロードキャスト通信の通信手順を、通信ライブラリの初期化時に行う代わりに、ブロードキャスト通信を初めてユーザプログラムから要求されたときに行うようにしてもよい。
ここで決定される通信手順は、ランク0のプロセスを始点とするブロードキャスト通信の通信手順である。ランク0のプロセス以外のプロセスがもつデータをブロードキャストする場合、ランク0のプロセスにデータを渡せばよい。ただし、ランク0のプロセス以外のプロセスを始点とするブロードキャスト通信の通信手順を決定することも可能である。また、通信手順決定部171が生成する通信手順情報は、ジョブに含まれる全てのプロセスの間の通信手順を示す。複数のサーバは、同一のプロセス配置情報と同一のブロードキャスト通信アルゴリズムを使用すれば、同一の通信手順情報を生成することになる。ただし、生成する通信手順情報を、サーバ100の通信手順のみを示すようにしてもよい。
通信手順記憶部172は、通信手順決定部171が生成した通信手順情報を記憶する。通信手順情報は、ブロードキャスト通信の各フェーズにおいて、データを送信する際の送信先プロセスのランクと、データを受信する際の送信元プロセスのランクとを示す。
ブロードキャスト実行部173は、ブロードキャスト通信を開始する命令をユーザプログラムが呼び出すと、通信手順記憶部172に記憶された通信手順情報に基づいてブロードキャスト通信を実行する。ブロードキャスト実行部173は、通信手順情報が示す複数のフェーズを1つずつ実行する。あるフェーズで送信元プロセスが指定されている場合、ブロードキャスト実行部173は、送信元プロセスからデータを受信する。あるフェーズで送信先プロセスが指定されている場合、ブロードキャスト実行部173は、保持しているデータをコピーして送信先プロセスに送信する。
データ送信では、ブロードキャスト実行部173は、送信先プロセスが配置されたサーバのアドレスとデータ本体とを含むパケットを生成し、HCA157を介してLeafスイッチ200にパケットを出力する。各プロセスが配置されたサーバのアドレスは、通信ライブラリの初期化時に把握される。
ジョブスケジューラ300は、プロセス配置決定部371を有する。プロセス配置決定部371は、例えば、CPUが実行するプログラムを用いて実現される。
プロセス配置決定部371は、ユーザからジョブ要求を受け付け、受け付けたジョブ要求に応じてジョブに含まれる複数のプロセスの配置を決定する。起動するプロセスの数は、ユーザからのジョブ要求で指定される。プロセス配置決定部371は、例えば、同一のジョブに属する複数のプロセスが、できる限りグループa,b,c,dに均等に配置されるようにプロセス配置を決定する。プロセス配置決定部371は、決定したプロセス配置を示すプロセス配置情報を、ジョブで使用する複数のサーバに送信する。
図13は、プロセス配置テーブルの例を示す図である。
プロセス配置テーブル174は、通信手順決定部171がジョブスケジューラ300から受信するプロセス配置情報を示す。プロセス配置テーブル174は、ランクとノードIDとを対応付ける。ランクは、ジョブに含まれる複数のプロセスを識別する非負整数の識別番号である。ノードIDは、プロセスが配置されたサーバを識別する識別子である。ノードIDが、パケットの宛先を示す通信アドレスを兼ねてもよい。
図14は、通信手順テーブルの例を示す図である。
送信手順テーブル175および受信手順テーブル176は、通信手順決定部171により生成されて通信手順記憶部172に格納される。
送信手順テーブル175は、フェーズとランクの組に対して、当該フェーズで当該ランクのプロセスがデータを送信する際の送信先プロセスのランクが登録される。送信先プロセスが存在しない場合、すなわち、当該フェーズで当該ランクのプロセスがデータを送信しない場合、「-1」などランクに使用されない所定の数値が登録される。例えば、フェーズt1でランク0のプロセスがランク1のプロセスにデータを送信する場合、フェーズt1とランク0の組に対して「1」が登録される。
受信手順テーブル176は、フェーズとランクの組に対して、当該フェーズで当該ランクのプロセスがデータを受信する際の送信元プロセスのランクが登録される。送信元プロセスが存在しない場合、すなわち、当該フェーズで当該ランクのプロセスがデータを受信しない場合、「-1」などランクに使用されない所定の数値が登録される。例えば、フェーズt1でランク1のプロセスがランク0のプロセスからデータを受信する場合、フェーズt1とランク1の組に対して「0」が登録される。
ブロードキャスト通信を行う場合、各サーバは、送信手順テーブル175および受信手順テーブル176から、当該サーバに配置されたプロセスのランクに対応する行を読み出し、読み出した行に含まれる数値を左側から右側に向かって順に参照すればよい。
次に、サーバ100の処理手順について説明する。
図15は、通信手順決定の処理例を示すフローチャートである。
(S30)通信手順決定部171は、ジョブに含まれる複数のプロセスそれぞれが配置されたサーバ(ノード)を特定し、特定したサーバが属するグループを判定する。各グループは、接続されているSpineスイッチが同一である複数のLeafスイッチおよびそれらLeafスイッチに接続された複数のサーバによって形成される。
第2の実施の形態の多層フルメッシュシステムは、グループa,b,c,dを含む。図2の例では、グループaは、層41,42,43それぞれの四角形の左上に位置するLeafスイッチおよびサーバを含む。グループbは、層41,42,43それぞれの四角形の左下に位置するLeafスイッチおよびサーバを含む。グループcは、層41,42,43それぞれの四角形の右下に位置するLeafスイッチおよびサーバを含む。グループdは、層41,42,43それぞれの四角形の右上に位置するLeafスイッチおよびサーバを含む。なお、通信手順決定部171は、多層フルメッシュシステムのトポロジ、すなわち、多層フルメッシュシステムに含まれるグループの定義を予め知っている。
(S31)通信手順決定部171は、ジョブに含まれる複数のプロセスが単一グループに閉じているか、すなわち、ブロードキャスト通信に参加する複数のサーバが全て同一のグループに属するか判断する。単一グループに閉じている場合はステップS35に進み、単一グループに閉じていない場合はステップS32に進む。
(S32)通信手順決定部171は、グループ毎に当該グループに配置されたプロセスの中から、ランクが最小のプロセスを代表プロセスとして選択する。なお、代表プロセスはグループ毎に1つに決まればよく、他の基準によって代表プロセスを選択してもよい。ただし、ランク0のプロセスのように、始点となるプロセスが選択されるようにする。
(S33)通信手順決定部171は、ステップS32で選択された複数のグループに対応する複数の代表プロセスを、ランクの昇順(小さい順)にソートする。なお、ここでは複数の代表プロセスが一定の順に並べばよく、ランクの昇順でなくてもよい。ただし、ランク0のプロセスのように、始点となるプロセスが先頭になるようにする。
(S34)通信手順決定部171は、ソートした複数の代表プロセスの間でBinomialTreeを生成する。ランクの昇順に代表プロセスがソートされている場合、BinomialTreeアルゴリズムでは、ランクの小さい代表プロセスから優先的にデータを受信することになる。データを受信済みの代表プロセスは2の累乗で増加する。通信手順決定部171は、BinomialTreeに従い、全ての代表プロセスがデータのコピーを受信するまでの代表プロセス間の通信手順を決定する。
(S35)通信手順決定部171は、ジョブに使用される1以上のグループそれぞれについて、当該グループに配置されたプロセスをランクの昇順(小さい順)にソートする。なお、ここではグループ内のプロセスが一定の順に並べばよく、ランクの昇順でなくてもよい。ただし、ステップS32で選択された代表プロセスが先頭になるようにする。
(S36)通信手順決定部171は、1以上のグループそれぞれについて、当該グループ内のソート済みのプロセスの間でBinomialTreeを生成する。ランクの昇順にプロセスがソートされている場合、代表プロセスから開始して、ランクの小さいプロセスから優先的にデータを受信することになる。データを受信済みのプロセスは2の累乗で増加する。通信手順決定部171は、BinomialTreeに従い、グループ内の全てのプロセスがデータのコピーを受信するまでのプロセス間の通信手順を決定する。
(S37)通信手順決定部171は、ステップS34で決定したグループ間の通信手順の後ろに、ステップS36で決定したグループ内の通信手順を結合し、始点のプロセスがもつデータを全てのプロセスにコピーするまでの全体の通信手順を決定する。通信手順決定部171は、決定した全体の通信手順に基づいて、送信手順テーブル175および受信手順テーブル176を生成し、通信手順記憶部172に格納する。
図16は、ブロードキャスト通信の処理例を示すフローチャートである。
(S40)ブロードキャスト実行部173は、ユーザプログラムからブロードキャスト通信が指示されると、送信手順テーブル175と受信手順テーブル176を取得する。
(S41)ブロードキャスト実行部173は、未実行のフェーズのうちフェーズ番号の小さい方から優先的に次のフェーズを選択する。最初はフェーズt1が選択される。
(S42)ブロードキャスト実行部173は、受信手順テーブル176から、ステップS41で選択したフェーズとサーバ100に配置されたプロセスのランクとの組に対応する数値を読み出す。ブロードキャスト実行部173は、読み出した数値が送信元ランクを表しているか、すなわち、該当する送信元ランクが受信手順テーブル176に登録されているか判断する。読み出した数値が「-1」である場合、送信元ランクが登録されていないことになる。送信元ランクが登録されている場合はステップS43に進み、送信元ランクが登録されていない場合はステップS44に進む。
(S43)ブロードキャスト実行部173は、送信元ランクが示す相手プロセスからデータを受信できるように待機し、データを受信する。例えば、ブロードキャスト実行部173は、相手プロセスに対応する受信バッファを定期的に確認し、受信バッファにデータが到着している場合には到着したデータを取り出す。データ受信は、以下のステップS44,S45と並列に実行でき、ステップS46までに実行されればよい。ブロードキャスト実行部173は、受信したデータを保持しておく。
(S44)ブロードキャスト実行部173は、送信手順テーブル175から、ステップS41で選択したフェーズとサーバ100に配置されたプロセスのランクとの組に対応する数値を読み出す。ブロードキャスト実行部173は、読み出した数値が送信先ランクを表しているか、すなわち、該当する送信先ランクが送信手順テーブル175に登録されているか判断する。読み出した数値が「-1」である場合、送信先ランクが登録されていないことになる。送信先ランクが登録されている場合はステップS45に進み、送信先ランクが登録されていない場合はステップS46に進む。
(S45)ブロードキャスト実行部173は、保持しているデータのコピーを、送信先ランクが示す相手プロセスに送信する。送信データはパケットに分割され、各パケットには相手プロセスが配置されたサーバのアドレスが付加される。保持しているデータは、サーバ100に配置されたプロセスが始点プロセスである場合はオリジナルデータであり、始点プロセスでない場合は前フェーズまでに他のサーバから受信したデータである。
(S46)ブロードキャスト実行部173は、送信手順テーブル175や受信手順テーブル176に規定された全フェーズを実行したか判断する。全フェーズを実行した場合はブロードキャスト通信を終了し、未実行のフェーズがある場合はステップS41に戻る。
ここで、第2の実施の形態のブロードキャスト通信のフェーズ数について説明する。単純なBinomialTreeアルゴリズムのフェーズ数は、36プロセスの場合は6フェーズであり、80プロセスの場合は7フェーズである。一方、第2の実施の形態では、36プロセスの場合、グループ間通信の最小フェーズ数が2フェーズであり、グループ内通信の最小フェーズ数が4フェーズであるため、合計で6フェーズである。80プロセスの場合、グループ間通信の最小フェーズ数が3フェーズであり、グループ内通信の最小フェーズ数が4フェーズであるため、合計で7フェーズである。
グループ間のプロセス数の偏りが小さければ、第2の実施の形態のブロードキャスト通信は、単純なBinomialTreeアルゴリズムのフェーズ数と同一かまたはそれに近いフェーズ数で実行できる。ブロードキャスト通信の効率の観点から、ジョブスケジューラ300は、複数のグループにできる限り均等にプロセスを配置することが好ましい。
なお、第2の実施の形態では、接続されているSpineスイッチが同一である複数のLeafスイッチおよびそれら複数のLeafスイッチの配下のサーバから、1つのグループを形成した。これに対して、1つのLeafスイッチおよび当該Leafスイッチの配下のサーバから、1つのグループを形成することもできる。
この場合、Leafスイッチ毎に1つの代表プロセスが選択される。グループ間通信については、複数のLeafスイッチに対応する複数の代表プロセスの間で1つのBinomialTreeが形成される。グループ内通信については、各Leafスイッチの配下にある複数のプロセスの間で1つのBinomialTreeが形成される。例えば、図2,3の多層フルメッシュシステムでは12個のグループが形成される。このようにサーバをグループ化しても、複数のLeafスイッチの間のグループ間通信では通信競合が生じない。また、Leafスイッチ配下のグループ内通信でも通信競合が生じない。
また、第2の実施の形態では二段階でブロードキャスト通信を行ったが、グループを階層化して三段階でブロードキャスト通信を行ってもよい。接続されているSpineスイッチが同一である複数のLeafスイッチおよびそれら複数のLeafスイッチの配下のサーバから、1つの大グループを形成する。また、1つのLeafスイッチおよび当該Leafスイッチの配下のサーバから、1つの小グループを形成する。
この場合、大グループ毎に上位代表プロセスが選択され、更にLeafスイッチ毎に下位代表プロセスが選択される。第1段階として、複数の大グループに対応する複数の上位代表プロセスの間で1つのBinomialTreeが形成される。第2段階として、複数のLeafスイッチに対応する複数の下位代表プロセスの間で1つのBinomialTreeが形成される。第3段階として、各Leafスイッチの配下にある複数のプロセスの間で1つのBinomialTreeが形成される。例えば、図2,3の多層フルメッシュシステムでは、4個の大グループと12個の小グループが形成される。サーバが多い場合、このようにLeafスイッチ単位でグループを形成することも有用である。
第2の実施の形態の多層フルメッシュシステムによれば、多層フルメッシュトポロジが採用される。多層フルメッシュトポロジでは、単純なTreeトポロジと比べて上位の通信装置が冗長化され、下位の通信装置の間の通信経路が冗長化される。よって、トラフィックの混雑を抑制することができる。また、単純なFatTreeトポロジと比べて通信装置の個数を削減でき、システム構築コストを削減できる。また、第2の実施の形態の多層フルメッシュシステムによれば、BinomialTreeに従い、データをコピー済みのノードがフェーズ数に対して2の累乗で増加するようにブロードキャスト通信が実行される。よって、ブロードキャスト通信を高速に実行できる。
また、接続されているSpineスイッチの集合が同一であるLeafスイッチおよびその配下のノードがグループ化され、各グループから代表ノードが選択される。そして、代表ノード間のデータ送信が優先的に実行され、代表ノードを始点とするグループ内のデータ送信がその後に実行される。ここで、複数のグループの間にはフルメッシュの通信経路が存在するため、通信に参加するノードがグループ毎に1つであれば、複数のノードが並列通信を行っても通信競合は生じない。また、グループ内のネットワークトポロジはFatTreeに相当するため、グループ内のノード同士の閉じた通信であれば、複数のノードが並列通信を行っても通信競合は生じない。よって、通信競合を抑制でき、通信遅延を抑制してブロードキャスト通信の所要時間を短縮できる。
10 情報処理装置
11,12,13,14,15,16,17,18 ノード
21,22,23,24,25,26,27,28 中継装置
31,32 グループ
33,34 ブロードキャスト通信

Claims (6)

  1. コンピュータに、
    複数のノードと複数の第1の中継装置と複数の第2の中継装置とを含み、前記複数のノードそれぞれが前記複数の第1の中継装置の1つと接続され、前記複数の第1の中継装置それぞれが前記複数の第2の中継装置の一部である2以上の第2の中継装置と接続されたシステムにおいて、接続された前記2以上の第2の中継装置が同一でない異なる第1の中継装置に接続された異なるノードが、異なるグループに分類されるように、前記システムに含まれる前記複数のノードを複数のグループに分類し、
    前記複数のグループそれぞれから代表ノードを選択し、
    前記複数のグループに対応する複数の代表ノードの間で実行される第1のブロードキャスト通信の通信順序を、1つの代表ノードが最初の送信元ノードとして動作し、データを受信した代表ノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定し、
    前記複数のグループそれぞれについて、前記第1のブロードキャスト通信の後に当該グループに含まれる2以上のノードの間で実行される第2のブロードキャスト通信の通信順序を、当該グループの代表ノードが最初の送信元ノードとして動作し、データを受信したノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定する、
    処理を実行させる通信制御プログラム。
  2. 前記複数のノードの分類では、接続された前記2以上の第2の中継装置が同一である異なる第1の中継装置に接続された異なるノードを、同じグループに分類する、
    請求項1記載の通信制御プログラム。
  3. 前記複数のグループそれぞれの代表ノードは、当該グループに含まれる前記2以上のノードのうち、配置されたプロセスの識別番号が最小のノードである、
    請求項1記載の通信制御プログラム。
  4. 前記第1のブロードキャスト通信および前記第2のブロードキャスト通信では、2以上の送信元ノードが異なるノードに並列にデータを送信するフェーズを繰り返すことで、データを受信済みであるノードの数をフェーズ毎に2倍にする、
    請求項1記載の通信制御プログラム。
  5. コンピュータが、
    複数のノードと複数の第1の中継装置と複数の第2の中継装置とを含み、前記複数のノードそれぞれが前記複数の第1の中継装置の1つと接続され、前記複数の第1の中継装置それぞれが前記複数の第2の中継装置の一部である2以上の第2の中継装置と接続されたシステムにおいて、接続された前記2以上の第2の中継装置が同一でない異なる第1の中継装置に接続された異なるノードが、異なるグループに分類されるように、前記システムに含まれる前記複数のノードを複数のグループに分類し、
    前記複数のグループそれぞれから代表ノードを選択し、
    前記複数のグループに対応する複数の代表ノードの間で実行される第1のブロードキャスト通信の通信順序を、1つの代表ノードが最初の送信元ノードとして動作し、データを受信した代表ノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定し、
    前記複数のグループそれぞれについて、前記第1のブロードキャスト通信の後に当該グループに含まれる2以上のノードの間で実行される第2のブロードキャスト通信の通信順序を、当該グループの代表ノードが最初の送信元ノードとして動作し、データを受信したノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定する、
    通信制御方法。
  6. 複数のノードと複数の第1の中継装置と複数の第2の中継装置とを含み、前記複数のノードそれぞれが前記複数の第1の中継装置の1つと接続され、前記複数の第1の中継装置それぞれが前記複数の第2の中継装置の一部である2以上の第2の中継装置と接続されたシステムにおいて、前記複数のノードの間のブロードキャスト通信の通信順序を示す通信制御データを記憶する記憶部と、
    前記ブロードキャスト通信の通信順序を決定する処理部と、
    を有し、前記処理部は、
    接続された前記2以上の第2の中継装置が同一でない異なる第1の中継装置に接続された異なるノードが、異なるグループに分類されるように、前記システムに含まれる前記複数のノードを複数のグループに分類し、
    前記複数のグループそれぞれから代表ノードを選択し、
    前記複数のグループに対応する複数の代表ノードの間で実行される第1のブロードキャスト通信の通信順序を、1つの代表ノードが最初の送信元ノードとして動作し、データを受信した代表ノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定し、
    前記複数のグループそれぞれについて、前記第1のブロードキャスト通信の後に当該グループに含まれる2以上のノードの間で実行される第2のブロードキャスト通信の通信順序を、当該グループの代表ノードが最初の送信元ノードとして動作し、データを受信したノードが送信元ノードに加わることで並列にデータを送信する送信元ノードが増加するように決定する、
    情報処理装置。
JP2019077726A 2019-04-16 2019-04-16 通信制御プログラム、通信制御方法および情報処理装置 Active JP7193733B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019077726A JP7193733B2 (ja) 2019-04-16 2019-04-16 通信制御プログラム、通信制御方法および情報処理装置
US16/827,752 US11082325B2 (en) 2019-04-16 2020-03-24 Communication control method and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019077726A JP7193733B2 (ja) 2019-04-16 2019-04-16 通信制御プログラム、通信制御方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2020178180A JP2020178180A (ja) 2020-10-29
JP7193733B2 true JP7193733B2 (ja) 2022-12-21

Family

ID=72832074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019077726A Active JP7193733B2 (ja) 2019-04-16 2019-04-16 通信制御プログラム、通信制御方法および情報処理装置

Country Status (2)

Country Link
US (1) US11082325B2 (ja)
JP (1) JP7193733B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113285833B (zh) * 2021-05-26 2023-03-31 北京百度网讯科技有限公司 用于获取信息的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009519504A (ja) 2005-11-17 2009-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 対称型マルチプロセッシング・クラスタ環境におけるプロセス間の通信
JP2009193255A (ja) 2008-02-13 2009-08-27 Fujitsu Ltd 集団通信最適化プログラム、集団通信最適化装置および集団通信最適化方法
US20140156890A1 (en) 2012-12-03 2014-06-05 Industry-Academic Cooperation Foundation, Yonsei University Method of performing collective communication and collective communication system using the same
US20150160965A1 (en) 2013-12-05 2015-06-11 International Business Machines Corporation Constructing A Logical Tree Topology In A Parallel Computer
JP2018185650A (ja) 2017-04-26 2018-11-22 富士通株式会社 情報処理装置、情報処理方法及びプログラム
JP2020512638A (ja) 2017-03-24 2020-04-23 オラクル・インターナショナル・コーポレイション 高性能コンピューティング環境においてサブネットアドミニストレータアクセスの必要性を低減するために同種のファブリック属性を提供するシステムおよび方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095600B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US20110149731A1 (en) * 2009-12-17 2011-06-23 Gong Michelle X Device, system and method of scheduling communications with a group of wireless communication units
GB2505229B (en) * 2012-08-23 2019-10-16 Metaswitch Networks Ltd Upgrading nodes
TWI481245B (zh) * 2012-12-19 2015-04-11 Motech Ind Inc 通訊網路的子裝置的位址設定方法
US10051054B2 (en) * 2013-03-15 2018-08-14 Oracle International Corporation System and method for efficient virtualization in lossless interconnection networks
CN107547418B (zh) * 2016-06-29 2019-07-23 华为技术有限公司 一种拥塞控制方法和装置
JP6603631B2 (ja) 2016-08-09 2019-11-06 日本電信電話株式会社 データ配信システム、および、データ転送装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009519504A (ja) 2005-11-17 2009-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 対称型マルチプロセッシング・クラスタ環境におけるプロセス間の通信
JP2009193255A (ja) 2008-02-13 2009-08-27 Fujitsu Ltd 集団通信最適化プログラム、集団通信最適化装置および集団通信最適化方法
US20140156890A1 (en) 2012-12-03 2014-06-05 Industry-Academic Cooperation Foundation, Yonsei University Method of performing collective communication and collective communication system using the same
US20150160965A1 (en) 2013-12-05 2015-06-11 International Business Machines Corporation Constructing A Logical Tree Topology In A Parallel Computer
JP2020512638A (ja) 2017-03-24 2020-04-23 オラクル・インターナショナル・コーポレイション 高性能コンピューティング環境においてサブネットアドミニストレータアクセスの必要性を低減するために同種のファブリック属性を提供するシステムおよび方法
JP2018185650A (ja) 2017-04-26 2018-11-22 富士通株式会社 情報処理装置、情報処理方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
千葉 立寛 ほか,グリッド環境におけるマルチレーンを用いたMPIコレクティブ通信アルゴリズム MPI Collective Operations Algorithm by Using Multi-lane for Grid Environment,情報処理学会論文誌 第48巻 No.SIG8(ACS18) IPSJ,日本,社団法人情報処理学会 Information Processing Society of Japan,2007年05月15日,第48巻,pp. 104-113

Also Published As

Publication number Publication date
US11082325B2 (en) 2021-08-03
US20200336404A1 (en) 2020-10-22
JP2020178180A (ja) 2020-10-29

Similar Documents

Publication Publication Date Title
US8868963B2 (en) Dynamically configurable placement engine
US8234435B2 (en) Relay device
US5898826A (en) Method and apparatus for deadlock-free routing around an unusable routing component in an N-dimensional network
EP2564561B1 (en) Method for routing data packets in a fat tree network
US8499222B2 (en) Supporting distributed key-based processes
US9917884B2 (en) File transmission method, apparatus, and distributed cluster file system
US20050117562A1 (en) Method and apparatus for distributing traffic over multiple switched fibre channel routes
US10893111B1 (en) Developing and implementing migration sequences in data communication networks
CN105122730A (zh) 用于快速链路故障处理的系统和方法
US20130144931A1 (en) Candidate set solver with user advice
JP2007065751A (ja) ストレージシステム及び記憶制御方法
WO2019056771A1 (zh) 分布式存储系统升级管理的方法、装置及分布式存储系统
US20130145034A1 (en) Agile hostpool allocator
JP2022522320A (ja) 光ネットワークを用いた再構成可能な計算ポッド
JP7193733B2 (ja) 通信制御プログラム、通信制御方法および情報処理装置
US9246792B2 (en) Providing point to point communications among compute nodes in a global combining network of a parallel computer
CN106104503A (zh) 使用统一api对用于转发的服务器和架构编程以用于细粒度网络优化
JP6459630B2 (ja) データ転送制御装置、データ転送制御プログラム、および並列計算システム
US10104202B2 (en) Collectively loading programs in a multiple program multiple data environment
JP6874563B2 (ja) 情報処理システム及び情報処理方法
JP7193734B2 (ja) 通信制御プログラム、通信制御方法および情報処理装置
US11656920B2 (en) Information processing apparatus and computer-readable storage medium storing parallel computing program
US10193790B2 (en) Systems and methods for an intelligent, distributed, autonomous, and scalable resource discovery, management, and stitching
CN108924066B (zh) 报文转发方法和装置
JP6915434B2 (ja) 情報処理システム、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221031

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: 20221108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221121

R150 Certificate of patent or registration of utility model

Ref document number: 7193733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150