JP5800032B2 - 計算機システム,通信制御装置及び計算機システムの制御方法 - Google Patents

計算機システム,通信制御装置及び計算機システムの制御方法 Download PDF

Info

Publication number
JP5800032B2
JP5800032B2 JP2013551129A JP2013551129A JP5800032B2 JP 5800032 B2 JP5800032 B2 JP 5800032B2 JP 2013551129 A JP2013551129 A JP 2013551129A JP 2013551129 A JP2013551129 A JP 2013551129A JP 5800032 B2 JP5800032 B2 JP 5800032B2
Authority
JP
Japan
Prior art keywords
transmission
node
data
unit
packet
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
JP2013551129A
Other languages
English (en)
Other versions
JPWO2013098993A1 (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 JPWO2013098993A1 publication Critical patent/JPWO2013098993A1/ja
Application granted granted Critical
Publication of JP5800032B2 publication Critical patent/JP5800032B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • 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
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • 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

Description

本発明は、計算機システム,通信制御装置及び計算機システムの制御方法に関する。
従来、演算処理を行なう複数のノードを備える並列計算機が知られている。並列計算機にそなわるノードは、複数の通信機器、ルーティング装置(例えば、スイッチ)等を含むネットワークを介して接続され、互いにデータ通信を行なう。
図34は並列計算機500の構成例を示す図である。
この図34に示す並列計算機500は、計算を行なうノードN0〜N4と、受信したデータを特定の送信先のノードに転送するスイッチ510〜514とを備える。スイッチ510〜514は、ネットワークトポロジとしてスイッチを直線上に配置した1次元のメッシュ型ネットワークを構成する。
スイッチは、ノードや他のスイッチが接続されている入力ポートからパケットを受信すると、受信したパケット内に含まれる宛先情報に基づいて、パケットを出力する出力ポートを決定する。そして、スイッチは、決定した出力ポートにパケットを出力する。
また、スイッチは、受信したデータや出力するデータを一時的に格納するバッファ520を備え、出力競合が起きた場合に1つのパケットを選んで転送し、その間、競合する他のパケットをバッファ520に格納する。
同じ出力ポートに出力するパケットを複数受信した場合、スイッチは、各入力ポートから出力ポートに出力するパケットの数が均等になるように調停を行なう。そして、スイッチは、調停結果に従って出力ポートからパケットを送信する。
ネットワークにおいて、リンクが単位時間当たりに流せる量を超えたパケットが通信されると輻輳が発生する。
上述の並列計算機500において、一部のスイッチに通信が集中すると、通信が集中したスイッチまでのホップ数が大きいノードほど通信帯域幅が大きく下がる。この場合、ホップ数が小さいノードからのデータに比べて、ホップ数の大きいノードからの宛先ノードへのデータの到着が遅延する。
図35はノードN0及びノードN3がノードN4に対してデータを送信する例を示す図である。
一般に、スイッチは各入力ポートからのパケットが均等に出力されるように調停を行なう。すなわち、スイッチは、各入力ポートに入力されるパケットの、出力ポートへの出力数が均等、つまり1/2ずつになるように、入力するパケットの調停を行なう。従って、ノードN3からスイッチ513に送信され、且つ、スイッチ513からスイッチ514に送信されるパケット数は、スイッチ513からスイッチ514に送信される全パケット数の1/2となる。
図35に示す例において、スイッチ513からノードN4までの間の経路で、ノードN0から送信されたパケットとノードN3から送信されたパケットとが重なり、ノードN0及びノードN3が使用できる通信帯域はそれぞれ1/2になる。しかし、ノードN0,N3はパケットを最大の帯域で出し続けるため、バッファ520がフル(バッファフル)の状態となる。以下、バッファフルの状態を、バッファ520が詰まると表現する場合がある。
そして、バッファ520の詰まりが生じた場合において、例えば、送信先のバッファ520が空いたとの通知を受け取ってからパケットの送信を行なう通信制御手法においては、通知による遅延が生じる。一方、送信先のバッファ520の空きを確認せずにパケット送信を行なう通信制御手法においては、送信先のバッファ520がフルの状態ではパケットは破棄されるので、パケットを再送する必要が生じる。すなわち、これらの通知による遅延やパケット再送により通信性能の悪化が生じる。
また、バッファ520の詰まりにより、他のノードの通信も影響を受ける。例えば、スイッチ511,512のバッファ520が詰まっている場合には、ノードN1,N2間の通信は、バッファ520に空きが生じるまで待たなければならない。すなわち、輻輳が伝搬していく。
ここで、パケット間に特殊なギャップパケットを打ち込み、打ち込んだギャップパケットに基づいて、パケット数を調整し、データの破棄及びデータの再送を抑制する転送方法が知られている。
「JCNnetwork =産業技術総合研、ネットワークトラフィックを平滑化するソフトウェアPSPacer1.0を公開=」、URL:「http://www.japancorp.net/japan/Article.Asp?Art_ID=29900」
上述の如き並列計算機システムにおいて、パケット間にどの程度のギャップを挿入すれば良いかは、パケットの送信元と送信先との組合わせ(通信パターン)に依存する。しかしながら、予め通信パターンにおいて通信がどの程度重なるかを予測し、ギャップ区間を決めることは困難である。又、通信パターンがランダム等の不規則的であれば、パケットの通信の重なりを予測するのはさらに困難になる。
1つの側面では、本件は、輻輳の発生を抑止することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
上記の目的を達成するために、通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムにおいて、前記送信元の計算ノードは、前記送信先の計算ノードにデータを送信するデータ送信部と、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整する調整部を有し、前記通信制御装置は、前記送信元の計算ノードが送信するデータを入力する入力部と、前記送信先の計算ノードに送信するデータを出力する出力部と、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有し、前記送信先の計算ノードは、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する制御データ送信部を有する。
また、通信制御装置において、前記通信制御装置を経由してデータを送信する送信元の計算ノードから、受信した制御データに含まれる送信ノード数に基づいて、送信間隔を調整して送信されるデータを入力する入力部と、前記通信制御装置を経由してデータを受信する送信先の計算ノードに送信するデータを出力する出力部と、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有する。
さらに、通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムの制御方法において、前記送信元の計算ノードが有するデータ送信部が、前記送信先の計算ノードにデータを送信し、前記送信元の計算ノードが有する調整部が、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整し、前記通信制御装置が有する入力部が、前記送信元の計算ノードが送信するデータを入力し、前記通信制御装置が有する送信ノード数記憶部が、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶すると、前記通信制御装置が有する出力部が、前記送信先の計算ノードに送信するデータを出力し、前記出力部がデータを出力する場合、前記通信制御装置が有する更新処理部が、前記送信ノード数記憶部が記憶する送信ノード数を更新し、前記通信制御装置が有する比較部が、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較し、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記通信制御装置が有する書換部が、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換え、 前記送信先の計算ノードが有する制御データ送信部が、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する。
通信経路上の通信状態に合わせた輻輳制御を効率よく実現することができる。
第1実施形態の一例としての並列計算機システムの機能構成を模式的に示す図である。 第1実施形態の一例としての並列計算機システムの構成を模式的に示す図である。 第1実施形態の一例としての並列計算機システムの計算ノードの構成を模式的に示す図である。 第1実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第1実施形態の一例としての並列計算機システムにおけるローカルノードアドレス及びリモートノードアドレスのフォーマットを例示する図である。 第1実施形態の一例としての並列計算機システムにおけるルーティングヘッダのフォーマットを例示する図である。 第1実施形態の一例としての並列計算機システムにおける応答パケットのフォーマットを模式的に例示する図である。 第1実施形態の一例としての並列計算機システムのスイッチの構成を模式的に示す図である。 第1実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の機能構成を模式的に示す図である。 第1実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の変形例を示す図である。 図11A,図11B,図11Cは第1実施形態の一例としての並列計算機システムにおけるパケットの通信手法の概要を説明する図である。 第1実施形態の一例としての並列計算機システムにおけるスイッチのポート受信部の処理を説明するフローチャートである。 第1実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 第1実施形態の一例としての並列計算機システムにおけるパケットの送信状態を例示する図である。 第2実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第2実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 第3実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第3実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 第4実施形態の一例としての並列計算機システムの計算ノードの構成を模式的に示す図である。 第4実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第4実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の機能構成を模式的に示す図である。 第4実施形態の一例としての並列計算機システムにおける応答パケットのフォーマットを模式的に例示する図である。 第4実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 第5実施形態の一例としての並列計算機システムの構成を模式的に示す図である。 第5実施形態の一例としての並列計算機システムに備えられるスイッチのハードウェア構成を模式的に示す図である。 第5実施形態の一例としての並列計算機システムの送信パケットに記憶される送信ノード数のフォーマット例を模式的に示す図である。 第5実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 第6実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 第7実施形態の一例としての並列計算機システムにおける計算ノードの構成を模式的に示す図である。 第7実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。 第7実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の構成を示す図である。 第7実施形態の一例としての並列計算機システムにおける送信元ノードとしての計算ノードのネットワークインタフェースの処理を説明するフローチャートである。 第7実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。 並列計算機の構成例を示す図である。 ノードN0及びノードN3がノードN4に対してデータを送信する例を示す図である。
以下、図面を参照して本計算機システム,通信制御装置及び計算機システムの制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態及び各変形例を組み合わせる等)して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)第1実施形態
図1は第1実施形態の一例としての並列計算機システム1の機能構成を模式的に示す図、図2はその構成を模式的に示す図である。
並列計算機システム1は、図2に示すように、複数(図2に示す例では5個)の計算ノード200を、1以上(図2に示す例では5個)のルーティング装置(通信制御装置)100を介して相互に通信可能に接続した相互結合網により構成されている。
すなわち、5つの計算ノード200−0〜200−4を、5つのスイッチ100−0〜100−4を介して相互に通信可能に接続した相互結合網により構成されている。
図2に示す例においては、ルーティング装置100−0〜100−4を1次元の直線状に配置した1次元メッシュとしてネットワーク2が形成され、各ルーティング装置100−0〜100−4に計算ノード200−0〜200−4がそれぞれ接続されている。すなわち、ルーティング装置100−0,100−1,100−2,100−3,100−4に、計算ノード200−0,200−1,200−2,200−3,200−4がそれぞれ接続されている。
なお、本実施形態において、並列計算機システム1に備えられる複数の計算ノード200−0〜200−4は互いに同様の構成を備えており、又、複数のルーティング装置100−0〜100−4も互いに同様の構成を備えている。
以下、ルーティング装置を示す符号としては、複数のルーティング装置のうち1つを特定する必要があるときには符号100−0〜100−4を用いるが、任意のルーティング装置を指すときには符号100を用いる。同様に、以下、計算ノードを示す符号としては、複数の計算ノードのうち1つを特定する必要があるときには符号200−0〜200−4を用いるが、任意の計算ノードを指すときには符号200を用いる。
各計算ノード200はルーティング装置100を介して相互に通信可能に接続される。以下、ノード200とルーティング装置100とを含むネットワークの一部または全部を、単に、ネットワーク2という場合がある。又、図2中においては、便宜上、スイッチ100の一部の構成についてのみ図示している。
計算ノード200は、任意の演算処理を行なう演算装置等の情報処理装置である。計算ノード200は、一般的な情報処理装置に備わる構成要素、例えば、プロセッサや主記憶装置等を備える。
計算ノード200は、ネットワークインタフェース203を介してルーティング装置100と通信可能に接続されている。これにより、本並列計算機システム1内の任意の計算ノード200間でデータを送受信することができる。すなわち、本並列計算機システム1においては、いずれの計算ノード200も、データの送信元としても、又、送信先としても機能し得る。
ここで、ノード間通信において通信を要求する側のノードをローカルノードといい、ノード間通信において、ローカルノードからの通信要求を受け付ける側のノードをリモートノードという。
以下、データの送信元の計算ノード200をローカルノードといい、データの送信先の計算ノード200をリモートノードという場合がある。
そして、送信元ノードとしての計算ノード200は、図1に示すように、パケット送信部21及びギャップ調整部22としての機能を備える。
パケット送信部21は、送信先の計算ノード200に対してパケットを送信する。後述するパケット送信部206が、このパケット送信部21として機能する。
ギャップ調整部(調整部)22は、送信ノード数送信部23から送信された送信ノード数に基づいて、送信するデータ間の間隔(ギャップ)を調整する。後述するギャップ制御部207が、このギャップ調整部22として機能する。なお、ギャップとはパケットを送信しない区間の事である。
また、送信先ノードとしての計算ノード200は、図1に示すように送信ノード数送信部23を備える。この送信ノード数送信部23は、受信したパケットから読み出した送信ノード数を送信元の計算ノード200に対して送信する。後述するパケット受信部208及びパケット送信部206が、この送信ノード数送信部23として機能する。
図3は第1実施形態の一例としての並列計算機システム1の計算ノード200の構成を模式的に示す図である。
この図3に示すように、第1実施形態の計算ノード200は、プロセッサ201,主記憶装置202及びネットワークインタフェース203を備える。
本並列計算機システム1においては、各計算ノード200から送信されるデータはパケットに分割された状態で送受信される。又、このパケットのパケット長は適宜設定することができ、又、固定長もしくは可変長として適宜実施することができる。以下、本実施形態においては、パケットが固定長である例について説明する。
プロセッサ201は、所定のプログラムに従って演算処理を行なう演算処理装置である。プロセッサ201は、ネットワークインタフェース203が受信するパケットを順次取得し、演算処理を行なう。また、プロセッサ201は、他の計算ノード200へデータを送信する必要がある場合に、そのデータを分割して宛先アドレスを含むパケットを生成し、ネットワークインタフェース203を介して出力する。
ノード間で通信を行なう際、ローカルノードのプロセッサ201は、ネットワークインタフェース203の制御部205にメッセージ送信指示を送る。メッセージ送信指示には、例えば、通信の種類などの情報が含まれる。
主記憶装置202は、種々のデータやプログラム等を記憶するメモリである。又、この主記憶装置202には、プロセッサ201が演算処理を行なう際に、このプロセッサ201が実行するプログラムやデータを一時的に格納・展開される。主記憶装置202には、プロセッサ201を介さずに、主記憶装置202が保持するデータをネットワークインタフェース203に転送するDMA(Direct Memory Access)転送を実現するDMA回路を含むことができる。
ネットワークインタフェース203は、計算ノード200がネットワーク2を介して他の計算ノード200と通信を行なうためのインタフェースである。
ネットワークインタフェース203は、図3に示すように、DMAコントローラ204,制御部205,パケット送信部206,ギャップ制御部207及びパケット受信部208を備える。
DMAコントローラ204は、後述する制御部205からDMAを行なうデータのアドレスとデータ長とを通知されると、主記憶装置202に対して、制御部205が通知したアドレスとデータ長を指定してDMA要求を行なう。すると、主記憶装置202は、指定されたアドレスに格納されているデータを、指定されたデータ長だけDMAコントローラ204にDMA転送する。DMAコントローラ204は、主記憶装置202からDMA転送されるデータをパケット送信部206に送信する。
制御部205は、プロセッサ201からパケット送信指示を受けると、DMAコントローラ204やパケット送信部206,パケット受信部208等を制御して、パケットの送受信処理を行なう。パケットの送信処理を行なう場合には、制御部205は、DMAコントローラ204とパケット送信部206に、1つのパケットに含むデータのデータ長を指定することにより送信するデータを読み込む。本実施形態においては、計算ノード200から送信するパケットの長さ(サイズ)は一定である。
制御部205は、送信するデータを受け取ると、データにヘッダを付加したパケット(送信パケット)を作成し、この作成したパケットをパケット送信部206に送り、ネットワーク2に送信させる。
図4は第1実施形態の一例としての並列計算機システム1における送信パケットのフォーマットを模式的に例示する図である。又、図5はローカルノードアドレス及びリモートノードアドレスのフォーマットを例示する図、図6はルーティングヘッダのフォーマットを例示する図である。
送信パケットは、例えば、図4に示すように、パケットタイプ,ルーティングヘッダ,ローカルノードアドレス,リモートノードアドレス,オフセット,送信ノード数及びペイロードをそれぞれ格納するフィールドを備える。パケットタイプは、当該パケットの種類を示す情報であり、例えば、Putリクエスト(Put通信)に使用するパケットやGetリクエスト(Get通信)に使用するパケットであることを示す。
ここで、Put通信とは、ローカルノードが自身とリモートノードの主記憶装置202の領域を指定して、ローカルノードの主記憶装置202のデータを、リモートノードの主記憶装置202の領域に書き込む通信を示す。
また、Get通信とは、ローカルノードが自身とリモートノードの主記憶装置202の領域を指定して、リモートノードの主記憶装置202のデータを、ローカルノードの主記憶装置202の領域に書き込む通信を示す。
ローカルノードアドレスは、当該パケットの送信ノード数元ノードのアドレス(ノードアドレス)を示す情報であり、リモートノードアドレスは、当該パケットの送信先ノードのアドレスを示す情報である。これらのノードアドレスは、例えば、各次元の座標値で表される。
本実施形態においては、ネットワーク2がXとYとからなる二次元のトーラスもしくはメッシュのトポロジを備えるものであり、ノードアドレスは、図5に示すように、X,Yの座標値で表される。
ルーティングヘッダは、当該パケットの経路を指定する情報であり、例えば、ネットワーク2上における当該パケットの送信元ノード(ローカルノード)の位置を原点とした時のリモートノードの位置を表す座標値である。このルーティングヘッダは、例えば、各次元の座標値で表される。
本実施形態においては、前述の如く、ネットワーク2が次元Xと次元Yとからなる二次元のトーラスもしくはメッシュのトポロジを備えるものであり、ルーティングヘッダは、図6に示すように、DX,DYの座標値で表される。
そして、ルーティング装置100は、このルーティングヘッダに格納された情報に基づいてパケットを送信するポートを決定する。
送信ノード数は、ネットワーク2における、パケットを送信中の計算ノード200の数である。
この送信ノード数は、後述の如く、送信パケットがルーティング装置100を通過する際に、このルーティング装置100が保持する送信ノード数と比較され、送信パケット中の送信ノード数よりもルーティング装置100に記憶された送信ノード数が大きい場合に、パケットの送信ノード数がルーティング装置100の送信ノード数によって書き換えられる。すなわち、パケット内の送信ノード数は、ルーティング装置100により転送される際に、このルーティング装置100によって更新される。
このように、パケットの送信ノード数は、当該パケットの通過経路上を通過しているパケットの送信元の計算ノード200の数を表わす。そして、このパケット中の送信ノード数は、当該パケットが通過した各ルーティング装置100に格納された送信ノード数の最大値と等しい。
ペイロードは、送信元ノードが送信先ノードに対して送信するメッセージ(データソース)を必要に応じて分割したデータである。オフセットは、ペイロードを格納する主記憶装置202のアドレスを指定する情報である。
パケット受信部208は、他の計算ノード200等からネットワーク2を介して送信されたパケットを受信し、そのペイロードをプロセッサ201に受け渡す等の受信処理を行なう。
また、パケット受信部208は、当該計算ノード200が送信パケットを受信した状態、すなわち、当該計算ノード200が送信先ノードである状態では、受信したパケットから送信ノード数を読み出して、パケット送信部206に受け渡す。又、パケット受信部208は、当該計算ノード200が送信パケットを送信した状態、すなわち、当該計算ノード200が送信元ノードである状態では、送信先ノードから送信される応答パケット(後述)を受信し、この応答パケットに含まれる送信ノード数を読み出してギャップ制御部207に受け渡す。
パケット送信部206は、当該計算ノード200が送信元ノードである状態では、制御部205によって作成されたパケットを宛先の計算ノード200に送信する。
また、パケット送信部206は、当該計算ノード200が送信先ノードである状態では、受信したパケットの送信元の計算ノード200に対して、応答パケットを作成して送信する。
図7は第1実施形態の一例としての並列計算機システム1における応答パケットのフォーマットを模式的に例示する図である。
この応答パケットは、例えば、図7に示すように、パケットタイプ,ルーティングヘッダ,ローカルアドレス,リモートアドレス及び送信ノード数を格納するフィールド備える。この応答パケットに格納される各情報は、図4を用いて説明した送信パケットに含まれる各情報と同様であるので、その詳細な説明は省略する。
なお、この応答パケットに格納される送信ノード数は、パケット受信部208が受信したパケット(送信パケット)から読み出した値が用いられる。
ギャップ制御部207は、応答パケットから読み出された送信ノード数に基づいて、パケット送信部206から送信する複数のパケット間の送信間隔(ギャップ長)を決定する。具体的には、ギャップ制御部207は、以下の式(1)に基づいてパケット間に挿入するギャップ長を決定する。
ギャップ長=パケットサイズ×(送信ノード数−1) ・・・(1)
ギャップ制御部207は、パケット送信部206から連続して送信されるパケットの間に、上述の如く決定した長さのギャップを挿入する。具体的には、例えば、パケット送信部206から送信するパケットの出力タイミングを、算出したギャップ長分だけ遅らせることにより、上述の如く算出した長さのギャップをパケット送信部206から出力するパケット間に挿入する。なお、パケット長が可変の場合には、例えば、予め設定した基準長をパケットサイズとして用いることが考えられ、適宜、変形して実施することができる。
ルーティング装置100は、計算ノード200や他のルーティング装置100と通信可能に接続され、受信したパケット(データ)を所定の宛先に転送する通信制御装置(中継装置)である。ルーティング装置100としては、例えば、スイッチが用いられる。以下、ルーティング装置100をスイッチ100とも表す。
図8は第1実施形態の一例としての並列計算機システム1のスイッチ100の構成を模式的に示す図である。この図8に例示するスイッチ100は、1次元メッシュのネットワークに用いられる3ポートのスイッチ100であり、ネットワークポート101−1,101−2及びノードポート110を備える。
そして、このスイッチ100は、図1に示すように、入力部11,出力部12,比較部13,書換処理部14,更新処理部15及び送信ノード数記憶部16としての機能を備える。
ネットワークポート101−1,101−2は、ネットワーク2の他のスイッチ100とのパケットの授受を行なう。これらのネットワークポート101−1,101−2は互いに同様の構成を備えている。以下、ネットワークポートを示す符号としては、複数のネットワークポートのうち1つを特定する必要があるときには符号101−1,101−2を用いるが、任意のネットワークポートを指すときには符号101を用いる。
ネットワークポート101は、図8に示すように、ポート送信部102及びポート受信部106を備える。
ポート受信部106は、ネットワーク2を介して接続された他のスイッチ100から送信されたパケットの受信を行なう。すなわち、このポート受信部106が、転送されるパケットが入力される入力部11に相当する。
このポート受信部106は、バッファ107及び受信制御部108を備える。バッファ107は、接続された他のスイッチ100から送信されたパケットを格納するFIFO(First In, First Out)型のメモリである。
受信制御部108は、他のスイッチ100からのパケットを受信し、バッファ107に格納する制御を行なう。又、受信制御部108は、バッファ107に格納されたパケットを、当該パケットの送信先に対応するネットワークポート101やノードポート110に対して送出する制御も行なう。
この受信制御部108は、他のスイッチ100から送信される送信要求に対して、バッファ107にパケットを格納可能な状態になると送信許可を返信する。そして、他のスイッチ100から送信されるパケットを受信しバッファ107に格納する。
受信制御部108は、受信したパケットのルーティングヘッダやリモートアドレスを参照して転送先のネットワークポート101や計算ノード200を決定する。そして、決定した、ネットワークポート101のポート送信部102の送信制御部104やノードポート110のポート送信部111の送信制御部113に対して送信要求を送出する。受信制御部108は、これらの送信制御部104や送信制御部113から送信許可を受信すると、バッファ107に格納されているパケットを、ネットワークポート101のポート送信部102やノードポート110のポート送信部111に対して送出する。
ポート送信部102は、ネットワーク2を介して接続された他のスイッチ100に対してパケットの送信を行なう。
すなわち、このポート送信部102が、転送するパケットを出力する出力部12に相当する。このポート送信部102は、バッファ103,送信制御部104及び送信ノード数記憶部105を備える。バッファ103は、接続された他のスイッチ100に送出するパケットを格納するFIFO型のメモリである。
送信制御部104は、バッファ103に格納されたパケットを、他のスイッチ100に対して送出する制御を行なう。
この送信制御部104は、他のポート送信部102のポート受信部106から他のスイッチ100へ送信するパケット及び送信要求を受信し、この送信要求に従って、他のスイッチ100に対してパケットを送信する。送信制御部104は、他のスイッチ100に対してパケットを送信するに際して、そのスイッチ100に対して送信要求を送出し、このスイッチ100から送信許可を受信すると、バッファ103に格納されているパケットを送出する。又、送信制御部104は、他のネットワークポート101のポート受信部106から送信要求を受信し、バッファ103にパケットを格納可能な状態となると、そのポート受信部106の受信制御部108に対して送信許可を送信する。
また、送信制御部104は、バッファ103に格納したパケットからリモートノードアドレス(送信ノードアドレス)と送信ノード数とを抽出し、これらの情報に基づいて送信ノード数記憶部105の送信状態情報の更新を行なう。なお、この送信制御部104による送信状態情報の更新手法の詳細は後述する。
送信ノード数記憶部105は、当該スイッチ100を通過するパケットに基づき、当該スイッチ100を通過するパケットに関する、送信元ノードの状態を表す情報である送信状態情報を管理する。この送信ノード数記憶部105は、例えばメモリ等の記憶部である。
図9は第1実施形態の一例としての並列計算機システム1における送信ノード数記憶部105の機能構成を模式的に示す図である。
送信ノード数記憶部105は、図9に示すように、カウンタ121及び送信ノード情報記憶部122を備える。
送信ノード情報記憶部122は、図9に示すように、ノードアドレス等の計算ノード200を特定する情報と、その計算ノード200がパケットを送信中であるか否かを表す情報とを対応付けた送信ノード状態情報(送信ノード情報,送信状態情報)を記憶する記憶部である。計算ノード200がパケットを送信中であるか否かを表す情報としては、例えば、“送信中”もしくは“無送信”のいずれかを示す情報が格納される。又、この送信ノード情報記憶部122は、例えば、メモリ等の記憶回路によって実現される。
そして、ネットワークポート101において、ポート送信部102の送信制御部104が、パケットを他のスイッチ100に送信する際に、送信ノード情報記憶部122において、そのパケットの送信先ノードに対応付けて“送信中”と設定する。
なお、並列計算機システム1においては予めネットワーク2の構成が明らかになっている。従って、送信ノード情報記憶部122には、当該スイッチ100を通過するパケットの送信元ノードとなりうる計算ノード200を予め設定することができる。
カウンタ121は、ネットワーク2において、当該スイッチ100を経由するパケットを送信中の計算ノード200の数(送信ノード数;送信状態情報)を計数するカウンタである。このカウンタ121は送信制御部104からのカウントアップ指示やカウントダウン指示に従って、そのカウント値のカウントアップやカウントダウンを行なう。具体的には、送信制御部104から送信されるカウントアップ信号やカウントダウン信号に従って、カウント値のカウントアップやカウントダウンを行なう。
例えば、送信制御部104は、パケットを他のスイッチ100に送信する際に、カウンタ121に対してカウントアップを指示するカウントアップ信号を送信することにより、カウンタ121にカウントアップを行なわせる。
また、本第1実施形態においては、送信制御部104は、送信ノード数記憶部105に送信元ノードについての送信ノード状態情報を格納してからの経過時間を図示しないタイマ等を用いて測定する。そして、送信制御部104は、例えば、その送信元ノードから予め設定された所定時間パケットが送信されないことを検知すると、送信ノード情報記憶部122において、当該送信元ノードに対して“無送信”を設定する。又、カウンタ121が備えられている場合には、送信制御部104は、これと同時に、カウンタ121に対してカウントダウンを指示するカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。
すなわち、送信制御部104は、出力部からデータを出力するに際して、送信ノード数記憶部105における、カウンタ121の送信ノード数や送信ノード情報記憶部122の情報を更新する更新処理部15として機能する。
なお、カウンタ121の値は、送信ノード情報記憶部122に“送信中”と記憶されている送信元ノードの数と等しい。従って、この送信ノード情報記憶部122に“送信中”と記憶されている送信元ノードの数を計数することにより、送信ノード数記憶部105においてカウンタ121を省略することができる。
図10は第1実施形態の一例としての並列計算機システム1における送信ノード数記憶部105の変形例を示す図である。この図10に示す第1実施形態の一例としての並列計算機システム1の送信ノード数記憶部105は、第1実施形態の送信ノード数記憶部105からカウンタ121を除くものであり、送信ノード情報記憶部122のみを備える。
この変形例としての送信ノード数記憶部105を備えるスイッチ100においては、例えば送信制御部104において、送信ノード数記憶部105に“送信中”と記憶されている送信元ノードの数を計数することにより送信ノード数を求める。これにより、送信ノード数記憶部105においてカウンタ121の実装を省略して装置構成を簡略化し、製造コストを低減することができる。
そして、送信ノード数記憶部105は、ネットワーク2においてそのスイッチ100を経由するデータを送信中の計算ノード200の数を表す送信ノード数を記憶する送信ノード数記憶部16に相当する。
また、送信制御部104は、図1に示すように、比較部13及び書換処理部14としての機能を備える。
比較部13は、ネットワークポート101のポート送信部102において、送信するパケットの送信ノード数と、送信ノード数記憶部105のカウンタ121のカウンタ値とを比較する。
書換処理部14は、比較部13による比較の結果、カウンタ121のカウンタ値が送信するパケットの送信ノード数よりも大きければ、パケットの送信ノード数をカウンタ121のカウンタ値で書き換える。
なお、図10に示すように、送信ノード数記憶部105がカウンタ121を備えない場合には、比較部13は、カウンタ121のカウンタ値に代えて、送信ノード情報記憶部122において“送信中”の送信ノードの数を計数した値を用いる。
ノードポート110は、計算ノード200と通信可能に接続され、この接続された計算ノード200とのパケットの授受を行なう。
ノードポート110は、図8に示すように、ポート送信部111及びポート受信部114を備える。ポート送信部111は、接続された計算ノード200のネットワークインタフェース203に対して、当該スイッチ100においてネットワークポート101が受信したパケットを送信する。
ポート送信部111は、接続された計算ノード200のネットワークインタフェース203にパケットを送信する。すなわち、このポート送信部111は、転送するパケットを出力する出力部12に相当する。
このポート送信部111は、バッファ112及び送信制御部113を備える。バッファ112は、接続された計算ノード200のネットワークインタフェース203に送出するパケットを格納するFIFO型のメモリである。送信制御部113は、バッファ112に格納されたパケットを計算ノード200に対して送出する制御を行なう。
この送信制御部113は、ネットワークポート101から送信要求及びパケットを受信し、この送信要求に従って計算ノード200に対してパケットを送信する。送信制御部113は、計算ノード200にパケットを送信するに際して、そのネットワークインタフェース203に対して送信要求を送出する。そして、ネットワークインタフェース203から送信許可が応答されると、バッファ112に格納されているパケットをそのネットワークインタフェース203に対して送出する。又、送信制御部113は、バッファ112に新たなパケットを格納可能な状態となると、ネットワークポート101に対して送信許可を送信する。
ポート受信部114は、計算ノード200のネットワークインタフェース203から送信されるパケットを受信する。すなわち、このポート受信部114も、転送されるパケットが入力される入力部11に相当する。
ポート受信部114は、バッファ115及び受信制御部116を備える。バッファ115は、接続された計算ノード200のネットワークインタフェース203から受信したパケットを格納するFIFO型のメモリである。受信制御部116は、ネットワークインタフェース203から送信されるパケットを受信し、バッファ115に格納する制御を行なう。又、受信制御部116は、バッファ115に格納されたパケットを、当該パケットの送信先に対応するネットワークポート101に送出する制御も行なう。
この受信制御部116は、計算ノード200のネットワークインタフェース203から送信される送信要求に対して、バッファ115にパケットを格納可能な状態になると送信許可を返信する。そして、受信制御部116は、ネットワークインタフェース203から送信されるパケットを受信しバッファ115に格納する。
受信制御部116は、受信したパケットのルーティングヘッダやリモートアドレスを参照して転送先のネットワークポート101を決定し、そのネットワークポート101のポート送信部102の送信制御部104に対して送信要求を送出する。受信制御部116は、ネットワークポート101から送信許可を受信すると、バッファ115に格納されているパケットをネットワークポート101のポート送信部102に対して送出する。
上述の如く構成された、第1実施形態の一例としての並列計算機システム1におけるパケットの通信手法の概要を、図11A,図11B及び図11Cを用いて説明する。
これらの図11A,11B,11Cに示す並列計算機システム1は、図2に示したものと同様の構成を備え、5つの計算ノード200−0〜200−4を、5つのスイッチ100−0〜100−4を介して相互に通信可能に接続したネットワーク(相互結合網,通信網)2を構成する。なお、以下、5つの計算ノード200−0〜200−4を、ノードN0〜N4で表す場合がある。又、以下、計算ノード200を特定する符号N0〜N4をノード識別情報という場合がある。
また、図11A,11B,11C中においては、便宜上、スイッチ100の一部の構成についてのみ図示する。
上述の如く、本並列計算機システム1においてスイッチ100は、ネットワークポート101のポート送信部102からパケットを送信すると、送信ノード数記憶部105の送信ノード情報記憶部122に送信ノードアドレスを記憶する。
図11A,11B,11Cにおいては、ノードN0とノードN3とがノードN4に対してパケットを送信する例を示す。
かかる状態においては、図11Aに示すように、スイッチ100−0〜100−2のネットワークポート101の送信ノード情報記憶部122に、送信元ノードであるノードN0について“送信中”である旨が記憶される。又、スイッチ100−3,100−4のネットワークポート101の送信ノード情報記憶部122に、送信元ノードであるノードN0,N3について“送信中”である旨が記憶される。
なお、図11A,11B,11C中においては、便宜上、送信ノード情報記憶部122に、“送信中”である計算ノード200のノード識別情報のみを示す。
また、送信元ノードから送信されたパケットの送信ノード数は、各スイッチ100を通過する際に送信制御部104によって更新される。これにより、パケットの送信ノード数には、通過したスイッチ100の中での送信ノード数の最大値が記憶される。図11Aに示す例において、ノードN4に送達されるパケットには、そのネットワーク2中での送信ノード数“2”が格納される。
パケットを受信した計算ノード200は、受信したパケットから抽出した送信ノード数を格納した応答パケットを、そのパケットの送信元の計算ノード200に送り返す。図11Bに示す例においては、ノードN4は、送信ノード数“2”を格納した応答パケットをノードN0とノードN3とに送り返す。
この応答パケットを受信したノードN0,N3は、ギャップ制御部207が、送信する複数のパケットの間隔を、前記式(1)に基づいて算出し、パケット送信部206は、連続して送信する複数のパケットの間に、この算出した長さ(ギャップ長)のギャップを挿入する。
図11Cに示す例においては、送信ノード数“2”であるので、パケット間に挿入するギャップ長=パケットサイズとなる。ノードN0とノードN3とは、パケットの送信に使用できる通信帯域(使用帯域)が1/2になるため、パケット間にパケットと同じ長さのギャップを挿入することにより、ネットワーク2の通信帯域を効率良く用いることができる。すなわち、輻輳の発生を防止できるとともに、各送信元ノード間で通信帯域を均等に使用することができる。
並列計算機システム1においては、以降も上記の処理を繰り返すことで、各送信元ノード200は、送信ノード数の増減に応じて、送信するパケット間に挿入するギャップ長を動的に調整する。例えば、ノードN2がノードN4に対してパケットを送信する場合には、このパケットが通過するスイッチ100−2〜100−4の各ポートの送信ノード情報記憶部122には、送信元ノードとしてノードN2が“送信中”として追加される。
また、パケットに格納される送信ノード数は“3”となる。送信元ノードであるノードN0,N2,N3はそれぞれ、通信帯域を均等に使うように、上記式(1)に基づき、パケット間にパケットの2倍の長さのギャップを挿入する。
次に、上述の如く構成された、第1実施形態の一例としての並列計算機システム1におけるスイッチ100のポート受信部106の処理を、図12に示すフローチャート(ステップA10〜A60)に従って説明する。
本例においては、図11A〜11Cに示すように、ネットワーク2は2次元メッシュ構成を備え、ルーティングはX,Yの順に座標を合わせる次元順ルーティングを行なう。
スイッチ100において、ネットワークポート101のポート受信部106は、他のスイッチ100からパケットを受信する(ステップA10)。ポート受信部106は、パケットを受信したネットワークポート101に基づいて、パケットのルーティングヘッダを更新する。すなわち、受信したネットワークポート101の次元に応じて、ルーティングヘッダの値(DX,DY)を+1もしくは−1することにより更新する。
具体的には、例えば、ネットワーク2の構成を座標空間に対応させるとともに、仮想的な原点を定める。そして、原点に対するスイッチ100のネットワークポート101の位置(座標)について、座標の増加方向を“+”、又、減少方向を“−”とする。
そして、受信制御部108は、パケットのルーティングヘッダに対して、受信したネットワークポート101と同じ次元のDXもしくはDYの値に対して、−方向なら−1、+方向なら+1する(ステップA20)。例えば、ネットワークポート101がX次元で−方向の時には、DXの値を−1する。又、ネットワークポート101がY次元で+方向の時には、DYを+1する。
受信制御部108は、ルーティングヘッダの値DX,DYの値が全て0であるか否かを確認する(ステップA30)。DX,DYがいずれも0の場合には(ステップA30のYESルート参照)、パケットが宛先のリモートノードが直結されたスイッチ100に届いたことを意味する。従って、受信制御部108は、パケットを、ネットワークインタフェース203に接続されている、当該スイッチ100のノードポート110を選択する(ステップA40)。
一方、DX,DYの少なくともいずれかが0ではない(非0)場合には(ステップA30のNOルート参照)、例えば、X座標、Y座標の順で非0のフィールドを調べ、この非0のフィールドの値が0に近付くネットワークポート101を選択する(ステップA60)。すなわち、当該フィールドと同じ次元、同じ符号のポートを選ぶ。なお、Y座標,X座標の順で次元順ルーティングを行なう場合には、Y座標、X座標の順で非0のフィールドを調べる。
そして、受信制御部108は、選択したノードポート110もしくはネットワークポート101の送信制御部113,104に送信要求を送信する。送信制御部113,104から送信許可が返信されると、受信制御部108は、そのノードポート110もしくはネットワークポート101にパケットを送信する(ステップA50)。
また、パケットを受信したネットワークポート101のポート送信部102の送信制御部104は、パケットを他のスイッチ100に送信する際、送信ノード数記憶部105の更新を行なう。すなわち、送信ノード情報記憶部122にその送信ノードに対して“送信中”を記憶し、又、カウンタ121の送信ノード数のカウントアップを行なう。
次に、第1実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図13に示すフローチャート(ステップB10〜B70)に従って説明する。
ポート送信部102は、ポート受信部114やポート受信部106から転送するパケットを受信すると、受信したパケットをバッファ103に格納する(ステップB10)。
送信制御部104は、パケットのローカルノードに基づいて送信ノード情報記憶部122を確認する(ステップB20)。すなわち、送信ノード情報記憶部122において、当該ローカルノードが“送信中”となっているか否かを確認する。
送信ノード情報記憶部122において、当該ローカルノードが“送信中”となっていれば(ステップB20のYESルート参照)、送信制御部104(比較部13)は、送信ノード数記憶部105で管理する送信ノード数とパケットに格納されている送信ノード数とを比較する(ステップB30)。
ここで、送信ノード数記憶部105がカウンタ121を備えている場合(図9参照)には、このカウンタの値が送信ノード数として用いられる。又、送信ノード数記憶部105がカウンタ121を備えていない場合(図10参照)には、送信ノード数は、送信ノード情報記憶部122において“送信中”と記憶されているノードを数えることで求められる。
一方、送信ノード情報記憶部122において、当該ローカルノードが“無送信”となっていれば(ステップB20のNOルート参照)、送信制御部104は、送信ノード情報記憶部122における当該ローカルノードに対応付けて“送信中”を設定する。又、送信制御部104は、カウンタ121に対してカウントアップ信号を送信することにより、送信ノード数をカウントアップ(+1)する(ステップB70)。その後、ステップB30に移行する。
送信ノード数記憶部105で管理する送信ノード数がパケットの送信ノード数以下の場合には(ステップB30のNOルート参照)、送信制御部104は、接続されている他のスイッチ100のネットワークポート101に対して送信要求を送信する。そして、このネットワークポート101から送信許可が応答されると、送信制御部104は、該当ネットワークポート101に対してパケットを送信する(ステップB50)。
また、送信ノード数記憶部105で管理する送信ノード数がパケットの送信ノード数より大きければ(ステップB30のYESルート参照)、送信制御部104(書換処理部14)は、パケットの送信ノード数の値を、送信ノード数記憶部105の送信ノード数で書き換える(ステップB40)。その後、ステップB50に移行する。
送信制御部104は、送信ノード情報記憶部122において送信元ノードに対して“送信中”を設定してからの経過時間を測定する。そして、送信ノードに対して“送信中”を設定してから、予め設定した時間の間、同じノードからパケットが来なければ、送信ノード情報記憶部122における当該送信元ノードに対して“無送信”を設定する。又、送信ノード数記憶部105がカウンタ121を備えている場合(図9参照)には、送信制御部104は、カウンタ121に対してカウントダウン信号を送信することにより、送信ノード数をカウントダウン(−1)する(ステップB60)。なお、送信ノード数記憶部105がカウンタ121を備えていない場合(図10参照)には、送信制御部104はカウントダウン信号の送信は行なわない。
このように、第1実施形態の一例としての並列計算機システム1によれば、送信元ノードから送信先ノードへの経路上を通過するパケットを送信している送信元ノードの数(送信ノード数)を、当該経路上のスイッチ100が送信ノード数記憶部105に記憶する。そして、送信元ノードが、この送信ノード数に基づいて、連続して送信するパケット間の送信間隔を算出する。
具体的には、“パケットサイズ×(送信ノード数−1)”として算出される長さ(ギャップ長)のギャップをパケット間に挿入する。
このギャップ長は、通信経路上にパケットを送出している送信元ノードの数に基づいて算出されるものであり、複数の送信元ノードが通信経路上にパケットを送出することにより、これらのパケットが重なり合う(重合する)ことにより生じる通信帯域の減少量に対応するものである。従って、この送信ノード数に基づいてギャップ長を設定することにより、パケットを送信中の各送信元ノードが通信帯域を均等に使用することができる。
本並列計算機システム1によれば、送信元ノードが、通信経路上におけるパケットの通信状態に合わせた間隔でパケットを送信することができ、これにより、輻輳が解消することができる。すなわち、通信経路上の通信状態に合わせた輻輳制御を効率よく実現することができ、並列計算機システム1におけるネットワーク2を効率よく使用することができる。
図14は第1実施形態の一例としての並列計算機システム1におけるパケットの送信状態を例示する図である。この図14に示す例においては、ノードN0及びノードN3がノードN4に対してデータを送信している。
本第1実施形態の並列計算機システム1においては、この図14に示すように、送信元ノードがパケットを送信する際に、複数の送信元ノードからパケットが送信されることにより減少する通信帯域に応じた長さのギャップを、予めパケット間に挿入する。
この図14に示す例では、ノードN0から送信されたパケットとノードN3から送信されたパケットが、スイッチ100−3からノードN4までの経路上において重なる。この重なり部分で、ノードN0及びノードN3が使用できる通信帯域が1/2に減少する。
ここで、パケットの送信元ノードであるノードN0,N3が、連続して送信するパケットの間にパケットと同じ長さ(ギャップ長)のギャップを挿入することで、これらのノードN0,N3が使用する通信帯域をそれぞれ1/2にする。これにより、スイッチ100−3からノードN4までの重なり部分で通信帯域が減少せず、バッファ詰まりが発生しない。すなわち、輻輳の発生が阻止され、ノードN1,N2の通信はバッファの詰まりの影響を受けない。
また、本並列計算機システム1においては、パケットに送信ノード数を格納することにより、各スイッチ100が容易にネットワーク2上における送信ノード数を把握することができる。
スイッチ100において、送信ノード数を管理し、ポート送信部102からパケットを送信するに際して、そのパケットのローカルノードの情報(送信中)を送信ノード数記憶部105(送信ノード情報記憶部122)に記憶する。これにより、スイッチ100において、パケットを送信中の送信元ノードをリアルタイムに把握することができる。
スイッチ100において、送信ノード数記憶部105にカウンタ121を備え、このカウンタ121により送信ノード数を計数することにより、スイッチ100において、パケットを送信中の送信元ノードの数をリアルタイムに把握することができる。
また、送信ノード数記憶部105に送信元ノードについての送信ノード状態情報を格納してから所定時間パケットが送信されない場合に、カウンタ121の送信ノード数をカウントダウンする。これにより、送信ノード数の値が適正に管理され、信頼性を向上させることができる。
スイッチ100において、ポート送信部102からパケットを送信するに際して、送信ノード数記憶部105(カウンタ121)で管理する送信ノード数と、パケットに記憶されている送信ノード数とを比較する。そして、送信ノード数記憶部105の送信ノード数がパケットの送信ノード数よりも大きい場合に、送信ノード数記憶部105の送信ノード数でパケットの送信ノード数を書き換える。これにより、各スイッチ100において管理する送信ノード数の値をパケットに反映させることができる。
また、送信先ノードが、受信したパケットから送信ノード数を抽出して、応答パケットを作成して送信元ノードに送信する。これにより、送信元ノードが送信ノード数を容易に把握することができ、この応答パケットから読み出した送信ノード数を用いて、上記式(1)によりギャップ長を算出することができる。
(B)第1実施形態の変形例
上述した第1実施形態においては、Put通信等のローカルノードがリモートノードへメッセージを送信する例について説明したが、これに限定されるものではない。すなわち、本技術はGet通信等のリモートノードがローカルノードにメッセージを送信する場合にも適用することができる。
以下に、Get通信等のリモートノードがローカルノードにメッセージを送信する場合の処理を説明する。
(1)ローカルノードがリモートノードへメッセージ送信を要求するGetリクエストパケットを送信する。
なお、このGetリクエストパケットのパケットフォーマットとしては、例えば、図4に示した送信パケットのフォーマットから送信ノード数及びペイロードを除いたものを用いることができる。
(2)スイッチ100において、ポート受信部106は、図12に示したフローチャートと同様の手法でルーティングヘッダに基づく次元順ルーティングを行ない、リモートノードへパケットを送信する。又、ポート送信部102は、図13に示すフローチャートのステップB10,B50と同様の処理でパケットの送信を行なう。なお、この時点では、ポート送信部102による、図13のフローチャートのステップB20〜B40,B60に示した、送信ノード数に基づく送信ノード数記憶部105の更新処理は行なわれない。
(3)Getリクエストパケットを受信したリモートノードのネットワークインタフェース203は、要求されたデータを読み出し、Getレスポンスパケットをローカルノードに送り返す。
なお、このGetレスポンスパケットのパケットフォーマットとしては、例えば、図4に示した送信パケットのフォーマットと同様のものを用いることができる。
(4)スイッチ100において、ポート受信部106は、図12に示したフローチャートと同様の処理で、ルーティングヘッダに基づく次元順ルーティングを行ない、ローカルノードへパケットを送信する。又、ポート送信部102は、図13に示したフローチャートと同様の処理で、パケットの送信や送信ノード数に基づく送信ノード数記憶部105の更新処理等を行なう。
(5)Getレスポンスパケットを受信したローカルノードのネットワークインタフェース203は、パケットのペイロードを主記憶装置202に記憶し、又、送信ノード数を記憶した応答パケットをリモートノードへ送り返す。
なお、この応答パケットのパケットフォーマットとしては、例えば、図7に示した応答パケットのフォーマットと同様である。
(6)パケットを受信したリモートノードのネットワークインタフェース203は、前記式(1)により、ギャップ長を算出し、このギャップ長を有するギャップをGetレスポンスパケットの間に挿入して、ローカルノードに送信する。
(C)第2実施形態
上述した第1実施形態の一例としての並列計算機システム1においては、送信制御部104は、送信元ノードから予め設定された所定時間パケットが送信されないことを検知すると、送信ノード情報記憶部122において、当該送信元ノードに対して“無送信”を設定する。又、カウンタ121が備えられている場合には、送信制御部104は、これと同時に、カウンタ121に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。
本第2実施形態の一例としての並列計算機システム1においては、ポート送信部102において、送信制御部104は、一つのメッセージを成す複数のパケットについて、その末尾のパケット(末尾パケット)を検知する。そして、送信制御部104は、この末尾パケットを送信する際に、送信ノード情報記憶部122において、当該送信元ノードに対して“無送信”を設定する。又、カウンタ121が備えられている場合には、送信制御部104は、これと同時に、カウンタ121に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。
具体的には、送信元ノードにおいて、パケット送信部206が、メッセージのパケットを生成するに際して、メッセージの末尾のパケットに末尾である旨を表す情報(末尾フラグ)設定する。
図15は第2実施形態の一例としての並列計算機システム1における送信パケットのフォーマットを模式的に例示する図である。本第2実施形態の一例としての並列計算機システム1の送信パケットフォーマットは、図4に示した第1実施形態の送信パケットフォーマットに加えて末尾フラグを備える。なお、送信パケットにおける、その他の部分は第1実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。
また、以下、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
送信元ノードにおいて、ネットワークインタフェース203は、メッセージを複数のパケットに分割して送信する際に、末尾のパケットに対しては、その末尾フラグを有効にする。例えば、末尾フラグに“1”に設定する。又、末尾以外のパケットに対しては、それぞれ末尾フラグに“0”を設定する。これらの、末尾フラグの“1”が、当該パケット(分割データ)が末尾である事を示す末尾識別情報に相当する。
なお、この末尾フラグへの“0”又は“1”の設定は、例えば、制御部205が行なってもよく、又、パケット送信部206が行なってもよい。
本第2実施形態の一例としての並列計算機システム1の計算ノード200は、上述の如く、ネットワークインタフェース203において、送信する各パケットに対して、末尾フラグとして“1”又は “0”を設定するが、その他の部分は第1実施形態の計算ノード200と同様に構成されており、その説明は省略する。
スイッチ100において、ポート送信部102の送信制御部104は、この末尾フラグに基づき、送信ノード数記憶部105の更新を行なう。すなわち、送信制御部104は、送信するパケットの末尾フラグを確認し、末尾フラグに“1”が設定されているパケットを送信する際に、送信ノード情報記憶部122において、その送信元ノードに“無送信”を設定する。又、これと同時に、送信ノード数記憶部105にカウンタ121が備えられている場合には、送信制御部104はカウンタ121に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。
また、本第2実施形態においては、送信先ノードとしての計算ノード200は、送信元ノードに送信する応答パケットにも末尾フラグを備える。具体的には、図7に示す第1実施形態の応答パケットフォーマットに加えて末尾フラグを備える。計算ノード200は、受信したパケットから読み出した末尾フラグの値を、その応答パケットの末尾フラグに設定して返信する。
第2実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図16に示すフローチャート(ステップC10〜C80)に従って説明する。
ポート送信部102は、ポート受信部114やポート受信部106から転送するパケットを受信すると、受信したパケットをバッファ103に格納する(ステップC10)。
送信制御部104は、パケットの末尾フラグを確認し、当該パケットが一のメッセージを構成する複数のパケットのうち末尾のパケットであるか否かを確認する(ステップC20)。
この末尾フラグに“1”が設定されている場合、すなわち、当該パケットが末尾のパケットである場合には(ステップC20のYESルート参照)、送信制御部104は、送信ノード情報記憶部122において、その送信元ノードに“無送信”を設定する。又、送信ノード数記憶部105にカウンタ121が備えられている場合には、送信制御部104はカウンタ121に対してカウントダウン信号を送信して、送信ノード数をカウントダウン(−1)させる(ステップC30)。なお、カウンタ121を備えない場合には、このステップC30の処理は省略することができる。
送信制御部104(比較部13)は、送信ノード数記憶部105で管理する送信ノード数とパケットに格納されている送信ノード数とを比較する(ステップC40)。なお、送信ノード数には、送信ノード数記憶部105がカウンタ121を備えている場合(図9参照)には、第1実施形態と同様に、このカウンタの値が用いられる。又、送信ノード数記憶部105がカウンタ121を備えていない場合(図10参照)には、送信ノード数は、送信ノード情報記憶部122において“送信中”と記憶されているノードを数えることで求められる。
送信ノード数記憶部105で管理する送信ノード数がパケットの送信ノード数以下の場合には(ステップC40のNOルート参照)、送信制御部104は、接続されている他のスイッチ100のネットワークポート101に対して送信要求を送信する。そして、このネットワークポート101から送信許可が応答されると、送信制御部104は、該当ネットワークポート101に対してパケットを送信する(ステップC60)。
また、送信ノード数記憶部105で管理する送信ノード数がパケットの送信ノード数より大きければ(ステップC40のYESルート参照)、送信制御部104(書換処理部14)は、パケットの送信ノード数の値を、送信ノード数記憶部105の送信ノード数で書き換える(ステップC50)。その後、ステップC60に移行する。
一方、末尾フラグに“0”が設定されている場合、すなわち、パケットが末尾のパケットでない場合には(ステップC20のNOルート参照)、送信制御部104は、パケットのローカルノードに基づいて送信ノード情報記憶部122を確認する(ステップC70)。
送信ノード情報記憶部122において、当該ローカルノードが“送信中”となっていれば(ステップC70のYESルート参照)、ステップC40に移行する。又、送信ノード情報記憶部122において、当該ローカルノードが“無送信”となっていれば(ステップC70のNOルート参照)、送信制御部104は、送信ノード情報記憶部122における当該ローカルノードに対応付けて“送信中”を設定する。又、送信制御部104は、カウンタ121に対してカウントアップ信号を送信することにより、送信ノード数をカウントアップ(+1)する(ステップC80)。その後、ステップC40に移行する。
このように、第2実施形態の一例としての並列計算機システム1によれば、上述した第1実施形態と同様の作用効果を得ることができる他、送信制御部104が末尾パケットであることを検知した場合に、送信ノード数記憶部105の更新を行なう。すなわち、末尾パケットを検知することにより、送信ノード情報記憶部122において当該送信元ノードへの“無送信”の設定や、カウンタ121のカウントダウンを行なう。
すなわち、第1実施形態のように、送信ノード数記憶部105に送信元ノードについての送信ノード状態情報を格納してから所定時間の経過を待つことなく、送信ノード情報記憶部122における当該送信元ノードへの“無送信”の設定や、カウンタ121のカウントダウンを行なうことができる。これにより、一のメッセージについての一群のパケットの送信の終了を迅速且つ正確に把握することができ、パケットの送信の終了に即座に対応することができる。
すなわち、送信元ノードにおいて、ギャップ調整部22による、パケット間に挿入するギャップ値の算出に、通信経路上の通信状態を迅速に反映させることができ、正確性や信頼性を向上させることができる。
(D)第3実施形態
上述した各実施形態やその変形例の一例としての並列計算機システム1においては、送信制御部104は、送信する全てのパケットに基づいて送信ノード数記憶部105の更新を行なっている。
本第3実施形態の一例としての並列計算機システム1においては、ポート送信部102において、送信制御部104は、パケットのメッセージ長を予め設定された閾値と比較する。そして、メッセージ長が閾値よりも小さければ、そのパケットについての送信ノード数記憶部105の更新を行なわない。つまり、送信ノード情報記憶部122への“送信中”,“無送信”の設定やカウンタ121のカウントアップを行なわない。
すなわち、本第3実施形態においては、送信制御部104は、パケットのデータサイズが閾値よりも小さい場合には送信ノード数の更新を抑止する更新抑止部として機能する。
図17は第3実施形態の一例としての並列計算機システム1における送信パケットのフォーマットを模式的に例示する図である。本第3実施形態の一例としての並列計算機システム1の送信パケットフォーマットは、図15に示した第2実施形態の送信パケットフォーマットに加えてメッセージ長を備える。なお、送信パケットにおける、その他の部分は第2実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。
送信元ノードにおいて、ネットワークインタフェース203は、メッセージをパケットに分割して送信する際に、各パケットにメッセージの全体のデータ長を示すメッセージ長を設定する。このメッセージ長は、例えば、メッセージ送信指示とともにプロセッサ201から送信される。
スイッチ100において、ポート送信部102の送信制御部104は、このメッセージ長に基づき、送信ノード数記憶部105の更新を行なうか否かの判別を行なう。すなわち、送信制御部104は、パケットを送信する際に、送信するパケットのメッセージ長を予め設定された閾値と比較する。この比較の結果、メッセージ長が閾値よりも小さい場合には、当該パケットについて、送信ノード情報記憶部122への“無送信”や“送信中”の設定やカウンタ121の更新を行なわずに、当該パケットの転送を行なう。なお、スイッチ100における、その他の部分は第2実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。
第3実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図18に示すフローチャート(ステップC10,D11,C20〜C80)に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部102は、ポート受信部114やポート受信部106から転送するパケットを受信すると、受信したパケットをバッファ103に格納する(ステップC10)。
送信制御部104は、パケットのメッセージ長が予め設定された閾値よりも短いか否かを確認する(ステップD11)。この確認の結果、パケットのメッセージ長が閾値よりも短い場合には(ステップD11のYESルート参照)、ステップC60に移行する。
また、パケットのメッセージ長が閾値以上の場合には(ステップD11のNOルート参照)、ステップC20に移行する。
このように、第3実施形態の一例としての並列計算機システム1によれば、上述した第2実施形態と同様の作用効果を得ることができる他、パケットのメッセージ長が予め設定された閾値よりも小さい場合には、カウンタ121のカウントアップや送信ノード情報記憶部122への登録を行なわない。
これにより、他ノードに送信ノード数の増加が通知される時には、既にメッセージの送信が完了しているような短いメッセージが、他の計算ノード200において設定されるギャップ長に影響を与えることを防止する。すなわち、短いメッセージにより送信ノード数がカウントアップされ、送信元ノードにおいて送信されるパケット間のギャップが長くなることを防止する。これにより、メッセージの送信をいたずらに遅延させることを防止し、パケットの伝送効率を向上させる。
なお、上述した第3実施形態の一例としての並列計算機システム1においては、送信パケットフォーマットにメッセージ長を備えるとともに、スイッチ100において、メッセージ長に基づき送信ノード数記憶部105の更新を行なうか否かの判別を行なう。そして、その他の部分は、第2実施形態の送信パケットフォーマットと同様に構成されている例について示しているが、これに限定されるものではない。すなわち、その他の部分として、第1実施形態もしくはその変形例と同様の構成を備えてもよい。
(E)第4実施形態
上述した各実施形態および変形例としての並列計算機システム1においては、計算ノード200において、1つのパケット送信部206を備える例を示している。本第4実施形態においては、計算ノード200が複数のパケット送信部206を備え、これらの複数のパケット送信部206からそれぞれメッセージのパケットを送信することにより、同時に複数のメッセージを送信できる。
図19は第4実施形態の一例としての並列計算機システム1の計算ノード200の構成を模式的に示す図である。
この図19に示すように、本第4実施形態においては、計算ノード200は複数のパケット送信部206を備える。又、各パケット送信部206は、パケットに対して、当該パケットに対応するメッセージを特定するメッセージ番号(メッセージ識別情報)を付加する機能を備える。
図20は第4実施形態の一例としての並列計算機システム1における送信パケットのフォーマットを模式的に例示する図である。本第4実施形態の一例としての並列計算機システム1の送信パケットフォーマットは、図15に示した第2実施形態の送信パケットフォーマットに加えてメッセージ番号を備える。
メッセージ番号は、送信元ノードである計算ノード200が複数のメッセージを同時に送信する場合に、これらの同時に送信している複数のメッセージを識別できるように、ネットワークインタフェース203が番号付け送信する。
また、送信先ノードである計算ノード200は、送信元ノードから送信されたパケットを受信すると、その送信元ノードに対して返信する応答パケットに、受信したパケットに付加されているメッセージ番号を付加して送信する。この応答パケットフォーマットとしては、例えば、図7に示した第1実施形態における応答パケットフォーマットに、メッセージ番号を付加したものを用いることができる。
なお、メッセージ番号の付け方は、例えば、0から開始し、メッセージ送信指示が来るたびにカウントアップ(+1)する。又、送信元ノードにおいては、送信先ノードから、一のメッセージについての末尾のパケットに対応する応答パケットを受信すると、この応答パケットに付されているメッセージ番号を、次に送信するメッセージに対して、再び割り当てる。これにより、メッセージ番号を効率良く運用することができる。
なお、送信パケットにおける、メッセージ番号以外の部分は第2実施形態の送信パケットフォーマットと同様であり、その説明は省略する。
送信元ノードにおいて、ネットワークインタフェース203は、メッセージをパケットに分割して送信する際に、各パケットにそのメッセージを識別するメッセージ番号を設定する。
図21は第4実施形態の一例としての並列計算機システム1における送信ノード数記憶部105の機能構成を模式的に示す図である。この送信ノード数記憶部105は、カウンタ121及び送信ノード情報記憶部122を備える。
本第4実施形態の並列計算機システム1において、送信ノード情報記憶部122は、図21に示すように、ノードアドレス等の送信元ノードを特定する情報とメッセージ番号との組み合わせに対して、当該組み合わせに相当するパケットが送信されているか否かを表す、“送信中”もしくは“無送信”のいずれかを示す情報が対応付けられる。
すなわち、本第4実施形態においては、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものは、異なる送信ノード数として取り扱う。つまり、スイッチ100のポート送信部102において、送信元ノード数として、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものについては異なるものとして計数する。
また、送信制御部104は、パケットを送信するに際して、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものを送信する場合には、別個、カウンタ121のカウントアップも行なう。
同一の送信元ノードから複数のメッセージを同時に送信する場合に、これらのメッセージの送信経路が重なれば、これらのメッセージ間においても、他の送信元ノードからそれぞれ送信されたメッセージの重なり合い(重合)により帯域減少が生じるのと同様に、帯域減少が生じるからである。
図22は第4実施形態の一例としての並列計算機システム1における応答パケットのフォーマットを模式的に例示する図である。
この応答パケットは、例えば、図22に示すように、図7に示した応答パケットにメッセージ番号及び末尾フラグを備える。なお、この応答パケットに格納されるメッセージ番号以外の情報は、図7等を用いて説明したパケットに含まれる既述の各情報と同様であるので、その詳細な説明は省略する。
また、この応答パケットに格納されるメッセージ番号は、パケット受信部208が受信したパケット(送信パケット)から読み出した値が用いられる。
送信先ノードは、パケットを受信するとこの応答パケットを送信元ノードに対して送信することにより、送信ノード数とともに、末尾フラグやメッセージ番号を送信元ノードに通知する。
送信元ノードにおいては、応答パケットに付加された送信ノード数に基づいて、前記式(1)に従ってギャップ長を算出する。すなわち、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものは、異なるものとしてカウントされた送信ノード数に基づいてギャップ長を算出する。
送信元ノードにおいては、このようにして算出したギャップ長のブランクを、連続して送信するパケット間に挿入する。これにより、同一の送信元ノードから送信される複数のメッセージにより生じる通信帯域の減少に対応したギャップ長でパケットが送信され、輻輳の発生を阻止することができる。
第4実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図23に示すフローチャート(ステップC10,C20,E31,C40〜C60,E71,E81)に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部102は、ポート受信部114やポート受信部106から転送するパケットを受信すると、受信したパケットをバッファ103に格納する(ステップC10)。
送信制御部104は、パケットの末尾フラグを確認し、当該パケットが一のメッセージを構成する複数のパケットのうち末尾のパケットであるか否かを確認する(ステップC20)。
この末尾フラグに“1”が設定されている場合、すなわち、パケットが末尾のパケットである場合には(ステップC20のYESルート参照)、送信制御部104は、送信ノード情報記憶部122において、その送信元ノードと対応するメッセージ番号との組み合わせに対応させて“無送信”を設定する。又、送信ノード数記憶部105にカウンタ121が備えられている場合には、送信制御部104はカウンタ121に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせ(ステップE31)、ステップC40に移行する。
一方、末尾フラグに“0”が設定されている場合、すなわち、パケットが末尾のパケットでない場合には(ステップC20のNOルート参照)、送信制御部104は、パケットのローカルノードとメッセージ番号とに基づいて送信ノード情報記憶部122を確認する(ステップE71)。
送信ノード情報記憶部122において、当該ローカルノードと対応するメッセージ番号との組み合わせに“送信中”が設定されていれば(ステップE71のYESルート参照)、ステップC40に移行する。又、送信ノード情報記憶部122において、当該ローカルノードと対応するメッセージ番号との組み合わせに“無送信”が設定されていれば(ステップE71のNOルート参照)、送信制御部104は、送信ノード情報記憶部122における当該ローカルノードと対応するメッセージ番号との組み合わせに対応付けて“送信中”を設定する。又、送信制御部104は、カウンタ121に対してカウントアップ信号を送信することにより、送信ノード数をカウントアップ(+1)する(ステップE81)。その後、ステップC40に移行する。
このように、第4実施形態の一例としての並列計算機システム1によれば、上述した第2実施形態と同様の作用効果を得ることができる他、送信元の計算ノード200から同時に複数のメッセージを送信する場合にもパケット間に適切なギャップを挿入できる。すなわち、送信元ノード数として、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものについては異なるものとして取り扱う。すなわち、スイッチ100のポート送信部102において、送信元ノード数として、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものについては異なるものとして計数する。
これにより、送信元ノードにおいて、同一の送信元ノードから送信される複数のメッセージにより生じる通信帯域の減少に対応したギャップ長が求められ、最適な間隔でパケットが送信される。これにより、輻輳の発生を阻止することができる。
なお、本第4実施形態においては、図19に示すように、計算ノード200のネットワークインタフェース203が複数のパケット送信部206を備えているが、これに限定されるものではなく、実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば、一の計算ノード200が複数のネットワークインタフェース203を備えてもよい。この場合、メッセージ番号の代わりに、ネットワークインタフェース203毎に固有の識別情報(例えば、ネットワークインタフェース番号)を設定する。そして、送信ノード情報記憶部122において、メッセージ番号に代えてこのネットワークインタフェース番号を用いて、ローカルノードとネットワークインタフェース番号との組み合わせに対応付けて、“送信中”,“無送信”の情報を設定する。これにより、本第4実施例と同様に実現することができる。
(F)第5実施形態
例えば、図2に例示した第1実施形態の並列計算機システム1は、複数のスイッチ100を1次元の直線状に配置した1次元メッシュのネットワーク構成を備えているが、これに限定されるものではない。すなわち、並列計算機システム1が多次元ネットワーク構成を備えてもよい。
図24は第5実施形態の一例としての並列計算機システム1の構成を模式的に示す図、図25はその並列計算機システム1に備えられるスイッチ100のハードウェア構成を模式的に示す図である。
図24に示す並列計算機システム1は、N次元メッシュ(ただし、N=2)のネットワーク構成を備え、X方向とY方向とからなる二次元の格子状のネットワークの各格子点に、それぞれ、図25に示すような5ポートのスイッチ100が配置されている。又、各スイッチ100には計算ノード200が接続されている。なお、以下、X方向を次元Xという場合があり、Y方向を次元Yという場合がある。
この図24に示す例においては、並列計算機システム1は、X方向に4列(X=1〜4)、Y方向に4列(Y=1〜4))の二次元の格子状のネットワーク構成を備え、16個のスイッチ100と16個の計算ノード200とを備える。
以下、便宜上、この図24に示す並列計算機システム1における個々のスイッチ100を、X,Y座標値で特定する場合がある。例えば、図24中の左上に位置する、符号Aが示された計算ノード200(以下、ノードAという場合がある)が接続されたスイッチ100を、その座標(1,4)を用いてスイッチ100(1,4)と表す。同様に、図24中の右下に位置する、符号Fが示された計算ノード200(以下、ノードFという場合がある)が接続されたスイッチ100を、その座標(4,1)を用いてスイッチ100(4,1)と表す。以下、同様にして、各スイッチ100や計算ノード200を特定する。
図24に示す例においては、スイッチ100(2,4)にノードBが、スイッチ100(1,3)にノードCが、スイッチ100(4,4)にノードDが、スイッチ100(4,3)にノードEが、それぞれ接続されている。
そして、この図24に示す例においては、ノードA,B,Cが、それぞれノードFに対してパケットを送信している状態を示す。
また、本並列計算機システム1においても、図12に示したようなX,Yの順に座標を合わせる次元順ルーティングを行なうものとする。
本第5実施形態においては、図25に示すような5ポートのスイッチ100が用いられる。この5ポートのスイッチ100においては、4つのネットワークポート101−1〜101−4が備えられている。
そして、これらの4つのネットワークポート101−1〜101−4のうち、例えば、ネットワークポート101−1,101−2がX方向の通信に用いられ、ネットワークポート101−3,101−4がY方向の通信に用いられる。
これにより、ネットワークポート101−1,101−2に備えられる各送信ノード数記憶部105は、ネットワーク2におけるX方向のパケット通信にかかる送信ノード数についての情報を記憶する。すなわち、ネットワークポート101−1,101−2は次元Xに属する。又、ネットワークポート101−3,101−4に備えられる各送信ノード数記憶部105は、ネットワーク2におけるY方向のパケット通信にかかる送信ノード数についての情報を記憶する。すなわち、ネットワークポート101−3,101−4が次元Yに属する。
以下、ネットワークポートを示す符号としては、複数のネットワークポートのうち1つを特定する必要があるときには符号101−1〜101−4を用いるが、任意のネットワークポートを指すときには符号101を用いる。又、ノードポート110に計算ノード200が接続される。
なお、図25中においては、便宜上、各ネットワークポート101等の構成の図示を省略している。又、図24中においては、便宜上、各スイッチ100の構成の図示を省略するとともに、一部のスイッチ100についてのみ送信ノード数記憶部105を示している。
また、以下、図24中において、例えばスイッチ100(1,4)のように、スイッチ100の内部に示された送信ノード記憶部105は、X方向の通信に用いられるネットワークポート101のポート送信部102に備えられる送信ノード記憶部105を示す。又、スイッチ100(4,4)のように、スイッチ100の外部に示された送信ノード記憶部105は、Y方向の通信に用いられるネットワークポート101のポート送信部102に備えられる送信ノード記憶部105を示す。
本第5実施形態の並列計算機システム1においては、送信ノード数記憶部105には、当該送信ノード数記憶部105が備えられるネットワークポート101が属する次元での通信にかかる、送信元ノードについての情報が記憶される。
また、パケットの通信経路において、次元の乗り換えが生じるスイッチ100においては、乗り換え前の次元のネットワークポート101の送信状態情報に代えて、乗り換え後の次元のネットワークポート101の送信ノード数記憶部105に、当該スイッチ100の情報が設定される。
ここで、次元の乗り換えとは、一の次元方向の通信経路を通過するパケットが、スイッチ100において、当該一の次元に属するネットワークポート101から、他の次元に属するポート送信部102へ転送されることにより、他の次元方向へ通信経路が切り替わることをいう。例えば、次元Xと次元Yとからなる2次元のネットワーク2において、X方向(もしくはY方向)の通信経路を通過するパケットが、スイッチ100において、次元X(もしくは次元Y)に属するネットワークポート101から、他の次元Y(もしくは次元X)に属するポート送信部102へ転送されることにより、Y方向(もしくはX方向)へ通信経路が切り替わることをいう。
具体的には、例えば、図24に示すネットワーク2を備える並列計算機システム1において、ノードAからノードFに対して送信されたパケットは、先ず、スイッチ100(1,4),スイッチ100(2,4),スイッチ100(3,4)及びスイッチ100(4,4)の順でX方向(次元X)の経路を通過する。そして、スイッチ100(4,4)において、Y方向(次元Y)の経路へ次元の乗り換えが行なわれる。その後、パケットは、スイッチ100(4,4),スイッチ100(4,3),スイッチ100(4,2)及びスイッチ100(4,1)の順でY方向の経路を通過してノードFに到達する。
ここで、ノードDが接続されるスイッチ100(4,4)には、実際にはノードAから送信されるパケットとノードBから送信されるパケットとが通過する。従って、ノードBが接続されるスイッチ100(2,4)のX方向のネットワークポート101の送信ノード数記憶部105には、送信元ノードA,Bの情報が記憶される。具体的には、送信ノード情報記憶部122において、送信元ノードA,Bのそれぞれに“送信中”が設定され、又、カウンタ121にカウント値“2”が設定される。なお、図24中、送信ノード数記憶部105に登録される送信元ノードA,Bにかかるこれらの送信状態情報を、送信元ノードを特定する符号“A”,“B”を用いて表す。
そして、これらのノードA,Bから送信されるパケットの通信経路において、ノードDが接続されるスイッチ100(4,4)にて、上述の如く、X方向(第1の次元)からY方向(第2の次元)への次元の乗り換えが行なわれる。このスイッチ100(4,4)においては、乗り換え前の次元(X方向)のネットワークポート101の送信状態情報(図24では“A”,“B”)に代えて、乗り換え後の次元(Y方向)のネットワークポート101の送信ノード数記憶部105に、当該スイッチ100にかかる送信状態情報(図24では“D”)が設定される。
そして、この次元の乗り換えに際しては、乗り換え前の次元において2以上の送信元ノードについての送信状態情報が記憶されていても、乗り換え後の次元においては、当該スイッチ100に接続された一の計算ノード200の送信状態情報に置換される。
すなわち、ネットワーク2における一の次元の経路上の2以上の送信元ノードについての送信状態情報が、次元の乗り換えが生じるスイッチ100において、当該スイッチ100に接続された計算ノード200の送信状態情報として記憶される。
つまり、パケットの通信経路における、次元Xの通信路から次元Yの通信路への乗り換えが行なわれるスイッチ100において、その送信ノード数記憶部105に、乗り換え前の次元Xの通信路上での送信状態情報に代えて、乗り換え後の次元Yに対応するネットワークポート101において計算ノード200(4,4)についての送信状態情報を記憶する。
以下、一の次元方向の2以上の送信元ノードについての送信状態情報が、スイッチ100における次元の乗り換えにより、他の次元の方向についての、当該スイッチ100に接続された計算ノード200の送信状態情報へ置換することを、「まとめる」もしくは「丸める」という。
例えば、スイッチ100(4,4)においては、ノードA,Bについての送信状態情報が、これらのノードA,BとY次元のアドレスが等しいノードDの送信状態情報としてまとめて記憶される。
同様に、ノードEが接続されたスイッチ100(4,3)においても、そのX方向の次元における送信元ノードCを表す送信状態情報が、ノードEを表す送信状態情報にまとめられる。又、このスイッチ100(4,3)においては、Y方向経路において、スイッチ100(4,4)から出力されるパケットも通過する。これにより、スイッチ100(4,3)の送信ノード数記憶部105には、ノードDを表す送信状態情報も記憶される。すなわち、スイッチ100(4,3)の送信ノード数記憶部105には、ノードD,Eにかかる送信状態情報が記憶される。
図26は第5実施形態の一例としての並列計算機システム1の送信パケットに記憶される送信ノード数のフォーマット例を模式的に示す図である。
本第5実施形態においては、パケットに記憶される送信ノード数は、この図26に示すように、次元Xの送信ノード数と次元Yの送信ノード数とを備える。
本第5実施例のスイッチ100において、各ネットワークポート101は、当該ネットワークポート101が属している次元方向の送信元ノードについてのみ、送信ノード数記憶部105に送信状態情報を記憶する。又、送信ノード数記憶部105にカウンタ121を備える場合には、このカウンタ121に、そのネットワークポート101が属している次元方向の送信ノードについての送信ノード数を記憶する。すなわち、送信ノード数記憶部105には次元毎に送信状態情報が記憶される。
また、パケットを受信したリモートノードのネットワークインタフェース203は、受信したパケットの送信ノード数を、そのまま応答パケットに記してローカルノードに送り返す。
そして、応答パケットを受信したローカルノードのネットワークインタフェース203において、ギャップ制御部207は、パケットから読み出した各次元の送信ノード数の合計から、当該パケットが送信元ノードから送信先ノードまでの経路上において次元を乗り換えた数を引いた値を送信ノード数として算出する。すなわち、本第5実施形態に示す例においては、送信ノード数を以下の式(2)に基づいて算出する。
送信ノード数=(次元Xの送信ノード数)+(次元Yの送信ノード数)
−(次元を乗り換えた数) ・・・(2)
なお、ローカルノードアドレスとリモートノードアドレスとの間で、各次元の値を比較し、値が異なる次元の数をパケットが次元を乗り換えた数として用いることができる。
また、本並列計算機システム1においては、送信元ノードと送信先ノードとの組み合わせによりパケットの送信経路は確定する。従って、送信元ノードと送信先ノードとの組み合わせに基づいて、その通信経路における「次元を乗り越えた数」を容易に知ることができる。又、ローカルノードアドレスと、リモートノードアドレス間で、各次元の値を比較し、値が異なる次元の数が、次元を乗り換えた回数であるともいえる。
ギャップ制御部207は、上記式(2)で算出した送信ノード数を用いて、以下の式(3)によりギャップ長を算出する。
ギャップ長=パケットサイズ×(送信ノード数−1)×α ・・・(3)
なお、αはパラメータ(ただし、α>1)であって、予め設定したこのパラメータαを乗算することでギャップ長を調整する。これは、本第5実施形態の手法においては、以下の如く、ネットワーク2おける一部の領域で送信ノード数が実際の値と不一致となる場合が生じる得ることを補正するためである。
例えば、図24に示す例において、ノードAが接続されたスイッチ100(0,4)やノードBが接続されたスイッチ100(2,4)では、X方向での送信ノード数が2、Y方向での送信ノード数が2である。又、スイッチ100(4,4)において、X方向からY方向へ1回次元を乗り換えられる。従って、上記式(2)により
送信ノード数=2+2−1=3
が求められる。
パケットを受信したノードFは、この送信ノード数“3”を格納した応答パケットをノードA,Bに送信する。
この送信ノード数“3”は、図24に示す例において、実際にノードFにパケットを送信しているノードの数(ノードA,B,Cの3つ)と一致する。
一方、ノードCが接続されたスイッチ100(1,3)では、X方向での送信ノード数が1、Y方向での送信ノード数が2である。又、スイッチ100(4,3)において、X方向からY方向へ1回次元を乗り換えられる。従って、上記式(2)により
送信ノード数=1+2−1=2
が求められる。
パケットを受信したノードFは、この送信ノード数“2”を格納した応答パケットをノードA,Bに送信する。
この送信ノード数“2”は、図24に示す例において、実際にノードFにパケットを送信しているノードの数(ノードA,B,Cの3つ)と不一致であり、実際の送信ノード数より小さくなる。
この様に、本第5実施形態の一例としての並列計算機システム1においては、経路において、次元が異なるアドレスに位置する複数のノードからそれぞれパケットを送信する際に、送信ノード数が実際の値より小さくなる場合が生じる。しかし、送信ノード数記憶部105にネットワークポート101が属している次元のみの送信状態情報を記憶することで、送信ノード数記憶部105として用いる記憶部の容量を大幅に削減することができる。
すなわち、ネットワークポート101が属する次元の送信状態情報のみを限定して格納することにより、記憶部として、N個の送信状態情報を格納できるだけの容量を備えればよく、製造コストを低減することができる。これに対して、例えば、各次元のノード数がNの二次元メッシュ、トーラスの場合、全ノードについての送信状態情報を記憶しようとすれば、記憶部として、ネットワークポート101毎にN×N個の送信状態情報を格納するための容量が必要となり、製造コストが大きくなる。
上述の如く構成された、第5実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図27に示すフローチャート(ステップC10,F20,C30〜C80)に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部102は、ポート受信部114やポート受信部106から転送するパケットを受信すると、受信したパケットをバッファ103に格納する(ステップC10)。
送信制御部104は、パケットのローカルノードに基づいて送信ノード情報記憶部122を確認する(ステップF20)。すなわち、送信ノード情報記憶部122において、当該ローカルノードが“送信中”となっており、且つ、当該パケットが末尾のパケットであるか否かを確認する。
送信ノード情報記憶部122において、当該ローカルノードが“送信中”、且つ、当該パケットが末尾パケットであれば(ステップF20のYESルート参照)、ステップC30に移行する。
一方、送信ノード情報記憶部122において、当該ローカルノードが“送信中”、且つ、当該パケットが末尾パケットでない場合には(ステップF20のNOルート参照)、ステップC70に移行する。
このように、第5実施形態の一例としての並列計算機システム1によれば、上述した第2実施形態と同様の作用効果を得ることができる他、N次元メッシュのネットワーク構成を備える場合に、送信ノード数記憶部105にネットワークポート101が属している次元のみの送信状態情報を記憶することで、送信ノード数記憶部105として用いる記憶部の容量を削減することができる。
すなわち、ネットワークポート101が属する次元の送信状態情報のみを限定して格納することにより、製造コストを低減することができる。
(G)第6実施形態
上述した各実施形態やその変形例の一例としての並列計算機システム1においては、送信パケットを受信した送信先ノードが、送信元ノードに対して送信ノード数を含む応答パケットを返信している。
本第6実施形態の一例としての並列計算機システム1においては、スイッチ100が送信元ノードに対して送信ノード数を含む応答パケットを返信する。すなわち、本第6実施形態の一例としての並列計算機システム1においては、スイッチ100が送信ノード数送信部23としての機能を備える。
具体的には、スイッチ100のポート送信部102において、送信制御部104が、パケットの送信ノード数と送信ノード数記憶部105に記憶されたポートの送信ノード数とを比較する。
そして、送信ノード数記憶部105に記憶されたポートの送信ノード数がパケットの送信ノード数より大きければ、送信制御部104は、ポートの送信ノード数を記した応答パケットを作成し、当該パケットのローカルノードに送り返す。
なお、この応答パケットのフォーマットや作成手法は、第1実施形態と同様の手法により実現することができ、その詳細な説明は省略する。
上述の如く構成された、第6実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図28に示すフローチャート(ステップC10〜C50,G51,C60〜C80)に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
送信制御部104(比較部13)は、送信ノード数記憶部105で管理する送信ノード数とパケットに格納されている送信ノード数とを比較する(ステップC40)。この比較の結果、送信ノード数記憶部105で管理する送信ノード数がパケットの送信ノード数より大きければ(ステップC40のYESルート参照)、送信制御部104は、パケットの送信ノード数の値を、送信ノード数記憶部105の送信ノード数で書き換える(ステップC50)。
送信制御部104は、書き換えたパケットの送信ノード数に基づき、応答パケットを生成する。そして、送信制御部104は、送信元であるネットワークポート101のポート送信部102に送信要求を送信する。このポート送信部102から送信許可が返信されると、応答パケットを送信する(ステップG51)。
その後、送信制御部104は、接続されている他のスイッチ100のネットワークポート101に対して送信要求を送信する。そして、このネットワークポート101から送信許可が応答されると、送信制御部104は、該当ネットワークポート101に対してパケットを送信し(ステップC60)、処理を終了する。
また、応答パケットを受信したローカルノードのネットワークインタフェース203においては、第1実施形態と同様に、送信ノード数をギャップ制御部207に送り、パケット送信部206にギャップを挿入するように制御する。
このように、第6実施形態の一例としての並列計算機システム1によれば、スイッチ100において、パケットの転送時に送信ノード数が増加する時に、応答パケットを作成して送信元ノードに対して送り返す。これにより、送信先ノードから応答パケットを送り返すことに比べて、ネットワーク2上の通信状態を送信元ノードに対して迅速に通知し、最適なギャップ長でのパケット送出を行なうことができる。すなわち、送信元ノードに対して、ネットワーク2の通信状態を迅速に反映させることができる。
また、上述した第6実施形態の一例としての並列計算機システム1において、送信元ノードに対して応答パケットを送り返すスイッチ100を、特定のスイッチ100に限定してもよい。これにより、全てのスイッチ100から応答パケットを送出することにより生じうる、ネットワークトラフィックの増加等の影響を少なくすることができる。
なお、応答パケットを送り返す機能を備えるスイッチ100としては、例えば、ネットワーク2のトポロジがメッシュである場合の中央部分のスイッチ等、通信が集中することが予想されるスイッチ100に限定することが望ましい。
(H)第7実施形態
図29は第7実施形態の一例としての並列計算機システム1における計算ノード200の構成を模式的に示す図である。
この図29に示すように、第7実施形態の計算ノード200は、制御部205を複数備える他は、第1実施形態の計算ノード200と同様の構成を備える。なお、以下、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
本第7実施形態の並列計算機システム1においては、各計算ノード200から送信されるデータはパケットに分割された状態で送受信される。又、このパケットのパケット長は適宜設定することができ、又、固定長もしくは可変長として適宜実施することができる。
本第7実施形態の一例としての並列計算機システム1において、プロセッサ201からメッセージ送信指示を受け取った各制御部205は、パケットを生成し、生成したこれらのパケットをそれぞれパケット送信部206に送る。
プロセッサ201が複数のメッセージ送信指示を行ない、複数の制御部205がそれぞれパケットをパケット送信部206に送った場合は、パケット送信部206は時分割でパケットを送信する。
図30は第7実施形態の一例としての並列計算機システム1における送信パケットのフォーマットを模式的に例示する図である。本第7実施形態の一例としての並列計算機システム1の送信パケットフォーマットは、図15に示した第2実施形態の送信パケットフォーマットに加えて先頭フラグを備える。なお、送信パケットにおける、その他の部分は、図15等を用いて説明したパケットに含まれる既述の各情報と同様であるので、その詳細な説明は省略する。
また、以下、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
送信元ノードにおいて、ネットワークインタフェース203は、メッセージを複数のパケットに分割して送信する際に、先頭のパケットに対しては、その先頭フラグを例えば“1”に設定する。又、先頭以外のパケットに対しては、それぞれ先頭フラグに“0”を設定する。これらの、先頭フラグの“1”が、当該パケット(分割データ)が先頭である事を示す先頭識別情報に相当する。
なお、この先頭フラグへの“0”又は“1”の設定は、例えば、制御部205が行なってもよく、又、パケット送信部206が行なってもよい。
図31は第7実施形態の一例としての並列計算機システム1における送信ノード数記憶部105の構成を示す図である。この図31に示す第7実施形態の一例としての並列計算機システム1の送信ノード数記憶部105は、第1実施形態の送信ノード数記憶部105から送信ノード数記憶部105を除くものであり、カウンタ121のみを備える。
この第7実施形態としての送信ノード数記憶部105を備えるスイッチ100においては、カウンタ121は、送信制御部104からのカウントアップ信号もしくはカウントダウン信号に基づきそのカウント値を変更する。
そして、送信制御部104は、先頭フラグ“1”が設定されたパケット(先頭パケット)を他のスイッチ100に送信する際に、カウンタ121に対してカウントアップ信号を送信することにより、カウンタ121にカウントアップを行なわせる。
また、送信制御部104は、末尾フラグ“1”が設定された末尾パケットを送信する際に、カウンタ121に対してカウントダウン信号を送信することにより、送信ノード数をカウントダウンさせる。
なお、カウンタ121のカウントアップやカウントダウンのタイミングは、これらに限定されるものではなく、種々変形して実施することができる。例えば、先頭パケットをポート受信部106が受信した際に、受信制御部108がカウンタ121に対してカウントアップ信号を送信してカウントアップを行なわせてもよい。
同様に、末尾パケットをポート受信部106が受信した際に、受信制御部108がカウンタ121に対してカウントダウン信号を送信して送信ノード数をカウントダウンさせてもよい。
上述の如く構成された第7実施形態の一例としての並列計算機システム1における送信元ノードとしての計算ノード200のネットワークインタフェース203の処理を、図32に示すフローチャート(ステップH10〜H100)に従って説明する。
制御部205は、プロセッサ201からメッセージ送信指示を受信する(ステップH10)。制御部205は、このメッセージ送信指示を確認し、当該メッセージ送信指示が主記憶装置202に格納されているデータの送信を指示するものであるか否かを確認する(ステップH20)。主記憶装置202に格納されているデータの送信を指示するメッセージ送信指示としては、例えば、Putリクエストがある。又、主記憶装置202に格納されているデータの送信を指示しないメッセージ送信指示としては、例えば、Getリクエストや単なるコマンド送信がある。
メッセージ送信指示がリモートノードへデータを送信するものである場合には(ステップH20のYESルート参照)、制御部205は、対象のデータを分割して、1パケットで送信するデータの主記憶装置202上のアドレスやデータ長を生成する。制御部205は、生成したこれらの情報をDMAコントローラ204へ送信して、DMAコントローラ204に送信するデータを主記憶装置202から読み出させる(ステップH30)。
制御部205は、プロセッサ201からのメッセージ送信指示に基づいて、送信するパケットを生成する(ステップH40)。例えば、データ送信を行なう場合には、DMAコントローラ204が読み出したデータとメッセージ送信指示から取得した情報等に基づいて作成したヘッダとを組み合わせることによりパケットを生成する。又、メッセージ送信指示がデータ送信を行なわないものである場合には(ステップH20のNOルート参照)、メッセージ送信指示に基づいて送信するパケットを作成する。
その後、制御部205は、生成したパケットが、メッセージにかかる先頭パケットであり、且つ、他の制御部205がパケットを送信中ではないことを確認する(ステップH50)。
生成したパケットが、メッセージにかかる先頭パケットであり、且つ、他の制御部205がパケットを送信中ではない場合には(ステップH50のYESルート参照)、当該パケットの先頭フラグを有効にする(ステップH60)。例えば、先頭フラグに“1”を設定する。そして、制御部205は、このパケットをパケット送信部206によって送信させる(ステップH70)。
一方、生成したパケットが、メッセージにかかる先頭パケットであり、且つ、他の制御部205がパケットを送信中ではないとの条件を満たさない場合には(ステップH50のNOルート参照)、次に、そのパケットが末尾パケットであり、且つ、同じメッセージの先頭パケットの先頭フラグが有効に設定されているか否かを確認する(ステップH90)。
当該パケットが末尾パケットであり、且つ、同じメッセージで先頭フラグが有効に設定されているとの条件が満たされていない場合には(ステップH90のNOルート参照)、ステップH70に移行する。
また、当該パケットが末尾パケットであり、且つ、同じメッセージで先頭フラグが有効に設定されていれば(ステップH90のYESルート参照)、当該パケットの末尾フラグを有効にする。すなわち、例えば、末尾フラグに“1”を設定する(ステップH100)。その後、ステップH70に移行する。
そして、制御部205は、当該パケットが末尾パケットであるか否かを確認し(ステップH80)、末尾パケットでない場合には(ステップH80のNOルート参照)、ステップH20に戻る。又、当該パケットが末尾パケットであれば(ステップH80のYESルート参照)、処理を終了する。
次に、第7実施形態の一例としての並列計算機システム1におけるポート送信部102の処理を、図33に示すフローチャート(ステップC10,J11,J12,C20〜C60)に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部102は、ポート受信部114やポート受信部106から転送するパケットを受信すると、受信したパケットをバッファ103に格納する(ステップC10)。
送信制御部104は、この受信したパケットの先頭フラグを確認して、当該パケットが先頭パケットであるか否かを確認する(ステップJ11)。この確認の結果、パケットが先頭パケットである場合には(ステップJ11のYESルート参照)、送信制御部104は、送信ノード数記憶部105(カウンタ121)に対してカウントアップ信号を送信し、カウンタ値をカウントアップ(+1)させる(ステップJ12)。その後、ステップC40に移行する。
また、パケットが先頭パケットではない場合には(ステップJ11のNOルート参照)、ステップC20に移行する。
このように、第7実施形態の一例としての並列計算機システム1によれば、上述した第2実施形態と同様の作用効果を得ることができる他、スイッチ100において、送信ノード数記憶部105がカウンタ121のみを備え、このカウンタ値に基づいて送信ノード数を管理する。
これにより、送信ノード情報記憶部122のような送信ノード状態情報の記憶を行なうための記憶領域を用意する必要がなく、送信ノード数記憶部105として用いる記憶部の容量を削減することができる。従って、製造コストを低減することができる。
また、送信パケットに送信フラグと末尾フラグとを備える。そして、1つの送信元ノードが時分割で複数のメッセージを送信する場合に、1つのメッセージに対してのみ先頭フラグと末尾フラグとを有効にすることにより、送信ノード数を正確にカウントすることができ、信頼性を向上させることができる。
(I)その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
なお、本発明の各実施形態が開示されていれば、本発明を当業者によって実施・製造することが可能である。
1 並列計算機システム
2 ネットワーク
11 入力部
12 出力部
13 比較部
14 書換処理部
15 更新処理部
16 送信ノード数記憶部
21 パケット送信部
22 ギャップ調整部
23 送信ノード数送信部
100 スイッチ
101,101−1,101−2,101−3,101−4 ネットワークポート
102 ポート送信部
103,107,112,115 バッファ
104,113 送信制御部
105 送信ノード数記憶部
106 ポート受信部
108,116 受信制御部
110 ノードポート
111 ポート送信部
121 カウンタ
122 送信ノード情報記憶部
200,200−1,200−2,200−3,200−4 計算ノード(送信元ノード,送信先ノード)
201 プロセッサ
202 主記憶装置
203 ネットワークインタフェース
204 DMAコントローラ
205 制御部
206 パケット送信部
207 ギャップ制御部
208 パケット受信部

Claims (12)

  1. 通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムにおいて、
    前記送信元の計算ノードは、
    前記送信先の計算ノードにデータを送信するデータ送信部と、
    受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整する調整部を有し、
    前記通信制御装置は、
    前記送信元の計算ノードが送信するデータを入力する入力部と、
    前記送信先の計算ノードに送信するデータを出力する出力部と、
    前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、
    前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、
    前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、
    前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有し、
    前記送信先の計算ノードは、
    受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する制御データ送信部を有することを特徴とする計算機システム。
  2. 前記通信制御装置はさらに、
    前記入力部が入力するデータのサイズであるデータサイズと、予め設定した閾値とを比較するデータサイズ比較部と、
    前記データサイズ比較部による比較の結果、前記データサイズが前記閾値より小さい場合、前記出力部がデータを出力するとき、前記送信ノード数記憶部が記憶する送信ノード数の前記更新処理部による更新を抑止する更新抑止部を有することを特徴とする請求項1記載の計算機システム。
  3. 前記データ送信部は、
    分割された複数のデータを生成し、
    前記更新処理部は、
    前記出力部が、生成された前記複数のデータのうち先頭のデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項1又は2記載の計算機システム。
  4. 前記データ送信部は、
    分割された前記複数のデータのうち先頭のデータに先頭である旨を示す先頭識別情報を付加し、
    前記更新処理部は、
    前記先頭識別情報が付加されたデータを前記出力部から出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項3記載の計算機システム。
  5. 前記データ送信部は、
    分割された複数のデータを作成し、
    前記更新処理部は、
    前記出力部が、生成された前記複数のデータのうち末尾のデータを出力する場合、前記送信ノード数記憶部の送信ノード数を更新させることを特徴とする請求項1又は2記載の計算機システム。
  6. 前記データ送信部は、
    分割された複数のデータを作成するとともに、前記複数のデータの末尾のデータに末尾である旨を示す末尾識別情報を付加し、
    前記更新処理部は、
    前記出力部が、前記末尾識別情報が付加されたデータを出力する場合、前記送信ノード数記憶部の送信ノード数を更新させることを特徴とする請求項5記載の計算機システム。
  7. 前記更新処理部は、
    前記送信ノード数記憶部の送信ノード数を増加させた後、所定時間が経過した場合、前記送信ノード数記憶部が記憶する送信ノード数を更新させることを特徴とする請求項1〜4のいずれか1項に記載の計算機システム。
  8. 前記通信制御装置は、
    前記通信制御装置を経由するデータを送信中の計算ノードを示す送信ノード情報を記憶する送信ノード情報記憶部を有し、
    前記更新処理部は、
    前記出力部がデータを出力する場合、前記送信ノード情報記憶部を参照し、前記出力部が出力するデータの送信元の計算ノードが、前記送信ノード情報に含まれていないとき、前記送信ノード情報に前記データの送信元の計算ノードを含めるとともに、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項1〜7のいずれか1項に記載の計算機システム。
  9. 前記データ送信部は、
    複数のメッセージにそれぞれ対応する複数のデータを送信する場合、前記複数のメッセージにそれぞれ対応する複数のデータに、対応するメッセージを識別するメッセージ識別情報をそれぞれ付加し、
    前記送信ノード情報記憶部は、
    メッセージ識別情報毎に送信ノード情報を記憶し、
    前記更新処理部は、
    前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を、メッセージ識別情報毎に更新することを特徴とする請求項8記載の計算機システム。
  10. 通信制御装置と、前記送信元の計算ノードと、前記送信先の計算ノード間を接続する通信網が、複数の次元の通信路を接続する多次元ネットワーク構成を有し、
    前記送信ノード数記憶部は、
    次元毎に前記送信ノード数を対応させて記憶し、
    前記送信元の計算ノードから前記送信先の計算ノードまでの通信路に中に存在し、一の次元の通信路から他の次元の通信路への乗り換えが行なわれる通信制御装置の更新処理部は、
    乗り換え前の前記一の次元の通信路の送信ノード数に代えて、乗り換え後の前記他の次元に対応する送信ノード数として、前記通信制御装置に接続された計算ノードの数を記憶することを特徴とする請求項1〜9のいずれか1項に記載の計算機システム。
  11. 通信制御装置において、
    前記通信制御装置を経由してデータを送信する送信元の計算ノードから、受信した制御データに含まれる送信ノード数に基づいて、送信間隔を調整して送信されるデータを入力する入力部と、
    前記通信制御装置を経由してデータを受信する送信先の計算ノードに送信するデータを出力する出力部と、
    前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、
    前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、
    前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、
    前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有することを特徴とする通信制御装置。
  12. 通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムの制御方法において、
    前記送信元の計算ノードが有するデータ送信部が、前記送信先の計算ノードにデータを送信し、
    前記送信元の計算ノードが有する調整部が、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整し
    前記通信制御装置が有する入力部が、前記送信元の計算ノードが送信するデータを入力し、
    前記通信制御装置が有する送信ノード数記憶部が、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶すると、
    前記通信制御装置が有する出力部が、前記送信先の計算ノードに送信するデータを出力し、
    前記出力部がデータを出力する場合、前記通信制御装置が有する更新処理部が、前記送信ノード数記憶部が記憶する送信ノード数を更新し、
    前記通信制御装置が有する比較部が、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較し、
    前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記通信制御装置が有する書換部が、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換え、
    前記送信先の計算ノードが有する制御データ送信部が、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信することを特徴とする計算機システムの制御方法。
