JP5682391B2 - データ転送装置、並列計算機システムおよびデータ転送装置の制御方法 - Google Patents

データ転送装置、並列計算機システムおよびデータ転送装置の制御方法 Download PDF

Info

Publication number
JP5682391B2
JP5682391B2 JP2011063400A JP2011063400A JP5682391B2 JP 5682391 B2 JP5682391 B2 JP 5682391B2 JP 2011063400 A JP2011063400 A JP 2011063400A JP 2011063400 A JP2011063400 A JP 2011063400A JP 5682391 B2 JP5682391 B2 JP 5682391B2
Authority
JP
Japan
Prior art keywords
data
unit
packet
arbitration
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.)
Expired - Fee Related
Application number
JP2011063400A
Other languages
English (en)
Other versions
JP2012198819A (ja
Inventor
吉朗 池田
吉朗 池田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011063400A priority Critical patent/JP5682391B2/ja
Priority to US13/351,636 priority patent/US20120246262A1/en
Priority to EP20120152615 priority patent/EP2503747A1/en
Publication of JP2012198819A publication Critical patent/JP2012198819A/ja
Application granted granted Critical
Publication of JP5682391B2 publication Critical patent/JP5682391B2/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/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling

Landscapes

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

Description

本発明は、データ転送装置、並列計算機システムおよびデータ転送装置の制御方法に関する。
従来、複数の計算ノードを有する並列計算機システムが知られている。このような並列計算機システムの一例として、複数の計算ノード間における通信を中継するルータが各計算ノードに設置された並列計算機システムが知られている。
図13は、並列計算機システムが有する複数の計算ノードの一例を説明するための図である。図13に示す例では、並列計算機システム50は、複数の計算ノード60〜60eを有する。各計算ノード60〜60eは、それぞれCPU(Central Processing Unit)61〜61e、NIC(Network Interface Controller)62〜62e、ルータ63〜63eを有する。なお、各計算ノード60a〜60eは、計算ノード60と同様の処理を実行するものとし、以下の説明を省略する。
CPU61は、自身に割当てられたプログラムを実行するとともに、他のCPU61a〜61eへ送信する情報をNIC62に送信する。NIC62は、CPU61が他のCPU61a〜61eへ送信する情報をパケット化してルータ63に伝達する。ルータ63は、NIC62からパケットを受信する入力ポートとパケットをルータ63aに送信する出力ポートとを有し、入力ポートを介してNIC62から受信したパケットを、出力ポートを介してルータ63aに転送する。
また、ルータ63は、図13中(A)に示すように、計算ノード60〜60e以外の計算ノードからパケットを受信する複数の入力ポートを有する。そして、ルータ63は、計算ノード60〜60e以外の計算ノードおよびNIC62からパケットを受信する複数の入力ポートから送信先が同じパケットを同時に受信した場合には、入力ポート間における調停を行い、受信した各パケットを順次ルータ63aへ送信する。
ここで、並列計算機システム50は、各ルータ63〜63eがそれぞれラウンドロビン方式でポート間の調停を行った場合には、並列計算機システム50全体から見た各ポート間の優先度を見出すことができないので、各入力ポートを公平に勝たせようとする。このため、並列計算機システム50は、各計算ノード60〜60e間の通信に対して、帯域を均等に割当てることは困難である。
一例として、CPU61〜61dからCPU61eへパケットが送信されると共に、図13(A)〜(E)に示すように、各ルータ63〜63dにおいて、常時2つの受信ポートにパケットが合流する例について説明する。このような場合には、各ルータ63〜63dは、4つの受信ポートから受信したパケットをラウンドロビン方式で送信するので、自身が有する出力ポートの帯域を自身が有する4つの受信ポートに対して均等に割当てる。
このため、並列計算機システム50は、計算ノード60dと計算ノード60eとの間における通信に対しては、全帯域の「1/4」を割当てることができる。しかし、並列計算機システム50は、計算ノード60と計算ノード60eとの間における通信に対しては、各ルータ63〜63dが各出力ポートにおける帯域の「1/4」ずつを割当てるため、全帯域の「(1/4)」程度しか割当てることができない。
そこで、パケットが送信されてからの経過時間や、パケットを中継したルータの数をage情報としてパケットのヘッダに格納し、各パケットのヘッダに格納されたage情報に基づいて調停を行う技術が知られている。図14は、age情報を付与したパケットを説明するための図である。図14中(A)に示すように、送信されるデータのヘッダ部分には、age情報が格納されており、7bitの「age」が格納されるフィールド、1bitの「carry」が格納されるフィールド、1bitの「epoch」が格納されるフィールドを有する。
ここで「age」には、パケットが送信されてから経過した時間や、パケットを中継したルータの数が格納される。また、「carry」には、キャリーアウトビットが格納される。また、「epoch」には、age情報を更新する際に照会する情報が格納される。なお、1bitの「unused」は、未使用領域である。
また、並列計算機システム50は、パケットに格納されたage情報に基づいて調停を行う場合には、並列計算機システム50が有する複数の計算ノード間を接続するネットワークのトポロジや、各計算ノード60〜60eが実行するジョブの規模等に応じて、age情報の制御パラメータがあらかじめ設定される。例えば、「age」に格納された値を加算する時間間隔を示す「AGE_CLOCK_PERIOD」が制御パラメータとして設定される。また、パケットがルータを1回ホップした際に加算されるageの値を示す「REQ_AGE_BIAS」、「RSP_AGE_BIAS」が制御パラメータとして設定される。また、各ルータ63〜63eがラウンドロビン方式を用いて調停を行う比率とage情報を用いて調停を行う比率とを示す「AGE_RR_SELECT」が制御パラメータとして設定される。
各ルータ63〜63eは、age情報に基づいて調停を行う場合には、設定された制御パラメータに基づいて受信したパケットのage情報を更新するとともに、更新した「age」を比較する。そして、各ルータ63〜63eは、「age」に格納された値が大きいパケットから順番に次のルータへ送信する。このようなルータ63〜63eを有する並列計算機システム50は、送信元の計算ノードが送信してから経過した時間や移動距離が多いパケットを優先的に送信するので、通信を行う計算ノード間の距離が長いほど多くの帯域を割当てる。
特開平06−187311号公報 特開2010−039625号公報
しかしながら、上述したage情報を用いて調停を行う技術では、計算ノードがパケットを送信してから経過した時間やパケットを中継したルータの数等のレイテンシを示す情報に基づいて帯域を分配する。このため、各ルータ63〜63eは、各計算ノード間における通信に対して帯域を適切に分配することができないという問題があった。
つまり、入力ポート間の競合を調停する処理は、パケットのレイテンシを調整する処理とは異なり、各計算ノード60〜60e間の通信に対して、並列計算機システム50が有する帯域を分配する処理である。このため、帯域の情報とは本質的に異なるレイテンシの情報を用いて、各計算ノード60〜60e間における通信に帯域を適切に分配することができない。
また、並列計算機システム50は、各計算ノード60〜60eが多対多で通信する際に、レイテンシを示す情報を用いて調停を行った場合には、各パケットを中継するルータの数を均一化することができない。つまり、並列計算機システム50は、各パケットのレイテンシのばらつきを本質的に均一化することができないため、各計算ノード60〜60e間における通信に帯域を適切に分配することができない。
さらに、各ルータ63〜63eは、パケットを送信してから経過した時間やパケットを中継したルータの数を「age」に格納するので、「age」を格納するフィールドのbit幅が大きくなる。このため、データを格納するフィールドのbit幅が小さくなり、各計算ノード間の通信において、データの転送効率が低下してしまうという問題があった。
本願に開示の技術は、上述した問題に鑑みてなされたものであって、データの転送効率を低下させることなく各計算ノード間における通信に対して帯域を適切に分配する。
1つの側面では、複数の計算ノード間のデータを調停して転送するデータ転送装置である。このようなデータ転送装置は、複数の計算ノードからデータを受信し、受信した各データから、データが受信されるまでに調停の相手になった他のデータの累積数を取得する。また、データ転送装置は、各データから取得した累積数を、受信したデータの数に基づいてそれぞれ更新する。そして、データ転送装置は、更新した累積数に基づいて、受信したデータを調停して、計算ノードへ送信するデータを選択する。また、データ転送装置は、選択したデータに、更新した累積数を格納し、累積数を格納したデータを計算ノードへ送信する。
1つの側面では、データの転送効率を低下させることなく各計算ノード間における通信に対して帯域を適切に分配する。
図1は、実施例1に係る並列計算機システムの一例を説明するための図である。 図2は、実施例1に係る計算ノード間において送受信されるパケットの一例を説明するための図である。 図3は、実施例1に係るルータの一例を説明するための図である。 図4は、ポート2に関わる調停回路の一例を説明するための図である。 図5は、実施例1に関わる並列計算機システムが帯域を割当てる処理の一例を説明するための図である。 図6は、実施例1に関わる計算ノードの適用例を説明するための図である。 図7は、メッシュ網によって接続した計算ノードを有する並列計算機システムを説明するための図である。 図8は、パケットを送信する計算ノードとパケットを受信する計算ノードとを説明するための図である。 図9は、パケットの送信経路の一例を説明するための図である。 図10は、パケットの送信経路の木構造を説明するための図である。 図11は、各経路を流れるパケットに格納される合流数の値を説明するための図である。 図12は、実施例1に関わるルータが調停を行う処理の一例を説明するためのフローチャートである。 図13は、並列計算機システムが有する複数の計算ノードの一例を説明するための図である。 図14は、age情報を付与したパケットを説明するための図である。
以下に添付図面を参照して本願に係るデータ転送装置、並列計算機システムおよびデータ転送装置の制御方法について説明する。
以下の実施例1では、図1を用いて、並列計算機システム1の一例を説明する。図1は、実施例1に係る並列計算機システムの一例を説明するための図である。なお、並列計算機システム1は、少なくともルータを有する複数の計算ノードを有し、各計算ノードが相互に通信を行う並列計算機システムである。
図1に示すように、並列計算機システム1は、複数の計算ノード2〜2eを有する。なお、図1では省略したが、並列計算機システム1は、計算ノード2〜2e以外にも、複数の計算ノードを有するものとする。また、計算ノード2a〜2eは、計算ノード2と同様の処理を実行するものとし、以下の説明を省略する。
計算ノード2は、情報を処理する情報処理装置である。具体的には、計算ノード2は、CPU3、NIC4、ルータ10を有する。CPU3は、演算を実行する演算処理装置である。例えば、CPU3は、計算ノード2に割当てられたタスクの演算処理を実行する。また、CPU3は、他の計算ノード2a〜2eが有するCPU3a〜CPU3eに対してデータを送信する場合には、NIC4に対して、送信先のCPUを示す識別子と送信対象のデータとを送信する。
NIC4は、CPU3から受信したデータをパケット化し、パケット化したデータをルータ10に送信する。図2は、実施例1に係る計算ノード間において送受信されるパケットの一例を説明するための図である。図2に示す例では、パケットは、図2中(A)で示すヘッダ部分と、図2中(B)で示すデータ部分とを有する。なお、パケットの先頭には、パケットの開始符号(S)が付加され、パケットの終端には、パケットの終端符号(E)が付加される。なお、メモリ等の他のInterface機能と共に、NIC4の機能を1チップに集積することや、CPU3の内部に同等の機能を発揮する処理装置を設置することで、NIC4の機能を発揮させるようにしてもよい。
図2中(A)で示すように、パケットのヘッダ部分は、パケットの宛先やパケットのサイズを示す識別情報を格納する領域と、このパケットが参加した調停処理において、このパケットと競合した他のパケットの累積数である合流数を格納する領域を有する。また、図2中(A)で示すように、パケットのヘッダ部分は、合流数を用いて調停を行うか否かを指定するフラグを格納する領域を有する。また、図2中(B)で示すように、パケットのデータ部分には、CPU3から他のCPU3a〜3eへ送信されるデータを格納する領域が設定される。
例えば、NIC4は、CPU3からCPU3eへの送信対象のデータを受信した場合には、パケットのデータ部分に受信したデータを格納するとともに、パケットの宛先をCPU3eとした識別情報をヘッダに格納する。また、NIC4は、合流数の初期値「1」を格納するとともに、合流数を用いて調停を行う事を指定するフラグを格納する。その後、NIC4は、各情報を格納したパケットをルータ10へ送信する。
図1に戻って、ルータ10は、NIC4又は図示しない計算ノードからパケットを受信した場合には、受信したパケットをルータ10aへ転送する転送装置である。具体的には、ルータ10は、複数のパケットを受信した場合には、各パケットに格納されている合流数を取得し、受信したパケットの数に応じて合流数を更新する。そして、ルータ10は、更新した合流数に基づいて、受信した複数のパケットからルータ10aへ送信するパケットを選択する。その後、ルータ10は、選択したパケットに更新した合流数を格納し、更新した合流数を格納したパケットをルータ10aへ送信する。
以下、図面を用いて、ルータ10が実行する処理の具体例について説明する。図3は、実施例1に係るルータの一例を説明するための図である。図3に示す例では、ルータ10は、ポート0受信処理部11、ポート1受信処理部12、ポート2受信処理部13、ポート3受信処理部14、ポート0送信処理部15、ポート1送信処理部16、ポート2送信処理部17、ポート3送信処理部18を有する。また、ルータ10は、調停回路20、データパススイッチ30を有する。
なお、図3中の太線による矢印は、パケットの経路を示し、図3中の細線による矢印は、調停回路20の制御線によるデータの経路を示す。また、ポート0受信処理部11とポート0送信処理部15は、同一のポート0に係る受信処理部11と送信処理部15であるものとする。また、ポート1受信処理部12とポート1送信処理部16とは、同一のポート1に係る受信処理部12と送信処理部16であるものとする。また、ポート2受信処理部13とポート2送信処理部17は、同一のポート2に係る受信処理部13と送信処理部17であるものとする。また、ポート3受信処理部14とポート3送信処理部18とは、同一のポート3に係る受信処理部14と送信処理部18であるものとする。
なお、以下の説明においては、ポート0は、NIC4と、ポート1は、計算ノード2aと、ポート3およびポート4は、計算ノード2と隣接する他の計算ノードと物理的なリンクにより接続されているものとする。また、ポート1受信処理部12、ポート2受信処理部13、ポート3受信処理部14が実行する処理については、ポート0受信処理部11が実行する処理と同様の処理を実行するものとし、以下の説明を省略する。また、ポート1送信処理部16、ポート2送信処理部17、ポート3送信処理部18が実行する処理は、ポート0送信処理部15が実行する処理と同様の処理であるものとして、以下の説明を省略する。
ポート0受信処理部11は、パケットを受信した場合には、受信したパケットの送信先を判別する。そして、ポート0受信処理部11は、受信したパケットの送信先と対応するポートの送信処理部への送信要求を調停回路20に送信する。また、ポート0受信処理部11は、受信したパケットのヘッダ部分から合流数を取得し、取得した合流数を調停回路20へ送信する。また、ポート0受信処理部11は、調停回路20から送信許可の通知を受け付けた場合には、受信したパケットをデータパススイッチ30に送信する。
例えば、ポート0受信処理部11は、計算ノード2を宛先とするパケットを受信した場合には、ポート0への送信要求を調停回路20に送信する。また、ポート0受信処理部11は、計算ノード2a〜2eを宛先とするパケットを受信した場合には、ポート1への送信要求を調停回路20に送信する。
ポート0送信処理部15は、後述する調停回路20によって、計算ノード2を宛先とするパケットが選択された場合には、データパススイッチ30を介してパケットを受信する。このような場合には、ポート0送信処理部15は、NIC4に対して受信したパケットを送信する。また、ポート1送信処理部16も同様に、計算ノード2a〜2eを宛先とするパケット、すなわち、計算ノード2aに送信されるパケットをデータパススイッチ30を介して受信した場合には、受信したパケットを計算ノード2aに送信する。
また、各ポートの送信処理部15〜18は、データパススイッチ30を介してパケットを受信する。また、各ポートの送信処理部15〜18は、調停回路20から合流数を受信する。そして、各ポートの送信処理部15〜18は、調停回路20から受信した合流数を新たな合流数としてデータパススイッチ30から受信したパケットのヘッダに格納する。その後、各ポートの送信処理部15〜18は、新たな合流数を格納したパケットを自身と接続されたNIC4または計算ノードへ送信する。
なお、パケットを送信するポートの選択は、各パケットの宛先に依存する。例えば、固定ルーティングの場合には、パケットヘッダが持つ宛先情報によって送信するポートは、一意に決まる。また、Adaptiveルーティングの場合には、採用されたアルゴリズムに従って、パケットを送信するポートが決まる。
ここで、複数のポートからパケットを受信した際に、受信した各パケットの宛先から決まる送信ポートが同じであった場合には、この送信ポートにける送信処理部にて競合が発生する。このような場合には、以下に説明する調停回路20によって、送信されるパケットが選択される。その後、選択されたパケットを受信したポートの受信処理部は、パケットをデータパススイッチ3を介して、送信ポートの送信処理部に送信する。そして、パケットを受信した送信処理部は、受信したパケットの合流数を更新した後に、自身と接続されたNIC4または計算ノードにパケットを送信する。
例えば、ポート0受信処理部11がポート1送信処理部16を介して送信するパケットを受信し、ポート1受信処理部12がポート2送信処理部17を介して送信するパケットを受信し、ポート2受信処理部13がポート1送信処理部16を介して送信するパケットを受信した場合には、ルータ10は、以下の処理を実行する。
すなわち、ルータ10は、ポート0受信処理部11が受信したパケットとポート2受信処理部13が受信したパケットとの調停を行う。ここで、ルータ10は、ポート0受信処理部11が受信したパケットを調停回路20が選択した場合には、ポート0受信処理部11が受信したパケットをポート1送信処理部16を介して送信するとともに、ポート2受信処理部13がポート1送信処理部16を介してパケットを送信する。つまり、受信した複数のパケットについて、送信を行うポートのリソース(つまり、送信処理部15〜18)が競合していない場合には、受信した複数のパケットの転送は同時並行で行われる。
調停回路20は、各受信処理部11〜14から受信した送信要求に基づいて、各ポートについて競合が発生しているか否かを判別し、いずれかのポートにおいて競合が発生していると判別した場合には、競合が発生しているポートについて以下の処理を実行する。すなわち、調停回路20は、各受信処理部11〜14から受信した合流数を、各受信処理部11〜14が受信したパケットの数に基づいてそれぞれ更新する。そして、調停回路20は、更新した合流数に基づいて、パケットを送信するポートについての調停を行う。その後、調停回路20は、調停に勝利したパケットを受信した受信処理部に対して送信許可を送信するとともに、パケットを送信するポートの送信処理部に対して、更新した合流するを送信する。
一方、調停回路20は、競合が発生していないポートについては、以下の処理を実行する。すなわち、調停回路20は、競合が発生していないポートを用いて送信するパケットを受信した受信処理部に対して送信許可を送信する。
以下、図を用いて、ルータ10が受信したパケットの調停を行い、ルータ10aへ送信するパケットを調停回路20が選択する処理の一例について説明する。図4は、ポート2に関わる調停回路の一例を説明するための図である。なお、図4に示す調停回路20は、図3に示す調停回路20のうち、ポート2についての調停を行う回路部分を抜き出したものである。
すなわち、図3に示す調停回路20は、各ポート0〜3についての調停を行う回路であり、図4に示すポート2についての調停を行う回路部分と同様の回路を、各ポート0、1、3についての調停を行う回路部分として有する。なお、以下の説明においては、ポート0受信処理部11とポート1受信処理部12とがポート2送信処理部17を介して送信するパケットを受信した際に調停回路20が実行する処理の一例を説明するものとする。これに合わせて、図4においては、ポート2受信処理部13、ポート3受信処理部14、ポート0送信処理部15、ポート1送信処理部16、ポート3送信処理部18については、記載を省略した。
図4に示す例では、調停回路20は、合流数更新部21、合流数更新部24、衝突カウンタ27、調停部28、選択部29を有する。合流数更新部21は、ポート0受信処理部11と対応付けられており、ポート0受信処理部11が受信したパケットから取得された合流数を格納するレジスタA22とレジスタB23を有する。具体的には、合流数更新部21は、ポート0受信処理部11から合流数を受信した場合には、受信した合流数をレジスタA22およびレジスタB23に格納する。
また、合流数更新部21は、衝突カウンタ27から衝突数を受信した場合には、レジスタA22およびレジスタB23に格納された値に、受信した衝突数から1を減算した値を加算する。また、合流数更新部21は、調停部28から調停負けを示す情報を受信した場合には、レジスタB23に格納された値に1を加算する。また、合流数更新部21は、調停部28から送信許可を受信した場合には、レジスタA22に格納されている値を選択部29へ送信する。
合流数更新部24は、ポート1受信処理部12と対応付けられており、ポート1受信処理部12から合流数を受信した場合には、受信した合流数をレジスタA25およびレジスタB26に格納する。また、合流数更新部24は、衝突カウンタ27から衝突数を受信した場合には、レジスタB26に格納された値に、受信した衝突数から1を減算した値を加算する。また、合流数更新部24は、調停部28から調停負けを示す情報を受信した場合には、レジスタB26に格納された値に1を加算する。また、合流数更新部24は、調停部28から送信許可を受信した場合には、レジスタA25に格納されている値を選択部29へ送信する。
衝突カウンタ27は、ポート0受信処理部11およびポート1受信処理部12から送信要求を受信した場合には、受信した送信要求の数を計数し、計数した数を衝突数として合流数更新部21、24に送信する。また、衝突カウンタ27は複数の受信処理部、すなわちポート0受信処理部11およびポート1受信処理部12から送信要求を受信した場合には、調停部28に調停の実行を示す情報を送信する。
調停部28は、調停の実行を示す情報を受信した場合には、合流数更新部21のレジスタB23に格納されている値と合流数更新部24のレジスタB26に格納されている値とを取得する。そして、調停部28は、取得した値を比較し、最も大きい値が格納されていた合流数更新部と、この合流数更新部に対応付けられた受信処理部とに送信許可を送信するとともに、これ以外の合流数更新部に調停負けを示す情報を送信する。
また、調停部28は、取得した値のうち、最も大きい値が複数存在する場合には、最も大きい値が格納されていた合流数更新部のうち、いずれかの合流数更新部をラウンドロビン方式で選択する。そして、調停部28は、選択した合流数更新部と、選択した合流数更新部に対応付けられた受信処理部とに送信許可を送信する。
例えば、調停部28は、レジスタB23に格納されていた値がレジスタB26に格納されていた値よりも大きい場合には、ポート0受信処理部11と合流数更新部21とに送信許可を送信するとともに、合流数更新部24に調停負けを示す情報を送信する。また、調停部28は、レジスタB26に格納されていた値がレジスタB23に格納されていた値よりも大きい場合には、ポート1受信処理部12と合流数更新部24とに送信許可を送信するとともに、合流数更新部21に調停負けを示す情報を送信する。
ここで、各合流数更新部21、24は、調停部28から調停負けを示す情報を受信した場合には、各レジスタB23、26に格納された値に1を加算する。そして、調停部28は、各レジスタB23、26に格納された値に基づいて、ルータ10aへ送信するパケットを選択する。つまり、調停部28は、受信したパケットに格納されていた合流数を受信したパケットの数に応じて更新した値に、パケットが調停負けした回数を加算した値に基づいて、ルータ10aへ送信するパケットを選択する。この結果、調停部28は、調停処理におけるデッドロックを回避することができる。
なお、調停部28は、送信するパケットを選択した場合には、選択部29と図3に例示したデータパススイッチ30に選択したパケットを受信したポートを示す情報を送信する。
選択部29は、調停部28からポートを示す情報を受信した場合には、受信した情報が示すポートと対応付けられた合流数更新部から送信された合流数をポート2送信処理部17へ送信する。つまり、選択部29は、図4に示す調停部28がポート2についての調停部であるため、調停部28から受信した情報が示すポートが受信したパケットから取得され、競合によって更新された合流数を、調停部28に関わるポート2の送信処理部17へ送信する。
例えば、選択部29は、調停部28からポート0を示す情報を受信した場合には、合流数更新部21から送信された合流数をポート2送信処理部17へ伝達する。また、選択部29は、調停部28からポート1を示す情報を受信した場合には、合流数更新部24から送信された合流数をポート2送信処理部17へ送信する。
なお、上述した調停処理は、1つのパケットについての調停を行うものであっても良い。つまり、調停部28は、一方の合計数更新部が有するレジスタAおよびレジスタBに値が格納されていない場合には、「0」が格納されているものとみなして調停を行う。このような場合には、調停回路20は、競合が発生していない場合にも、パケットを送信するポートの送信処理部に、パケットを適切に送信するので実装が容易になる。また、調停回路20は、合流数更新部21、24から出力されるレジスタA22、24の値について、勝者のパケットの合流数のみを出力し、それ以外は「0」値を出力するようにした場合には、選択部29は不要である。
このように、調停回路20は、各ポート0、1が受信したパケットに格納されていた合流数を取得し、取得した合流数を受信したパケットの数に応じて更新する。そして、調停回路20は、更新した合流数が最も大きいパケットをルータ10aへ送信するパケットとして選択する。このため、調停回路20は、各計算ノード2〜2e間における通信に対して、均等に帯域を割当てることができる。
図3に戻って、データパススイッチ30は、調停回路20のうち、図4に示したポート2に関わる回路の調停部28からポートを示す情報を受信した場合には、受信した情報が示すポートの受信処理部から受信したパケットを、ポート2送信処理部17へ送信する。例えば、データパススイッチ30は、調停部28からポート0を示す情報を受信した場合には、ポート0受信処理部11から受信したパケットをポート2送信処理部17へ送信する。また、データパススイッチ30は、調停回路20のうち、ポート3に関わる回路の調停部からポート0を示す情報を受信した場合には、ポート0受信処理部11から受信したパケットをポート3送信処理部18へ送信する。
なお、ルータ10は、ルータ10aのリソースの枯渇でパケットを受け入れられない場合等、パケットを送信できない場合には、調停を行わず、各パケットの合流数の更新もおこなわない。このように、送信先がパケットを受け入れられないのは、送信先が帯域を複数の通信で共有している合流点であるからである。なお、このような状態は、adaptive routingなどの処理を用いることによって解消することができる。
例えば、各CPU3〜3e、各受信処理部11〜14、各送信処理部15〜18、調停回路20、各合流数更新部21、24、衝突カウンタ27、調停部28は、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、レジスタA22、レジスタA25、レジスタB23、レジスタB26とは、RAM(Random Access Memory)やフラッシュメモリ(flash memory)などの半導体メモリ素子である。また、選択部29、データパススイッチ30とは、調停部28から通知された情報により、パケットの出力先を変更するスイッチである。
上述したように、ルータ10は、パケットを受信した場合には、各パケットが参加した調停処理において各パケットと競合した他のパケットの数の累積数である合流数を取得する。また、ルータ10は、取得した合流数を受信したパケットの数、つまり、調停において競合した他のパケットの数に基づいて更新する。
ここで、各パケットに格納された合流数は、パケットが競合した他のパケットの数の累積数であり、帯域を共有する通信がどれだけ重なっているかを示す値である。つまり、各パケットに格納された合流数は、帯域を共有する通信に対して割当てられた帯域と直接関与する情報である。このため、ルータ10は、各パケットに格納された合流数に基づいて調停を行った場合には、帯域を示す情報に基づいて調停を行う事ができるので、各計算ノード2〜2e間の通信に対して適切に帯域を割当てることができる。
一例として、図1に示す各計算ノード2〜2dが計算ノード2eに対してパケットを送信する例について説明する。例えば、各ルータ10〜10eが、従来と同様にラウンドロビン方式で受信したパケットの調停を行った場合には、全通信には、全帯域の「1/2」が割当てられる。また、計算ノード2cと計算ノード2eとの間の通信には、全帯域の「1/4」が割当てられ、計算ノード2bと計算ノード2eとの間の通信には、全帯域の「1/8」が割当てられる。
また、計算ノード2aと計算ノード2eとの間の通信には、全帯域の「1/16」が割当てられ、計算ノード2と計算ノード2eとの間の通信には、残りの「1/16」の帯域が割当てられる。このように、並列計算機システム1は、各ルータ10〜10eがラウンドロビン方式でパケットの調停を行った場合には、パケットのホップ数が多い通信に対して少ない帯域しか割当てることができず、適切な帯域の割当を行っているとは言えない。なお、多くのポート間において送信先ポートが競合した場合には、各計算ノード2〜2e間の通信に割当てられる帯域は、さらに絞られることになる。
ここで、各ルータ10〜10eが各パケットに格納された合流数が最も多いパケットを調停に勝利させた場合には、計算ノード2dと計算ノード2e間の通信におけるパケットは、5回に1回の割合で調停に勝つことになる。このため、計算ノード2dと計算ノード2e間の通信には、全帯域の「1/5」が割当てられる。また、計算ノード2cと計算ノード2e間の通信におけるパケットは、4回に1回の割合で調停に勝つことになるため、残りの帯域「1−1/5=4/5」の「1/4」が割当てられる。この結果、計算ノード2cと計算ノード2e間の通信には、全帯域の「1/5」が割当てられる。
また、計算ノード2bと計算ノード2e間の通信におけるパケットは、3回に1回の割合で調停に勝つことになるため、計算ノード2bと計算ノード2e間の通信には、残りの帯域「1−2/5」の「1/3」である「1/5」が割当てられる。また、計算ノード2aと計算ノード2e間の通信におけるパケットは、2回に1回の割合で調停に勝つことになるため、計算ノード2aと計算ノード2e間の通信には、残りの帯域「1−3/5」の「1/2」である「1/5」が割当てられる。また、計算ノード2と計算ノード2e間の通信には、残りの帯域「1/5」が割当てられる。つまり、並列計算機システム1は、合流数が最も多いパケットを調停に勝利させた場合には、各計算ノード間の通信に対して、均等に帯域を割当てることができる。
次に、並列計算機システム1が帯域を割当てる処理のシミュレーション結果について説明する。まず、図1に示す各計算ノード2〜2dが計算ノード2eにパケットを送信した際に、各計算ノード2〜2dと計算ノード2eとの間の通信に対して割当てられた帯域のシミュレーション結果について説明する。なお、このシミュレーションにおいては、転送に1〜32サイクルを要するランダムなサイズを有する10000個のパケットを各計算ノード2〜2dに対してランダムに割当て、各計算ノード2〜2dが自身に割当てられたパケットを計算ノード2eに対して送信した例をシミュレーションした。
このような条件の下、各ルータ10〜10dがラウンドロビン方式でパケットの調停を行った場合は、並列計算機システム1は、計算ノード2dと計算ノード2eとの通信に、全帯域のうち「50.0%」の帯域を割当てた。また、並列計算機システム1は、計算ノード2cと計算ノード2eとの通信に「25.0%」の帯域を割当て、計算ノード2bと計算ノード2eとの通信に「12.8%」の帯域を割当てた。
また、並列計算機システム1は、計算ノード2aと計算ノード2eとの通信に「6.1%」の帯域を割当て、計算ノード2と計算ノード2eとの通信に「6.5%」の帯域を割当てた。このように、各パケットが各計算ノード2a〜2dをホップするたびに1つのパケットが合流する際に各計算ノード2〜2dのルータ10〜10dがラウンドロビン方式でパケットの調停を行った場合には、各計算ノード2〜2dと計算ノード2e間の通信におけるパケットのホップ数が「1」増えるたびに帯域が「1/2」に減少する。
一方、同様の条件の下、各ルータ10〜10dが合流数が最も多いパケットを調停に勝利させた場合には、並列計算機システム1は、計算ノード2dと計算ノード2eとの通信に、全帯域のうち「20.2%」を割当てた。また、並列計算機システム1は、計算ノード2cと計算ノード2eとの通信に「19.8%」の帯域を割当て、計算ノード2bと計算ノード2eとの通信に「19.4%」の帯域を割当てた。また、並列計算機システム1は、計算ノード2aと計算ノード2eとの通信に「20.8%」の帯域を割当て、計算ノード2と計算ノード2eとの通信に「20.1%」の帯域を割当てた。このように、各ルータ10〜10eが合流数が最も多いパケットを調停に勝利させた場合には、並列計算機システム1は、各計算ノード2〜2dと計算ノード2e間の通信に対して、均等に帯域を割当てることができる。
次に、各計算ノード2〜2dが計算ノード2eにパケットを送信するとともに、各計算ノード2〜2e以外の計算ノードから計算ノード2eへ送信されたパケットが常時合流する例におけるシミュレーション結果について説明する。なお、このシミュレーションにおいては、転送に1〜32サイクルを要するランダムなサイズの10000個のパケットを各計算ノード2〜2dに割当て、各計算ノード2〜2dが自身に割当てられたパケットを計算ノード2eに対して送信した例をシミュレーションした。
図5は、実施例1に関わる並列計算機システムが帯域を割当てる処理の一例を説明するための図である。図5中の(A)に示すように、計算ノード2が有するルータ10には、計算ノード2〜2e以外の計算ノードから計算ノード2eへ送信されたパケットの合流が無いものとする。また、図5中の(B)に示すように、計算ノード2aが有するルータ10aには、計算ノード2〜2e以外の計算ノードから計算ノード2eへ送信されたパケットが常時「1」つ合流するものとする。また、図5中の(C)に示すように、計算ノード2bが有するルータ10bには、計算ノード2〜2e以外の計算ノードから計算ノード2eへ送信されたパケットが常時「2」つ合流するものとする。
また、図5中の(D)に示すように、計算ノード2cが有するルータ10cには、計算ノード2〜2e以外の計算ノードから計算ノード2eへ送信されたパケットが常時「1」つ合流するものとする。また、図5中の(E)に示すように、計算ノード2dが有するルータ10dには、計算ノード2〜2e以外の計算ノードから計算ノード2eへ送信されたパケットが常時「3」つ合流するものとする。
このような条件の下、ルータ10〜10dがラウンドロビン方式でパケットの調停を行った場合には、並列計算機システム1は、計算ノード2dと計算ノード2eとの通信に、計算ノード2dと計算ノード2eとの間の帯域のうち「19.9%」の帯域を割当てた。また、並列計算機システム1は、計算ノード2dにおいて合流する3つの通信、つまり、計算ノード2c、NIC4d以外から計算ノード2dに合流してくる3つの通信には計算ノード2dと計算ノード2eとの間の帯域のうち「19.8%」、「20.4%」、「19.9%」の帯域を割当てた。
また、並列計算機システム1は、計算ノード2cと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「6.6%」の帯域を割当て、計算ノード2cにおいて合流する計算ノード2bからの通信およびNIC4c以外からの通信に計算ノード2dと計算ノード2eとの間の帯域の「6.6%」を割当てた。また、並列計算機システム1は、計算ノード2bと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「1.8%」を割当て、計算ノード2bにおいて合流する計算ノード2aからの通信およびNIC4bからの通信以外の2つの通信に、それぞれ計算ノード2dと計算ノード2eとの間の帯域の「1.8%」と「1.6%」とを割当てた。
また、並列計算機システム1は、計算ノード2aと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「0.6%」を割当て、計算ノード2aにおいて合流する計算ノード2から合流する通信とNIC4aからの通信以外の通信に計算ノード2dと計算ノード2eとの間の帯域の「0.6%」を割当てた。そして、並列計算機システム1は、計算ノード2と計算ノード2e間の通信に計算ノード2dと計算ノード2eとの間の帯域の「0.7%」を割当てた。このように、並列計算機システム1は、各ルータ10〜10dがラウンドロビン方式を用いてパケットの調停を行った場合には、各通信に対して均等に帯域を割当てることができない。
一方、同様の条件の下、各ルータ10〜10dが合流数が最も多いパケットを調停に勝利させた場合は、並列計算機システム1は、計算ノード2dと計算ノード2eとの通信に、計算ノード2dと計算ノード2eとの間の帯域の「11.0%」を割当てた。また、並列計算機システム1は、計算ノード2dにおいて合流する計算ノード2c、NIC4d以外から計算ノード2dに合流してくる3つの通信には計算ノード2dと計算ノード2eとの間の帯域の「11.1%」、「11.1%」、「11.2%」を割当てた。
また、並列計算機システム1は、計算ノード2cと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「8.0%」を割当て、計算ノード2cにおいて合流する計算ノード2bからの通信およびNIC4c以外からの通信に計算ノード2dと計算ノード2eとの間の帯域の「8.0%」を割当てた。
また、並列計算機システム1は、計算ノード2bと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「8.3%」を割当て、計算ノード2bにおいて合流する2つの通信に、それぞれ計算ノード2dと計算ノード2eとの間の帯域の「8.5%」と「8.4%」を割当てた。また、並列計算機システム1は、計算ノード2aと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「5.0%」を割当て、計算ノード2aにおいて合流する計算ノード2から合流する通信とNIC4aからの通信以外の通信に計算ノード2dと計算ノード2eとの間の帯域の「4.8%」を割当てた。
そして、並列計算機システム1は、計算ノード2と計算ノード2e間の通信に全帯域の「5.0%」を割当てた。このように、並列計算機システム1は、各ルータ10〜10eが最も大きい合流数が格納されたパケットを調停に勝利させた場合には、各通信に割当てられる帯域のばらつきを抑え、各通信に対して適切に帯域を割当てることができる。
次に、各計算ノード2〜2e以外の計算ノードからランダムな送信先に送信されたパケットが常時合流するとともに、各計算ノード2〜2eが通信を行う例についてのシミュレーション結果について説明する。なお、各計算ノードから送信されるパケットのサイズ、パケットの総数、計算ノード2〜2e以外の計算ノードからルータ10〜10dにおいて合流するパケットの数は、図5を用いて説明したシミュレーションと同様であるものとする。
このような条件の下、各ルータ10〜10eがラウンドロビン方式でパケットの調停を行った場合には、並列計算機システム1は、計算ノード2dと計算ノード2eとの通信に、計算ノード2dと計算ノード2eとの間の帯域のうち「20.0%」を割当てた。また、並列計算機システム1は、計算ノード2c、NIC4d以外から計算ノード2dに合流してくる3つの通信には計算ノード2dと計算ノード2eとの間の帯域のうち「20.0%」をそれぞれ割当てた。
また、並列計算機システム1は、計算ノード2cと計算ノード2eとの通信には計算ノード2dと計算ノード2eとの間の帯域の「7.5%」を割当て、計算ノード2cにおいて合流する計算ノード2bからの通信およびNIC4c以外からの通信に計算ノード2dと計算ノード2eとの間の帯域の「7.5%」を割当てた。また、並列計算機システム1は、計算ノード2bと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「2.0%」を割当て、計算ノード2bにおいて合流する計算ノード2aからの通信およびNIC4bからの通信以外の2つの通信に、それぞれ計算ノード2dと計算ノード2eとの間の帯域の「2.0%」を割当てた。
また、並列計算機システム1は、計算ノード2aと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「0.7%」を割当て、計算ノード2aにおいて合流する計算ノード2から合流する通信とNIC4aからの通信以外の通信に計算ノード2dと計算ノード2eとの間の帯域の「0.7%」を割当てた。そして、並列計算機システム1は、計算ノード2と計算ノード2e間の通信に、計算ノード2dと計算ノード2eとの間の帯域の「0.8%」を割当てた。
一方、同様の条件の下、並列計算機システム1は、各ルータ10〜10dが合流数が最も多いパケットを調停に勝利させた場合には、計算ノード2dと計算ノード2eとの通信に、計算ノード2dと計算ノード2eとの間の帯域の「11.1%」を割当てた。また、並列計算機システム1は、計算ノード2c、NIC4d以外から計算ノード2dに合流してくる3つの通信にはそれぞれ計算ノード2dと計算ノード2eとの間の帯域のうち「11.1%」を割当てた。
また、並列計算機システム1は、計算ノード2cと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「10.4%」を割当て、計算ノード2cにおいて合流する計算ノード2bからの通信およびNIC4c以外からの通信に計算ノード2dと計算ノード2eとの間の帯域の「10.4%」を割当てた。また、並列計算機システム1は、計算ノード2bと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「11.6%」を割当て、計算ノード2bにおいて合流する計算ノード2aからの通信およびNIC4bからの通信以外の2つの通信に、それぞれ計算ノード2dと計算ノード2eとの間の帯域の「11.6%」を割当てた。
また、並列計算機システム1は、計算ノード2aと計算ノード2eとの通信に計算ノード2dと計算ノード2eとの間の帯域の「8.3%」を割当て、計算ノード2aにおいて合流する計算ノード2から合流する通信とNIC4aからの通信以外の通信に計算ノード2dと計算ノード2eとの間の帯域の「8.3%」を割当てた。そして、並列計算機システム1は、計算ノード2と計算ノード2e間の通信に計算ノード2dと計算ノード2eとの間の帯域の「8.4%」を割当てた。
このように、並列計算機システム1は、各ルータ10〜10dが合流数が最も多いパケットを調停に勝利させた場合には、各通信に割当てられた最大の帯域と最小の帯域との比を「2:1」程度の範囲に抑えることができる。このため、並列計算機システム1は、各通信に割当てられる帯域のばらつきを抑え、各通信に対して適切に帯域を割当てることができる。
次に、図6〜図11を用いて、パケットに格納された合流数に基づいて調停を行うルータが設置された計算ノードをメッシュ網によって接続した例について説明する。図6は、実施例1に関わる計算ノードの適用例を説明するための図である。図6に示す例では、計算ノード2fは、CPU3f、ルータ10fを有する。なお、計算ノード2、CPU3f、ルータ10fは、それぞれ計算ノード2、CPU3、ルータ10と同様の機能を発揮するものとし、動作の詳細な説明については省略する。また、CPU3fは、NIC4の機能を有するものとする。
図7は、メッシュ網によって接続した計算ノードを有する並列計算機システムを説明するための図である。図7に示す並列計算機システム1aは、X軸方向およびY軸方向に5個ずつの計算ノードをメッシュ状に接続したトポロジを有する。なお、図7に示す各計算ノードは、計算ノード1fと同様の計算ノードである。また、図7に示す「C」は各計算ノードのCPUを示し、「R」は各計算ノードのルータを示すものとする。
また、図7に示す各計算ノードは、パケットを送信するルーティングにおいて、パケットをX軸上の各ルータを転送させた後に、Y軸上の各ルータを転送させることで、パケットの送信先となる計算ノードにパケットを送信するものとする。なお、この例はあくまでひとつの適用例であり、ルータ10fが実行する処理は、固定ルーティングを採用したネットワークのみならず、任意のルーティング方式が適用された任意の並列計算機システムに適用することも可能である。
図8は、パケットを送信する計算ノードとパケットを受信する計算ノードとを説明するための図である。例えば、図8中「S」で示したCPUを有する計算ノードから、図8中「D」で示したCPUを有する計算ノードにパケットが送信された場合には、各計算ノードから送信されたパケットは、図8中の太線で示す経路を辿って送信されることになる。
図9は、パケットの送信経路の一例を説明するための図である。図9に示す例では、図8に示したパケットが送信される経路を抜粋した。図9に示すパケットの経路を回転させるとわかるように、図9に示すパケットの経路は、図10に示すように、パケットの送信先となる「D」が付されたCPUを頂点とする木構造である。なお、図10は、パケットの送信経路の木構造を説明するための図である。
図11は、各経路を流れるパケットに格納される合流数の値を説明するための図である。図11に示すように、「S」が付されたCPUから送信されるパケットには、図11中の各経路に示す数値の合流数が格納される。より具体的には、各経路を流れるパケットには、各経路を根とするsub treeに含まれる送信元のCPUの数と等しい値が合流数として格納される。
一例として、図11中(A)で示す範囲について説明する。例えば、図11中(B)で示すルータにおいては、図11中左方の経路を根とするsub treeにはパケットの送信元となる2つのCPUが存在する。また、図11中右方の経路を根とするsub treeには、パケットの送信元となる1つのCPUが存在する。このため、図11中(B)で示すルータにおいては、図11中左方から合流数「2」が格納されたパケットが合流し、図11中右方の経路から合流数「1」が格納されたパケットが合流する。このため、図11中(B)で示すルータは、図11中左方の経路から合流したパケットと図11中右方の経路から合流したパケットとを「2:1」の割合で図11中上方のルータへと転送するように、各パケットの調停を行う。
このため、図11中(B)で示すルータは、図11中(A)で示す範囲に含まれる各CPUを有する計算ノードと、送信先となる計算ノードとの間の通信に対して、適切に帯域を割当てることができる。また、図11中に示す各ルータは、図11中(B)で示すルータと同様の処理を行うため、送信元の計算ノードと送信先の計算ノードとの通信に対して均等に帯域を割当てることができる。このように、パケットが参加した調停における競合したパケットの累積数を合流数として各パケットに格納し、各パケットに格納された合流数に基づいて調停を行った場合には、各計算ノード間の通信に対して公平に帯域を割当てることができる。
[調停処理の流れ]
次に、図12を用いて、ルータ10がパケットの調停を行う処理の流れについて説明する。図12は、実施例1に関わるルータが調停を行う処理の一例を説明するためのフローチャートである。まず、ルータ10は、他の計算ノードからパケットを受信する(ステップS101)。次に、ルータ10は、受信したパケットのヘッダに格納された合流数を取得する(ステップS102)。そして、ルータ10は、調停回路20の回路のうち、パケットの宛先に関わるポートの調停回路が有する合流数更新部であって、受信したポートと対応する合流数更新部のレジスタAおよびレジスタBに取得した合流数を格納する(ステップS103)。
次に、ルータ10は、各ポートの送信要求から競合を確認し、レジスタAとレジスタBに格納された値を更新する(ステップS104)。次に、ルータ10は、レジスタBの値を用いて調停処理を実行する(ステップS105)。また、ルータ10は、各ポートにおいて受信したパケットが調停に勝利したか否かを判別する(ステップS106)。そして、ルータ10は、調停に負けたパケットについては(ステップS106否定)、このパケットを受信したルータと対応付けられた合流数更新部のレジスタBに格納された値に1を加算する(ステップS107)。その後、ルータ10は、新たなレジスタBを用いて、再度調停を実行する(ステップS105)。
また、ルータ10は、調停に勝利したパケットについては(ステップS106肯定)、このパケットを受信したポートの受信処理部へ送信許可を送信するとともに、送信ポートの送信処理部へレジスタAに格納されていた値を送信する(ステップS108)。次に、ルータ10は、データパススイッチを介して、受信ポートから送信ポートへパケットを移動させる(ステップS109)。そして、送信ポートの送信処理部がパケットのヘッダ部にレジスタAの値を合流数として格納する(ステップS110)。その後、ルータ10は、出力先の計算ノードへパケットを送信し(ステップS111)、処理を終了する。
[実施例1の効果]
上述したように、ルータ10は、パケットを受信した場合には、各パケットが参加した調停処理において各パケットと競合した他のパケットの数の累積数である合流数を取得する。また、ルータ10は、受信したパケットの数、つまり、調停において競合した他のパケットの数に基づいて取得した合流数を更新する。そして、ルータ10は、更新した各パケットの合流数に基づいて、ルータ10aに送信するパケットを選択する。その後、ルータ10は、選択したパケットのヘッダに更新した合流数を格納し、ルータ10aに選択したパケットを送信する。
このため、並列計算機システム1は、各計算ノード2〜2e間の通信に対して、適切に帯域を分配することができる。つまり、並列計算機システム1は、ルータ10が各パケットに格納された合流数に基づいて調停を行った場合には、帯域を示す情報に基づいて調停を行う事ができるので、各計算ノード2〜2e間の通信に対して適切に帯域を割当てることができる。すなわち、並列計算機システム1は、各パケットに格納されたひとつのパケットが宛先に届くまでの間に他のパケットと衝突する回数に基づいて調停を行うので、各計算ノード2〜2e間の通信をより高効率で行う事ができる。
ここで、各パケットが競合した他のパケットの累積数は、高々十数程度であるので、合流数を格納するために必要なビット数は、時間を示す情報を格納するためのビット数よりも小さくなる。例えば、Crayの並列計算機に使用されているルータ(SeaStar
)は、レイテンシを示す10bitの情報をパケットに格納する。しかし、パケットの合流数が32回程度であると仮定すると、合流数を格納するために必要なビット数は5ビットで済む。このため、並列計算機システム1は、合流数を示す情報に基づいて帯域を制御する場合には、パケットにおけるヘッダ部のサイズが小さくなる結果、1つのパケットにより多くのデータを格納することができる。結果として、並列計算機システム1は、各計算ノード2〜2e間の通信を適切に行わせることができる。
なお、パケットの合流数は、並列計算機システム1の規模に依存する。すなわち、合流数が32回とは、例えば、2次元のメッシュ網において、送信されたパケットが受信されるまで各軸方向に16ホップし、ホップするごとに合計数が1加算される場合である。このため、2次元メッシュ網ならば17×17=289個の計算ノードを有する並列計算機システムに対応することができる。同様に、2次元のトーラス網であれば32×32=1024個の計算ノードを有する並列計算機システムに対応することができる。なお、この例は、ホップするごとに合計数が1加算される場合であり、通信頻度が少ない並列計算機システムについては、より多くの計算ノードを有していてもこの転送方式が適用できることは明らかである。
また、合流数は、並列計算機システム1の規模、各計算ノード2〜2eを接続するトポトジ、各計算ノード2〜2e間における通信パターン、ルーティングアルゴリズム等に依存せず、汎用的に計測が可能である。このため、並列計算機システム1は、各ルータ10〜10eが合流数に基づいて調停を行った場合には、計算ノード2〜2eの構成によらず、各計算ノード2〜2e間の通信に対して適切に帯域を割当てることができる。また、並列計算機システム1は、十分に帯域が割当てられた通信に対して帯域をさらに割当てるような処理を行うことなく、各通信に対して適切に帯域を割当てることができる。
また、ルータ10は、各パケットから取得した合流数に、受信したパケットの数から(自パケットに対応する)1を減算した値を新たな合流数とし、ルータ10aへ送信するパケットの合流数を新たな合流数に更新する。すなわち、ルータ10は、各パケットから取得した合流数に、そのパケットと送信ポートが競合した受信パケットの数(自分を除く)を加えた値を新たな合流数とし、ルータ10aへ送信するパケットの合流数を新たな合流数に更新する。このため、ルータ10は、ルータ10aへ送信する各パケットの合流数に、ルータ10における調停において競合したパケットの数を適切に加算する。この結果、並列計算機システム1は、各計算ノード2〜2e間の通信に対して適切に帯域を割当てることができる。
また、ルータ10は、自身で行われた調停において競合したパケットの数を容易に計数することができるので、複雑な処理を行わなくとも、帯域を示す情報を各パケットに格納することができる。この結果、ルータ10は、実装が容易である。
また、ルータ10は、各パケットから取得した合流数を比較し、合流数が最も多いパケットをルータ10aへ送信する。このため、並列計算機システム1は、各計算ノード2〜2e間の通信のうち、割当てられた帯域が最も少ない通信に対して、より多くの帯域を割当てるので、各計算ノード2〜2e間の通信に対して、均等に帯域を割当てることができる。
また、ルータ10は、前回の調停において送信しなかったパケットについては、更新した合流数に1を加算した値を用いて、新たな調停を実行する。つまり、ルータ10は、調停負けしたパケットについては、調停負けした回数だけ高い優先度で新たな調停を行うので、最終的に全てのパケットをルータ10aに送信する。この結果、並列計算機システム1は、デッドロックを防ぐことができる。
これまで本発明の1つの側面として並列計算機システム1について説明したが、本発明は、上述した並列計算機システム1以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)各ノード10〜10eについて
上述した各ノード10〜10eは、調停に参加したパケットに格納された合流数のうち、一番大きい値が格納されたパケットを調停に勝利させていた。しかし、実施例はこれに限定されるものではなく、各パケットに格納された合流数に基づいて、各計算ノード2〜2e間の通信に対して適切に帯域を割当てることができるのであれば、任意の処理を行う事ができる。
例えば、各ノード10〜10eは、各パケットの送信先に基づいて、各パケットに格納された合流数に重み付けを行った優先度を算出し、算出した優先度に基づいて調停をおこなってもよい。このような処理を行った場合には、並列計算機システム1は、各計算ノード2〜2e間の通信に対して均等に帯域を割当てるだけではなく、計算ノード間ごとに設定された帯域を適切に割当てることができる。
また、各ルータ10〜10eは、調停において参加したパケットの数を外部に表示する表示装置を有しても良い。このような場合には、並列計算機システム1の利用者は、パケットの輻輳が発生した際に輻輳が始まった合流箇所を容易に特定することができる。つまり、各ルータ10〜10eが有するバッファの使用量やクレジットの使用量を監視しても、一旦輻輳が発生した場合には、パケットを送受信する経路全体でバッファリソースが枯渇する結果、輻輳の開始点を発見することが困難となる。一方、各ルータ10〜10eが競合したパケットの数は、合流が多く発生している箇所でしか値が大きくならない。このため、並列計算機システム1は、各ルータ10〜10eにおいて競合したパケットの数を外部に表示させた場合には、利用者に輻輳の発生位置を容易に特定させることができる。
また、各ルータ10〜10eは、ポートごとに受信したパケットの合流数を外部に表示することとしてもよい。また、ルータ10〜10eは、VC(Virtual Channel)間での調停において競合したVCの数の累積数をカウントして外部に表示することとしてもよい。並列計算機システム1は、このようなルータ10〜10eを有する場合には、VC間の競合が多発している箇所を利用者に容易に特定させることができる。
なお、各ルータ10〜10eは、合流数を用いて調停をおこなわないことを指定するフラグがパケットのヘッダに格納されていた場合には、ラウンドロビン方式を初めとする任意の調停方法を用いることとしてもよい。
(2)合流数の初期値について
実施例1に関わるNIC4〜4eは、パケットを生成した場合には、合流数の初期値として「1」を格納した。しかし、実施例はこれに限定されるものではなく、例えば、NIC4〜4eは、システム管理用等の重要なパケットを生成した場合には、「2」以上の値を合流数の初期値として格納することで、パケットを優先的に送信させることができる。
例えば、並列計算機システム1は、NIC4が合流数の初期値として「2」を格納したパケットを生成した場合には、このパケットを用いた通信に対して、通常の2倍の帯域を割当てることができる。同様に、並列計算機システム1は、NIC4が合流数の初期値としてパケットに任意の数「n」を格納した場合には、このパケットを用いた通信に対して通常の「n」倍の帯域を割当てることができる。
(3)パケットについて
上述したパケットは、ヘッダ部分に識別情報、合流数、フラグを有するものとした。しかし、実施例はこれに限定されるものではなく、パケットのヘッダ部分に合流数が格納されていれば、任意のプロトコルによるパケットを使用することができる。
1、1a、50 並列計算機システム
2〜2f、60〜60e 計算ノード
3〜3f、61〜61e CPU
4〜4e、62〜62e NIC
10〜10f、63〜63e ルータ
11〜14 受信処理部
15〜18 送信処理部
20 調停回路
21、24 合流数更新部
22、25 レジスタA
23、26 レジスタB
27 衝突カウンタ
28 調停部
29、30 データパススイッチ

Claims (7)

  1. 複数の計算ノード間のデータを調停して転送するデータ転送装置において、
    前記複数の計算ノードからデータを受信する受信部と、
    前記受信部が受信した各データから、前記データが前記受信部に受信されるまでに前記調停の相手になった他のデータの累積数を取得する取得部と、
    前記取得部が各データから取得した累積数を、前記受信部が受信したデータの数に基づいてそれぞれ更新する更新部と、
    前記更新部が更新した累積数に基づいて、前記受信したデータを調停して、計算ノードへ送信するデータを選択する調停部と、
    前記調停部が選択したデータに、前記更新部が更新した累積数を格納する格納部と、
    前記格納部が累積数を格納したデータを計算ノードへ送信する送信部と、
    を有することを特徴とするデータ転送装置。
  2. 前記データ転送装置において、
    前記更新部は、前記取得部が各データから取得した累積数に、前記受信部が受信したデータの数から1を減算した値を加算した値を新たな累積数とすることを特徴とする請求項1に記載のデータ転送装置。
  3. 前記データ転送装置において、
    前記調停部は、前記更新部が更新した各データの累積数を比較し、前記受信部が受信したデータのうち、累積数が最も大きいデータを前記計算ノード送信するデータとして選択することを特徴とする請求項1または2記載のデータ転送装置。
  4. 前記データ転送装置において、
    前記調停部は、前回の調停の処理において選択しなかったデータについて、前記更新部が更新した累積数に、当該データを選択しなかった回数を加算した値に基づいて、前記計算ノードへ送信するデータを選択することを特徴とする請求項1〜3のいずれか1つに記載のデータ転送装置。
  5. 前記データ転送装置はさらに、
    計算ノードから受信する複数の入力ポートと、
    前記複数の入力ポート毎に、データの累積数を表示する表示部を有することを特徴とする請求項1〜4のいずれか1つに記載のデータ転送装置。
  6. 情報を処理する複数の計算ノードを有する並列計算機システムであって、
    各計算ノードは、
    演算を実行する演算処理装置と、
    前記演算処理装置又は他の計算ノードから受信したデータを転送する転送装置とを有し、
    前記転送装置は、
    前記複数の計算ノードからデータを受信する受信部と、
    前記受信部が受信した各データから、各前記データが前記受信部に受信されるまでに調停の相手になった他のデータの累積数を取得する取得部と、
    前記取得部が各データから取得した累積数を、前記受信部が受信したデータの数に基づいてそれぞれ更新する更新部と、
    前記更新部が更新した累積数に基づいて、前記受信したデータを調停する調停部と、
    前記調停部での調停の結果選択されたデータに、前記更新部が更新した累積数を格納する格納部と、
    前記格納部が累積数を格納したデータを他の計算ノードへ送信する送信部と、
    を有することを特徴とする並列計算機システム。
  7. 複数の計算ノード間の複数のデータを調停して転送するデータ転送装置の制御方法において、
    前記データ転送装置が有する受信部が、前記複数の計算ノードからデータを受信し、
    前記データ転送装置が有する取得部が、前記受信部が計算ノードから受信したデータ毎に、前記データが前記受信部に受信されるまでに前記調停の相手になった他のデータの累積数を取得し、
    前記データ転送装置が有する更新部が、前記取得部が各データから取得した累積数を、計算ノードから受信したデータの数に基づいてそれぞれ更新し、
    前記データ転送装置が有する調停部が、前記更新部が更新した累積数に基づいて、前記受信した複数のデータを調停して、送信するデータを選択し、
    前記データ転送装置が有する格納部が、前記調停部が選択したデータに、前記更新部が更新した累積数を格納し、
    前記データ転送装置が有する送信部が、前記格納部が累積数を格納したデータを他の計算ノードへ送信することを特徴とするデータ転送装置の制御方法。
