JPWO2012127625A1 - 並列計算機、通信制御装置および通信制御方法 - Google Patents

並列計算機、通信制御装置および通信制御方法 Download PDF

Info

Publication number
JPWO2012127625A1
JPWO2012127625A1 JP2013505695A JP2013505695A JPWO2012127625A1 JP WO2012127625 A1 JPWO2012127625 A1 JP WO2012127625A1 JP 2013505695 A JP2013505695 A JP 2013505695A JP 2013505695 A JP2013505695 A JP 2013505695A JP WO2012127625 A1 JPWO2012127625 A1 JP WO2012127625A1
Authority
JP
Japan
Prior art keywords
node
packet
communication
nodes
destination node
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.)
Granted
Application number
JP2013505695A
Other languages
English (en)
Other versions
JP5655934B2 (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
Publication of JPWO2012127625A1 publication Critical patent/JPWO2012127625A1/ja
Application granted granted Critical
Publication of JP5655934B2 publication Critical patent/JP5655934B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions

Landscapes

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

Abstract

演算処理を行う複数のノードを有し、ノード間を互いに通信可能に接続する並列計算機のノードに、ノード間の通信形態に基づいて、各宛先ノードまでの通信帯域幅を計測する計測手段と、計測手段が計測した通信帯域幅にしたがって、宛先ノードに送出するパケットサイズを制御する制御手段と、を備える。

Description

本発明は、並列計算機、通信制御装置および通信制御方法に関する。
従来、演算処理を行う複数のノードを備える並列計算機が知られている。並列計算機に備わる各ノードは、複数の通信機器、例えば、スイッチなどを含むネットワークを介して接続され、互いにデータ通信を行う。
図1は、並列計算機100の構成例について示す図である。
図1に示す並列計算機100は、計算を行うノードN0〜N7と、受信したデータを特定の送信先のノードに転送するスイッチ110〜117と、を備える。スイッチ110〜117は、スイッチを直線上に配置した1次元のメッシュ型ネットワークを構成する。
スイッチは、ノードや他のスイッチが接続されている入力ポートからパケットを受信すると、受信したパケットの宛先に応じて、パケットを出力する出力ポートを決定する。そして、スイッチは、決定した出力ポートにパケットを出力する。
同じ出力ポートに出力するパケットを複数受信した場合、スイッチは、各入力ポートから出力ポートに出力するパケットの数が均等になるように調停を行う。そして、スイッチは、調停結果にしたがって出力ポートからパケットを送信する。
上記技術に関連して、宛先までの転送回数であるホップ数に応じたパケットサイズを決定して送信データをより小さいサイズのパケットに断片化するフラグメント化を行う送信ノードと、ホップ数に応じた優先制御によってパケットを送信する中継ノードと、を含む無線マルチホップネットワークが知られている。
また、通信が完了したパケットの長さに基づいて次のパケットの長さを定めることにより、常に効率のよい通信を行う無線データ通信方法が知られている。
特開2003−273788号公報 特開2001−326648号公報
上述の並列計算機100において、集団通信を行って一部のスイッチに通信が集中すると、通信が集中したスイッチまでのホップ数が大きいノードほど通信帯域幅が大きく下がる。この場合、ホップ数が小さいノードからのデータに比べて、ホップ数の大きいノードからの宛先ノードへのデータの到着が遅延する。
図2は、ノードN0〜N6がノードN7に対してデータを送信する集団通信の例を示している。
スイッチは、各入力ポートに入力されるパケットの、出力ポートへの出力数が均等、つまり1/2ずつになるように、入力するパケットの調停を行う。したがって、ノードN6からスイッチ116に送信され、かつ、スイッチ116からスイッチ117に送信されるパケット数は、スイッチ116からスイッチ117に送信される全パケット数の1/2となる。
図2では、ノードN7に送信されるパケット数、すなわち、スイッチ117に送信されるパケット数に対して、任意のノードが送信するパケット数の比率を「パケット数比」とする。この場合、ノードN6におけるパケット数比は1/2となる。
また、スイッチ115からスイッチ116に送信され、かつ、スイッチ116からスイッチ117に送信されるパケット数は、スイッチ116からスイッチ117に送信される全パケット数の1/2となる。そして、ノードN5からスイッチ115に送信され、かつ、スイッチ115からスイッチ116に送信されるパケット数は、スイッチ115からスイッチ116に送信される全パケット数の1/2となる。したがって、ノードN5におけるパケット数比は1/4となる。
同様に、ノードN4、N3、N2およびN1のパケット数比は、それぞれ1/8、1/16、1/32および1/64となる。また、スイッチ110は、ノードN0から送信されたパケットだけをスイッチ111に送信するので、ノードN0のパケット数比は、ノードN1と同じく1/64となる。
ここで、集団通信の送信元である各ノードが送信するパケットのサイズの比率を「パケットサイズ比」とする。図2に示す集団通信では、全てのノードが同一のサイズのパケットを出力するので、ノードN6、N5、N4、N3、N2、N1およびN0におけるパケットサイズ比は1:1:1:1:1:1:1となる。
また、通信帯域幅全体に対する、送信元のノードがパケットを送信するために使用する通信帯域幅、の比率を「通信帯域幅比」とする。全てのノードが同一のサイズのパケットを出力する場合、各ノードにおけるパケット数比がそのまま通信帯域幅比となるので、ノードN6、N5、N4、N3、N2、N1およびN0における通信帯域幅比は全体を1とすると、それぞれ1/2、1/4、1/8、1/16、1/32、1/64および1/64となる。
図2に示した集団通信の例では、宛先ノードN7から遠いノードN0やN1の通信帯域幅が大きく下がってしまうことになる。全てのノードの通信が完了しなければ、集団通信は完了しない。そのため、宛先ノードN7に近いノードN6から宛先ノードN7へのデータに比べて、ノードN0やN1からの宛先ノードN7へのデータの到着が遅延する。この場合、宛先ノードN7から遠いノードN0やN1の通信帯域幅がボトルネックとなる。ホップ数の大きいノードからの宛先ノードへのデータの到着が遅くなる。
また、集団通信以外の通信であっても、一部のスイッチに通信が集中すると、通信が集中したスイッチまでの転送回数であるホップ数が大きいノードの通信帯域幅は大きく下がる。
図3は、並列計算機100において、集団通信以外の通信で一部のノードの通信帯域幅が大きく下がる場合の例を示す図である。図3は、ノードN0、N1、N2およびN3が、それぞれ4ホップ離れたノードと同時に通信を行う場合を示している。なお、通信経路の理解を容易にするために、図3では、各ノード間の通信経路を、各々矢印を含む実線で記載しているが、並列計算機100の構成は図1と同様である。
ノードN3からスイッチ113に送信されて、かつ、スイッチ113からスイッチ114に送信されるパケット数は、スイッチ113からスイッチ114に出力される全パケット数の1/2となる。
図3では、スイッチ113に送信されるパケット数に対して、任意のノードが送信するパケット数の比率を「パケット数比」とする。この場合、ノードN3におけるパケット数比は1/2となる。
また、スイッチ112からスイッチ113に送信され、かつ、スイッチ113からスイッチ114に送信されるパケット数は、スイッチ113からスイッチ114に送信されるパケット数の1/2となる。そして、ノードN2からスイッチ112に送信され、かつ、スイッチ112からスイッチ113に送信されるパケット数は、スイッチ112からスイッチ113に送信されるパケット数の1/2となる。したがって、ノードN2におけるパケット数比は1/4となる。
同様に、ノードN1のパケット数比は1/8となる。また、スイッチ110は、ノードN0から送信されたパケットだけをスイッチ111に送信するので、ノードN0のパケット数比は、ノードN1と同じく1/8となる。
ノードN0〜N3が同一のサイズのパケットを出力する場合、ノードN0、N1、N2およびN3の各々におけるパケットサイズ比は1:1:1:1となる。この場合、パケット数比がそのまま通信帯域幅比となるので、ノードN0、N1、N2およびN3における通信帯域幅比は全体を1とすると、それぞれ1/2、1/4、1/8および1/8となる。
図3に示した通信の例では、他のノードの通信帯域幅と比べて、ノードN0やN1の通信帯域幅が大きく下がってしまう。この場合、例えば、ノードN0やN1の通信完了に依存した処理を行う他のノードは、通信が集中するスイッチ114までのホップ数が大きいノードであるノードN0やN1の通信が完了しなければ、通信が完了しない。そのため、ノードN0やN1の通信帯域幅がボルトネックとなる。
なお、図1〜図3では、スイッチを直線上に配置した1次元のメッシュ型ネットワークの場合について説明したが、多次元のメッシュ型ネットワークの場合も同様の問題が生じる。また、上述した問題は、並列計算機100が、メッシュ型ネットワーク以外のネットワーク形態を有する場合でも生じる。
図4は、トーラス型ネットワークのネットワーク形態を有する並列計算機400の構成例を示す図である。
図4に示す並列計算機400は、計算を行うノードN0〜N7と、受信したデータを特定の送信先に転送するスイッチ410〜417と、を備える。スイッチ410〜417は、リング状のトーラス型ネットワークを構成する。
図4では、ノードN4は、スイッチ414、415、416および417を含む経路を介して、ノードN7と通信を行う。ノードN5は、スイッチ415、416および417を含む経路を介して、ノードN7と通信を行う。ノードN6は、スイッチ416および417を含む経路を介して、ノードN7と通信を行う。また、ノードN0は、スイッチ413、412、411、410および417を含む経路を介して、ノードN7と通信を行う。ノードN0は、スイッチ413、412、411、410および417を含む経路を介して、ノードN7と通信を行う。ノードN1は、スイッチ412、411、410および417を含む経路を介して、ノードN7と通信を行う。ノードN3は、スイッチ411、410および417を含む経路を介して、ノードN7と通信を行う。ノードN4は、スイッチ410および417を含む経路を介して、ノードN7と通信を行う。
スイッチ416からスイッチ417に送信され、かつ、スイッチ417からノードN7に送信されるパケット数は、スイッチ417からノードN7に送信されるパケット数の1/2となる。また、ノードN6からスイッチ416に送信され、かつ、スイッチ416からスイッチ417に送信されるパケット数は、スイッチ416からスイッチ417に送信されるパケット数の1/2となる。
図4では、ノードN7に送信されるパケット数に対して、任意のノードが送信するパケット数の比率を「パケット数比」とする。この場合、ノードN6におけるパケット数比は1/4となる。
また、スイッチ415からスイッチ416に送信され、かつ、スイッチ416からスイッチ117に送信されるパケット数は、スイッチ416からスイッチ417に送信されるパケット数の1/2となる。そして、ノードN5からスイッチ415に送信され、かつ、スイッチ415からスイッチ416に送信されるパケット数は、スイッチ415からスイッチ416に送信されるパケット数の1/2となる。この場合、ノードN5におけるパケット数比は1/8となる。
スイッチ414は、ノードN4から入力されたパケットだけをスイッチ415に出力するので、ノードN4におけるパケット数比は、ノードN5と同じく1/8となる。
同様に、ノードN0、N1、N2およびN3についてのパケット数比は、それぞれ1/4、1/8、1/16および1/16となる。
ノードN0〜N6が同一のサイズのパケットを出力する場合、ノードN0〜N6におけるパケットサイズ比は1:1:1:1:1:1:1となる。この場合、パケット数比がそのまま通信帯域幅比となるので、ノードN0、N1、N2、N3、N4、N5およびN6における通信帯域幅比は、それぞれ1/4、1/8、1/16、1/16、1/8、1/8および1/4となる。
図4に示した集団通信の例では、他のノードの通信帯域幅と比べて、ノードN7までのホップ数が大きいノードであるノードN2やN3の通信帯域幅が大きく下がってしまう。全てのノードの通信が完了しなければ、集団通信は完了しないので、ノードN2やN3の通信帯域幅がボトルネックとなる。ホップ数の大きいノードからの宛先ノードへのデータの到着が遅くなる。
なお、図4では、ノード間をリング状に接続したトーラス型ネットワークの場合について説明したが、多次元のトーラス型ネットワークの場合についても同様の問題が生じる。
図5は、ネットワーク形態がファットツリー型である場合の並列計算機500の構成例を示す図である。
図5に示す並列計算機500は、計算を行うノードN0〜N7と、受信したデータを特定の送信先に転送するスイッチ510〜514と、を備える。スイッチ510〜514は、ファットツリー型に接続されている。ここで、ファットツリー型とは、上位階層のスイッチから各ノードが接続される下位階層のスイッチまで、対称にスイッチ間の接続が分岐するように接続したツリー型の接続形態である。
図5では、ノードN0〜N6が、ノードN7に対してデータを送信する集団通信の例を示している。
ノードN6からスイッチ514に送信され、かつ、スイッチ514からノードN7に送信されるパケット数は、スイッチ514からノードN7に送信されるパケット数の1/2となる。
図5では、ノードN7に送信されるパケット数に対して、任意のノードが送信するパケット数、の比率を「パケット数比」とする。この場合、ノードN6におけるパケット数比は1/2となる。
スイッチ510は、スイッチ511、512および513から送信されるパケットを、スイッチ514に送信する。したがって、例えば、スイッチ513からスイッチ510に送信され、かつ、スイッチ510からスイッチ514に送信されるパケット数は、スイッチ510からスイッチ514に送信される全パケット数の1/3となる。
また、スイッチ513は、ノードN4およびノードN5から送信されるパケットを、スイッチ510に送信する。したがって、ノードN4からスイッチ513に送信され、かつ、スイッチ513からスイッチ510に送信されるパケット数は、スイッチ513からスイッチ510に送信される全パケット数の1/2となる。同様に、ノードN5からスイッチ513に送信され、かつ、スイッチ513からスイッチ510に送信されるパケット数は、スイッチ513からスイッチ510に送信される全パケット数の1/2となる。したがって、ノードN4およびN5におけるパケット数比は、それぞれ1/12となる。
ノードN0〜N6が同一のサイズのパケットを出力する場合、ノードN0〜N6におけるパケットサイズ比はそれぞれ1となる。この場合、パケット数比がそのまま通信帯域幅比となるので、ノードN0、N1、N2、N3、N4、N5およびN6における通信帯域幅比は、それぞれ1/12、1/12、1/12、1/12、1/12、1/12および1/2となる。
図5に示した集団通信の例では、ノードN6の通信帯域幅と比べて、ノードN0〜N5の通信帯域幅が大きく下がってしまう。そのため、ノードN0〜N5の通信帯域幅がボトルネックとなる。ホップ数の大きいノードからの宛先ノードへのデータの到着が遅くなる。
以上に説明したように、集団通信など一部のスイッチに通信が集中すると、通信が集中したスイッチへのホップ数が大きいノードの通信帯域幅が大きく下がってしまうため、ホップ数の大きいノードからの宛先ノードへのデータの到着が遅くなる。そのため、ホップ数の大小によって、宛先ノードへのデータの到着時間に偏りが生じる。
本並列計算機は、1つの側面では、宛先ノードへのデータの到着時間を均一化したノード間通信を行うことを目的とする。
本並列計算機の1つの観点によれば、本並列計算機は、以下の構成要素を備える。
本並列計算機は、演算処理を行う複数のノードを有し、該ノード間を互いに通信可能に接続する情報処理装置である。
そして、前記ノードに、計測手段と、制御手段と、を備える。前記計測手段は、前記ノード間の通信形態に基づいて、各宛先ノードまでの通信帯域幅を計測する。また、前記制御手段は、前記計測手段が計測した通信帯域幅にしたがって、宛先ノードに送出するパケットサイズを制御する。
本並列計算機の1つの態様によると、宛先ノードへのデータの到着時間を均一化したノード間通信を行うことができる。
並列計算機の構成例について示す図である。 図1に示した並列計算機において、ノードN0〜N6がノードN7に対してデータを送信する集団通信の例を示す図である。 図1に示した並列計算機において、集団通信以外の通信で一部のノードの通信帯域幅が大きく下がる場合の例を示す図である。 トーラス型ネットワークのネットワーク形態を有する並列計算機の構成例を示す図である。 ネットワーク形態がファットツリー型である場合の並列計算機の構成例を示す図である。 並列計算機600を説明する図である。 並列計算機700の構成例を示す図である。 並列計算機700に含まれるノードの概要を説明する図である。 図8に示したノードの具体的な構成例を示す図である。 並列計算機700のパケット送信処理を示すフローチャートである。 図10に示したステップS1003の具体的な処理を示すフローチャートである。 図9に示したノードの変形例を示す図である。 図12で説明したノードを使用した並列計算機700のパケット送信処理を示すフローチャートである。 図13に示したステップS1303の具体的な処理を示すフローチャートである。 図9に示したノードのその他の変形例を示す図である。 図15で説明したノードを使用した並列計算機700のパケット送信処理を示すフローチャートである。 図9に示したノードのその他の変形例を示す図である。 図17で説明したノードを使用した並列計算機700で使用するスイッチの構成例を示す図である。 図17で説明したノードおよび図18で説明したスイッチを使用した並列計算機700のパケット送信処理を示すフローチャートである。 その他の実施例に係る並列計算機2000に含まれるノードの概要を説明する図である。 図20に示したノードの具体的な構成例を示す図である。 図21で説明したノードを使用した並列計算機2000のパケット送信処理を示すフローチャートである。 図22に示したステップS2206の具体的な処理を示すフローチャートである。 その他の実施例に係る並列計算機2400に含まれるノードおよびスイッチの概要を説明する図である。 図24に示したスイッチの具体的な構成例を示す図である。 図25に示したスイッチに備わる記憶部に記憶する待ち時間テーブルの例を示す図である。 図25に示したスイッチの処理を示すフローチャートである。 図24に示したプロセッサによるパケットサイズの決定処理を示すフローチャートである。 図24に示したノードの変形例を示す図である。 図29に示したノードの具体的な構成例を示す図である。 図30に示したスイッチの記憶部に記憶される待ち時間テーブルの例を示す図である。 図30で説明したノードを使用した並列計算機2400におけるパケット送信処理を示すフローチャートである。 図32に示したステップS3203の具体的な処理を示すフローチャートである。 並列計算機600、700、2000、2400におけるノード間通信で使用するパケットの例を示す図である。 並列計算機700との対比に使用する並列計算機3500を示す図である。 図35に示した並列計算機3500の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。 並列計算機700において、ノード710〜713が、ノード715または716に対して、Gather通信を行う場合の例を示す図である。 図37に示した並列計算機700の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。 図35に示した並列計算機3500の各ノードがメッセージを分割することなく宛先ノードに送信する場合に、各スイッチ間を宛先ノードの方向に流れるパケットを示すタイムチャートである。 図35に示した並列計算機3500のノード3510〜3512が、それぞれ4ホップ離れた宛先ノードと通信を行う場合の例を示す図である。 図40に示した並列計算機3500の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。 並列計算機700において、ノード710〜712が、それぞれ4ホップ離れた宛先ノードと通信を行っている場合の例を示す図である。 図42に示した並列計算機700の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。 図40に示した並列計算機3500の各ノードがストア・アンド・フォワード方式で動作する場合における、各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。 図42に示した並列計算機700の各ノードがストア・アンド・フォワード方式で動作する場合における、各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。
以下、本実施形態の一例について、図6〜図45に基づいて説明する。なお、以下に説明する実施形態はあくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図ではない。すなわち、本実施形態は、その趣旨を逸脱しない範囲で、各実施例を組み合わせるなど種々変形して実施することができる。
図6は、本実施例に係る並列計算機600を説明する図である。
並列計算機600は、ノード610、620、・・・を備える。各ノードは、互いに通信可能に接続している。ノード610、620、・・・は、同様の構成なので、以下では、代表してノード610について説明する。
ノード610は、任意の演算処理を行う演算装置等の情報処理装置である。ノード610は、一般的な情報処理装置に備わる構成要素、例えば、プロセッサや主記憶装置などを備える。
そして、ノード610は、計測手段611と、制御手段612と、を備える。
計測手段611は、自ノードと通信の宛先ノード間の通信形態に基づいて、自ノードと当該宛先ノード間の送信パケットの転送回数であるホップ数を計測する。通信形態とは、ノード610、620、・・・が互いに通信可能に接続することで実現されるネットワークの形態、自ノードと通信を行う宛先ノード間の通信距離または通信距離を表わす情報、例えば、送信元ノードから宛先ノードまでに送信パケットが経由する転送手段の数であるホップ数などを含むことができる。転送手段とは、ノード610、620、・・・を互いに通信可能に接続してネットワークを実現するために、ノード間に介在してデータまたはパケットを転送する通信機器、例えば、スイッチやルータなどである。転送手段は、例えば、パケットが入力される複数の入力ポートと、入力されたパケットを出力する出力パケットと、を備える。そして、転送手段は、同じ出力ポートに出力するパケットを複数受信した場合、各入力ポートから出力ポートに出力するパケットの数が均等になるように調停を行うことができる。転送手段は、調停結果にしたがって出力ポートからパケットを送信する。
制御手段612は、計測手段611の計測結果にしたがって、宛先ノードに対する自ノードからのパケット到着時間と、宛先ノードに対する他ノードからのパケット到着時間を均一化するように、当該宛先ノードとの通信に使用するパケットサイズを制御する。例えば、計測手段611が計測した自ノード610と宛先ノード620間の送信パケットのホップ数が大きい場合、制御手段612は、当該宛先ノード620に送信するパケットのサイズを大きくする。
例えば、転送手段では、各入力ポートから出力ポートに出力するパケットの数が均等になるように調停されて宛先ノードにパケットが転送される。この場合、ホップ数の小さいノードから宛先ノードに転送されるパケット数に比べて、ホップ数の大きいノードから宛先ノードに転送されるパケット数の比率が低下する。そして、宛先ノードまでのホップ数の小さいノードが使用できる通信帯域幅に比べて、宛先ノードまでのホップ数の大きいノードが使用できる通信帯域幅の比率が低下する。
しかし、上述のように、ノード610、620、・・・は、宛先ノードとの通信距離であるホップ数に基づいて、宛先ノード毎に通信に使用するパケットサイズを制御する。例えば、ノード610、620、・・・は、宛先ノードまでのホップ数が大きい場合、宛先ノードに送信するパケットのサイズを大きくする。これにより、ホップ数の小さいノードで使用できる通信帯域幅と、ホップ数の大きいノードで使用できる通信帯域幅と、の比率を均等にすることができる。その結果、ノード610、620、・・・は、宛先ノードに対する自ノードからのパケット到着時間と、宛先ノードに対する他ノードからのパケット到着時間を均一化したノード間通信を行うことが可能となる。
(その他の実施例)
図7は、本実施例に係る並列計算機700の構成例を示す図である。
並列計算機700は、ノード710〜716と、スイッチ720〜726と、を備える。各ノード710〜716は、スイッチ720〜726を介して相互に通信可能に接続している。以下では、ノード710〜716と、スイッチ720〜726と、含むネットワークの一部または全部を、単に「ネットワーク」という。
各ノード710〜716は、例えば、所定のプログラムにしたがって演算処理を行うプロセッサや、所定のプログラムを記憶する主記憶装置などを含む演算装置である。また、各ノード710〜716は、他のノードとネットワークを介して通信を行うネットワークインタフェース装置を含む。
スイッチ720〜726は、受信したデータを所定の宛先に転送する通信装置である。
なお、図7では、7台のノード710〜716を備える並列計算機700の構成例について示したが、ノードの数を限定する趣旨ではない。
また、図7には、ネットワーク構成がメッシュ型である場合の並列計算機700を示しているが、本実施例に係るノードおよびスイッチは、ネットワーク構成がトーラス型やファットツリー型にも適用することができる。
図8は、本実施例に係る並列計算機700に含まれるノードの概要を説明する図である。ノード710〜716は全て同様の構成なので、図8には、並列計算機700に含まれるノードのうち、代表してノード710を記載している。
ノード710は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置830と、を備える。
プロセッサ810は、所定のプログラムにしたがって演算処理を行う演算処理装置である。主記憶装置820は、プログラムなどを記憶する。主記憶装置820には、プロセッサ810を解さずに、主記憶装置820が保持するデータをインタフェース背制御部832に転送するDMA(Direct Memory Access)転送を実現するDMA回路を含むことができる。ネットワークインタフェース装置830は、ノードがネットワークを介して他のノードと通信を行うためのインタフェースである。
ネットワークインタフェース装置830は、ホップ数テーブル記憶部331と、インタフェース制御部832と、を備える。
ホップ数テーブル記憶部831は、パケットを送信する宛先である宛先ノード毎に、宛先ノードを識別する宛先ノードアドレスと宛先ノードまでに経由するスイッチの数とを含むホップ数テーブル840を記憶する記憶装置を含む。以下では、送信元のノードから送信されたパケットが宛先ノードに至るまでに経由するスイッチの数を「ホップ数」という。
インタフェース制御部832は、ネットワークで使用するプロトコルにしたがって、プロセッサ810が指定するデータの一部または全部を含むパケットを所定の宛先ノードに送信する。この送信の際、インタフェース制御部832は、ホップ数テーブル記憶部831に記憶されているホップ数テーブル840を参照し、パケットの宛先ノードまでのホップ数を取得する。そして、宛先ノードまでのホップ数が多いと判断した場合、インタフェース制御部832は、当該宛先ノードへ送信するパケットサイズを大きくする。また、宛先ノードまでのホップ数が少ないと判断した場合、インタフェース制御部832は、当該宛先ノードへ送信するパケットサイズを小さくする。
また、インタフェース制御部832は、ネットワークから受信したデータをプロセッサ810に送信する。
図9は、図8に示したノード710の具体的な構成例を示す図である。
ノード710は、図8に示したように、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置830と、を備える。
ネットワークインタフェース装置830は、ホップ数テーブル記憶部831と、制御部901と、DMAコントローラ902と、パケット送信部903と、を備える。ただし、図9は、ネットワークインタフェース装置830が図9に示す構成要素のみを備えるという趣旨ではない。ネットワークインタフェース装置830は、例えば、パケットの受信機能などの機能も含むことができる。
制御部901は、プロセッサ810からパケット送信指示を受けると、DMAコントローラ902やパケット送信部903を制御して、パケットの送信処理を行う。このとき、制御部901は、DMAコントローラ902とパケット送信部903に、1つのパケットに含むデータのデータ長を指定する。また、制御部901は、自ノードからパケットの宛先までのホップ数から自ノードの通信帯域幅を計測する。その計測に応じて、制御部901は、DMAコントローラ902とパケット送信部903に指定する当該宛先ノードに送信するパケットのデータ長を変更する。
制御部901は、パケットの宛先までのホップ数に基づく自ノードの通信帯域幅の計測と、その計測に応じて変更するデータ長と、の関係を表わす数式によって、宛先ノードに送信するパケットのデータ長を定量的に求めることができる。
DMAコントローラ902は、制御部901からDMAを行なうデータのアドレスとデータ長を通知されると、主記憶装置820に対して、制御部901が通知したアドレスとデータ長を指定してDMA要求を行う。すると、主記憶装置820は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ902にDMA転送する。DMAコントローラ902は、主記憶装置820からDMA転送されるデータをパケット送信部903に送信する。
パケット送信部903は、DMAコントローラ902から転送されるデータから、制御部901が指定するデータ長のデータを含むパケットを作成して宛先ノードに送信する。
図10は、本実施例に係る並列計算機700のパケット送信処理を示すフローチャートである。
ステップS1000から処理を開始し、ステップS1001において、制御部901は、プロセッサ810からパケット送信指示を受け取ると、パケット送信指示に含まれる宛先ノードアドレス、ネットワーク構成および通信パターン情報も取得する。
ネットワーク構成とは、並列計算機700に備わるノード710〜716およびスイッチ720〜726を含むネットワークの構成のことである。パケット送信指示に含まれるネットワーク構成には、例えば、各ノードを網のメッシュ状に接続するメッシュ型、各ノードをリング状に接続するトーラス型、上位階層のスイッチから各ノードが接続される下位階層のスイッチまで、対称にスイッチ間の接続が分岐するように接続したファットツリー型などを含むことができる。また、通信パターン情報には、図26で後述する通信パターンを含むことができる。
ステップS1002において、制御部901は、ホップ数テーブル記憶部831に記憶されているホップ数テーブル840を参照する。そして、制御部901は、ホップ数テーブル840から、ステップS1001で取得した自ノードから宛先ノードまでのホップ数と、並列計算機700全体での最大ホップ数と、を取得する。
ステップS1003において、ステップS1001で取得したネットワーク構成および通信パターン情報と、ステップS1002で取得した自ノードから宛先ノードまでのホップ数および並列計算機700全体での最大ホップ数と、を基に当該宛先ノードへ送信するパケットのパケットサイズを決定する。
プロセッサ810からのパケット送信指示がPutリクエストによるものである場合(ステップS1004 YES)、制御部901は、処理をステップS1005に移行する。この場合、制御部901は、プロセッサ810が指定したデータを主記憶装置820から読み出す(ステップS1005)。ここで、Putリクエストとは、通信を行なうノードが、自ノードの主記憶装置の領域と宛先ノードの主記憶装置の領域とを指定し、自ノードの主記憶装置の領域に記憶されたデータを、宛先ノードの主記憶装置の領域にライトする要求である。Putリクエストの具体的な処理としては、例えば、以下のような処理が行われる。
DMAコントローラ902は、主記憶装置820に対して、パケット送信指示によって制御部901から指定された、送信対象のデータが格納されているアドレスと、パケットに含ませるデータのデータ長と、を指定してDMA要求を行う。すると、主記憶装置820は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ902にDMA転送する。DMAコントローラ902は、転送されたデータをパケット送信部903に送信する。
なお、データ長には、ステップS1003で決定したパケットサイズから、パケットに含まれるヘッダ長を除いた値を使用することができる。
ステップS1006において、パケット送信部903は、DMAコントローラ902からデータを受信すると、制御部901が指定するデータ長のデータを含むパケットを作成する。そして、パケット送信部903は、作成したパケットを宛先ノードに送信する。
一方、プロセッサ810からのパケット送信指示がGetリクエストによるものである場合(ステップS1004 NO)、制御部901は、処理をステップS1007に移行する。この場合、パケット送信部903は、ステップS1003で決定したパケットサイズを指定するGetリクエストパケットを作成して宛先ノードに送信する(ステップS1007)。ここで、Getリクエストとは、通信を行なうノードが、自ノードの主記憶装置の領域と宛先ノードの主記憶装置の領域とを指定し、宛先ノードの主記憶装置の領域に記憶されたデータを、自ノードの主記憶装置の領域にリードする要求である。
以上の処理が終了すると、制御部901は、パケット送信処理を終了する(ステップS1008)。
図11は、本実施例に係るパケットサイズの決定処理(ステップS1003)の詳細を示すフローチャートである。
ステップS1001で取得したネットワーク構成が、トーラス型またはメッシュ型の場合(ステップS1101 YES)、制御部901は、処理をステップS1102に移行する。この場合、制御部901は、パケットサイズ候補を次式によって算出する(ステップS1102)。
α×(m÷n)×l ・・・ (1)
ただし、αはパケットサイズ調整のための0より大きい定数、mは最大パケットサイズ、nは最大ホップ数、lは宛先ノードへのホップ数とする。
一方、ステップS1001で取得したネットワーク構成が、ファットツリー型の場合(ステップS1101 NO)、制御部901は、処理をステップS1103に移行する。この場合、制御部901は、宛先ノードまでのホップ数が1か否かを判別する(ステップS1103)。
宛先ノードまでのホップ数が1の場合(ステップS1103 YES)、制御部901は、処理をステップS1104に移行する。この場合、制御部901は、パケットサイズ候補を次式によって算出する(ステップS1104)。
β×m÷(k−j) ・・・ (2)
ただし、βはパケット送信間隔調整のための0より大きい定数、jは一つのスイッチに直接接続されているノード数、kは全ノード数とする。
また、ステップS1103において、宛先ノードまでのホップ数が1でない場合(ステップS1103 NO)、制御部901は、処理をステップS1105に移行する。この場合、制御部901は、パケットサイズ候補を次式によって算出する(ステップS1105)。
γ×m ・・・ (3)
ただし、γはパケットサイズ調整のための0より大きい定数とする。
以上の処理によって、パケットサイズ候補を算出すると、制御部901は、処理をステップS1106に移行する。
ステップS1106において、送信データが、他ノードから受信して中継するデータである場合(ステップS1106 YES)、制御部901は、処理をステップS1107に移行する。この場合、制御部901は、新たなパケットサイズ候補を次式によって算出する(ステップS1107)。
δ×(i+1)×P ・・・ (4)
ただし、δはパケットサイズ調整のための0より大きい定数、iはデータを受信して中継するノードの数、PはステップS1102、S1104またはS1105で算出したパケットサイズ候補である。
式(4)によって新たなパケットサイズ候補を算出すると、制御部901は、処理をステップS1108に移行する。
また、ステップS1106において、送信データが、他ノードから受信して中継するデータでない場合(ステップS1106 NO)、制御部901は、処理をステップS1108に移行する。
ステップS1108において、ステップS1102、S1104、S1105またはS1107で求めたパケットサイズ候補が、パケットサイズを変更可能な最大値以上の場合、制御部901は、当該最大値をパケットサイズとする。また、ステップS1102、S1104、S1105またはS1107で求めたパケットサイズ候補が、パケットサイズを変更可能な最小値以下の場合、制御部901は当該最小値をパケットサイズとする。また、ステップS1102、S1104、S1105またはS1107で求めたパケットサイズ候補が、最小値より大きく、かつ、最大値より小さい以上の場合、制御部901は、当該パケットサイズ候補をパケットサイズとする。
以上の処理が終了すると、制御部901は、パケットサイズの決定処理を終了する(ステップS1109)。
(変形例)
図12は、図9に示したノード710の変形例を示す図である。
図12に示すノード1200は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置1210と、を備える。
ネットワークインタフェース装置1210は、ホップ数テーブル記憶部831と、制御部1211と、DMAコントローラ902と、パケット送信部1212と、を備える。ただし、図12は、ネットワークインタフェース装置1210が図12に示す構成要素のみを備えるという趣旨ではない。ネットワークインタフェース装置1210は、例えば、パケットの受信機能などの機能も含むことができる。
制御部1211は、プロセッサ810からパケット送信指示を受けると、DMAコントローラ902やパケット送信部1212を制御して、パケットの送信処理を行う。このとき、制御部1211は、パケット送信部1212に対して、パケット送信間隔を指示する。また、制御部1211は、パケットの宛先までのホップ数から自ノードと宛先ノード間の通信帯域幅を計測する。そして、その計測に応じて、制御部1211は、パケット送信部1212に指示するパケット送信間隔を変更する。
制御部1211は、パケットの宛先までのホップ数に基づく自ノードの通信帯域幅の計測と、その計測に他応じて変更するパケット送信間隔と、の関係を表わす数式によって、パケット送信部1212に指示するパケット送信間隔を定量的に求めることができる。
パケット送信部1212は、DMAコントローラ902から転送されるデータからパケットを作成する。そして、パケット送信部1212は、制御部1211が指示するパケット送信間隔でパケットを宛先ノードに送信する。
図13は、図12で説明したノード1200を使用した並列計算機700のパケットの送信処理を示すフローチャートである。
ステップS1301〜S1302の処理は、図10のステップS1001〜S1002と同様なので、説明は省略する。
ステップS1303において、ステップS1301で取得したネットワーク構成および通信パターン情報と、ステップS1302で取得した宛先ノードまでのホップ数および並列計算機700全体での最大ホップ数と、を基にパケット送信間隔を決定する。
プロセッサ810からのパケット送信指示がPutリクエストによるものである場合(ステップS1304 YES)、制御部1211は、処理をステップS1305に移行する。この場合、制御部1211は、プロセッサ810が指定した主記憶装置820から読み出す(ステップS1305)。ステップS1305では、具体的には、以下のような処理が行われる。
DMAコントローラ902は、主記憶装置820に対して、パケット送信指示によって制御部901から指定された、送信対象のデータが格納されているアドレスと、パケットに含ませるデータのデータ長と、を指定してDMA要求を行う。すると、主記憶装置820は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ902にDMA転送する。DMAコントローラ902は、転送されたデータをパケット送信部903に送信する(ステップS1306)。
なお、データ長には、プロセッサ810が指定するパケットサイズであって、あらかじめ決められたパケットサイズから、パケットに含まれるヘッダ長を除いた値を使用することができる。
一方、プロセッサ810からのパケット送信指示がGetリクエストによるものである場合(ステップS1304 NO)、制御部1211は、処理をステップS1307に移行する。この場合、パケット送信部1212は、プロセッサ810がパケット送信指示とともに指定したデータ長のデータを含むパケットサイズを指定するGetリクエストパケットを作成する。そして、パケット送信部1212は、作成したGetリクエストパケットを、ステップS1303で決定したパケット送信間隔で宛先ノードに送信する(ステップS1307)。
以上の処理が終了すると、制御部1211は、パケット送信処理を終了する(ステップS1308)。
図14は、本実施例に係るパケット送信間隔の決定処理(ステップS1303)の詳細を示すフローチャートである。
ステップS1301で取得したネットワーク構成が、トーラス型またはメッシュ型の場合(ステップS1401 YES)、制御部1211は、処理をステップS1402に移行する。この場合、制御部1211は、パケット送信間隔候補を次式によって算出する(ステップS1402)。
α1×m1×(n−l) ・・・ (5)
ただし、α1はパケット送信間隔調整のための0より大きい定数、m1は既定のパケットサイズ、nは最大ホップ数、lは宛先ノードへのホップ数とする。
一方、ステップS1301で取得したネットワーク構成が、ファットツリー型の場合(ステップS1401 NO)、制御部1211は、処理をステップS1403に移行する。この場合、制御部1211は、宛先ノードまでのホップ数が1か否かを判別する(ステップS1403)。
宛先ノードまでのホップ数が1の場合(ステップS1403 YES)、制御部1211は、処理をステップS1404に移行する。この場合、制御部1211は、パケット送信間隔候補を次式によって算出する(ステップS1404)。
β1×m1×(k−j) ・・・ (6)
ただし、β1はパケット送信間隔調整のための0より大きい定数、jは一つのスイッチに直接接続されているノード数、kは全ノード数とする。
ステップS1403において、宛先ノードまでのホップ数が1でない場合(ステップS1403 NO)、制御部1211は、処理をステップS1405に移行する。この場合、制御部1211は、パケット送信間隔候補をγ1に決定する(ステップS1405)。ただし、γ1はパケット送信間隔調整のための0より大きい定数であるが、通常の通信で使用する既定値よりは小さい値とする。
以上の処理によって、パケット送信間隔を求めると、制御部1211は、処理をステップS1406に移行する。
ステップS1406において、送信データが、他ノードから受信して宛先ノードへ中継するデータである場合(ステップS1406 YES)、制御部1211は、処理をステップS1407に移行する。この場合、制御部1211は、当該他ノードから当該宛先ノードへの新たなパケット送信間隔候補を次式によって算出する(ステップS1407)。
δ1÷(i+1)×P1 ・・・ (7)
ただし、δ1はパケット送信間隔調整のための0より大きい定数、iはデータを受信して中継するノードの数、P1はステップS1402、S1404またはS1405で算出したパケット送信間隔候補である。
式(7)によって新たなパケット送信間隔候補を算出すると、制御部1211は、処理をステップS1408に移行する。また、ステップS1406において、送信データが、他ノードから受信して中継するデータでない場合(ステップS1406 NO)、制御部1211は、処理をステップS1408に移行する。
以上の処理が終了すると、制御部1211は、パケット送信間隔の決定処理を終了する(ステップS1408)。
(その他の変形例)
図15は、図9に示したノード710のその他の変形例を示す図である。なお、本変形例に係るノード1500は、ネットワークの構成が多次元のメッシュ型またはトーラス型の場合に利用することができる。以下の説明では、並列計算機700のネットワーク構成が3次元のメッシュ型またはトーラス型の場合について説明する。
図15に示すノード1500は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置1510と、を備える。
ネットワークインタフェース装置1500は、制御部1511と、ホップ数計算部1512と、DMAコントローラ902と、パケット送信部903と、を備える。ただし、図15は、ネットワークインタフェース装置1510が図15に示す構成要素のみを備えるという趣旨ではない。ネットワークインタフェース装置1510は、例えば、パケットの受信機能などの機能も含むことができる。
制御部1511は、プロセッサ810からパケット送信指示を受けると、DMAコントローラ902やパケット送信部903を制御して、パケットの送信処理を行う。制御部1511は、パケットの宛先までのホップ数をホップ数計算部1512から取得する。このとき、制御部1511は、DMAコントローラ902とパケット送信部903に、1つのパケットに含むデータのデータ長を指定する。また、制御部1511は、パケットの宛先までのホップ数から、自ノードと宛先ノード間の通信帯域幅を計測する。その計測に応じて、制御部1511は、DMAコントローラ902とパケット送信部903に指定する宛先ノードに送信するパケットのデータ長を変更する。
制御部1511は、パケットの宛先までのホップ数に基づく自ノードの通信帯域幅の計測と、その計測に応じて変更するデータ長と、の関係を表わす数式によって、宛先ノードに送信するパケットのデータ長を定量的に求めることができる。
ホップ数計算部1512は、制御部901から宛先ノードアドレスの通知を受けると、宛先ノードアドレス、自ノードアドレスおよびネットワークの構成からホップ数を計算する。ホップ数計算部1512は、計算したホップ数を制御部901に通知する。
図16は、図15で説明したノード1500を使用した並列計算機700のパケットの送信処理を示すフローチャートである。
ステップS1601の処理は、図10のステップS1001と同様なので、説明は省略する。
ステップS1602において、制御部1511は、ホップ数計算部1512から、宛先ノードまでのホップ数と、並列計算機700全体の最大ホップ数を取得する。このとき、具体的には、例えば、以下の処理が行われる。
制御部1511は、ステップS1601で取得した宛先ノードアドレスおよびネットワーク構成をホップ数計算部1512に通知する。すると、ホップ数計算部1512は、制御部1511から通知された宛先ノードアドレスおよびネットワーク構成から、次式を用いて宛先ノードまでのホップ数を算出する。
(ネットワーク構成がメッシュ型の場合)
|x1−x0|+|y1−y0|+|z1−z0| ・・・(8)
(ネットワーク構成がトーラス型の場合)
min(|x1−x0|,Nx−|x1−x0|)+min(|y1−y0|,Ny−|y1−y0|)+min(|z1−z0|,Nz−|z1−z0|) ・・・(9)
ただし、ノードアドレスはxyz軸座標系の座標値で表わすものとする。そして、自ノードアドレスを(x0,y0,z0)、宛先ノードアドレスを(x1,y1,z1)とする。また、x軸方向、y軸方向およびz軸方向に含まれるノード数を、それぞれNx、NyおよびNzとする。
宛先ノードまでのホップ数を算出すると、ホップ数計算部1512は、宛先ノードまでのホップ数と、並列計算機700全体の最大ホップ数と、を制御部1511に通知する。
以上の処理が終了すると、制御部1511は、処理をステップS1603に移行する。ステップS1603〜1608は、図10のステップS1003〜S1008と同様なので、説明は省略する。
(その他の変形例)
図17は、図9に示したノード710のその他の変形例を示す図である。
図17に示すノード1700は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置1710と、を備える。
ネットワークインタフェース装置1710は、制御部1711と、パケット送信部1712と、パケット受信部1713と、DMAコントローラ902と、を備える。ただし、図17は、ネットワークインタフェース装置1710が図17に示す構成要素のみを備えるという趣旨ではない。ネットワークインタフェース装置1710は、例えば、パケットの受信機能など公知の機能を含むこともできる。
制御部1711は、プロセッサ810からパケット送信指示を受けると、DMAコントローラ902やパケット送信部1712を制御して、パケットの送信処理を行う。このとき、制御部1711は、DMAコントローラ902とパケット送信部1712に、1つのパケットに含むデータのデータ長を指定する。
制御部1711は、パケットの宛先までのホップ数に基づく自ノードの通信帯域幅の計測と、その計測に他応じて変更するデータ長と、の関係を表わす数式によって、1つのパケットに含むデータのデータ長を定量的に求めることができる。
また、制御部1511は、宛先ノードまでのホップ数を調査するために、パケット送信部1712に対して、ホップ数調査用パケットの送信指示を行う。制御部1711は、パケット受信部1713から、ホップ数調査用パケットに対する応答パケットのホップ数フィールドに含まれるパケット数の通知を受ける。この通知されたパケット数が宛先ノードまでのホップ数である。制御部1711は、宛先ノードまでのホップ数から自ノードと当該宛先ノード間の通信帯域幅を計測する。その計測に応じて、制御部1711は、DMAコントローラ902およびパケット送信部903に指示するデータ長を変更する。
パケット送信部1712は、DMAコントローラ902から転送されるデータから、制御部1711が指定するデータ長のデータを含むパケットを作成して宛先ノードに送信する。また、制御部1711は、制御部1711からホップ数調査用パケットの送信指示を受けると、ホップ数調査用パケットを作成する。そして、制御部1711は、作成したホップ数調査用パケットを宛先ノードに送信する。
なお、ホップ数調査用パケットとは、ホップ数フィールドを含むパケットである。ホップ数調査用パケット送信時には、ホップ数フィールドの初期値として0が設定される。ホップ数フィールドは、ホップ数調査用パケットが経由するスイッチが更新可能なフィールドである。スイッチは、ホップ数調査用パケットを受信すると、ホップ数フィールドに格納されている値を1だけインクリメントした値に更新する。
また、ホップ数調査用パケットを受信した宛先ノードは、ホップ数調査用パケットに対する応答パケットを、ホップ数調査用パケットの送信元ノードに送信する。この場合、ホップ数調査用パケットに対する応答パケットには、宛先のノードが受信したホップ数調査用パケットのホップ数フィールドがそのまま含まれる。
パケット受信部1713は、ネットワークからパケットを受信する。受信したパケットが、ホップ数調査用パケットに対する応答パケットである場合、パケット受信部1713は、受信した応答パケットに含まれるホップ数フィールドからホップ数を取得する。そして、パケット受信部1713は、取得したホップ数を制御部1711に通知する。
以上に説明したノード1510に備わる制御部1511は、図12に示したノード1210に備わる制御部1211のように、パケット送信部903に指定するパケット送信間隔を変更してパケット送信間隔を制御してもよい。この場合、ノード1510は、図16のステップS1603〜S1607の処理に代えて、図13のステップS1303〜S1307の処理を行えばよい。
図18は、本変形例で使用するスイッチ1800の構成例を示す図である。
スイッチ1800は、送信バッファ部1810および1820と、パケット送信制御部1830と、ポート1840および1850と、加算器1860と、を備える。
送信バッファ部1810は、ノード1700から受信したパケットを記憶する記憶装置を備える。そして、パケットを記憶装置に記憶すると、送信バッファ部1810は、記憶装置に記憶されたパケットの例えばヘッダ部に含まれる宛先ノードアドレスをパケット送信制御部1830に送信する。また、送信バッファ部1810は、パケット送信制御部1830からの要求に応じて、パケットをパケット送信制御部1830に送信する。
送信バッファ部1820は、ネットワークから受信したパケットを記憶する記憶装置を備える。そして、パケットを記憶装置に記憶すると、送信バッファ部1820は、記憶装置に記憶されたパケットの例えばヘッダ部に含まれる宛先ノードアドレスをパケット送信制御部1830に出力する。また、送信バッファ部1820は、パケット送信制御部1830からの要求に応じて、パケットをパケット送信制御部1830に送信する。
パケット送信制御部1830は、送信バッファ部1810や1820から、パケットの宛先ノードアドレスの通知を受けると、通知された宛先ノードアドレスを基に、パケット送信に使用するポートを決定する。また、送信バッファ部1810や1820からパケットを取得すると、パケット送信制御部1830は、決定したポートにパケットを送信する。
ポート1840は、ネットワークからパケットを受信すると、受信したパケットを送信バッファ部1820に送信する。ポート1850は、パケット送信制御部1830から送信要求を受けると、パケット送信制御部1830に送信許可を通知する。その後、パケット送信制御部1830からパケットを受信すると、ポート1850は、加算器1860を介して受信したパケットを宛先ノードに送信する。
加算器1860は、ポート1850から送信されたパケットに含まれるホップ数フィールドに格納されている値を、その値を1だけインクリメントした値に更新する。
なお、図18には、ポート1840と、ポート1850および加算器1860と、をそれぞれ1つだけ記載しているが、ポート1840と、ポート1850および加算器1860は、それぞれ複数備えられていてもよい。
図19は、図17で説明したノード1700および図18で説明したスイッチ1800を使用した並列計算機700におけるパケット送信処理を示すフローチャートである。
ステップS1901の処理は、図10のステップS1001と同様なので、説明は省略する。
ステップS1902において、制御部1711は、パケットの宛先、すなわち、宛先ノードアドレスが示すノードに、ホップ数調査用パケットパケットを送信して、宛先ノードまでのホップ数を取得する。このとき、具体的には、例えば、以下の処理が行われる。
制御部1711は、パケット送信部1712に対して、ステップS1701で取得した宛先ノードアドレスへの、ホップ数調査用パケットの送信指示を行う。パケット送信部1712は、制御部1711からホップ数調査用パケットの送信指示を受けると、ステップS1701で取得した宛先ノードアドレスにホップ数調査用パケットを送信する。
パケット受信部1713は、ホップ数調査用パケットに対する応答パケットを受信すると、応答パケットに含まれるホップ数フィールドを参照し、宛先ノードまでのホップ数を取得する。そして、パケット受信部1713は、宛先ノードまでのホップ数を制御部1711に通知する。
以上の処理が終了すると、制御部1711は、処理をステップS1903に移行する。ステップS1903〜S1907の処理は、図10のステップS1003〜S1007と同様なので、説明は省略する。
以上に説明したノード1710に備わる制御部1711は、図12に示したノード1210に備わる制御部1211のように、パケット送信部1712に指定するパケット送信間隔を変更してパケット送信間隔を制御してもよい。この場合、ノード1710は、図19のステップS1903〜S1607の処理に代えて、図13のステップS1303〜S1307の処理を行うことができる。
(その他の実施例)
図20は、本実施例に係る並列計算機2000に含まれるノードの概要を説明する図である。本実施例に係る並列計算機2000は、図7に示したノード710〜716に代えて、図20に示すノード2010を使用する。
ノード2010は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置2020と、を備える。
そして、ネットワークインタフェース装置2020は、応答時間テーブル記憶部2021と、インタフェース制御部2022と、送信部2023と、カウンタ2024と、受信部2025と、を備える。
応答時間テーブル記憶部2021は、パケットを送信する宛先である宛先ノード毎に、基準応答時間と、応答時間と、を記憶する応答時間テーブル2030を記憶する記憶装置を含む。応答時間は、宛先ノードにパケットを送信してから、送信したパケットに対する応答パケットを宛先ノードから受信するまでに要する時間である。応答時間テーブル2030の応答時間には、実際に計測された応答時間が記憶される。基準応答時間は、通信帯域幅の計測に用いられる応答時間の基準値である。基準応答時間は、ネットワークの構成や宛先ノードまでのホップ数、標準的な環境における実測値または論理値などに基づいて決定することができる。
インタフェース制御部2022は、ネットワークで使用するプロトコルにしたがって、プロセッサ810が指定するデータの一部または全部を含むパケットを所定の宛先ノードに送信するように送信部2023に指示する。この指示の際、インタフェース制御部2022は、応答時間テーブル記憶部2021に記憶されている応答時間テーブル2030を参照し、宛先ノードまでの基準応答時間と応答時間とを取得する。インタフェース制御部2022は、取得した基準応答時間と応答時間とに基づいて、自ノード2010と宛先ノード間の通信帯域幅を計測する。そして、その計測に基づいて、インタフェース制御部2022は、送信するパケットのサイズを決定する。インタフェース制御部2022は、決定したパケットのサイズに基づくデータ長を送信部2023に指示する。
送信部2023は、インタフェース制御部2022が指定するデータ長毎に、プロセッサ810が指定するデータの一部または全部を含むパケットを作成する。このとき、送信部2023は、カウンタ2024を参照し、カウント値を取得する。そして、送信部2023は、取得したカウント値をパケットの所定の領域に設定する。
また、送信するパケットが応答パケットである場合、送信部2023は、受信したパケットの所定の領域に設定されていたカウント値を、応答パケットの所定の領域に設定する。そして、送信部2023は、応答パケットを送信元のノードに送信する。
カウンタ2024は、一定の間隔で数を数えるカウンタである。
受信部2025は、受信したパケットの所定の領域に設定されたカウント値Aを取得する。また、受信部2025は、カウンタ2024を参照し、カウント値Bを取得する。そして、受信部2025は、カウント値Bとカウント値Aとの差分から応答時間を算出する。受信部2025は、算出した応答時間を応答時間テーブル2030に記憶する。
また、受信部2025は、受信したパケットを、主記憶装置820に記憶する。インタフェース制御部2022は、受信部2025からパケットの受信が通知されると、その旨をパケットの記憶場所とともにプロセッサ810に通知する。
図21は、図20に示したノード2010の具体的な構成例を示す図である。
ノード2010は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置2020と、を備える。
ネットワークインタフェース装置2020は、応答時間テーブル記憶部2101と、パケット送信管理部2102と、制御部2103と、DMAコントローラ2104と、パケット送信部2105と、カウンタ2106と、パケット受信部2107と、を備える。
応答時間テーブル記憶部2101は、図20に示した応答時間記憶テーブル2021と同様である。したがって、応答時間テーブル記憶部2101は、パケットを送信する宛先である宛先ノード毎に、基準応答時間と、応答時間と、を記憶する応答時間テーブル2030を記憶する記憶装置を含む。
パケット送信管理部2102は、送信したパケットに対する応答パケットを未受信な状態で送信できるパケット数qと、応答パケットを1個受信した場合に送信できるパケット数pと、を用いて、送信可能なパケット数を管理する。ただし、pおよびqは0以上の整数とする。具体的には、以下の操作によって、パケット送信管理部2102は、送信可能なパケット数を管理する。
(1)初期値としてパケット数qが、プロセッサ810から通知される。すると、パケット送信管理部2102は、送信可能なパケット数としてパケット数qを保持する。
(2)制御部2103からパケットを送信した旨の通知を受けると、パケット送信管理部2102は、送信可能なパケット数qを「1」だけ減算した値に更新する。
(3)パケット受信部2107から応答パケットを受信した旨の通知を受けると、パケット送信管理部2102は、送信可能なパケット数qを「p」だけ加算した値に更新する。
パケット送信管理部2102は、制御部2103から、送信可能なパケット数の問合わせを受けると、送信可能なパケット数を制御部2103に通知する。
制御部2103は、プロセッサ810からパケット送信指示を受けると、パケット送信管理部2102に問合わせて、送信可能なパケット数を取得する。そして、パケットを送信可能であれば、制御部2103は、応答時間テーブル記憶部2101に記憶された応答時間テーブル2030を参照し、宛先ノードまでの基準応答時間と応答時間とを取得する。制御部2103は、取得した基準応答時間と応答時間とに基づいて、送信するパケットのサイズを決定する。
例えば、応答時間が基準応答時間より大きい場合、制御部2103は、自ノード、すなわちノード2010の通信帯域幅が狭まると計測する。この場合、制御部2103は、送信するパケットのサイズを大きくする。また、応答時間が基準応答時間より小さい場合、制御部2103は、自ノード、すなわちノード2010の通信帯域幅が拡がると計測する。この場合、制御部2103は、送信するパケットのサイズを小さくする。
制御部2103は、決定したパケットのサイズとなるように、パケットに含まれるデータ長を算出する。そして、算出したデータ長と、送信するデータのアドレスと、をDMAコントローラ2104に通知する。
制御部2103は、応答時間に基づく自ノードの通信帯域幅の計測と、その計測に他応じて変更するデータ長と、の関係を表わす数式によって、宛先ノードに送信するパケットのデータ長を定量的に求めることができる。
DMAコントローラ2104は、制御部2103からアドレスとデータ長を通知されると、主記憶装置820に対して、制御部2103が通知したアドレスとデータ長を指定してDMA要求を行う。すると、主記憶装置820は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ2104にDMA転送する。DMAコントローラ2104は、主記憶装置820からDMA転送されるデータをパケット送信部2105に送信する。
パケット送信部2105は、DMAコントローラ2104から送信されたデータを含むパケットを作成する。このとき、パケット送信部2105は、カウンタ2106を参照し、カウント値を取得する。そして、パケット送信部2105は、取得したカウント値をパケットの所定の領域に設定する。そして、パケット送信部2105は、作成したパケットを宛先ノードに送信する。
また、送信するパケットが応答パケットである場合、パケット送信部2105は、受信したパケットの所定の領域に設定されていたカウント値を、応答パケットの所定の領域に設定する。そして、パケット送信部2105は、応答パケットを宛先ノードに送信する。
カウンタ2106は、一定の間隔で数を数えるカウンタである。
パケット受信部2107は、受信したパケットの所定の領域に設定されたカウント値Aを取得する。また、パケット受信部2107は、カウンタ2106を参照し、カウント値Bを取得する。そして、パケット受信部2107は、カウント値Bとカウント値Aとの差分から応答時間を算出する。パケット受信部2107は、算出した応答時間を、応答時間テーブル記憶部2101に格納された応答時間テーブル2030に記憶する。また、パケット受信部2107は、応答パケットを受信した旨をパケット送信部2105に通知する。
また、パケット受信部2107は、受信したパケットを、主記憶装置820に記憶する。制御部2103は、パケット受信部2107からパケットの受信が通知されると、その旨をパケットの記憶場所とともにプロセッサ810に通知する。
図22は、図21で説明したノード2010を使用した並列計算機700におけるパケット送信処理を示すフローチャートである。
ステップS2201の処理は、図10のステップS1001と同様なので、説明は省略する。
ステップS2202において、制御部2103は、パケット送信管理部2102から、送信可能なパケット数を取得する。
パケット送信管理部2102から取得した、送信可能なパケット数が1未満の場合(ステップS2203 NO)、制御部2103は、処理をステップS2204に移行する。この場合、制御部2103は、例えば、一定間隔でパケット送信管理部2102に問合わせを行うなどして、送信可能なパケット数が1以上となるまで待つ(ステップS2204)。そして、送信可能なパケット数が1以上となると、制御部2103は、処理をステップS2205に移行する。
また、パケット送信管理部2102から取得した、送信可能なパケット数が1以上の場合(ステップS2203 YES)、制御部2103は、処理をステップS2205に移行する。
ステップS2205において、制御部2103は、応答時間テーブル記憶部2101に記憶されている応答時間テーブル2030を参照する。そして、制御部2103は、応答時間テーブル2030から、宛先ノードについての基準応答時間と応答時間を取得する。
ステップS2206において、制御部2103は、ステップS2205で取得した基準応答時間および応答時間と、通信パターンと、に基づいてパケットのサイズを決定する。
プロセッサ810からのパケット送信指示がPutリクエストによるものである場合(ステップS2207 YES)、制御部2103は、処理をステップS2208に移行する。この場合、制御部2103は、プロセッサ810が指定したデータを主記憶装置820から読み出す(ステップ2208)。具体的には、例えば、以下のような処理が行われる。
DMAコントローラ2104は、主記憶装置820に対して、パケット送信指示によって制御部2103から指示された、送信対象のデータが格納されているアドレスと、パケットに含ませるデータのデータ長と、を指定してDMA要求を行う。すると、主記憶装置820は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ2104にDMA転送する。DMAコントローラ2104は、転送されたデータをパケット送信部2105に送信する。
なお、データ長には、ステップS2206で決定したパケットサイズから、パケットに含まれるヘッダ長を除いた値を使用することができる。
ステップS2209において、制御部2103は、DMAコントローラ902からデータを受信すると、制御部2103が指定するデータ長のデータを含むパケットを作成する。また、パケット送信部2105は、カウンタ2106からカウント値を取得し、取得したカウント値をパケットの所定の領域に設定する。そして、パケット送信部2105は、パケットを宛先ノードに送信する。
一方、プロセッサ810からのパケット送信指示がGetリクエストによるものである場合(ステップS2207 NO)、制御部2103は、処理をステップS2210に移行する。この場合、制御部2103は、ステップS2206で決定したパケットサイズを指定するGetリクエストパケットを作成して宛先ノードに送信する(ステップS2210)。
以上の処理が終了すると、制御部2103は、パケット送信処理を終了する(ステップS2211)。
図23は、本実施例に係るパケットサイズの決定処理(ステップS2206)の詳細を示すフローチャートである。
ステップS2301において、制御部2103は、パケットサイズ候補を次式によって算出する。
m2+α2×(l1−n2) ・・・ (10)
ただし、α2はパケットサイズ調整のための0より大きい定数、m2は標準パケットサイズ、n2はステップS2205で取得した基準応答時間、l1はステップS2205で取得した応答時間とする。m2には、応答時間が基準応答時間と同じ時に送信するパケットサイズなど、を使用することができる。なお、標準パケットサイズは、並列計算機2000におけるノード間通信で使用するパケットのサイズである。
ステップS2302において、送信データが、他ノードから受信して宛先ノードに中継するデータである場合(ステップS2302 YES)、制御部2103は、処理をステップS2303に移行する。この場合、制御部2103は、当該他ノードから受信して当該宛先ノードに中継するパケットの新たなパケットサイズ候補を次式によって算出する(ステップS2303)。
β2×(i+1)×P2 ・・・ (11)
ただし、β2はパケットサイズ調整のための0より大きい定数、iはデータを受信して中継するノードの数、P2はステップS2301で算出したパケットサイズ候補である。
式(11)によって新たなパケットサイズ候補を算出すると、制御部2103は、処理をステップS2304に移行する。また、ステップS2302において、送信データが、他ノードから受信して宛先ノードに中継するパケットのデータでない場合(ステップS2302 YES)、制御部2103は、処理をステップS2304に移行する。
ステップS2304において、ステップS2301またはS2303で求めたパケットサイズ候補が、パケットサイズを変更可能な最大値以上の場合、制御部2103は、パケットサイズ候補を最大値のパケットサイズとする。また、ステップS2301またはS2303で求めたパケットサイズ候補が、パケットサイズを変更可能な最小値以下の場合、制御部2103は、パケットサイズ候補を最小値のパケットサイズとする。また、ステップS2301またはS2303で求めたパケットサイズ候補が、最小値より大きく、かつ、最大値より小さい以上の場合、制御部2103は、パケットサイズ候補をパケットサイズとする。
以上の処理が終了すると、制御部2103は、パケットサイズの決定処理を終了する(ステップS2305)。
以上に説明したノード2020に備わる制御部2103は、図12に示したノード1210に備わる制御部1211のように、パケット送信部2105にパケット送信間隔を指定してパケット送信間隔を制御してもよい。この場合、ノード2020は、図22のステップS2206〜S2210の処理に代えて、図13のステップS1303〜S1307の処理を行うことができる。
(その他の実施例)
図24は、本実施例に係る並列計算機2400に含まれるノードおよびスイッチの概要を説明する図である。本実施例に係る並列計算機2400は、図7に示したノード710〜716に、図24に示すノード2410を使用し、図7に示したスイッチ720〜726に、図24に示すスイッチ2420を使用する。
ノード2410は、プロセッサ2411と、ネットワークインタフェース装置2412と、を備える。ノード2410は、LANケーブル等を介して、スイッチ2420と通信可能に接続している。また、ノード2410に備わるプロセッサ2411は、専用線またはLANケーブル等を介して、スイッチ2420に備わる記憶部2560と通信可能に接続することができる。
プロセッサ2411は、所定のプログラムにしたがって演算処理を行う演算装置である。また、プロセッサ2411は、所望のデータを他のノードに送信する場合、ネットワークインタフェース装置2412に対して、パケット送信指示を行う。このとき、プロセッサ2411は、パケット送信指示とともにパケットのサイズを指定する。
なお、プロセッサ2411は、図12に示したノード1210に備わる制御部1211のように、ネットワークインタフェース装置2412に対して、パケット送信間隔を指定してもよい。この場合、プロセッサ2411は、図22のステップS2206〜S2209の処理に代えて、図14に示した処理によってパケット送信間隔を求めることができる。
パケットのサイズは、例えば、スイッチ2420に備わる記憶部2421に記憶された待ち時間テーブル2600に設定された、パケットの送信待ち時間に基づいて決定することができる。待ち時間テーブル2600については、図26で後述する。
ネットワークインタフェース装置2412は、プロセッサ2411から通知されたパケット送信指示を受けると、パケット送信指示とともに指定されたパケットサイズのパケットを作成してスイッチ2420に送信する。
スイッチ2420は、送信バッファ2421、2422および2423と、カウンタ2424と、記憶部2425と、を備える。
送信バッファ2421は、ノード2410から受信したパケットを送信するまで保持する記憶装置である。送信バッファ2422および2423は、他のノードから受信したパケットを送信するまで保持する記憶装置である。
カウンタ2424は、ノード2410からパケットを受信してから、受信したパケットを次のノードに送信するまでの送信待ち時間を計時するカウンタである。カウンタ2424は、カウントした送信待ち時間を、記憶部2425に記憶されている待ち時間テーブル2600に設定する。
記憶部2425は、通信パターン毎に、パケットを受信してから宛先ノードに送信するまでの送信待ち時間を記憶する待ち時間テーブル2600を記憶する記憶装置である。
以上の構成において、例えば、プロセッサ2411がパケットを処理する場合を考える。この場合、プロセッサ2411は、記憶部2425に記憶されている待ち時間テーブル2600から、パケットを受信してから宛先ノードに送信するまでの送信待ち時間を取得する。そして、プロセッサ2411は、取得した送信待ち時間に基づいて、自ノード2410と宛先ノード間の通信帯域幅を計測する。そして、プロセッサ2411は、その計測の結果に基づいてパケットのサイズを決定する。
プロセッサ2411は、送信待ち時間に基づく自ノードの通信帯域幅の計測と、その計測に応じて変更するデータ長と、の関係を表わす数式によって、宛先ノードに送信するパケットのデータ長を定量的に求めることができる。
プロセッサ2411は、ネットワークインタフェース装置2410に対して、パケット送信指示とともに、パケットのサイズを指定する。すると、ネットワークインタフェース装置2410は、プロセッサ2411が指定するサイズのパケットを作成してスイッチ2420に送信する。
スイッチ2420に入力されるパケットは、送信バッファ2421に格納される。送信バッファ2421にパケットが格納されると、カウンタ2424は、送信バッファ2421に格納されたパケットが送信されるまでの送信待ち時間をカウントする。そして、カウンタ2424は、カウントした送信待ち時間を、記憶部2425に記憶されている待ち時間テーブル2600に設定する。
なお、図24では、パケットが送信待ちである状態の理解を容易にするために、3つの送信バッファ2421、2422および2423が記載されている。しかし、送信バッファ2421、2422および2423は、1つまたは複数の送信バッファで実現することもできる。
また、図24は、ノード2410が図24に示す構成要素のみを備えるという趣旨ではない。ノード2410は、例えば、図8に示した主記憶装置820など、情報処理を行う機能も含むことができる。
図25は、図24に示したスイッチ2420の具体的な構成例を示す図である。
スイッチ2420は、送信バッファ部2510と、パケット送信制御部2520と、ポート2530および2540と、カウンタ2550と、記憶部2560と、を備える。
送信バッファ部2510は、ノード2410に備わるネットワークインタフェース装置2412から受信したパケットを記憶する記憶装置を備える。そして、パケットを記憶装置に記憶すると、送信バッファ部2510は、記憶装置に記憶されたパケットの例えばヘッダ部に含まれる宛先ノードアドレスをパケット送信制御部2520に送信する。また、送信バッファ部2510は、パケット送信制御部2520からの要求に応じて、パケットをパケット送信制御部2520に送信する。
パケット送信制御部2520は、送信バッファ部2510から、パケットの宛先ノードアドレスの通知を受けると、通知された宛先ノードアドレスを基に、パケット送信に使用するポートを決定する。パケット送信制御部2520は、決定したポート、例えば、ポート2530または2540に対して送信要求を行う。送信要求を行ったポートから送信許可が通知されると、パケット送信制御部2520は、送信バッファ部2510からパケットを取得する。そして、送信バッファ部2510からパケットを取得すると、パケット送信制御部2520は、決定したポートにパケットを送信する。
また、パケット送信制御部2520は、送信バッファ部2510から宛先ノードアドレスの通知を受けると、カウンタ2550に、送信バッファ部2510から通知された宛先ノードアドレスを通知する。同時に、パケット送信制御部2520は、待ち時間のカウントを開始する旨のスタート指示をカウンタ2550に通知する。パケットの送信が完了すると、パケット送信制御部2520は、送信が完了したパケットについての送信待ち時間のカウントを終了する旨のストップ指示をカウンタ2550に通知する。
カウンタ2550は、パケット送信制御部2520からスタート指示を受けると、パケット送信制御部2520から通知された宛先ノードアドレスのパケットについて、パケット毎に、送信待ち時間のカウントを開始する。また、カウンタ2550は、パケット送信制御部2520からストップ指示を受けると、ストップ指示のあった宛先ノードへのパケットについて、送信待ち時間のカウントを終了する。そして、カウンタ2550は、カウント値を、記憶部2560に記憶される待ち時間テーブル2600に設定する。
ポート2530は、パケット送信制御部2520から送信要求を受けると、パケット送信制御部2520に送信許可を通知する。その後、パケット送信制御部2520からパケットを受信すると、ポート2530は、受信したパケットを宛先ノードに送信する。ポート2540も、ポート2530と同様に動作する。
なお、図25には、スイッチ2420が2つのポート2530および2540を備える場合の例を示したが、スイッチ2420に備わるポートの数を限定する趣旨ではない。また、スイッチ2420は、図18に示した送信バッファ部1820およびポート1840などを備えることができる。
図26は、記憶部2560に記憶する待ち時間テーブル2600の例を示す図である。
図26に示す待ち時間テーブル2600は、通信パターンと、宛先ノードアドレスと、スイッチ2420と接続するノード2410が宛先ノードアドレスに送信したパケットそれぞれを受信してから宛先ノードアドレスに送信するまでの送信待ち時間と、を含む情報である。
通信パターンには、例えば、MPI(Message Passing Interface)に規定された「All Gather」、「All to All」および「All reduce」などの集団通信の種類を含むことができる。また、通信パターンには、例えば、MPIに規定された「Broadcast」、「Gather」および「Reduce」などの集団通信の種類も含むことができる。
「All Gather」は、各ノードが、その他の全てのノードに対して同じデータを送信する通信パターンである。「All to All」は、各ノードが、その他の全てのノードに対して、それぞれ異なるデータを送信する通信パターンである。「All reduce」は、任意の1つのノードが、全ノードが保持するデータを用いて演算を行った結果を、演算を行ったノード以外の全てのノードに対して送信する通信パターンである。「Broadcast」は、任意の1つのノードが、他の複数のノードにデータを送信する通信パターンである。「Gather」は、複数のノードが、任意の1つのノードにデータを送信する通信パターンである。「Reduce」は、任意の1つのノードが、全ノードが保持するデータを用いて演算を行う通信パターンである。この場合、演算結果は、演算を行ったノードのみが保持する。
例えば、図26に示す待ち時間テーブル2600では、通信パターンが「All Gather」の場合に、宛先ノードアドレスが「n00」の宛先ノードに送信するパケット「p00」、「p01」、・・・の送信待ち時間「t00」、「t01」、・・・が設定されている。
図27は、図25に示したスイッチ2420の処理を示すフローチャートである。
ステップS2701において、パケット送信制御部2520は、送信バッファ部2510から宛先ノードアドレスを受け取る。すると、パケット送信制御部2520は、処理をステップS2702に移行する。
ステップS2702において、パケット送信制御部2520は、送信バッファ部2510から受け取った宛先ノードアドレスを基に、パケットを送信するポートを決定する。パケットを送信するポートを決定すると、パケット送信制御部2520は、決定したポートに対して送信要求を行う(ステップS2703)。
ステップS2704において、パケット送信制御部2520は、カウンタ2550に対して、送信制御部2520から受け取った宛先ノードアドレスを通知するとともに、スタート指示を行う。スタート指示を受けたカウンタ2550は、宛先ノードアドレスに送信するパケットの送信待ち時間について、例えば、0からカウントを開始する。
ステップS2705において、パケット送信制御部2520は、送信要求を行ったポートから送信許可を受けると、送信許可を受けたポートにパケットを送信する。パケットの送信が完了すると、パケット送信制御部2520は、カウンタ2550に対してストップ指示を行う(ステップS2706)。ストップ指示を受けたカウンタ2550は、ステップS2704のスタート指示で開始したカウントを終了する。そして、カウンタ2550は、待ち時間テーブル2600内の該当する通信パターンに、カウント値と宛先ノードアドレスを記憶する。
以上の説明は、パケット送信制御部2520の処理を、図27に示したステップS2700〜S2707の処理の順番に限定する趣旨ではない。例えば、パケット送信制御部2520は、ステップS2703とステップS2704を同時に行ってもよい。また、パケット送信制御部2520は、ステップS2705とステップS2706を同時に行ってもよい。
図28は、本実施例に係るプロセッサ2411によるパケットサイズの決定処理を示すフローチャートである。
ステップS2801において、プロセッサ2411は、スイッチ2420に備わる記憶部2560に記憶された待ち時間テーブル2600から、これから行う通信の通信パターンにおける、各宛先ノードへの送信待ち時間を全て取得する。
ステップS2802において、プロセッサ2411は、ステップS2801で取得した、各宛先ノードへの送信待ち時間、の平均値l2を算出すると、パケットサイズ候補を次式から算出する。
m2+α3×(l2−n2) ・・・ (12)
ただし、α3はパケットサイズ調整のための0より大きい定数、l2は宛先ノードへの待ち時間の平均値、m2は標準パケットサイズ、n2はあらかじめ決められた基準待ち時間である。m2には、待ち時間が基準待ち時間と同じ時に送信するパケットサイズなど、を使用することができる。基準待ち時間n2には、例えば、あらかじめ様々な種類の通信を行って全ノードで計測した、同じ宛先ノードのパケットの送信待ち時間の平均値などを使用することができる。
ステップS2803において、ステップS2802で求めたパケットサイズ候補が、パケットサイズを変更可能な最大値以上の場合、プロセッサ2411は、パケットサイズの最大値をパケットサイズとする。また、ステップS2802で求めたパケットサイズ候補が、パケットサイズを変更可能な最小値以下の場合、プロセッサ2411は、パケットサイズの最小値をパケットサイズとする。また、ステップS2802で求めたパケットサイズ候補が、最小値より大きく、かつ、最大値より小さい以上の場合、プロセッサ2411は、パケットサイズ候補をパケットサイズとする。
以上の処理が終了すると、プロセッサ2411は、パケットサイズの決定処理を終了する(ステップS2804)。
(変形例)
図29は、図24に示したノード2410の変形例を示す図である。
図24に示すノード2910は、プロセッサ810と、主記憶装置820と、インタフェース制御部2912を含むネットワークインタフェース装置2911と、を備える。
ノード2910は、LANケーブル等を介して、スイッチ2420と通信可能に接続している。また、ノード2910に含まれるインタフェース制御部2912は、専用線またはLANケーブル等を介して、スイッチ2420に備わる記憶部2560と通信可能に接続することができる。
インタフェース制御部2912は、プロセッサ810からのパケット送信指示にしたがってパケット送信処理を行う。このとき、インタフェース制御部2912は、スイッチ2420に備わる記憶部2421に記憶された待ち時間テーブル3100に設定された、パケットの送信待ち時間から自ノードと宛先ノード間の通信帯域幅を計測する。その計測に応じて、インタフェース制御部2912は、当該宛先ノードに送信するパケットのサイズを変更する。待ち時間テーブル3100については、図31で後述する。
図30は、図29に示したノード2910の具体的な構成例を示す図である。
ノード2910は、プロセッサ810と、主記憶装置820と、ネットワークインタフェース装置2911と、を備える。
ネットワークインタフェース装置2911は、制御部3001と、DMAコントローラ902と、パケット送信部903と、を備える。ただし、図30は、ネットワークインタフェース装置2911が図30に示す構成要素のみを備えるという趣旨ではない。ネットワークインタフェース装置2911は、例えば、パケットの受信機能などの機能を含むことができる。
制御部3001は、プロセッサ810からパケット送信指示を受けると、DMAコントローラ902やパケット送信部903を操作して、パケットの送信処理を行う。制御部3001は、スイッチ2420に備わる記憶部2560に記憶された待ち時間テーブル3100から取得したパケットの送信待ち時間から自ノードと宛先ノード間の通信帯域幅を計測する。その計測に応じて、制御部3001は、当該宛先ノードに送信するパケットのサイズを変更する。
制御部3001は、送信待ち時間に基づく自ノードの通信帯域幅の計測と、その計測に応じて変更するデータ長と、の関係を表わす数式によって、宛先ノードに送信するパケットのデータ長を定量的に求めることができる。
図31は、本変形例で使用する待ち時間テーブル3100の例を示す図である。
図31に示す待ち時間テーブル3100は、宛先ノードを識別する情報である宛先ノードアドレスと、宛先ノードに送信したパケットの送信待ち時間と、を含む情報である。送信待ち時間には、該当する宛先ノードに送信したパケットのうち最新のパケットの送信待ち時間が、カウンタ2550によって設定される。
なお、本変形例においても、図26に示した待ち時間テーブル2600を使用することができる。ただし、待ち時間テーブル2600を使用する場合には、図28に示したように、宛先ノードへの送信待ち時間の平均値l2を算出する必要があるため、パケット送信のレイテンシの影響を受ける場合がある。
図32は、図30で説明したノード2910を使用した並列計算機2400におけるパケット送信処理を示すフローチャートである。
ステップS3201の処理は、図10のステップS1001と同様なので、説明は省略する。
ステップS3202において、制御部3001は、プロセッサ810からパケット送信指示を受けると、スイッチ2420に備わる記憶部2560に記憶された待ち時間テーブル3100から、宛先ノードアドレスへのパケットの送信待ち時間を取得する。
ステップS3203において、制御部3001は、ステップS3202で取得した送信待ち時間と、通信パターンと、に基づいて宛先ノードに送信するパケットのサイズを決定する。
ステップS3204〜S3207の処理は、図10のステップS1004〜S1007と同様なので、説明は省略する。
図33は、本変形例に係るパケットサイズの決定処理(ステップS3203)の詳細を示すフローチャートである。
ステップS3301において、制御部3001は、パケットサイズ候補を次式によって算出する。
α4×m2+(l3−n2) ・・・ (13)
ただし、α4はパケットサイズ調整のための0より大きい定数、m2は標準パケットサイズ、n2は基準待ち時間、l3はステップS3202で取得した宛先ノードへの送信待ち時間とする。m2には、待ち時間が基準待ち時間と同じ時に送信するパケットサイズなど、を使用することができる。基準待ち時間n2には、例えば、あらかじめ様々な種類の通信を行って全ノードで計測した、同じ宛先ノードのパケットの送信待ち時間の平均値などを使用することができる。
ステップS3302において、送信データが、他ノードから受信して中継するデータである場合(ステップS3302 YES)、制御部3001は、処理をステップS3303に移行する。この場合、制御部3001は、新たなパケットサイズ候補を次式によって算出する(ステップS3303)。
β4×(i+1)×P4 ・・・ (14)
ただし、β4はパケットサイズ調整のための0より大きい定数、iはデータを受信して中継するノードの数、P4はステップS3301で算出したパケットサイズ候補である。
式(14)によって新たなパケットサイズ候補を算出すると、制御部3001は、処理をステップS3304に移行する。また、ステップS3302において、送信データが、他ノードから受信して宛先ノードに中継するパケットのデータでない場合(ステップS3302 NO)、制御部3001は、処理をステップS3304に移行する。
ステップS3304において、ステップS3301またはS3303で求めたパケットサイズ候補が、変更可能な最大値以上の場合、制御部3001は、パケットサイズ候補を最大値のパケットサイズとする。また、ステップS3301またはS3303で求めたパケットサイズ候補が、変更可能な最小値以下の場合、制御部3001は、パケットサイズ候補を最小値のパケットサイズとする。また、ステップS3301またはS3303で求めたパケットサイズ候補が、最小値より大きく、かつ、最大値より小さい以上の場合、制御部3001は、パケットサイズ候補をパケットサイズとする。
以上の処理が終了すると、制御部3001は、パケットサイズの決定処理を終了する(ステップS3305)。
以上に説明したノード2911に備わる制御部3001は、図12に示したノード1210に備わる制御部1211のように、パケット送信部903にパケット送信間隔を指定してパケット送信間隔を制御してもよい。この場合、制御部3001は、図32のステップS3203〜S3207の処理に代えて、図13のステップS1303〜S1307の処理を行うことができる。
以上に説明した並列計算機600、700、2000、2400におけるノード間通信で使用するパケットには、図34に示すパケット3400を使用することができる。
図34に示すパケット3400には、パケットタイプ、リモートノードアドレス、ローカルノードアドレスおよびペイロードが含まれる。パケットタイプは、Putリクエストに使用するパケットやGetリクエストに使用するパケットなどパケットの種類を示す情報である。リモートノードアドレスは、パケットの送信先ノードのアドレスを示す情報である。ローカルノードアドレスは、パケットの送信元ノードのアドレスを示す情報である。ペイロードは、ノードが宛先ノードに送信するメッセージを必要に応じて分割したデータである。
以下では、本実施例に係る並列計算機の効果の一例を説明する。例えば、図35に示す並列計算機3500を考える。並列計算機3500は、図1に示した並列計算機100と同様の構成であるが、本実施例に係る並列計算機との対比に使用するためスイッチの数とノードの数を7個としている。
図35に示す並列計算機3500は、ノード3510〜3513が、ノード3515または3516に対して、Gather通信を行う場合の例を示している。
スイッチ3523は、パケット数比が均等になるように調停を行う。そのため、ノード3513から受信したパケットをスイッチ3523が宛先ノードに送信するパケット数と、スイッチ3522から受信したパケットをスイッチ3523が宛先ノードに送信するパケット数と、の比率は1/2ずつになる。同様に、ノード3512から受信したパケットをスイッチ3522が宛先ノードに送信するパケット数と、スイッチ3521から受信したパケットをスイッチ3522が宛先ノードに送信するパケット数と、の比率は1/2ずつになる。また、ノード3511から受信したパケットをスイッチ3521が宛先ノードに送信するパケット数と、スイッチ3520から受信したパケットをスイッチ3521が宛先ノードに送信するパケット数と、の比率は1/2ずつになる。
すると、ノード3513、3512、3511および3510が宛先ノードに送信するパケットのパケット数の比率、すなわち、パケット数比は、それぞれ、1/2、1/4、1/8および1/8となる。
各ノード3513、3512、3511および3510が送信するパケットサイズは同じなので、パケット数の比率はそのまま通信帯域幅比となる。この場合、宛先ノードであるノード3515や3516に近いノード3513から宛先ノードへのデータに比べて、宛先ノードであるノード3515や3516に遠いノード3510や3511からの宛先ノードへのデータの到着が遅延する。
図36は、図35に示した並列計算機3500の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示している。図36は、ノード3510〜3513が、ノード3515、3516の順にGather通信を行う通信パターンの場合の例である。なお、ノード3510〜3513は、メッセージサイズ4KByteのデータを、1KByteに分割してノード3515および3516に送信するものとする。ただし、分割するサイズを限定する趣旨ではない。また、スイッチ3520〜3526は、カット・スルー(Cut−Through)方式で動作できる、すなわち、他スイッチなどからパケットの先頭を受信すると、自スイッチが受信した、または、既に受信していたパケットを次のスイッチへ送信することができるものとする。
なお、図36に示す(0)と記載された□は、ノード3510が宛先ノードに送信するパケットを表している。同様に、(1)、(2)、(3)と記載された□は、それぞれノード3511、3512、3513が宛先ノードに送信するパケットを表している。図39、図41および図44についても同様である。
図36を参照すると、例えば、ノード3510が宛先ノードに送信したパケット数の比率が、多段のスイッチの調停により、スイッチ3523−3524間の経路で落ちている。また、ノード3511、3512が宛先ノードに送信したパケット数の比率も、スイッチ3523−3524間の経路で落ちている。
これに対し、スイッチ3523−3524間の経路での、ノード3513が送信したパケット数の比率は高くなっている。すなわち、スイッチ3523−3524間の経路での、ノード3513が利用できる通信帯域幅が高くなっている。そのため、ノード3510〜3512がノード3515へのパケット送信を全て終了する前に、ノード3513は、ノード3516へのパケットを送信している。すなわち、ノード3510〜3512がノード3515へのGather通信を終了する前に、ノード3513は、ノード3516へのGather通信を開始している。これにより、ノード3510〜3513からノード3515へのパケットの送信、すなわち、ノード3510〜3513からノード3515へのGather通信が待たされる。
このように、ホップ数の大きいノードから宛先ノードに送信するパケットの到着が、ホップ数の小さいノードから宛先ノードに送信するパケットの到着より遅くなる。
一方、図37は、本実施例に係る並列計算機700において、ノード710〜713が、ノード715または716に対して、Gather通信を行う場合の例を示している。
並列計算機700は、例えば、図11で説明したステップS1102などの処理により、宛先ノードまでのホップ数が大きいノードが送信するパケットのパケットサイズを大きくする。図37では、ホップ数の大きいノード710や711のパケットサイズ比が4となっている。また、ホップ数の小さいノード713のパケットサイズ比が1となっている。その結果、ノード720〜723が使用する通信帯域幅比が均等になっている。これにより、ボトルネックとなる通信帯域幅のノードがなくなる。そして、ホップ数の大きいノードからのパケットと、ホップ数の小さいノードからのパケットと、の宛先ノードへの到着のタイミングが均一化される。
なお、図37に示すパケットサイズ比は、説明のための例示であって、例えば、図11のステップS1102などの処理によって求めることができる。
図38は、図37に示した並列計算機700の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示している。
図38は、ノード710〜713が、ノード715、716の順にGather通信を行う通信パターンの場合の例である。ノード710〜713は、4KByteのメッセージを、ノード715および716に送信するものとする。スイッチ720〜726は、カット・スルー方式で動作できるものとする。
なお、図38に示す(0)’と記載された□は、ノード710が宛先ノードに送信するパケットを表している。同様に、(1)’、(2)’、(3)’と記載された□は、それぞれノード711、712、713が宛先ノードに送信するパケットを表している。図43および図45についても同様である。
図38を参照する。スイッチ720〜S726は、パケット数比が均等になるように調停を行う。そのため、スイッチ723−724間の経路での、ノード710〜713が宛先ノードに送信するパケットのパケット数比は、図36に示したスイッチ3523−3524間の経路での、ノード3510〜3513が宛先ノードに送信するパケットのパケット数比と同様である。
しかし、パケット数比が小さいノード710や711が宛先ノードに送信するパケットサイズは、パケット数比が大きいノード713などが宛先ノードに送信するパケットサイズに比べて大きくなっている。例えば、図38の例では、ノード710および711が宛先ノードに送信するパケットサイズが4KByte、ノード712が宛先ノードに送信するパケットサイズが2KByte、ノード713が宛先ノードに送信するパケットサイズが1KByteとなっている。その結果、例えば、スイッチ723−724間の経路での、ノード710〜713がそれぞれ単位時間当たりに経路を使用する時間は、公平になる。ノード710〜713がそれぞれ使用する通信帯域幅比が均等になる。
その結果、例えば、図38のスイッチ725−726間の経路のタイミングチャートからわかるように、ホップ数の大きいノード710や711から宛先ノード716に送信するパケットの到着と、ホップ数の小さいノード713から宛先ノード716に送信するパケットの到着と、が均一化される。
図35〜図38は、各ノードが送信する4KByteのメッセージを、所定のサイズのパケットに分割して宛先ノードに送信する場合の例を示した。これに対して、各ノードが送信する4KByteのメッセージを、所定のサイズのパケットに分割せずに宛先ノードに送信する場合でも、図38で説明した効果を得ることができる。
図39は、図35に示した並列計算機3500の各ノードがメッセージを分割することなく宛先ノードに送信する場合に、各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートである。
各ノードがメッセージを分割することなく宛先ノードに送信する場合も、図36で説明したように、例えば、ノード3510が宛先ノードに送信したパケット数の比率が、多段のスイッチの調停により、スイッチ3523−3524間の経路で落ちている。また、ノード3511、3512が宛先ノードに送信したパケット数の比率も、スイッチ3523−3524間の経路で落ちている。
これに対し、スイッチ3523−3524間の経路での、ノード3513が送信したパケット数の比率は高くなっている。すなわち、スイッチ3523−3524間の経路での、ノード3513が利用できる通信帯域幅が高くなっている。そのため、ノード3510〜3512がノード3515へのパケット送信が全て完了していない状態で、ノード3513は、ノード3516へのパケットを送信している。すなわち、ノード3510〜3512がノード3515へのGather通信を終了する前に、ノード3513は、ノード3516へのGather通信を開始している。これにより、ノード3510〜3513からノード3515へのパケットの送信、すなわち、ノード3510〜3513からノード3515へのGather通信が待たされる。
各ノードが宛先ノードに送信するメッセージを、所定のサイズのパケットに分割せずに宛先ノードに送信する場合でも、ホップ数の大きいノードから宛先ノードに送信するパケットの到着が、ホップ数の小さいノードから宛先ノードに送信するパケットの到着より遅くなる。したがって、各ノードが宛先ノードに送信するメッセージを、所定のサイズのパケットに分割せずに宛先ノードに送信する場合でも、本実施例に係る並列計算機700を使用することにより、図38で説明した効果を得ることができる。
以上では、集団通信における本実施例に係る並列計算機700の効果の一例を説明したが、以下では、集団通信以外の通信を行う場合における、本実施例に係る並列計算機700の効果の一例を説明する。
図40は、図35に示した並列計算機3500のノード3510〜3512が、それぞれ4ホップ離れた宛先ノードと通信を行っている場合の例を示している。
スイッチ3522は、パケット数比が均等になるように調停を行う。そのため、ノード3512から受信したパケットをスイッチ3522が宛先ノードに送信するパケット数と、スイッチ3521から受信したパケットをスイッチ3522が宛先ノードに送信するパケット数と、の比率は1/2ずつになる。同様に、ノード3511から受信したパケットをスイッチ3521が宛先ノードに送信するパケット数と、スイッチ3520から受信したパケットをスイッチ3521が宛先ノードに送信するパケット数と、の比率は1/2ずつになる。結局、ノード3512、3511および3510が宛先ノードに送信するパケット数の比率、すなわち、パケット数比は、それぞれ、1/2、1/4および1/4となる。ノード3512、3511および3510の通信帯域幅比も、ぞれぞれ、1/2、1/4および1/4となる。
この場合、ノード3512の通信帯域幅が、ノード3510や3511の通信帯域幅より大きい。そのため、スイッチ3522では、ノード3510や3511が宛先ノードに送信するパケットを受信してから宛先ノードに送信するまでの時間が、ノード3512が宛先ノードに送信するパケットを受信してから宛先ノードに送信するまでの時間より大きくなる。その結果、例えば、宛先ノードに送信するメッセージのサイズがノード3512よりノード3510の方が小さい場合でも、ノード3512が送信するメッセージが宛先ノードに到着するタイミングの方が、ノード3510が送信するメッセージが宛先ノードに到着するタイミングより遅くなる場合がある。
図41は、図40に示した並列計算機3500の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。ノード3510およびノード3511は、それぞれ4ホップ離れた宛先ノード3514および3515に4KByteのメッセージを1KByteのパケットに分割して送信するものとする。また、ノード3512は、4ホップ離れた宛先ノード3516に8KByteのメッセージを1KByteのメッセージに分割して送信するものとする。
図41を参照すると、例えば、ノード3510が宛先ノードに送信したパケット数の比率が、多段のスイッチの調停により、スイッチ3522−3523間の経路で落ちている。スイッチ3522では、ノード3510が宛先ノード3514に送信するパケットを受信してから、宛先ノード3514に送信するまでの時間が、ノード3512が宛先ノード3516に送信するパケットを受信してから、宛先ノード3516に送信するまでの時間より大きくなる。その結果、ノード3512よりメッセージ3510の方が宛先ノードに送信するメッセージのサイズが小さいが、ノード3510の宛先ノード3514へのメッセージの到着が、ノード3512の宛先ノード3516へのメッセージの到着より遅延している。
一方、図42は、本実施例に係る並列計算機700において、ノード710〜712が、それぞれ4ホップ離れた宛先ノードと通信を行っている場合の例を示している。
並列計算機700は、例えば、図11で説明したステップS1102などの処理により、宛先ノードまでのホップ数が大きいノード、すなわち、パケット数比の小さいノードが宛先ノードに送信するパケットサイズを大きくする。これにより、パケット数比の小さいノードが宛先ノードに送信するパケットのパケットサイズ比が大きくなる。例えば、図42では、パケット数比の小さいノード710や711のパケットサイズ比が2となっている。その結果、ノード720〜722が使用する通信帯域幅比が均等になる。ボトルネックとなる通信帯域幅のノードがなくなる。
なお、図42に示すパケットサイズ比は、説明のための例示であって、例えば、図11のステップS1102などの処理によって求めることができる。
図43は、図42に示した並列計算機700の各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示している。図43は、ノード710〜712が、それぞれ4ホップ離れた宛先ノード714〜716と通信を行う通信パターンの場合の例である。ノード710および711は、4KByteのメッセージを、必要に応じてパケットサイズを変更して、それぞれノード714および715に送信するものとする。ノード712は、8KByteのメッセージを、必要に応じてパケットサイズを変更して、それぞれノード716に送信するものとする。
図43に示すように、パケット数比が小さいノード710や711が宛先ノードに送信するパケットサイズは、パケット数比が大きいノード712が宛先ノードに送信するパケットサイズに比べて大きくなっている。例えば、図43の例では、ノード710および711がそれぞれ宛先ノード714および715に送信するパケットサイズが2KByteとなっている。また、ノード712が宛先ノード716に送信するパケットサイズが1KByteとなっている。その結果、例えば、スイッチ722−723間の経路での、ノード710〜712がそれぞれ単位時間当たりに経路を使用する時間が均等になる。ノード710〜712がそれぞれ使用する通信帯域幅比が均等になる。その結果、例えば、図43のスイッチ723−724間、724−725間および725−726間の経路のタイミングチャートから次のことがいえる。すなわち、ノード710から宛先ノード714に送信するメッセージ、ノード711から宛先ノード715に送信するメッセージ、およびノード712から宛先ノード716に送信するメッセージ、の到着タイミングが分散されて均一化される。
図40〜図43では、スイッチが、カット・スルー方式で動作できるものについての例を示した。これに対して、スイッチが、ストア・アンド・フォワード(Store and Forward)方式で動作できる場合でも、図43で説明した効果を得ることができる。なお、ストア・アンド・フォワード方式とは、スイッチが、他スイッチなどから送られたパケットの全てを受信してから、自スイッチが受信した、または、既に受信していたパケットを次のスイッチへ送信する方式である。
図44は、図40に示した並列計算機3500の各ノードがストア・アンド・フォワード方式で動作する場合における、各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。
ノード3520〜3526がストア・アンド・フォワード方式で動作する場合においても、図41と同様に、例えば、ノード3510が宛先ノードに送信したパケット数の比率が、多段のスイッチの調停により、スイッチ3522−3523間の経路で落ちている。スイッチ3522では、ノード3510が宛先ノード3514に送信するパケットを受信してから、宛先ノード3514に送信するまでの時間が、ノード3512が宛先ノード3516に送信するパケットを受信してから、宛先ノード3516に送信するまでの時間より大きくなる。その結果、ノード3512よりメッセージ3510の方が宛先ノードに送信するメッセージのサイズが小さいが、ノード3510の宛先ノード3514へのメッセージの到着が、ノード3512の宛先ノード3516へのメッセージの到着より遅延する。
一方、図45は、図42に示した並列計算機700の各ノードがストア・アンド・フォワード方式で動作する場合における、各スイッチ間を宛先ノードの方向に流れるパケットのタイムチャートを示す図である。
ノード720〜726がストア・アンド・フォワード方式の場合、受信するパケットのパケットサイズが大きいと、パケットの受信完了を待つ間、次のスイッチにパケットを送信できない期間、例えば、図45に示す区間Aができる。しかし、この点以外は、図43と同様のことがいえる。
例えば、図45に示すように、パケット数比が小さいノード710や711が宛先ノードに送信するパケットサイズは、パケット数比が大きいノード712が宛先ノードに送信するパケットサイズに比べて大きい。例えば、図45の例では、ノード710および711がそれぞれ宛先ノード714および715に送信するパケットサイズが2KByteとなっている。また、ノード712が宛先ノード716に送信するパケットサイズが1KByteとなっている。その結果、例えば、スイッチ722−723間の経路での、ノード710〜712がそれぞれ単位時間当たりに経路を使用する時間が均等になる。ノード710〜712がそれぞれ使用する通信帯域幅比が均等になる。その結果、例えば、図43のスイッチ723−724間、724−725間および725−726間の経路のタイミングチャートから次のことがいえる。すなわち、ノード710から宛先ノード714に送信するパケットの到着タイミング、ノード711から宛先ノード715に送信するパケットの到着タイミング、およびノード712から宛先ノード716に送信するパケットの到着タイミング、が分散されて均一化される。
以上の説明において、ホップ数テーブル840、応答時間テーブル2030、待ち時間テーブル2600および3100は、ノード間の通信形態の一例として挙げることができる。
また、S1101−S1107の処理などを行う制御部901、制御部1511および制御部1711は、計測手段の一例として挙げることができる。また、S1401−S1407の処理などを行う制御部1211、S2301−S2304の処理などを行う制御部2103も、計測手段の一例として挙げることができる。また、S2801−S2803の処理などを行うプロセッサ2411、S3301−S3304の処理などを行う制御部3001も、計測手段の一例として挙げることができる。
また、S1004−S1006の処理などを行う制御部901、S1304−S1307の処理などを行う制御部1211は、制御手段の一例として挙げることができる。同様に、S1604−S1606の処理などを行う制御部1511、S1904−S1906の処理などを行う制御部1711も、制御手段の一例として挙げることができる。また、S2207−S2209の処理などを行う制御部2103、S2701−S2706の処理などを行うプロセッサ2411、S3204−S3206の処理などを行う制御部3001も、制御手段の一例として挙げることができる。
以上に説明したノード710は、例えば、ネットワーク構成がトーラス型またはメッシュ型の場合、パケットサイズを式(1)によって求める。すなわち、ノード710は、宛先ノードまでのホップ数が多いほど、パケットサイズを大きくする。この場合、宛先ノードまでのホップ数が多いほど、パケットサイズ比が大きくなる。
一般に、ネットワーク構成がトーラス型またはメッシュ型の場合、宛先ノードまでのホップ数が多いほど、パケット数比は低下する。しかし、ノード710は、宛先ノードまでのホップ数が多いほど、パケットサイズ比を大きくする。その結果、ノード710は、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化するように動作する。
ノード711〜ノード716についても、ノード710と同様の動作をする。
その結果、ノード710〜ノード716は、集団通信などで一部のスイッチに通信が集中してパケット数比が下がっても、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化するように動作する。
また、ノード710は、ネットワーク構成がメッシュ型の場合、宛先ノードまでのホップ数が1でないとき、例えば、図5に示したノードN0とN7の状態のように宛先ノードと同じスイッチと接続していないとき、パケットサイズを式(3)によって求める。この場合、ノード710は、パケットサイズを大きくする。
一般に、ネットワーク構成がメッシュ型の場合、宛先ノードが接続するスイッチと同じスイッチに直接接続するノード以外のノードのパケット数比は低下する。これは、図5で例示したとおりである。
しかし、ノード710は、ネットワーク構成がメッシュ型の場合で、宛先ノードと同じスイッチと接続していないとき、パケットサイズ比を大きくする。その結果、ノード710は、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化するように動作する。
ノード711〜ノード716についても、ネットワーク構成がメッシュ型の場合で、宛先ノードと同じスイッチと接続していないとき、ノード710と同様の動作をする。
その結果、ノード710〜ノード716は、ネットワーク構成がメッシュ型の場合に、宛先ノードが接続するスイッチに直接接続するノード以外のノードのパケット数比が下がっても、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化できる。
ノード1500または1700を使用した並列計算機700の場合も、ノード710〜ノード716を使用した並列計算機700と同様に動作する。したがって、ノード1500または1700を使用した並列計算機700は、集団通信などのように、一部のノード間に通信が集中する場合でも通信性能を低下しないノード間通信を行うことが可能となる。さらに、ノード1500または1700並列計算機700は、ネットワーク構成がメッシュ型である場合での集団通信であっても、通信性能を低下することなくノード間通信を行うことが可能となる。
ノード1200は、例えば、ネットワーク構成がトーラス型またはメッシュ型の場合、パケットサイズを式(5)によって求める。すなわち、ノード1200は、宛先ノードまでのホップ数が多いほど、パケット送信間隔を小さくする。ここで、パケットサイズ比を、一定時間に、集団通信の送信元である各ノードが送信するパケットの総量の比率と考えると、パケット送信間隔が小さくなるほど、パケットサイズ比が大きくなる。
一般に、ネットワーク構成がトーラス型またはメッシュ型の場合、宛先ノードまでのホップ数が多いほど、パケット数比は低下する。しかし、ノード1200は、宛先ノードまでのホップ数が多いほど、パケットサイズ比を大きくする。その結果、ノード1200は、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化するように動作する。
また、ノード1200は、ネットワーク構成がメッシュ型の場合、宛先ノードまでのホップ数が1でないとき、例えば、図5に示したノードN0とN7の状態のように宛先ノードと同じスイッチと接続していないとき、ステップS1405によって求める。この場合、ノード1200は、パケット送信間隔を通常の通信で使用する既定値より小さくする。
一般に、ネットワーク構成がメッシュ型の場合、宛先ノードが接続するスイッチと同じスイッチに直接接続するノード以外のノードのパケット数比は低下する。これは、図5で例示したとおりである。
しかし、ノード1200は、ネットワーク構成がメッシュ型の場合で、宛先ノードと同じスイッチと接続していないとき、パケット送信間隔を小さくすることにより、パケットサイズ比を大きくする。その結果、ノード1200は、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化するように動作する。
ノード2020は、パケットサイズを式(10)によって求める。すなわち、ノード2020は、計数した応答時間が大きいほど、パケットサイズを大きくする。この場合、計数した応答時間が大きいほど、パケットサイズ比が大きくなる。
一般に、計測した応答時間が大きいほど、通信経路中のスイッチでの調停の結果、パケット数比が低下していると考えられる。しかし、ノード2020は、計測した応答時間が大きいほど、パケットサイズ比を大きくする。その結果、ノード2020は、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化できる。
ノード2410は、パケットサイズを式(12)によって求める。すなわち、ノード2410は、宛先ノードへ送信するパケットの待ち時間の平均値が大きいほど、パケットサイズを大きくする。この場合、宛先ノードへ送信するパケットの待ち時間の平均値が大きいほど、パケットサイズ比が大きくなる。
一般に、宛先ノードへ送信するパケットの待ち時間の平均値が大きいほど、通信経路中のスイッチでの調停の結果、パケット数比が低下していると考えられる。しかし、ノード2410は、宛先ノードへ送信するパケットの待ち時間の平均値が大きいほど、パケットサイズ比を大きくする。その結果、ノード2410は、自ノードから宛先ノードまでの送信パケットの到着時間と、他ノードから宛先ノードまでの送信パケットの到着時間とを均一化できる。
ノード2910を使用した並列計算機2400の場合も、ノード2410を使用した並列計算機2400と同様の動作となる。
以上のように、本実施例に係る並列計算機を使用することにより、宛先ノードへのデータの到着時間を均一化したノード間通信を行うことが可能となる。

Claims (18)

  1. 演算処理を行う複数のノードを有し、該ノード間を互いに通信可能に接続する並列計算機において、
    前記ノードに、
    前記ノード間の通信形態に基づいて、各宛先ノードまでの通信帯域幅を計測する計測手段と、
    前記計測手段が計測した通信帯域幅にしたがって、宛先ノードに送出するパケットサイズを制御する制御手段と、
    を備える並列計算機。
  2. 前記計測手段は、通信元である第1のノードと、該第1のノードの通信先である第2のノードとの間の通信経路に介在するパケットの転送手段726の数に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項1に記載の並列計算機。
  3. 前記計測手段は、通信元である第1のノードが、該第1のノードの通信先である第2のノードにパケットを送信してから、該パケットに対する応答パケットを前記第2のノードから受信するまでの応答時間に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項1に記載の並列計算機。
  4. 前記計測手段は、自身に接続された転送手段からパケットを受信してから、自身に接続された他の転送手段に該パケットを転送するまでの待ち時間を取得し、該待ち時間に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項1に記載の並列計算機。
  5. 前記制御手段は、前記計測手段が計測する宛先ノードとの間の通信帯域幅に応じて、前記ノードが前記宛先ノードに送信するパケットのサイズを大きくする、
    ことを特徴とする請求項1に記載の並列計算機。
  6. 前記制御手段は、前記計測手段が計測する宛先ノードとの間の通信帯域幅に応じて、前記ノードが前記宛先ノードにパケットを送信する送信間隔を大きくする、
    ことを特徴とする請求項1に記載の並列計算機。
    を備える並列計算機。
  7. 前記第1のノードと前記第2のノードとの間の通信経路に介在する前記転送手段の数を含む情報を記憶する記憶手段、
    をさらに備え、
    前記計測手段は、前記記憶手段が記憶する情報から、前記第1のノードと前記第2のノードとの間に介在する前記転送手段の数を取得し、該取得した前記転送手段の数に基づいて、宛先ノードとの間の通信帯域幅を計測する、
    ことを特徴とする請求項2に記載の並列計算機。
  8. 前記ノードを含むネットワークにおける前記第1のノードと前記第2のノードの位置関係に基づいて、前記第1のノードと前記第2のノードとの間の通信経路に介在する前記転送手段の数を算出する算出手段、
    をさらに備え、
    前記計測手段は、前記算出手段から、前記第1のノードと前記第2のノードとの間に介在する前記転送手段の数を取得し、該取得した前記転送手段の数に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項2に記載の並列計算機。
  9. 前記転送手段を経由する毎に該転送手段によって更新される計数値を保持する計数値領域を含む調査用パケットを、前記第2のノードに送信する送信手段と、
    前記調査用パケットに含まれる前記数値領域に保持された前記計数値が前記第2のノードによって設定された、前記調査用パケットに対する応答パケットを受信する受信手段と、
    前記計測手段は、前記受信手段が受信した応答パケットから、前記第1のノードと前記第2のノードとの間に介在する前記転送手段の数を取得し、該取得した前記転送手段の数に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項2に記載の並列計算機。
  10. 前記第1のノードと前記第2のノードとの間の通信経路に介在する、パケットの転送手段の数に基づく標準的な応答時間を記憶する記憶手段と、
    前記応答時間を計数する計数手段と、
    をさらに備え、
    前記計測手段は、前記記憶手段が記憶する標準的な応答時間と、前記計数手段が計数した前記応答時間とを比較し、該比較の結果に基づいて前記通信帯域幅を計測する、
    ことを特徴とする請求項3に記載の並列計算機。
  11. 演算処理を行う複数のノードを有し、該ノード間を互いに通信可能に接続する並列計算機において、前記ノードの通信を制御する通信制御装置であって、
    前記ノード間の通信形態に基づいて、ノード間の通信帯域幅を計測する計測手段と、
    前記計測手段の計測結果にしたがって、ノード間で送信されるパケットサイズを制御する制御手段と、
    を備える通信制御装置。
  12. 前記計測手段は、通信元ノードと、該第1のノードの通信先ノードとの間の通信経路に介在するパケットの転送手段の数に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項11に記載の通信制御装置。
  13. 前記計測手段は、通信元ノードが、該第1のノードの通信先ノードにパケットを送信してから、該パケットに対する応答パケットを前記通信左記ノードから受信するまでの応答時間に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項11に記載の通信制御装置。
  14. 前記計測手段は、通信元ノードが送信するパケットを転送する転送手段から、該パケットを受信してから他の転送手段に転送するまでの待ち時間を取得し、該待ち時間に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項11に記載の通信制御装置。
  15. 演算処理を行う複数のノードを有し、該ノード間を互いに通信可能に接続する並列計算機において、前記ノードの通信を制御する通信制御方法であって、
    前記ノード間の通信形態に基づいて、通信帯域幅を計測し、
    前記計測結果にしたがって、パケットサイズを制御する、
    通信制御方法。
  16. 通信元である第1のノードと、該第1のノードの通信先である第2のノードと、の間の通信経路に介在する、パケットの転送手段の数に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項15に記載の通信制御方法。
  17. 通信元である第1のノードが、該第1のノードの通信先である第2のノードにパケットを送信してから、該パケットに対する応答パケットを前記第2のノードから受信するまでの応答時間に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項15に記載の通信制御方法。
  18. 通信元である第1のノードが送信するパケットを受信して転送する転送手段から、該パケットを受信してから他の転送手段に転送するまでの待ち時間を取得し、該待ち時間に基づいて、前記通信帯域幅を計測する、
    ことを特徴とする請求項15に記載の通信制御方法。
JP2013505695A 2011-03-22 2011-03-22 並列計算機、通信制御装置および通信制御方法 Expired - Fee Related JP5655934B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/056836 WO2012127625A1 (ja) 2011-03-22 2011-03-22 並列計算機、通信制御装置および通信制御方法

Publications (2)

Publication Number Publication Date
JPWO2012127625A1 true JPWO2012127625A1 (ja) 2014-07-24
JP5655934B2 JP5655934B2 (ja) 2015-01-21

Family

ID=46878818

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013505695A Expired - Fee Related JP5655934B2 (ja) 2011-03-22 2011-03-22 並列計算機、通信制御装置および通信制御方法

Country Status (5)

Country Link
US (1) US9385961B2 (ja)
EP (1) EP2690830B1 (ja)
JP (1) JP5655934B2 (ja)
CN (1) CN103444142B (ja)
WO (1) WO2012127625A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016225791A (ja) 2015-05-29 2016-12-28 株式会社デンソー 車載ネットワークシステム
KR102629585B1 (ko) * 2016-10-04 2024-01-25 삼성전자주식회사 광전 변환 소자 및 이를 포함하는 촬상 장치

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6065046A (en) * 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
JP3820442B2 (ja) 2000-05-15 2006-09-13 株式会社神戸製鋼所 無線データ通信方法及び装置
US20010044835A1 (en) * 2000-05-17 2001-11-22 Schober Joseph Frank Selecting content to be communicated based on automatic detection of communication bandwidth
US7254140B1 (en) * 2002-01-14 2007-08-07 Xilinx, Inc. Method and apparatus for transceiving data in a micro-area network
JP4535661B2 (ja) * 2002-03-18 2010-09-01 日本電気株式会社 無線マルチホップネットワークにおける送信ノード、中継ノード及び通信システム
US6947386B2 (en) * 2002-12-06 2005-09-20 Microsoft Corporation Practical network node coordinate estimation
JP4404848B2 (ja) * 2005-12-05 2010-01-27 Necアクセステクニカ株式会社 帯域制限方法および装置、それを用いたネットワーク通信機器
US20070245122A1 (en) * 2006-04-13 2007-10-18 Archer Charles J Executing an Allgather Operation on a Parallel Computer
US8391166B2 (en) * 2006-09-13 2013-03-05 Broadcom Corporation Adaptive packet size modification for voice over packet networks
US7796521B2 (en) * 2006-11-09 2010-09-14 Alcatel-Lucent Usa Inc. Method and apparatus for policing bandwidth usage for a home network
JP4356742B2 (ja) * 2006-12-25 2009-11-04 ソニー株式会社 データ通信システム、データ送信装置およびデータ送信方法
JP4384675B2 (ja) * 2007-02-14 2009-12-16 日本電気通信システム株式会社 無線装置およびそれを用いた無線ネットワーク
JP4818948B2 (ja) * 2007-02-16 2011-11-16 株式会社神戸製鋼所 無線信号干渉検知装置,その方法及びそのプログラム
US8665735B2 (en) * 2007-07-20 2014-03-04 Broadcom Corporation Method and system for quality of service management in a multi-standard mesh of networks
US7769864B2 (en) * 2007-08-02 2010-08-03 Sap Ag Adaptation of clusters to virtualization technologies
US7653716B2 (en) * 2007-08-15 2010-01-26 International Business Machines Corporation Determining a bisection bandwidth for a multi-node data communications network
US8606846B2 (en) * 2007-10-15 2013-12-10 Nbcuniversal Media, Llc Accelerating peer-to-peer content distribution
KR101065972B1 (ko) * 2008-08-26 2011-09-19 에스케이 텔레콤주식회사 미디어 스트리밍을 위한 전송 대역폭 측정 시스템 및 그 방법
TWI407731B (zh) * 2008-12-23 2013-09-01 Ind Tech Res Inst 一種排程裝置、使用該排程裝置之行動電台、與其排程方法
WO2011040006A1 (ja) * 2009-09-30 2011-04-07 パナソニック株式会社 送信装置、受信装置、送受信システム、及び送受信方法
WO2011075670A1 (en) * 2009-12-18 2011-06-23 Google Inc. Matching encoder output to network bandwidth
US8773993B2 (en) * 2011-01-31 2014-07-08 Apple Inc. Adaptive bandwidth estimation

Also Published As

Publication number Publication date
WO2012127625A1 (ja) 2012-09-27
US20140023090A1 (en) 2014-01-23
US9385961B2 (en) 2016-07-05
CN103444142A (zh) 2013-12-11
CN103444142B (zh) 2016-03-09
JP5655934B2 (ja) 2015-01-21
EP2690830A4 (en) 2014-10-01
EP2690830B1 (en) 2017-09-20
EP2690830A1 (en) 2014-01-29

Similar Documents

Publication Publication Date Title
US9473359B2 (en) Transactional traffic specification for network-on-chip design
KR102410422B1 (ko) 네트워크에서의 분산 프로세싱
US9910816B2 (en) Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
CN103092807B (zh) 节点控制器、并行计算服务器系统以及路由方法
TWI583153B (zh) 用於促進訊息單向排序之裝置、系統和方法
CN106980582A (zh) 数据处理方法和装置
GB2411985A (en) Bus arrangement for reducing response time in a System on a Chip
JP5821624B2 (ja) 通信制御装置、並列計算機システム及び通信制御方法
JP2008086027A (ja) 遠隔要求を処理する方法および装置
JP2019113917A (ja) データ処理装置、及びデータ処理装置の制御方法
TW201946489A (zh) 多閘道通訊方法及其無線閘道系統
US20220121613A1 (en) Adaptive synching
KR20190087783A (ko) 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법
KR102031269B1 (ko) 개선된 3d 토러스
JP5655934B2 (ja) 並列計算機、通信制御装置および通信制御方法
CN114697276A (zh) 片上网络(NoC)中的广播交换机系统
JP6244998B2 (ja) 情報通信方法及び情報処理装置
CN106372013B (zh) 远程内存访问方法、装置和系统
JP6402576B2 (ja) 通信装置、情報処理装置、情報処理システム及び通信装置の制御方法
US20180255157A1 (en) Network service chains using hardware logic devices in an information handling system
TW202218380A (zh) 多階分佈式網路系統之可靠度評估方法
US9342473B2 (en) Parallel computer system, crossbar switch, and method of controlling parallel computer system according to selective transmission of data via ports of the crossbar switch
JP6620760B2 (ja) 管理ノード、端末、通信システム、通信方法、および、プログラム
Miyajima et al. A software bridged data transfer on a FPGA cluster by using pipelining and InfiniBand verbs
WO2022143583A1 (zh) 一种数据集成方法、装置及相关设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140905

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141110

R150 Certificate of patent or registration of utility model

Ref document number: 5655934

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees