[実施の形態1]
図1に、第1の実施の形態のシステム概要を示す。図1においては、Leafスイッチ1AとLeafスイッチ2Aとは直接接続され、Leafスイッチ1AとLeafスイッチ3Aとは直接接続され、Leafスイッチ2AとLeafスイッチ3Aとは直接接続される。Leafスイッチ1A乃至3Aは、ノードに接続されるネットワークスイッチ(例えばLAN(Local Area Network)スイッチ)である。丸の図形はノードを表し、ノード0乃至8は、MPI(Message Passing Interface)等の通信ライブラリを使用して通信を行う計算機である。ノード0乃至2はLeafスイッチ1Aに接続され、ノード3乃至5はLeafスイッチ2Aに接続され、ノード6乃至8はLeafスイッチ3Aに接続される。このように第1の実施の形態においては、Leafスイッチ1A乃至3Aのネットワークトポロジはフルメッシュ型のトポロジ(以下では、フルメッシュトポロジと呼ぶ)である。以下では、Leafスイッチのネットワークトポロジがフルメッシュトポロジであるシステムをフルメッシュシステムと呼ぶ。
第1の実施の形態においては、ノード0乃至8が全対全通信を行う。特に、ノード0乃至8は、シフト通信パターンと呼ばれる通信パターンで通信を行う。シフト通信パターンとは、nノードの間でのパケット交換をnフェーズで実行する通信パターンである。図2に、シフト通信パターンの一例を示す。図2においては、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。ノード番号がkであるノードのi番目のフェーズにおける宛先は、剰余を求める演算子を%とすると、ノード番号が(k+i)%nであるノードである。なお、全対全通信は、ネットワークに接続されたノードの各々が、ネットワークに接続された全ノード(そのノード自身を含む)との間でパケットの送信及び受信を行う通信である。
但し、図2に示した通信パターンで通信を行うと、通信経路の競合が発生する。例えばフェーズ3においては、ノード0からノード3へのパケットの転送と、ノード1からノード4へのパケットの転送と、ノード2からノード5へのパケットの転送とが行われる。すると、図3に示すように、Leafスイッチ1AとLeafスイッチ2Aとの間において通信経路の競合が発生する。通信経路の競合が発生すると、通信が遅延し、並列計算機システムの性能が劣化する。そこで以下では、通信経路の競合を回避することができる通信パターンについて説明する。
図4に、ノード0の機能ブロック図を示す。図4の例では、ノード0は、データ格納部101と、決定部102と、通信部103とを含む。なお、ノード1乃至8の機能ブロック図はノード0の機能ブロック図と同様であるので、説明を省略する。
決定部102は、データ格納部101に格納されたデータに基づき、パケットの宛先のノードを各フェーズについて決定する。決定部102は、決定された宛先のノードのノード番号を通信部103に出力する。通信部103は、決定部102から受け取った宛先のノードのノード番号を含むパケット送信する。
All-to-all通信のような集合通信が行われるシステムにおいては、通信経路の競合を回避するため、規則的且つ固定的なルーティングが行われるインフィニバンドのネットワークが利用される。図5を用いて、インフィニバンドのネットワークにおけるルーティングについて説明する。図5において、丸の図形はノードを表し、正方形の図形はネットワークスイッチを表す。線分はインフィニバンドのネットワークを表し、線分の傍にある数値は宛先のノードの識別情報を表す。太い実線の矢印は通信経路を表す。
図5においては、ノードN3が、宛先がノードN1であるパケットを送信する。パケットのヘッダには、宛先の識別情報(例えばLID(Local IDentifier))が含まれる。各ネットワークスイッチにおける各出力ポートには宛先のノードの識別情報が対応付けられているので、各ネットワークスイッチは、パケットに含まれる宛先の識別情報に対応する出力ポートにパケットを出力する。図5の例では、パケットはネットワークスイッチSW1、ネットワークスイッチSW2及びネットワークスイッチSW4を経由してノードN1に到達する。
すなわち、本実施の形態のネットワークは、イーサネット(登録商標)のように自動的に経路が決定されるネットワークではなく、規則的且つ固定的なルーティングが行われるネットワークである。
次に、図6乃至図8を用いて、ノード0乃至8が実行する処理について説明する。ここでは、ノード0が実行する処理を例にして説明する。
まず、ノード0における決定部102は、送信元のノード(ここでは、ノード0)のノード番号をデータ格納部101から取得する(図6:ステップS1)。
決定部102は、フェーズを表す変数であるiを0に設定する(ステップS3)。そして、決定部102は、所定の計算式を用いてノード番号を算出する。そして、決定部102は、算出されたノード番号のノードを、フェーズiにおける宛先のノードに決定する(ステップS5)。
所定の計算式は、例えば、((s%d)*d+(i+o)%d+d*(i/d))%nである。ここで、dは1つのLeafスイッチに接続されるノードの数であり、本実施の形態においては3である。oはオフセット値であり、後で図7を用いて説明する。sは送信元のノードのノード番号である。/は商を求める演算子であるので、i/dの小数部分は切り捨てられる。
図7に、((s%d)*d+(i+o)%d+d*(i/d))%nによって決定される宛先を示す。図7の左側には、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。Leafスイッチ1Aに接続されたノードは白色で表されており、Leafスイッチ2Aに接続されたノードは黒色で表されており、Leafスイッチ3Aに接続されたノードには網掛けが付されている。図7の右側には、オフセット値の割当が示されている。ノード0乃至2のオフセット値は0であり、ノード3乃至5のオフセット値は1であり、ノード6乃至8のオフセット値は2である。
また、Leafスイッチ1Aに接続されるノードのノード番号を0、3、6とし、Leafスイッチ2Aに接続されるノードのノード番号を1、4、7とし、Leafスイッチ3Aに接続されるノードのノード番号を2、5、8とする場合には、所定の計算式は(d*o+(s+(o+i/d+i)%d)%d+d*(i/d))%nであってもよい。図8に、この場合における宛先を示す。図8の左側には、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。Leafスイッチ1Aに接続されたノードは白色で表されており、Leafスイッチ2Aに接続されたノードは黒色で表されており、Leafスイッチ3Aに接続されたノードには網掛けが付されている。なお、この計算式を用いる場合のオフセット値は、図8の右側に示すようになる。すなわち、ノード0乃至2のオフセット値は0であり、ノード3乃至5のオフセット値は1であり、ノード6乃至8のオフセット値は2である。
図6の説明に戻り、決定部102は、決定された宛先のノードのノード番号を通信部103に出力する。そして、通信部103は、決定部102から受け取ったノード番号を含むパケットを生成し、ノード0に接続されたLeafスイッチ(ここでは、Leafスイッチ1A)に送信する(ステップS7)。
これに応じ、Leafスイッチ1Aはパケットを受信する。図5を用いて説明したように、Leafスイッチ1Aは宛先のノードにパケットを転送するためのリンクを知っているので、そのリンクに対してパケットを出力する。
なお、本実施の形態においてはノード0乃至8がバリア同期を行うので、ノード0乃至8が同じタイミングでステップS7を実行する。
決定部102は、i=imaxであるか判断する(ステップS9)。imaxはノード番号の最大値であり、第1の実施の形態においては8である。
i=imaxではない場合(ステップS9:Noルート)、決定部102は、iを1インクリメントし(ステップS11)、ステップS5の処理に戻る。一方、i=imaxである場合(ステップS9:Yesルート)、処理を終了する。
なお、ノード1乃至8が実行する処理はノード0が実行する処理と同様であるので、説明を省略する。
以上のような処理を実行すれば、或るLeafスイッチから送出されるパケットが特定の通信経路に集中することが無くなる。例えば図7の例において、Leafスイッチ2Aは、宛先がノード4であるパケットと、宛先がノード7であるパケットと、宛先がノード1であるパケットとをフェーズ3において送出する。ここで、ノード4はLeafスイッチ2Aに接続されており、ノード7はLeafスイッチ3Aに接続されており、ノード1はLeafスイッチ1Aに接続されている。従って、通信経路の競合が起こらない。
[実施の形態2]
第2の実施の形態においては、第1の実施の形態におけるフルメッシュトポロジを発展させた拡張型フルメッシュトポロジについて説明する。
図9に、第1の実施の形態のフルメッシュシステムに対してSpineスイッチが3つ追加されたシステムを示す。Spineスイッチは、LeafスイッチとLeafスイッチとを接続するネットワークスイッチである。図9においては、Spineスイッチ1SはLeafスイッチ1AとLeafスイッチ2Aとを接続し、Spineスイッチ2SはLeafスイッチ1AとLeafスイッチ3Aとを接続し、Spineスイッチ3SはLeafスイッチ2AとLeafスイッチ3Aとを接続する。
図9のシステムは、第1の実施の形態のフルメッシュシステムにおけるLeafスイッチ間のリンク上にSpineスイッチが設けられたシステムである。従って、第1の実施の形態のシステムと同じようにAll-to-all通信を行えば、通信経路の競合を回避することができる。
図10のシステムの接続の形態は、図9のシステムの接続の形態と全く同じである。図10において、網掛けが付されていない正方形の図形はLeafスイッチを表し、網掛けが付された正方形の図形はSpineスイッチを表し、丸の図形はノードを表す。各Leafスイッチに接続されたノードの数をd(ここでは、d=3)とすると、Leafスイッチの数はdであり、Spineスイッチの数はd(d−1)/2であり、ノードの数はd*d=d2である。
ここで、各Leafスイッチ及び各Spineスイッチのポートの数が6であるとすると、各Leafスイッチの空きポートは1つであり、各Spineスイッチの空きポートは4つである。そこで、これらの空きポートを有効に使うことを考える。
図11に、3つのフルメッシュシステムを連結したシステムを示す。図11においては、各Spineスイッチに追加で4つのLeafスイッチが接続されており、各Spineスイッチにはトータルで6つのLeafスイッチが接続されている。各Leafスイッチには3つのノードが接続されている。図11のシステムにおいては、各Spineスイッチに空きポートは無く、空きポートがLeafスイッチとの接続に使用されている。従って、図10のシステムと比較すると、システム全体としてより多くのノードを接続することができる。
但し、図11のシステムにおいて、各Leafスイッチには空きポートが1つ有る。また、各Leafスイッチには、Spineスイッチに接続されたリンクが2つしかない。従って、或るLeafスイッチが或るフェーズにおいて送出する3つのパケットの宛先の全てが、他のLeafスイッチの配下にあるノードである場合、3つのパケットを2つのリンクで送出することになるので、通信経路の競合が発生する。
そこで、図11のシステムに対してSpineスイッチを2つ追加し、図12に示すシステムを構築する。図12においては、Leafスイッチ1A乃至1Cに接続されるSpineスイッチ4Sと、Leafスイッチ2A乃至2C及びLeafスイッチ3A乃至3Cに接続されるSpineスイッチ5Sとが設けられている。各Leafスイッチに接続されたノードの数をd(ここでは、d=3)とすると、Leafスイッチの数はd2であり、Spineスイッチの数はd(d−1)/2+[d/2]≒3d2/2であり、ノードの数はd2*d=d3である。また、スイッチあたりのノード数はd3/(3d2/2)=2d/3である。なお、[d/2]はd/2小数点以下を切り上げた整数であり、例えばd/2=1.5である場合、[d/2]=2である。
図13のシステムの接続の形態は、図12のシステムの接続の形態と全く同じである。なお、図13においてSpineスイッチ1S乃至5Sを一列に並べると図14のようになる。
図13及び図14においては、Spineスイッチ1SにLeafスイッチ1A、Leafスイッチ1B、Leafスイッチ1C、Leafスイッチ2A、Leafスイッチ2B及びLeafスイッチ2Cが接続される。Spineスイッチ2SにLeafスイッチ1A、Leafスイッチ1B、Leafスイッチ1C、Leafスイッチ3A、Leafスイッチ3B及びLeafスイッチ3Cが接続される。Spineスイッチ3SにLeafスイッチ2A、Leafスイッチ2B、Leafスイッチ2C、Leafスイッチ3A、Leafスイッチ3B及びLeafスイッチ3Cが接続される。Spineスイッチ4SにLeafスイッチ1A、Leafスイッチ1B及びLeafスイッチ1Cが接続される。Spineスイッチ5SにLeafスイッチ2A、Leafスイッチ2B、Leafスイッチ2C、Leafスイッチ3A、Leafスイッチ3B及びLeafスイッチ3Cが接続される。Leafスイッチ1Aにはノード0乃至2が接続される。Leafスイッチ2Aにはノード3乃至5が接続される。Leafスイッチ3Aにはノード6乃至8が接続される。Leafスイッチ1Bにはノード9乃至11が接続される。Leafスイッチ2Bにはノード12乃至14が接続される。Leafスイッチ3Bにはノード15乃至17が接続される。Leafスイッチ1Cにはノード18乃至20が接続される。Leafスイッチ2Cにはノード21乃至23が接続される。Leafスイッチ3Cにはノード24乃至26が接続される。
図13のシステムにおけるLeafスイッチ及びノードをグループ化すると、図15のようになる。図15においては、グループAに、Leafスイッチ1Aと、ノード0乃至2と、Leafスイッチ2Aと、ノード3乃至5と、Leafスイッチ3Aと、ノード6乃至8とが含まれる。グループBに、Leafスイッチ1Bと、ノード9乃至11と、Leafスイッチ2Bと、ノード12乃至14と、Leafスイッチ3Bと、ノード15乃至17とが含まれる。グループCに、Leafスイッチ1Cと、ノード18乃至20と、Leafスイッチ2Cと、ノード21乃至23と、Leafスイッチ3Cと、ノード24乃至26とが含まれる。
第2の実施の形態においては、図15に示したシステムを取り扱う。そして、第2の実施の形態システムのネットワークトポロジを、拡張型フルメッシュトポロジと呼ぶ。
第2の実施の形態におけるノード0乃至26の機能ブロック図は、図4に示した機能ブロック図と同じであるので、説明を省略する。
図16に、データ格納部101に格納される送信元グループテーブルの一例を示す。図16の例では、送信元グループテーブルには、送信元のノードのノード番号と、送信元のノードが属するグループの識別情報とが格納される。
図17に、データ格納部101に格納される宛先グループテーブルの一例を示す。図17の例では、宛先グループテーブルには、送信元のノードが属するグループの識別情報とフェーズとの組合せに対応付けて、宛先のノードが属するグループの識別情報が格納される。括弧内の数字はグループオフセット値である。
次に、図18乃至図20を用いて、ノード0乃至26が実行する処理について説明する。ここでは、ノード0が実行する処理を例にして説明する。
まず、ノード0における決定部102は、送信元のノード(ここでは、ノード0)のノード番号をデータ格納部101から取得する(図18:ステップS21)。
決定部102は、送信元グループテーブルから、ステップS21において取得されたノード番号に対応するグループの識別情報を特定する(ステップS23)。
決定部102は、フェーズを表す変数であるiを0に設定する(ステップS25)。そして、決定部102は、所定の計算式を用いてノード番号を算出する。そして、決定部102は、算出されたノード番号のノードを、フェーズiにおける宛先のノードに決定する(ステップS27)。
所定の計算式は、例えば、((s%d)*d+(i+o)%d+d*(i/d))%n+gである。ここで、dは1つのLeafスイッチに接続されるノードの数であり、本実施の形態においては3である。sは送信元のノードのノード番号である。nはグループあたりのノード数であり、本実施の形態においては9である。oはオフセット値であり、ノード0乃至2、ノード9乃至11及びノード18乃至20のオフセット値は0であり、ノード3乃至5、ノード12乃至14及びノード21乃至23のオフセット値は1であり、ノード6乃至8、ノード15乃至17及びノード24乃至26のオフセット値は2である。gはグループオフセット値であり、宛先グループテーブルから特定される。
決定部102は、決定された宛先のノードのノード番号を通信部103に出力する。そして、通信部103は、決定部102から受け取ったノード番号を含むパケットを生成し、ノード0に接続されたLeafスイッチ(ここでは、Leafスイッチ1A)に送信する(ステップS29)。
これに応じ、Leafスイッチ1Aはパケットを受信する。図5を用いて説明したように、Leafスイッチ1Aは宛先のノードにパケットを転送するためのリンクを知っているので、そのリンクに対してパケットを出力する。
なお、本実施の形態においてはノード0乃至26がバリア同期を行うので、ノード0乃至26は同じタイミングでステップS29を実行する。
決定部102は、i=imaxであるか判断する(ステップS31)。imaxはフェーズを表す番号の最大値であり、第1の実施の形態においては26である。
i=imaxではない場合(ステップS31:Noルート)、決定部102は、iを1インクリメントし(ステップS33)、ステップS27の処理に戻る。一方、i=imaxである場合(ステップS31:Yesルート)、処理を終了する。
なお、ノード1乃至26が実行する処理はノード0が実行する処理と同様であるので、説明を省略する。
図19に、上記の処理によって決定される宛先を示す。図19においては、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。
これには図20に示すような特徴がある。まず、同じグループに属するノードは、同じフェーズにおいて同じグループ宛にパケットを送信する。例えば、グループAに属するノード0乃至8は、フェーズ0乃至8のいずれにおいても、グループBのノードにパケットを送信する。また、異なるグループに属するノードは、同じフェーズにおいて異なるグループ宛にパケットを送信する。例えば、グループAに属するノード0乃至8はフェーズ9においてグループCのノードにパケットを送信するのに対し、グループBに属するノード9乃至17はフェーズ9においてグループBのノードにパケットを送信する。
また、或るフェーズにおいて1台のLeafスイッチから送出される3つのパケットは、それぞれ異なるLeafスイッチに向かう。例えばフェーズ17においては、Leafスイッチ2Aから、Leaf1Cに向かうパケットと、Leaf2Cに向かうパケットと、Leaf3Cに向かうパケットとが送出される。
次に、図21乃至図25を用いて、パケットが宛先のノードに到達するまでに経由するSpineスイッチを決定する処理について説明する。ここではノード0が処理を実行する例を示すが、他のノードが実行してもよい。また、ノード0乃至26とは別に設けられた経路データ生成装置(図示せず)が処理を実行してもよい。
まず、ノード0の決定部102は、グループ内通信について、制約条件1及び2を満たすように、Spineスイッチ1S乃至3Sの中からSpineスイッチを決定する(図21:ステップS41)。そして、決定部102は、データ格納部101に格納されているSpineスイッチテーブルに、決定されたSpineスイッチの識別情報を書き込む。グループ内通信とは、送信元のノードが属するグループと宛先のノードが属するグループとが同じである通信である。制約条件1は、Spineスイッチテーブル内の或る一行の中に同じSpineスイッチの識別情報が無く且つ或る1列の中に同じSpineスイッチの識別情報が無いという条件である。制約条件2は、行方向におけるLeafスイッチの識別情報と列方向におけるLeafスイッチの識別情報とが同じである要素を対象軸とした場合に線対称の位置にある2つの要素が同じであるという条件である。図22に、ステップS41の処理が実行された時点におけるSpineスイッチテーブルの一例を示す。ステップS41の処理によって書き込まれた箇所は網掛けが付された箇所である。
決定部102は、グループ間通信のうち、送信元のノードが接続されたLeafスイッチの識別情報の数字部分と、宛先のノードが接続されたLeafスイッチの識別情報の数字部分とが異なる通信を特定する(ステップS43)。ステップS43においては、例えば、Leafスイッチ1AとLeafスイッチ2Bとの間の通信が特定される。
決定部102は、ステップS43において特定された通信について、制約条件3を満たすように、Spineスイッチ1S乃至3Sの中からSpineスイッチを決定する(ステップS45)。そして、決定部102は、データ格納部101に格納されているSpineスイッチテーブルに、決定されたSpineスイッチの識別情報を書き込む。制約条件3とは、同じ行において、宛先のノードが接続されたLeafスイッチの識別情報における数字部分が同じである場合には同じSpineスイッチを割り当てるという条件である。図23に、ステップS45の処理が実行された時点におけるSpineスイッチテーブルの一例を示す。ステップS45の処理によって書き込まれた箇所は網掛けが付された箇所である。
決定部102は、グループ間通信のうち、送信元のノードが接続されたLeafスイッチの識別情報の数字部分と、宛先のノードが接続されたLeafスイッチの識別情報の数字部分とが同じである通信を特定する(ステップS47)。ステップS47においては、例えば、Leafスイッチ1AとLeafスイッチ1Bとの間の通信が特定される。
決定部102は、ステップS47において特定された通信について、制約条件4を満たすように、Spineスイッチ4S及び5Sの中からSpineスイッチを決定する(ステップS49)。そして、決定部102は、データ格納部101に格納されているSpineスイッチテーブルに、決定されたSpineスイッチの識別情報を書き込む。制約条件4とは、送信元のノードが接続されたLeafスイッチの識別情報における数字部分と宛先のノードが接続されたLeafスイッチの識別情報における数字部分とが同じである場合、両Leafスイッチを接続するSpineスイッチを割り当てるという条件である。図24に、ステップS49の処理が実行された時点におけるSpineスイッチテーブルの一例を示す。ステップS49の処理によって書き込まれた箇所は網掛けが付された箇所である。
以上のような処理を実行すれば、図25に示すようなSpineスイッチテーブルが完成する。ノード0は、システムにおける各Spineスイッチ及び各Leafスイッチに、Spineスイッチテーブルの情報を送信する。そして、各Spineスイッチ及び各Leafスイッチが、受信した情報に従いルーティングを行えば、通信経路が競合することが無くなる。
図26乃至図28に、通信経路の一例を示す。図26に、ノード0乃至2がフェーズ18において送信するパケットの通信経路を示す。図26に示された通信はグループ内通信である。ノード0が送信したパケットは、Leafスイッチ1Aによってノード0に送り返される。ノード1が送信したパケットは、Leafスイッチ1AによってSpineスイッチ1Sに転送される。Spineスイッチ1Sは、受信したパケットをLeafスイッチ2Aに転送する。Leafスイッチ2Aは、受信したパケットをノード3に転送する。ノード2が送信したパケットは、Leafスイッチ1AによってSpineスイッチ2Sに転送される。Spineスイッチ2Sは、受信したパケットをLeafスイッチ3Aに転送する。Leafスイッチ3Aは、受信したパケットをノード6に転送する。
このように、グループ内通信においては、Leafスイッチから送出された3つのパケットのうち1つのパケットはそのLeafスイッチの配下のノードに転送され、2つのパケットはそれぞれ異なるLeafスイッチに転送される。従って通信経路の競合が無い。
図27に、ノード0乃至2がフェーズ0において送信するパケットの通信経路を示す。図27に示された通信はグループ間通信である。ノード0が送信したパケットは、Leafスイッチ1AによってSpineスイッチ4Sに転送される。Spineスイッチ4Sは、受信したパケットをLeafスイッチ1Bに転送する。Leafスイッチ1Bは、受信したパケットをノード9に転送する。ノード1が送信したパケットは、Leafスイッチ1AによってSpineスイッチ1Sに転送される。Spineスイッチ1Sは、受信したパケットをLeafスイッチ2Bに転送する。Leafスイッチ2Bは、受信したパケットをノード12に転送する。ノード2が送信したパケットは、Leafスイッチ1AによってSpineスイッチ2Sに転送される。Spineスイッチ2Sは、受信したパケットをLeafスイッチ3Bに転送する。Leafスイッチ3Bは、受信したパケットをノード15に転送する。
このように、グループ間通信においては、Leafスイッチから送出された3つのパケットは、それぞれ異なるLeafスイッチに転送される。従って通信経路の競合が無い。
図28に、ノード0乃至2がフェーズ12において送信するパケットの通信経路を示す。図28に示された通信はグループ間通信である。ノード0が送信したパケットは、Leafスイッチ1AによってSpineスイッチ1Sに転送される。Spineスイッチ1Sは、受信したパケットをLeafスイッチ2Cに転送する。Leafスイッチ2Cは、受信したパケットをノード21に転送する。ノード1が送信したパケットは、Leafスイッチ1AによってSpineスイッチ2Sに転送される。Spineスイッチ2Sは、受信したパケットをLeafスイッチ3Cに転送する。Leafスイッチ3Cは、受信したパケットをノード24に転送する。ノード2が送信したパケットは、Leafスイッチ1AによってSpineスイッチ4Sに転送される。Spineスイッチ4Sは、受信したパケットをLeafスイッチ1Cに転送する。Leafスイッチ1Cは、受信したパケットをノード18に転送する。
このように、グループ間通信においては、Leafスイッチから送出された3つのパケットは、それぞれ異なるLeafスイッチに転送される。従って通信経路の競合が無い。
また、本実施の形態によれば、順方向のパケットが経由するSpineスイッチと、逆方向のパケットが経由するSpineスイッチとが同じになる。例えば図29に示すように、Leafスイッチ1Aの配下にあるノードとLeafスイッチ2Aの配下にあるノードの間で通信を行う場合Spineスイッチ1Sを使用するようになっており、その他のSpineスイッチを使用することは無い。
例えば順方向と逆方向とで異なるSpineスイッチを使用する場合、どちらのSpineスイッチが故障しても通信を行えなくなる。しかし、本実施の形態においては使用されるSpineスイッチが1台なので、通信の信頼性を向上させることができるようになる。
図30乃至32を用いて、拡張型フルメッシュトポロジと他のネットワークトポロジとの違いについて説明する。
図30に、2段のファットツリー型ネットワークトポロジを示す。図30においては、網掛けが付された正方形の図形はSpineスイッチを表し、網掛けが付されていない正方形の図形はLeafスイッチを表し、丸の図形はノードを表す。1台のLeafスイッチに接続されるノードの数はd(ここでは、d=3)である。システムにおけるノードの数は2d2である。Leafスイッチの数は2dである。Spineスイッチの数はdである。従ってスイッチは合計で2d+d=3d台である。スイッチあたりのノード数は2d2/3d=2d/3である。
図31に、3段のファットツリー型ネットワークトポロジを示す。図31においては、網掛けが付された正方形の図形はSpineスイッチを表し、網掛けが付されていない正方形の図形はLeafスイッチを表し、丸の図形はノードを表す。1台のLeafスイッチに接続されるノードの数はd(ここでは、d=2)である。システムにおけるノードの数は2d3である。Leafスイッチの数は2d2である。Leafスイッチより1層上に配置されたSpineスイッチの数は2d2である。最上層のSpineスイッチの数はd2である。従ってスイッチは合計で2d2+2d2+d2=5d2台である。スイッチあたりのノード数は2d3/5d2=2d/5である。
図32に、拡張型フルメッシュトポロジに関する値と他のネットワークトポロジに関する値とを比較するための表を示す。図32に示すように、拡張型フルメッシュトポロジにおけるスイッチの数は、3段のファットツリー型ネットワークトポロジにおけるスイッチの数と同じオーダである。スイッチあたりのノード数については、拡張型フルメッシュトポロジと2段のファットツリー型ネットワークトポロジとで同じである。ワーストケースでのホップ数については、拡張型フルメッシュトポロジと2段のファットツリー型ネットワークトポロジとで同じであり、拡張型フルメッシュトポロジは3段のファットツリー型ネットワークトポロジより優れている。
[実施の形態3]
第3の実施の形態においては、第1の実施の形態におけるフルメッシュトポロジを発展させた多層フルメッシュトポロジについて説明する。
まず、図33のようなフルメッシュシステムを考える。図33において、四角の図形はLeafスイッチを表し、丸の図形はノードを表す。各Leafスイッチは、他のLeafスイッチのいずれとも接続される。各Leafスイッチには2台のノードが接続される。図33の例では各Leafスイッチのポートの数は4であるため、各Leafスイッチには空きポートが無い。
図34に、2つのフルメッシュシステムが連結されたシステムを示す。図34においては、網掛けが付された四角の図形はSpineスイッチを表し、網掛けが付されていない四角の図形はLeafスイッチを表し、丸の図形はノードを表す。2つのフルメッシュシステムがSpineスイッチを用いて接続されるため、1つのフルメッシュシステム内だけでなくフルメッシュシステム間においても通信を行うことができる。以下では、複数のフルメッシュシステムが連結されたシステムを多層フルメッシュシステムと呼ぶ。また、多層フルメッシュシステムのネットワークトポロジを、多層フルメッシュトポロジと呼ぶ。
図35に、多層フルメッシュシステムの他の例を示す。図35においては、Leafスイッチが4台であるフルメッシュシステム3つが、SpineスイッチA乃至Fを用いて連結されている。網掛けが付された四角の図形はSpineスイッチを表し、網掛けが付されていない四角の図形はLeafスイッチを表し、丸の図形はノードを表す。各Spineスイッチのポート数及び各Leafスイッチのポート数は6である。各Leafスイッチには3台のノードが接続される。Leafスイッチ間のリンク上には1台のSpineスイッチが設けられる。各Spineスイッチは各フルメッシュシステムに2本のリンクを有し、各フルメッシュシステムにおいて2台のLeafスイッチに接続される。図35のシステムを別の方法で描くと、図36のようになる。図36のシステムの接続の形態は、図35のシステムの接続の形態と全く同じである。丸の図形の中にある数字はノード番号である。
以下では、図36のノード0乃至35が実行するAll-to-all通信について説明する。
まず、図37を用いて、フェーズ0乃至11における通信について説明する。図37には、ノード0乃至11の各々について、フェーズ0乃至11における宛先のノードの番号が示されている。
フェーズ0乃至8(より一般的には、フェーズ0乃至(d*d−1))における宛先Dは、例えば、D=((sg+(o+pb)%d+1)%(d+1))*d+(o+i)%dにより決定される。宛先のノードが属するグループの番号dgは、例えばdg=(sg+(o+pb)%d+1)%(d+1)により決定される。ここで、同じグループに属する複数のノードは同じLeafスイッチに接続される。dは次数であり、1台のLeafスイッチに接続されるノードの数を表す。gはグループ数であり、g=d+1である。sは、送信元のノードの番号である。sgは、送信元のノードが属するグループの番号であり、sg=s/dである。oは送信元ノードのグループ内でのオフセットであり、o=s%dである。iはフェーズの番号である。pbはフェーズブロックであり、pb=i/dである。これにより、フェーズ0乃至8においては、1台のLeafスイッチから送出される3つのパケットが、それぞれ異なるLeafスイッチに転送される。従って通信経路の競合が無い。
フェーズ9乃至11(より一般的には、フェーズ(d*d−1)乃至(d*(d+1)−1))における宛先は、例えば、dest=(sg*d)+(o+i)%dにより決定される。フェーズ9乃至11においては、ノードからパケットを受信したLeafスイッチは配下のノードにパケットを転送するので、通信経路の競合が無い。
以上のように、フェーズ0乃至11においては、Leafスイッチa1の配下のノード、Leafスイッチb1の配下のノード、Leafスイッチc1の配下のノード及びLeafスイッチd1の配下のノードがLeafスイッチa1の配下のノード、Leafスイッチb1の配下のノード、Leafスイッチc1の配下のノード及びLeafスイッチd1の配下のノードに対してパケットを送信する層内通信が行われる。層内通信においては、図37に示したように宛先を設定すれば、通信経路の競合を回避することができる。
同様に、フェーズ0乃至11においては、Leafスイッチa2の配下のノード、Leafスイッチb2の配下のノード、Leafスイッチc2の配下のノード及びLeafスイッチd2の配下のノードがLeafスイッチa2の配下のノード、Leafスイッチb2の配下のノード、Leafスイッチc2の配下のノード及びLeafスイッチd2の配下のノードに対してパケットを送信する層内通信と、Leafスイッチa3の配下のノード、Leafスイッチb3の配下のノード、Leafスイッチc3の配下のノード及びLeafスイッチd3の配下のノードがLeafスイッチa3の配下のノード、Leafスイッチb3の配下のノード、Leafスイッチc3の配下のノード及びLeafスイッチd3の配下のノードに対してパケットを送信する層内通信が行われる。これらの層内通信においては、ノード0乃至11についての層内通信と同様に宛先を設定すれば、通信経路の競合を回避することができる。
図38を用いて、フェーズ12乃至23における通信について説明する。図38には、ノード0乃至11の各々について、フェーズ12乃至23における宛先のノードの番号が示されている。
フェーズ12乃至23においては、Leafスイッチa1の配下のノード、Leafスイッチb1の配下のノード、Leafスイッチc1の配下のノード及びLeafスイッチd1の配下のノードがLeafスイッチa2の配下のノード、Leafスイッチb2の配下のノード、Leafスイッチc2の配下のノード及びLeafスイッチd2の配下のノードに対してパケットを送信する層間通信が行われる。フェーズ12乃至23における宛先のノードの番号は、フェーズ0乃至11における宛先のノードの番号に12を加えた番号である。これにより、フェーズ12乃至20においては、1台のLeafスイッチから送出される3つのパケットが、それぞれ異なるLeafスイッチに転送される。フェーズ21乃至23においては、1台のLeafスイッチから送出される3つのパケットは、同じLeafスイッチに向かう。しかし、そのLeafスイッチまでの通信経路が異なる(すなわち、経由するSpineスイッチが異なる)ようにすることができるので、通信経路は競合しない。従って、通信経路の競合を回避することができる。
同様に、フェーズ12乃至23においては、Leafスイッチa2の配下のノード、Leafスイッチb2の配下のノード、Leafスイッチc2の配下のノード及びLeafスイッチd2の配下のノードがLeafスイッチa3の配下のノード、Leafスイッチb3の配下のノード、Leafスイッチc3の配下のノード及びLeafスイッチd3の配下のノードに対してパケットを送信する層間通信と、Leafスイッチa3の配下のノード、Leafスイッチb3の配下のノード、Leafスイッチc3の配下のノード及びLeafスイッチd3の配下のノードがLeafスイッチa1の配下のノード、Leafスイッチb1の配下のノード、Leafスイッチc1の配下のノード及びLeafスイッチd1の配下のノードに対してパケットを送信する層間通信とが行われる。これらの層間通信においては、ノード0乃至11についての層間通信と同様に宛先を設定すれば、通信経路の競合を回避することができる。
図39を用いて、フェーズ24乃至35における通信について説明する。図39には、ノード0乃至11の各々について、フェーズ24乃至35における宛先のノードの番号が示されている。
フェーズ24乃至35においては、Leafスイッチa1の配下のノード、Leafスイッチb1の配下のノード、Leafスイッチc1の配下のノード及びLeafスイッチd1の配下のノードがLeafスイッチa3の配下のノード、Leafスイッチb3の配下のノード、Leafスイッチc3の配下のノード及びLeafスイッチd3の配下のノードに対してパケットを送信する層間通信が行われる。フェーズ24乃至35における宛先のノードの番号は、フェーズ0乃至11における宛先のノードの番号に24を加えた番号である。これにより、フェーズ24乃至32においては、1台のLeafスイッチから送出される3つのパケットが、それぞれ異なるLeafスイッチに転送される。フェーズ32乃至35においては、1台のLeafスイッチから送出される3つのパケットは、同じLeafスイッチに向かう。しかし、そのLeafスイッチまでの通信経路が異なる(すなわち、経由するSpineスイッチが異なる)ようにすることができるので、通信経路は競合しない。従って、通信経路の競合を回避することができる。
同様に、フェーズ24乃至35においては、Leafスイッチa2の配下のノード、Leafスイッチb2の配下のノード、Leafスイッチc2の配下のノード及びLeafスイッチd2の配下のノードがLeafスイッチa1の配下のノード、Leafスイッチb1の配下のノード、Leafスイッチc1の配下のノード及びLeafスイッチd1の配下のノードに対してパケットを送信する層間通信と、Leafスイッチa3の配下のノード、Leafスイッチb3の配下のノード、Leafスイッチc3の配下のノード及びLeafスイッチd3の配下のノードがLeafスイッチa2の配下のノード、Leafスイッチb2の配下のノード、Leafスイッチc2の配下のノード及びLeafスイッチd2の配下のノードに対してパケットを送信する層間通信とが行われる。これらの層間通信においては、ノード0乃至11についての層間通信と同様に宛先を設定すれば、通信経路の競合を回避することができる。
以上のように、多層フルメッシュトポロジのシステムにおいてAll-to-all通信を行っても通信経路の競合が発生しないようにすることができる。
なお、宛先を決定する処理は、各ノードにおいて行われる。処理フローは基本的には他の実施の形態の処理フローと同様なので、説明を省略する。
[実施の形態4]
第2の実施の形態及び第3の実施の形態においては、連結できるフルメッシュシステムの数の上限がSpineスイッチのポートの数の1/2であるため、システムの大規模化に限りがある。そこで第4の実施の形態においては、より多くのフルメッシュシステムを連結する方法について説明する。
図40に、6つのフルメッシュシステムが連結された多層フルメッシュシステムを示す。図40のシステムにおいては、1つのフルメッシュシステムは4台のLeafスイッチと12台のノードとを含む。フルメッシュシステム間の連結には、2階層のファットツリーシステム400が使用される。すなわち、図40におけるA乃至Fは2階層のファットツリーシステムである。このファットツリーシステムには9台のネットワークスイッチが含まれ、下層に6台のネットワークスイッチが配置され、上層に3台のネットワークスイッチが配置される。空きポートの数は12であるため、6(=12/2)つのフルメッシュシステムを連結することができる。
図41に、5つのフルメッシュシステムが連結された多層フルメッシュシステムを示す。図41のシステムにおいては、1つのフルメッシュシステムは4台のLeafスイッチと12台のノードとを含む。フルメッシュシステム間の連結には、5台のネットワークスイッチを含むフルメッシュシステム410が使用される。すなわち、図41におけるA乃至Fはフルメッシュシステムである。このフルメッシュシステムにおける各ネットワークスイッチの空きポートの数は2であるため、空きポートの数の合計は10である。従って、5(=10/2)つのフルメッシュシステムを連結することができる。
但し、例えば、Leafスイッチa1がLeafスイッチa2にパケットを転送する層間通信とLeafスイッチb1がLeafスイッチb2にパケットを転送する層間通信とが同じフェーズで行われるような場合には、リンク411においては競合が発生する。よって、通信の帯域は競合が発生しない場合と比較して1/2になる。
以上のように、Spineスイッチのポート数が十分ではない場合には、Spineスイッチをファットツリーシステム或いはフルメッシュシステムに置き換えることで、より多くのフルメッシュシステムを連結することができるようになる。
図42に、より大規模な多層フルメッシュシステムの一例として、27のフルメッシュシステムが連結された多層フルメッシュシステムを示す。図42のシステムは、9つのフルメッシュシステムが連結された多層フルメッシュシステム(以下では、9層フルメッシュシステムと呼ぶ)を3つ連結したシステムである。9つのフルメッシュシステムの連結には、36のポートを有するSpineスイッチが利用される。各Spineスイッチの36のポートのうち18(=2*9)のポートはLeafスイッチとの接続に使用され、残りの18のポートは他の9層フルメッシュシステムにおけるSpineスイッチとの接続に使用される。例えば図42においては、SpineスイッチAのポートのうち9のポートがSpineスイッチBとの接続に使用され、SpineスイッチAのポートのうち9のポートがSpineスイッチCとの接続に使用される。
各Leafスイッチのポートの数は36である。36のポートのうち18のポートはノードとの接続に使用され、残りの18のポートは他のLeafスイッチ又はSpineスイッチとの接続に使用される。従って1つのフルメッシュシステムは、19台のLeafスイッチと342(=18*19)台のノードとを含む。よって、ノード数は合計で9234(=342*27)台である。
なお、単純にSpineスイッチを使用すると、18(=36/2)のフルメッシュシステムしか連結することができないので、ノード数は合計で6156(=342*18)台である。従って、図42の構成によれば、より多くのノードを接続することができる。ネットワークスイッチの台数は合計で972台であり、同規模の3段ファットツリーシステムにおけるネットワークスイッチの台数1283台と比べると少ない。
次に、図42のシステムにおけるAll-to-all通信について検討する。まず、各9層フルメッシュシステム内で通信が行われる場合、第3の実施の形態に示した考え方で宛先を設定することで、通信経路の競合を回避することができる。
一方、9層フルメッシュシステム間で通信が行われる場合、通信経路の競合が発生することがある。例えば或るフェーズにおいて、Leafスイッチa1の配下の各ノードがLeafスイッチa10の配下のノードのいずれかにパケットを送信し、Leafスイッチs1の配下の各ノードがLeafスイッチs10の配下のノードのいずれかにパケットを送信するとする。同様に、Leafスイッチa2の配下の各ノードがLeafスイッチa11の配下のノードのいずれかに送信し、Leafスイッチs2の配下の各ノードがLeafスイッチs11の配下のノードのいずれかにパケットを送信し、・・・、Leafスイッチa9の配下の各ノードがLeafスイッチa18の配下のノードのいずれかに送信し、Leafスイッチs9の配下の各ノードがLeafスイッチs18の配下のノードのいずれかにパケットを送信するとする。この場合、9層フルメッシュ間の162(=9*18)本のリンクを324(=18*2*9)のパケットが通ることになる。よって、通信の帯域は競合が発生しない場合と比較して1/2(=162/324)になる。なお、All-to-all通信の際に通信経路の競合が発生しないノードは3078台である。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したノード0乃至35の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、第1及び第2の実施の形態においてはd=3の例を示したが、d=3に限られるわけではない。例えば、dが4以上であってもよい。
なお、上で述べたノード0乃至35は、コンピュータ装置であって、図43に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る並列計算機システムは、(A)各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、(B)各々複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。そして、(a1)複数のネットワークスイッチの各々には2以上のノードが接続される。そして、複数のノードの各々は、(b1)当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された2以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、(b2)決定部により決定された宛先のノードにデータを送信する送信部とを有する。
このようにすれば、1つのネットワークスイッチから送出されるデータが特定の通信経路に集まるのを抑制できるので、集合通信において通信経路の競合を回避できるようになる。
また、(b3)複数のノードは全対全通信を実行してもよい。全対全通信において通信経路の競合を回避できるようになる。
また、(a2)複数のネットワークスイッチの各々に接続されるノードの数は所定数dであり、(a3)複数のネットワークスイッチの数は所定数dであり、(b4)複数のノードの数はd2であってもよい。このようにすれば、ネットワークスイッチを有効に利用しつつ通信経路の競合を回避できるようになる。
また、ノードのノード番号をsとし、時点を表す数字をiとし、所定のオフセット値をoとし、剰余を求める演算子を%とすると、決定部は、(b11)((d*o+(s+(o+i/d+i)%d)%d)+d*(i/d))%d2を算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定してもよい。
また、ノードのノード番号をsとし、時点を表す数字をiとし、所定のオフセット値をoとし、剰余を求める演算子を%とすると、決定部は、(b12)((s%d)*d+(i+o)%d+(i/d)*d)%d2を算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定してもよい。
また、複数のネットワークスイッチの各々に接続されるノードの数をdとし、ノードのノード番号をsとし、時点を表す数字をiとし、剰余を求める演算子を%とすると、決定部は、iが0≦i≦d*d−1を満たす場合、((s/d+(s%d+i/d)%d+1)%(d+1))*d+(s%d+i)%dを算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定し、iがd*d≦i≦d*(d+1)−1を満たす場合、(s/d*d)+(s%d+i)%dを算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定してもよい。
本実施の形態の第2の態様に係る並列計算機システムは、(C)第1の複数のネットワークスイッチと、(D)各々第1の複数のネットワークスイッチのうち少なくとも2以上のネットワークスイッチに接続された第2の複数のネットワークスイッチと、(E)各々第1の複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。そして、(c1)第1の複数のネットワークスイッチの各々には2以上のノードが接続され、(c2)第1の複数のネットワークスイッチのうち任意の2つのネットワークスイッチは、第2の複数のネットワークスイッチのいずれかを介して接続される。そして、上で述べた第1の複数のノードの各々は、(e1)当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された2以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、(e2)決定部により決定された宛先のノードにデータを送信する送信部とを有する。
このようにすれば、1つのネットワークスイッチから送出されるデータが特定の通信経路に集まるのを抑制できるので、集合通信において通信経路の競合を回避できるようになる。
また、上で述べた第1の複数のネットワークスイッチの各々は、(c3)当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されている場合、受信したデータの宛先のノードに、受信したデータを送信し、(c4)当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されていない場合、第2の複数のネットワークスイッチのうち、当該ネットワークスイッチと受信したデータの宛先のノードに接続されたネットワークスイッチとを接続するネットワークスイッチに、受信したデータを送信してもよい。このようにすれば、ノードが送信したデータが適切に転送されるようになる。
また、(e3)複数のノードは全対全通信を実行してもよい。全対全通信において通信経路の競合を回避できるようになる。
また、(c5)第1の複数のネットワークスイッチの各々に接続されるノードの数は所定数dであり、(e4)複数のノードの数がd3であり、(c6)第1の複数のネットワークスイッチの数はd2であり、(d1)第2の複数のネットワークスイッチの数は、d/2(d−1)とd/2の少数点以下を切り上げた値との和であってもよい。このようにすれば、ネットワークスイッチを有効に利用しつつ通信経路の競合を回避できるようになる。
また、(e5)複数のノードは複数のグループのいずれかに属し、ノードが属するグループの番号をgとし、ノードのノード番号をsとし、時点を表す数字をiとし、所定のオフセット値をoとし、剰余を求める演算子を%とすると、決定部は、(e12)((s%d)*d+(i+o)%d+(i/d)*d)%d2+gを算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定してもよい。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、
各々前記複数のネットワークスイッチのいずれかに接続された複数のノードと、
を有し、
前記複数のネットワークスイッチの各々には2以上のノードが接続され、
前記複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された2以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、
前記決定部により決定された宛先のノードにデータを送信する送信部と、
を有する並列計算機システム。
(付記2)
前記複数のノードは全対全通信を実行する
付記1記載の並列計算機システム。
(付記3)
前記複数のネットワークスイッチの各々に接続されるノードの数は所定数dであり、
前記複数のネットワークスイッチの数は前記所定数dであり、
前記複数のノードの数はd2である
付記1又は2記載の並列計算機システム。
(付記4)
前記ノードのノード番号をsとし、
時点を表す数字をiとし、
所定のオフセット値をoとし、
剰余を求める演算子を%とすると、
前記決定部は、
((d*o+(s+(o+i/d+i)%d)%d)+d*(i/d))%d2を算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定する
付記3記載の並列計算機システム。
(付記5)
前記ノードのノード番号をsとし、
時点を表す数字をiとし、
所定のオフセット値をoとし、
剰余を求める演算子を%とすると、
前記決定部は、
((s%d)*d+(i+o)%d+(i/d)*d)%d2を算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定する
付記3記載の並列計算機システム。
(付記6)
前記複数のネットワークスイッチの各々に接続されるノードの数をdとし、
前記ノードのノード番号をsとし、
時点を表す数字をiとし、
剰余を求める演算子を%とすると、
前記決定部は、
iが0≦i≦d*d−1を満たす場合、
((s/d+(s%d+i/d)%d+1)%(d+1))*d+(s%d+i)%dを算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定し、
iがd*d≦i≦d*(d+1)−1を満たす場合、
(s/d*d)+(s%d+i)%dを算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定する
付記1又は2記載の並列計算機システム。
(付記7)
第1の複数のネットワークスイッチと、
各々前記第1の複数のネットワークスイッチのうち少なくとも2以上のネットワークスイッチに接続された第2の複数のネットワークスイッチと、
各々前記第1の複数のネットワークスイッチのいずれかに接続された複数のノードと、
を有し、
前記第1の複数のネットワークスイッチの各々には2以上のノードが接続され、
前記第1の複数のネットワークスイッチのうち任意の2つのネットワークスイッチは、前記第2の複数のネットワークスイッチのいずれかを介して接続され、
前記第1の複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された2以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、
前記決定部により決定された宛先のノードにデータを送信する送信部と、
を有する並列計算機システム。
(付記8)
前記第1の複数のネットワークスイッチの各々は、
当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されている場合、前記受信したデータの宛先のノードに、前記受信したデータを送信し、
当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されていない場合、前記第2の複数のネットワークスイッチのうち、当該ネットワークスイッチと前記受信したデータの宛先のノードに接続されたネットワークスイッチとを接続するネットワークスイッチに、前記受信したデータを送信する、
付記7記載の並列計算機システム。
(付記9)
前記複数のノードは全対全通信を実行する
付記7又は8記載の並列計算機システム。
(付記10)
前記第1の複数のネットワークスイッチの各々に接続されるノードの数は所定数dであり、
前記複数のノードの数がd3であり、
前記第1の複数のネットワークスイッチの数はd2であり、
前記第2の複数のネットワークスイッチの数は、d(d−1)/2とd/2の少数点以下を切り上げた値との和である
付記7乃至9のいずれか1つ記載の並列計算機システム。
(付記11)
前記複数のノードは複数のグループのいずれかに属し、
前記ノードが属するグループの番号をgとし、
前記ノードのノード番号をsとし、
時点を表す数字をiとし、
所定のオフセット値をoとし、
剰余を求める演算子を%とすると、
前記決定部は、
((s%d)*d+(i+o)%d+(i/d)*d)%d2+gを算出し、算出された値がノード番号であるノードを時点iにおける宛先に決定する
付記10記載の並列計算機システム。
(付記12)
複数のネットワークスイッチと複数のノードとを含む並列計算機システムの制御方法において、
前記複数のノードの各々は、前記複数のネットワークスイッチのいずれかに接続され、
前記複数のネットワークスイッチの各々には2以上のノードが接続され、
前記複数のネットワークスイッチの各々は、他のネットワークスイッチのいずれとも直接接続され、
前記複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された2以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定し、
決定された前記宛先のノードにデータを送信する
並列計算機システムの制御方法。
(付記13)
情報処理装置であって、
前記情報処理装置が送信するデータの宛先の情報処理装置に接続されたネットワークスイッチと、前記情報処理装置が接続されたネットワークスイッチに接続された2以上の情報処理装置のうち、当該情報処理装置以外の情報処理装置が送信するデータの宛先の情報処理装置に接続されたネットワークスイッチとが異なるように、前記情報処理装置が各時点において送信するデータの宛先の情報処理装置を決定する決定部と、
前記決定部により決定された宛先の情報処理装置にデータを送信する送信部と、
を有する情報処理装置。
(付記14)
第1の複数のネットワークスイッチと、第2の複数のネットワークスイッチと、複数のノードとを含む並列計算機システムの制御方法において、
前記複数のノードの各々は、前記第1の複数のネットワークスイッチのいずれかに接続され、
前記第2の複数のネットワークスイッチの各々は、前記第1の複数のネットワークスイッチのうち少なくとも2以上のネットワークスイッチに接続され、
前記第1の複数のネットワークスイッチの各々には2以上のノードが接続され、
前記第1の複数のネットワークスイッチのうち任意の2つのネットワークスイッチは、前記第2の複数のネットワークスイッチのいずれかを介して接続され、
前記第1の複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された2以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定し、
決定された前記宛先のノードにデータを送信する、
並列計算機システムの制御方法。