JP2011063400A 2011-03-22 2011-03-22 データ転送装置、並列計算機システムおよびデータ転送装置の制御方法 Expired - Fee Related JP5682391B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011063400A JP5682391B2 (ja) 2011-03-22 2011-03-22 データ転送装置、並列計算機システムおよびデータ転送装置の制御方法
US13/351,636 US20120246262A1 (en) 2011-03-22 2012-01-17 Data transmitting device, parallel computer system, and controlling method
EP20120152615 EP2503747A1 (en) 2011-03-22 2012-01-26 Data transmitting device, parallel computer system, and controlling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011063400A JP5682391B2 (ja) 2011-03-22 2011-03-22 データ転送装置、並列計算機システムおよびデータ転送装置の制御方法

Publications (2)

Publication Number Publication Date
JP2012198819A JP2012198819A (ja) 2012-10-18
JP5682391B2 true JP5682391B2 (ja) 2015-03-11

Family

ID=45562752

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011063400A Expired - Fee Related JP5682391B2 (ja) 2011-03-22 2011-03-22 データ転送装置、並列計算機システムおよびデータ転送装置の制御方法

Country Status (3)

Country Link
US (1) US20120246262A1 (ja)
EP (1) EP2503747A1 (ja)
JP (1) JP5682391B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6350098B2 (ja) * 2014-08-11 2018-07-04 富士通株式会社 演算処理装置,情報処理装置,及び情報処理装置の制御方法
JP2018156267A (ja) * 2017-03-16 2018-10-04 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US11381509B2 (en) 2017-03-17 2022-07-05 Citrix Systems, Inc. Increased packet scheduling throughput and efficiency using úber batching
US10567285B2 (en) * 2017-03-17 2020-02-18 Citrix Systems, Inc. Increasing QoS throughput and efficiency through lazy byte batching

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5260935A (en) * 1991-03-01 1993-11-09 Washington University Data packet resequencer for a high speed data switch
US5694121A (en) * 1994-09-30 1997-12-02 Tandem Computers Incorporated Latency reduction and routing arbitration for network message routers
US5793976A (en) * 1996-04-01 1998-08-11 Gte Laboratories Incorporated Method and apparatus for performance monitoring in electronic communications networks
US6430191B1 (en) * 1997-06-30 2002-08-06 Cisco Technology, Inc. Multi-stage queuing discipline
US6674720B1 (en) * 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US7133911B1 (en) * 2000-03-06 2006-11-07 Compuware Corporation Response time analysis of network performance
JP2001257714A (ja) * 2000-03-09 2001-09-21 Nippon Telegr & Teleph Corp <Ntt> パケットスケジューリング装置
JP4879382B2 (ja) * 2000-03-22 2012-02-22 富士通株式会社 パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置
JP3539338B2 (ja) * 2000-03-23 2004-07-07 日本電気株式会社 優先データ転送方法
US7289523B2 (en) * 2001-09-13 2007-10-30 International Business Machines Corporation Data packet switch and method of operating same
JP3753070B2 (ja) * 2002-01-07 2006-03-08 日本電気株式会社 ノード装置
US7007123B2 (en) * 2002-03-28 2006-02-28 Alcatel Binary tree arbitration system and method using embedded logic structure for controlling flag direction in multi-level arbiter node
US7062582B1 (en) * 2003-03-14 2006-06-13 Marvell International Ltd. Method and apparatus for bus arbitration dynamic priority based on waiting period
DE102005048585A1 (de) * 2005-10-06 2007-04-12 Robert Bosch Gmbh Teilnehmer und Kommunikationscontroller eines Kommunikationssystems und Verfahren zur Realisierung einer Gateway-Funktionalität in einem Teilnehmer eines Kommunikationssystems
US8255599B2 (en) * 2006-03-28 2012-08-28 Integrated Device Technology Inc. Packets transfer device having data absorbing buffers with elastic buffer capacities
US7478183B2 (en) * 2006-05-03 2009-01-13 Cisco Technology, Inc. Method and system for n dimension arbitration algorithm—scalable to any number of end points
JP2008167141A (ja) * 2006-12-28 2008-07-17 Nec Corp データ伝送方法および装置、それを用いた通信システム
CN101801021A (zh) * 2010-01-22 2010-08-11 天津大学 无线Ad hoc网络中在MAC层估计端到端带宽和延迟的方法
EP2381622B1 (en) * 2010-04-23 2012-06-20 Alcatel Lucent Update of a cumulative residence time of a packet in a packet-switched communication network
JP5573491B2 (ja) * 2010-08-23 2014-08-20 日本電気株式会社 データ転送システム、スイッチ及びデータ転送方法プロセッサ間ネットワーク
US8705368B1 (en) * 2010-12-03 2014-04-22 Google Inc. Probabilistic distance-based arbitration
CN102088335B (zh) * 2010-12-23 2014-11-05 中兴通讯股份有限公司 一种确定数据业务时延的方法及装置
US20130286825A1 (en) * 2012-04-30 2013-10-31 Derek Alan Sherlock Feed-forward arbitration