JP2013551129A 2011-12-28 2011-12-28 計算機システム,通信制御装置及び計算機システムの制御方法 Active JP5800032B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/080400 WO2013098993A1 (ja) 2011-12-28 2011-12-28 計算機システム,通信制御装置及び計算機システムの制御方法

Publications (2)

Publication Number Publication Date
JPWO2013098993A1 JPWO2013098993A1 (ja) 2015-04-30
JP5800032B2 true JP5800032B2 (ja) 2015-10-28

Family

ID=48696554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013551129A Active JP5800032B2 (ja) 2011-12-28 2011-12-28 計算機システム,通信制御装置及び計算機システムの制御方法

Country Status (5)

Country Link
US (1) US9294405B2 (ja)
EP (1) EP2800009B1 (ja)
JP (1) JP5800032B2 (ja)
CN (1) CN104040528B (ja)
WO (1) WO2013098993A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5677623B1 (ja) * 2013-08-21 2015-02-25 三菱電機株式会社 プログラム編集用プログラム
KR101562118B1 (ko) * 2014-01-27 2015-10-20 엘에스산전 주식회사 고속 스위칭을 위한 mac 필터링 방법
JP6281327B2 (ja) * 2014-03-06 2018-02-21 富士通株式会社 情報処理システム、情報処理装置、スイッチ装置および情報処理システムの制御方法
CN104507119B (zh) * 2014-11-26 2018-09-14 无锡儒安科技有限公司 一种基于并发传输的无线传感器网络数据收集方法
JP2017120542A (ja) * 2015-12-28 2017-07-06 富士通株式会社 並列情報処理装置、データ転送方法及びデータ転送プログラム
WO2019090032A1 (en) 2017-11-03 2019-05-09 Coherent Logix, Inc. Memory network processor
CN109376117B (zh) * 2018-09-29 2023-06-13 深圳比特微电子科技有限公司 计算芯片及其操作方法
CN113688352B (zh) * 2021-08-20 2023-08-04 上海思朗科技有限公司 一种数据处理系统、方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434861A (en) * 1989-02-02 1995-07-18 Pritty; David Deterministic timed bus access method
US6175570B1 (en) * 1995-12-20 2001-01-16 Cisco Technology, Inc. Method and an apparatus for shaping the output traffic in a fixed length cell switching network node
JPH1032588A (ja) * 1996-07-18 1998-02-03 Matsushita Electric Ind Co Ltd フロー制御方法およびそれを実行する通信要素
JP3159961B2 (ja) * 1998-11-26 2001-04-23 沖電気工業株式会社 セル受信側装置及びトラヒック制御システム
US7184404B2 (en) * 2002-10-15 2007-02-27 Broadcom Corporation Programmable inter-packet gap generator with byte granularity
JP4235507B2 (ja) 2003-08-14 2009-03-11 株式会社エヌ・ティ・ティ・ドコモ 中継装置、送信装置、受信装置およびプログラム
US7680048B2 (en) * 2006-10-06 2010-03-16 International Business Machiens Corporation Method and apparatus for routing data in an inter-nodal communications lattice of a massively parallel computer system by dynamically adjusting local routing strategies
CN102282803B (zh) * 2009-01-19 2014-09-24 熵敏通讯股份有限公司 用于被管理的共享网络中的第2层发现的方法和装置

Also Published As

Publication number Publication date
US20140293797A1 (en) 2014-10-02
EP2800009B1 (en) 2017-05-10
CN104040528B (zh) 2016-12-28
WO2013098993A1 (ja) 2013-07-04
US9294405B2 (en) 2016-03-22
CN104040528A (zh) 2014-09-10
EP2800009A4 (en) 2015-09-09
JPWO2013098993A1 (ja) 2015-04-30
EP2800009A1 (en) 2014-11-05

Similar Documents

Publication Publication Date Title
JP5800032B2 (ja) 計算機システム,通信制御装置及び計算機システムの制御方法
KR102233645B1 (ko) 가상 네트워크 기반 분산 다중 도메인 라우팅 제어 시스템 및 라우팅 제어 방법
JP5583476B2 (ja) ノード装置、ノードシステム、および情報処理方法
US20140115298A1 (en) ASYMMETRIC MESH NoC TOPOLOGIES
JP2009512260A (ja) 加入者装置、通信システムの通信コントローラ、および通信システムの加入者装置内でゲートウェイ機能を実現する方法
WO2014128802A1 (ja) インタフェース装置およびバスシステム
JP6029763B2 (ja) メッシュ通信ネットワークにおいて資源を割り当てる方法、コンピュータプログラム、情報記憶手段およびノード装置
US7773618B2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
JP6265058B2 (ja) ネットワーク伝送システム、そのマスタノード、スレーブノード
US20080107105A1 (en) System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
JP7073624B2 (ja) 通信システム、通信装置および通信方法
JP5821624B2 (ja) 通信制御装置、並列計算機システム及び通信制御方法
CN112084027A (zh) 片上网络数据传输方法、装置、片上网络、设备及介质
CN113765825B (zh) 一种链式业务流调度的规划方法和系统架构
JP2017530643A5 (ja)
JP6402576B2 (ja) 通信装置、情報処理装置、情報処理システム及び通信装置の制御方法
GB2563438A (en) Transmission method, communication device and communication network
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
TWI730476B (zh) 路由器及路由方法
JP5949312B2 (ja) 並列計算機システム、データ転送装置及び並列計算機システムの制御方法
US10757038B2 (en) Reservation-based switching devices
Chatmen et al. A new network on chip design dedicated to multicast service
JP6378158B2 (ja) 集線装置及び方法
CN105681214B (zh) 一种大规模网络传输优化方法和系统
JP6287493B2 (ja) 情報処理装置、転送装置、および制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150810

R150 Certificate of patent or registration of utility model

Ref document number: 5800032

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150