Also Published As

Publication number Publication date
EP2503747A1 (en) 2012-09-26
JP2012198819A (ja) 2012-10-18
US20120246262A1 (en) 2012-09-27

Similar Documents

Publication Publication Date Title
US9007920B2 (en) QoS in heterogeneous NoC by assigning weights to NoC node channels and using weighted arbitration at NoC nodes
JP6093867B2 (ja) インターコネクトにおける不均一なチャネル容量
US20170111283A1 (en) CONGESTION CONTROL AND QoS IN NoC BY REGULATING THE INJECTION TRAFFIC
US9742630B2 (en) Configurable router for a network on chip (NoC)
CN105450555B (zh) 一种片上网络***,及片上网络通信链路的建立方法
KR102319463B1 (ko) 복수의 프로세싱 엔진들을 상호접속하는 온-칩 라우터들의 매트릭스 및 이를 사용하여서 라우팅하는 방법
CN105022717B (zh) 附加请求数优先级的片上网络资源仲裁方法及仲裁单元
US7643477B2 (en) Buffering data packets according to multiple flow control schemes
US7773616B2 (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
JP5682391B2 (ja) データ転送装置、並列計算機システムおよびデータ転送装置の制御方法
US7773618B2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
US9185026B2 (en) Tagging and synchronization for fairness in NOC interconnects
US9001841B2 (en) Communication control device, parallel computer system, and communication control method
US10983910B2 (en) Bandwidth weighting mechanism based network-on-chip (NoC) configuration
JP3492852B2 (ja) ネットワークメッセージルート指定装置のための待ち時間短縮及びルート裁定方法
KR100905802B1 (ko) 컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘
KR101382606B1 (ko) 하이브리드 광학 네트워크 온 칩의 태스크 매핑 장치 및 방법과 이를 이용한 하이브리드 광학 네트워크 온 칩 시스템
US20120195322A1 (en) Method and Apparatus for Achieving Fairness in Interconnect Using Age-Based Arbitration and Timestamping
Lusala et al. A hybrid NoC combining SDM-TDM based circuit-switching with packet-switching for real-time applications
Chen et al. Contention minimized bypassing in SMART NoC
CN105900383B (zh) 通信***、控制节点和通信方法
US9385961B2 (en) Parallel computing device, communication control device, and communication control method
US11855913B2 (en) Hierarchical switching device with deadlockable storage and storage partitions
WO2017064833A1 (ja) 通信管理一覧生成装置、通信管理一覧生成方法、および通信管理一覧生成プログラムが記憶された記憶媒体
KR101428878B1 (ko) 지역 무관 대역폭 규제를 위해 온칩 네트워크를 중재하는 방법 및 멀티 모드 아비터

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141125

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141229

R150 Certificate of patent or registration of utility model

Ref document number: 5682391

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees