(57)【要約】【課題】通信効率を最適化することが可能な情報処理システム及び情報処理システムの制御方法を提供する。【解決手段】情報処理システムを、複数の情報処理装置が接続された情報処理システムとして構成し、さらに、各情報処理装置は、データの送信先の情報処理装置ごとにデータを格納する格納部と、格納部に格納されたデータのうち、送信方向が同じでありかつホップ数が同じであるデータを一括して送信する送信制御部を有する構成とする。【選択図】図１４
2014137732.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置が接続された情報処理システムにおいて、
各情報処理装置は、
データの送信先の情報処理装置ごとにデータを格納する格納部と、
前記格納部に格納されたデータのうち、送信方向が同じでありかつホップ数が同じであるデータを一括して送信する送信制御部を有する
ことを特徴とする情報処理システム。
【請求項２】
前記格納部には、送信先が同じデータが複数に分割されて格納され、
前記送信制御部は、前記分割されたデータをそれぞれ異なる送信方向に送信する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記各情報処理装置は、前記一方向ごとのデータ送信が完了するごとにバリア同期を実行するバリア同期部を有することを特徴とする請求項１又は請求項２に記載の情報処理システム。
【請求項４】
前記各情報処理装置同士は、メッシュ構造もしくはトーラス構造にて接続されていることを特徴とする請求項１から請求項３のいずれか１項に記載の情報処理システム。
【請求項５】
データの送信先ごとにデータを格納する格納部をそれぞれ有する、複数の情報処理装置が接続された情報処理システムの制御方法において、
前記複数の情報処理装置のうち、送信元の各情報処理装置が、各送信元の情報処理装置が有する格納部に格納されたデータのうち、送信方向が同じでありかつホップ数が同じである各データを一括に送信し、
前記複数の情報処理装置のうち、送信先の各情報処理装置が、一括に送信された前記各データをそれぞれ受信する
ことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
科学技術における大規模数値解析には、膨大な計算処理が伴う。このような演算をコンピュータで行わせる場合、複数のコンピュータによって並列で演算処理を行うことで演算の所要時間の短縮を図っている。複数のコンピュータに並列処理を実行させる場合、コンピュータ間の相互のデータ通信効率が、処理全体の効率に大きな影響を及ぼす。
【０００３】
高度科学技術計算（ＨＰＣ：High Performance Computing）等に用いられる並列計算システムにおいて、システムを構成する各コンピュータをノードと呼ぶ。並列計算システムでは、並列計算のアプリケーションによっては、全ノードが、各ノードに格納された自ノード番号に対応するデータを他のノードから取得する全対全通信処理を行う場合がある。並列計算システムでのノード間のコンピュータネットワークは、インターコネクト（相互結合網）と呼ばれる。インターコネクトのトポロジには、例えば、メッシュ型やトーラス型のトポロジがある。メッシュ型のネットワークは、格子状に組まれた通信経路の格子点上にノードが配置されたものである。また、トーラス型のネットワークは、メッシュ型の横方向及び縦方向に並べられたノード配列の両端同士を伝送路で接続したものである。
【０００４】
メッシュ型およびトーラス型のネットワークでは１対１通信の通信経路が複数存在するため、いろいろな経路を取ることができる。しかし、１対１通信の重ね合わせである全対全通信では、各ノードが自分以外のノードに対して通信を行う。このため、各ノードでそれぞれ異なった経路を選択すると、通信路の利用効率の不均一が発生する場合がある。そこで、例えば特許文献１の技術を用いて、各ノードが同じ通信経路を選択することで負荷の均一化を図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−５３８７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の技術では、通信路の負荷を公平にするため、各ノードが同じ相対座標のノードに対し通信を行なっている。これはノード間のリンクが通信経路を共有した場合に、公平に帯域を分け合うことが前提となる。帯域の公平な分割のため、パケットペーシングが用いられるが、実際のハードウェアで生ずる外乱により、ホップ数の異なるパケットが同時に入り乱れながら流れる状態となる。このため、パケットペーシングが機能しなくなることがあり、実際には、理論上最適な通信が最適な通信時間で完了しない場合がある。
【０００７】
本件開示の技術は、上記の事情に鑑みてなされたものであり、その目的とするところは、通信効率を最適化することが可能な情報処理システム及び情報処理システムの制御方法を提供することである。
【課題を解決するための手段】
【０００８】
一実施形態による情報処理システムは、複数の情報処理装置が接続され、各情報処理装置は、データの送信先の情報処理装置ごとにデータを格納する格納部と、格納部に格納されたデータのうち、送信方向が同じでありかつホップ数が同じであるデータを一括して送
信する送信制御部を有する。
【発明の効果】
【０００９】
一実施形態によれば、通信効率を最適化することが可能な情報処理システム及び情報処理システムの制御方法を実現できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、全対全通信の概念図である。
【図２】図２は、２次元メッシュ型のインターコネクトの模式図である。
【図３】図３は、１次元トーラス型のインターコネクトの模式図である。
【図４】図４は、２次元トーラス型のインターコネクトの模式図である。
【図５】図５は、インターコネクトのノード間のデータ通信の重ね合わせを示す模式図である。
【図６】図６は、インターコネクトのノード間のデータ通信を示す模式図である。
【図７】図７は、インターコネクトのノード間のデータ通信を示す模式図である。
【図８】図８は、１次元トーラス型のインターコネクトのノード間のデータ通信を示す模式図である。
【図９】図９は、３次元のインターコネクトにおける、バリア同期のタイミングの一例を示す表である。
【図１０】図１０は、一実施形態におけるインターコネクトのノードの構成及び接続関係を示す概略構成図である。
【図１１】図１１は、一実施形態におけるインターコネクトのノードの機能の概略を示すブロック図である。
【図１２Ａ】図１２Ａは、一実施形態におけるインターコネクトのノードの処理のフローチャートである。
【図１２Ｂ】図１２Ｂは、一実施形態におけるインターコネクトのノードの処理のフローチャートである。
【図１３】図１３は、一実施形態におけるインターコネクトの全対全通信の通信パターンの模式図である。
【図１４】図１４は、一実施形態におけるインターコネクトの全対全通信の通信パターンの模式図である。
【図１５】図１５は、一実施形態における３次元トーラス型のインターコネクトの模式図である。
【図１６】図１６は、一実施形態におけるインターコネクトのノードの機能の概略を示すブロック図である。
【図１７Ａ】図１７Ａは、一実施形態におけるインターコネクトのノードの処理のフローチャートである。
【図１７Ｂ】図１７Ｂは、一実施形態におけるインターコネクトのノードの処理のフローチャートである。
【図１７Ｃ】図１７Ｃは、一実施形態におけるインターコネクトのノードの処理のフローチャートである。
【発明を実施するための形態】
【００１１】
最初に、一実施形態に係る通信制御方法の比較例について、図面を参照しながら説明する。
【００１２】
（比較例）
図１は、全対全通信の概念図である。図１では、一例として４つのノード（ノード１〜ノード４）がメッシュ型のインターコネクトを形成している。ノードとは、全対全通信のデータの送信を行うデバイスである。インターコネクトとは、複数のノードを相互に結合
し、ノード間での通信を実現するためのネットワークである。インターコネクトを構成するノードとしては、コンピュータや電話機の他、種々の機器が含まれる。また、高性能な並列計算機の通信サブシステムをインターコネクトと呼ぶこともある。
【００１３】
インターコネクトは種々の形状を有する。それぞれの形状をネットワークトポロジと呼ぶ。ネットワークトポロジは、概ね４つの形状、すなわち、いわゆる直接網、間接網、共有媒体網、ハイブリッド網に分類できる。ここでは、直接網を取り上げて説明するが、以下の実施形態は直接網に限られるものではない。直接網は、個々のノード同士を直接リンクで結合するネットワークのことである。通常、ノードはルータを内蔵することで複数のリンクを結合することができるため、直接網では、種々のトポロジやルーティングを採用することができる。
【００１４】
全対全通信では、各ノードから送信されるデータは、パケットに分割されて送信される。またデータは多数のノードを経由して宛先のノードに到達する。ルーティングは、送信されるデータを中継するノード群を決定する。個々のパケットは宛先ノードのアドレス情報を有し、通信経路上のノードが有するルータにより中継処理が行われる。１つの通信経路は、複数のパケットが利用することができる。
【００１５】
各ノードには、各ノードを識別可能な番号が割り当てられている。また、各ノードはデータ領域を有する。データ領域は、インターコネクト内のノード数分だけ分割されている。分割された各領域は、各ノード番号と対応付けられている。
【００１６】
図１に示すように、全対全通信を行う前は、ノード１は、４つのデータ領域に、データ１１、１２、１３、１４を有する。データ１１は、ノード１からノード１、すなわち自ノード宛てのデータである。データ１２は、ノード１からノード２宛てのデータである。なお、データ１３、１４、２１以下、同様の対応関係を意味する。各データは、それぞれ対応付けられたノードに対して転送される。したがって、図１に示すように、全対全通信を行った後、転送後の各ノードのデータ領域におけるデータ格納位置は、転送元のノード番号と対応付けられている。当該全対全通信は、複数ノードを含む並列計算機上で、行列の転置や高速フーリエ変換等を行う際に利用することができる。
【００１７】
図２〜図４には、２次元メッシュ型、１次元トーラス型、２次元トーラス型のインターコネクトにおけるノードの構成と接続の例をそれぞれ模式的に示す。図２に示す２次元メッシュ型のインターコネクトでは、平面上の格子の格子点にノードが配置され、隣接するノードが相互に接続されている。図３に示す１次元トーラス型のインターコネクトでは、ノードが直列に配置され、隣接するノードが相互に接続されている。さらに、両端のノードも相互に接続されている。図４に示す２次元トーラス型のインターコネクトは、２次元メッシュ型と１次元トーラス型を融合したものといえる。すなわち、各ノードは、２次元メッシュ型と同様に平面上の格子の格子点に配置され、隣接するノードが相互に接続されている。さらに、上下左右方向において、１次元トーラス型と同様に、直列に配置されたノードのうち、両端のノードも相互に接続されている。
【００１８】
次に、通信経路において通信の重ね合わせが発生する場合について、図を参照しながら説明する。一例として、図５に全対全通信におけるノード間のデータ転送を模式的に示す。図５では、ノード１〜ノード６が直列に配置されており、隣接するノードが相互に接続されている。ここでは、ノード１〜ノード３に注目し、各ノードから３ホップ先のノードにデータが転送される。ここでホップ数とは、転送先のノードに到達するまでに経由するノードの数を意味する。また、１ホップ分のノード間の接続をリンクとも呼ぶ。例えば、各ノードから隣接するノードにデータが転送されるときのホップ数は１であり、リンク数は１である。図５には、３ホップのデータ転送を行う場合を示す。
【００１９】
図５において、全対全通信により、ノード１〜ノード３がそれぞれデータ転送を行う。すると、ノード１からノード４に至る通信経路、ノード２からノード５に至る通信経路、ノード３からノード６に至る通信経路が、ノード２とノード５の間において重なる。このような通信の重なりを、通信の重ね合わせ又はリンクの重ね合わせと呼ぶ。図５に示す場合、通信又はリンクの重ね合わせの度合いは、ノード３とノード４との間の経路が他の経路に比べて高い。通信経路において通信の重ね合わせが発生した場合、重なり合う通信経路の間でネットワーク帯域を分け合う。そこで、ＨＰＣにおけるインターコネクトでは、ネットワーク上で情報をパケットに分割して送信する通信方式が採用されている。
【００２０】
しかし、通信経路に対する外乱やインターコネクトのノード等を構成するネットワーク機器の帯域分割方式の特性等により、通信経路上でパケットの待機が発生する。このとき、通信の重ね合わせが発生している部分において、リンク間での帯域分割の公平性が失われることがある。一例として、図６に３つのノード（ノード１〜ノード３）が直列に配置されている場合を示す。ノード１から送信されるパケットは、ノード２、３を経由してノード３の後段へ転送される。ノード２から送信されるパケットは、ノード３を経由してノード３の後段へ転送される。ノード３から送信されるパケットは、ノード３の後段へ転送される。図６には、各ノードを構成するネットワーク機器としてＣＰＵとルータを示す。
【００２１】
各ノードは、ノード内部のＣＰＵから送信されるパケットとノード外部から転送されてくるパケットとを均等に調停するように帯域を分割する。このため、ノード３に着目すると、ノード３から送信されるパケットは、５０％がノード３のＣＰＵから送信されたパケットで構成される。そして、残りの５０％が、ノード３の外部から転送されるパケット、すなわちノード１のＣＰＵから送信されるパケットとノード２のＣＰＵから送信されるパケットが混合されたパケットで構成される。したがって、図６にも示すように、ノード３のＣＰＵから送信されるパケットが、ノード３の後段の通信経路を占める比率が高くなる。このため、ノード１〜ノード３から送信するパケット間で、通信経路の帯域を均等に使用することができない。
【００２２】
また、図６に示すノード１〜ノード３を図３に示す１次元トーラス型として構成した場合を考える。そして、各ノードが、上記のように自ノードのＣＰＵから送信されるパケットと自ノード外から転送されるパケットとを均等に調停すると、通信経路上でデッドロックが発生する。デッドロックとは、相互にデータ送信を行う複数のノード間で、各ノードのデータ送信プロセスが互いに占有している資源にアクセスを試みてしまい、それぞれ相手側の要求が完了しないために資源の解放もできず待ち状態が続くことをいう。そこで、デッドロックを回避するため、一例として意図的にパケットに転送の優先順位を設けることが行われる。しかし、パケットに優先順位を設けると、通信経路においてパケット間の公平な帯域分割を行うことができない。
【００２３】
このような状況を避けるため、パケットの送出ごとに意図的に待ち時間を設け、トラフィックを平滑化して帯域分割の公平性を確保するパケットペーシング技術が知られている。全対全通信では、自ノードからのパケット送出時に「（ホップ数−１）×パケット長」のリンク転送に要する時間以上の非送出期間を設ける（ペーシングする）ことで、他のパケットと干渉することなく交互にリンクを利用することが可能である。ここで、パケット送出時にｎパケットのリンク転送に要する時間だけ待たせる場合を、パケット間ギャップ（＝ｎ；ｎ≧０）と定義する。なお、パケット間ギャップが０の場合は、パケットは連続して送出される。インターコネクト内のノード数の増加によってホップ数が増えると、通信が混雑する度合いも増加すると考えられる。
【００２４】
図７を参照しながらパケットペーシングの一例を示す。図７には、図６と同様、ノード
１〜ノード６が直列に配列された状態が示されている。図７に示すインターコネクトでは、各ノードでパケット送信間隔を通信のノード間の「ホップ数−１」だけ離されている。したがって、通信の重ね合わせが起きている通信経路においてパケットの待機が発生しないようにしている。これにより、全対全通信が完了するまでの時間を短縮することができる。
【００２５】
ところで、メッシュ型及びトーラス型のインターコネクトでは、１対１通信の通信経路は複数存在するため、いろいろな経路を取ることができる。しかし、１対１通信の重ね合わせである全対全通信では、各ノードが自分以外のノードに対して通信を行う。このため、各ノードで非相似の経路を選択すると、通信路の利用効率の不均一が発生する場合がある。そこで、各ノードが相似の通信経路を選ぶことで負荷の均一化を図ることができる。図８を参照しながら、当該負荷の均一化について説明する。
【００２６】
図８には、４ノードを有する１次元トーラス型のインターコネクトを示す。図８の右図（「均一」）では各通信経路に均等な負荷がかかっている。一方、図８の左図（「不均一」）ではノード１とノード２の間の通信経路に負荷がかかっている。これは、ノード４からノード１を経由してノード２に至る通信経路が形成されており、ノード１〜ノード４の通信経路のパターンが相対的に同じでないからである。
【００２７】
したがって、通信経路の負荷を公平にするためには、各ノードが同じ相対座標のノードに対し通信を行なう。これはパケット間で通信経路を共有した場合に、公平に帯域を分け合うことが前提となる。そこで、帯域の公平な分割のため、パケットペーシングが用いられる。
【００２８】
また、通信経路において外乱への耐性を向上させるために、バリア同期によりプロセッサの動作を揃え、常に同じホップ数のパケットがインターコネクト上に流れるようにする構成が考えられる。ここで、バリア同期とは、例えば、インターコネクト内の複数のノードが並行的に並列プログラムを実行する際に、各ノードが所定の処理を完了したことを相互に確認するために行われる同期である。このバリア同期においては、同期をとるべき全ノードは、並列プログラム上のバリアと呼ばれる一定段階に到達したことを相互に通知する。そして、バリア同期に参加する各ノードがバリア段階に到達したことを確認した後、並列プログラムの次の段階に進む。
【００２９】
図９に、３次元のインターコネクトにおける、バリア同期のタイミングの一例を示す。図９に示す例におけるインターコネクトは、Ｘ軸Ｙ軸Ｚ軸を有する座標空間内にノードが配置された、いわゆる３次元メッシュ型又は３次元トーラス型のインターコネクトである。図９に示す表の各列が、全対全通信における１回のデータ転送を意味する。すなわち、図９の表の一番上の列に示す、「Ｘ方向ホップ数」、「Ｙ方向ホップ数」、「Ｚ方向ホップ数」がそれぞれ「４」であるデータ送信では、自ノードからＸ方向に４ホップ分、Ｙ方向に４ホップ分、Ｚ方向に４ホップ分だけ先のノードに対してデータが送信される。
【００３０】
図９に示すように、比較例においては、送信ごとに「Ｚ方向ホップ数」を１ずつ減らしてデータ転送を行っている。すなわち、「Ｚ方向ホップ数」が切り替わるたびにバリア同期を行う。このため、バリア同期の回数が多すぎるために通信経路のスループットが低下する可能性がある。
【００３１】
そこで、以上の比較例に関する説明を踏まえ、一実施形態に係る並列計算システムの通信制御方法について、図面を参照しながら以下に説明する。
【００３２】
図１０は、本実施形態に係る並列計算システム１のインターコネクト内におけるノード
の構成及び接続関係を示す概略構成図である。並列計算システム１が情報処理システムの一例である。図１０には、並列計算システム１を構成する管理サーバ１００と５つのノード１０、２０、３０、４０、５０を示す。ノード１０、２０、３０、４０、５０が情報処理装置の一例である。また、図１０に示すように互いに直交するＸ軸とＹ軸を設定する。図１０に示すように、ノード１０は、記憶部１１、制御部１２、ＮＩＣ（Network Interface Card）１３、ルータ１４を有する。ノード２０、３０、４０、５０は、ノード１０と同一の構成を有するため、これらのノードの構成は図示を省略する。ここでは、ノード１０について説明する。
【００３３】
ノード１０の動作は、制御部１２によって制御されている。制御部１２は、インターコネクト内で転送されるデータを決定したり、当該データを転送するタイミング等を決定したり、インターコネクト内の各ノードとバリア同期を実行したりする。制御部１２は、記憶部１１とＮＩＣ１３と接続されている。
【００３４】
記憶部１１には、制御部１２に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラム等が格納されている。また、記憶部１１には、制御部１２による処理に用いる各種データも格納されている。
【００３５】
ＮＩＣ１３は、ルータ１４を介してインターコネクト内の隣接するノードとの間でデータの送受信を行う。ルータ１４は、高速の伝送路を介してノード１０に隣接するノード２０、３０、４０、５０のルータと接続されている。ＮＩＣ１３は、管理サーバ１００とも伝送路（図示せず）を介して接続されており、管理サーバ１００との間でデータ通信を行う。管理サーバ１００は、インターコネクト内の各ノードに対して全対全通信に係るジョブの実行指示を与える。また、管理サーバ１００は、各ノードに対して、各ノードの相対位置を示すアドレス等を含むインターコネクトの構成情報等を通知する。
【００３６】
図１１は、ノード１０の機能の概略を示すブロック図である。ノード１０の記憶部１１には、ユーザープログラム１１ａが格納されている。ユーザープログラム１１ａは、管理サーバから受信したジョブの実行指示に基づいて全対全通信におけるデータの転送処理を行うためのプログラムである。また、記憶部１１は、データ格納領域１１ｂを有する。データ格納領域１１ｂは格納部の一例である。データ格納領域１１ｂには、ノード１０自身が有するデータや他のノードから転送されたデータが格納される。データ格納領域１１ｂは、インターコネクト内のノード別に領域が分割されている。そして、各データは、データの転送先となる宛先ノードのアドレスを有する。そこで、各データは、データ格納領域１１ｂ内の当該アドレスに対応するノード用の領域に格納される。すなわち、データは、インターコネクトを構成するノード別にデータ格納領域１１ｂに格納される。
【００３７】
ノード１０の制御部１２は、送信制御部１２ａとバリア同期部１２ｅを有する。さらに、送信制御部１２ａは、送信先及び送信データ決定部１２ｂ、送出タイミング決定部１２ｃ、送信部１２ｄを有する。送信先及び送信データ決定部１２ｂは、記憶部１１に格納されているユーザープログラム１１ａを読み出す。そして、送信先及び送信データ決定部１２ｂは、ユーザープログラム１１ａを実行し、プログラムの処理内容に基づいてノード１０から送信するデータやデータの送信先等を決定する。送信先及び送信データ決定部１２ｂは、送出タイミング決定部１２ｃによって決定されるデータの送出タイミングに基づいて、送信対象のデータを送信部１２ｄに送る。なお、送信先及び送信データ決定部１２ｂは、送信先決定部と送信データ決定部とを別個の処理部として構成してもよい。送信部１２ｄに送られたデータは、ＮＩＣ１３に送られる。ＮＩＣ１３は、ルータ１４を経由して、ルータ１４と接続されている隣接のノードのルータにデータを送信する。各部の処理の詳細については後述する。
【００３８】
以下に本実施形態に係る実施例を２例説明する。
【００３９】
（実施例１）
本実施例では、図４に示す２次元トーラスによりインターコネクトが構成される場合の全対全通信について説明する。各ノードの構成内容は、図１０及び図１１に示す構成と同じである。そこで、本実施例でも図１０及び図１１を参照しながら各ノードを説明する。図１２Ａ及び図１２Ｂに、本実施例における各ノードの処理のフローチャートを示す。本実施例では、図４に示すインターコネクトの各ノードには、インターコネクト内における自ノードの座標が割り当てられている。以下の説明において、Ｘ軸方向の位置（Ｘ座標）をｘ、Ｙ軸方向の位置（Ｙ座標）をｙとして、座標（ｘ，ｙ）にあるノードを「ノード（ｘ，ｙ）」と表記する。各ノードは、管理サーバ１００から全対全通信の開始指示を受けると、図１２Ａ及び図１２Ｂのフローチャートに示す処理を実行する。
【００４０】
まず、ノード（ｘ，ｙ）の送信先及び送信データ決定部１２ｂは、Ｓ１０１において、データ送信におけるＸ軸方向のホップ数ｄｘを１に設定する。次いで処理は、Ｓ１０２に進む。Ｓ１０２では、送信先及び送信データ決定部１２ｂは、Ｙ軸方向のデータ送信におけるホップ数ｄｙのうち、まだデータ送信処理を行っていないホップ数をｄｙに指定する。そして、送信先及び送信データ決定部１２ｂは、自ノードのデータ格納領域１１ｂに格納されているデータのうち、宛先がノード（ｘ＋ｄｘ，ｙ＋ｄｙ）であるデータに対して、ノード（ｘ＋ｄｘ，ｙ）を経由ノードとして選択する。
【００４１】
次に、Ｓ１０３において、送出タイミング決定部１２ｃは、Ｘ軸方向のデータ送信におけるホップ数ｄｘに対応して、データ送信のパケット間ギャップをｄｘ−１に設定する（ｇａｐ＝ｄｘ−１）。パケット間ギャップとは段落００２３に記載した通りであるため、ここでは説明を省略する。次いで、処理はＳ１０４に進む。
【００４２】
Ｓ１０４では、送信先及び送信データ決定部１２ｂは、Ｓ１０３において送出タイミング決定部１２ｃが設定したパケット間ギャップに基づいてデータ送信を行う。具体的には、送信先及び送信データ決定部１２ｂは、データ格納領域１１ｂに格納されているデータのうち宛先がノード（ｘ＋ｄｘ，ｙ＋ｄｙ）であるデータを、経由ノードであるノード（ｘ＋ｄｘ，ｙ）に送信する。ノード（ｘ＋ｄｘ，ｙ）は、ルータ１４及びＮＩＣ１３を経由してノード（ｘ，ｙ）から送信された当該データを受信する。そして、ノード（ｘ＋ｄｘ，ｙ）は、受信した当該データを、ノード（ｘ＋ｄｘ，ｙ）のデータ格納領域１１ｂ内の宛先がノード（ｘ，ｙ＋ｄｙ）に対応する領域に格納する。
【００４３】
Ｓ１０５では、送信先及び送信データ決定部１２ｂは、インターコネクト内の全対全通信において取り得るｄｘについて上記の経由ノードへのデータ送信が完了したか否かを判定する。自ノードのデータ格納領域１１ｂ内に経由ノード（ｘ＋ｄｘ，ｙ）に送信されていないデータが存在する場合は（Ｓ１０５：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ１０６に進める。
【００４４】
Ｓ１０６では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のホップ数ｄｘについて同ホップ数の転送が完了したか否かを判定する。本実施例のインターコネクトにおいて、Ｘ軸方向のホップ数ｄｘを共有するデータ送信は、Ｙ軸方向のホップ数ｄｙ分だけ存在する。そこで、Ｘ軸方向のホップ数ｄｘを固定し、Ｙ軸方向のホップ数ｄｙを変化させることで、上述のＳ１０２〜Ｓ１０４を繰り返し行う。こうすることで、Ｘ軸方向のホップ数ｄｘが同じであるデータ送信を一括して実行することができる。
【００４５】
したがって、Ｘ軸方向のホップ数がｄｘであるデータ送信対象のデータのうち、Ｓ１０２〜Ｓ１０４においてまだデータ送信処理を行っていないＹ軸方向のホップ数ｄｙが存在
する場合は（Ｓ１０６：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ１０６からＳ１０２に戻す。
【００４６】
また、Ｓ１０２〜Ｓ１０４を繰り返し、Ｘ軸方向のホップ数がｄｘであるデータ送信のうち、取り得るＹ軸方向のホップ数ｄｙを指定してデータ送信が完了したら（Ｓ１０６：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ１０８に進める。
【００４７】
Ｓ１０８では、送信制御部１２ａが、バリア同期部１２ｅにバリア同期の実行を指示する。各ノードのバリア同期部１２ｅがバリア同期を実行することにより、インターコネクト内の全ノードにおいて一斉にＳ１０８のバリア同期とＳ１０９のＸ軸方向のホップ数ｄｘの更新を実行する。Ｓ１０９では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のホップ数ｄｘを、Ｓ１０２〜Ｓ１０４においてまだデータ送信処理を行っていないＸ軸方向のホップ数に更新する。インターコネクト内の全対全通信において取り得るｄｘについて経由ノードへのデータ送信を完了させることができれば、ホップ数の更新方法を任意に取り決めてＳ１０９の処理を実行することができる。Ｓ１０９においてＸ軸方向のホップ数ｄｘを更新したら、送信先及び送信データ決定部１２ｂは、処理をＳ１０２に戻す。そして、送信先及び送信データ決定部１２ｂは、更新されたＸ軸方向のホップ数ｄｘを用いて、上記の通り、取り得るＹ軸方向のホップ数ｄｙを対象にＳ１０２〜Ｓ１０６の処理を行う。
【００４８】
以上のＳ１０２〜Ｓ１０６、Ｓ１０８、Ｓ１０９の処理を繰り返し実行することにより、各ホップ数ｄｘ、ｄｙについて、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ）に送信されるべきデータが、ノード（ｘ＋ｄｘ，ｙ）のデータ格納領域１１ｂ内のノード（ｘ，ｙ＋ｄｙ）に対応するデータ領域に格納される。このように、各ノードからＸ軸方向へのデータ送信が完了した場合（Ｓ１０５：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ１０７に進めてバリア同期を行う。さらに、送信先及び送信データ決定部１２ｂは、処理を図１２Ｂに示すＳ１１０に進める。
【００４９】
Ｓ１１０では、各ノードの送信先及び送信データ決定部１２ｂは、最初にＹ軸方向のホップ数ｄｙを１に設定する。次いで、送信先及び送信データ決定部１２ｂは、処理をＳ１１１に進める。Ｓ１１１では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のホップ数ｄｘのうち、Ｓ１１０の処理以降まだデータ送信処理を行っていないホップ数をｄｘに指定する。そして、送信先及び送信データ決定部１２ｂは、自ノードのデータ格納領域１１ｂに格納されているデータのうち、宛先がノード（ｘ，ｙ＋ｄｙ）であるデータに対して、ノード（ｘ，ｙ＋ｄｙ）を経由ノードとして選択する。すなわち、目標ノードと経由ノードは同一のノード（ｘ，ｙ＋ｄｙ）となる。
【００５０】
次に、Ｓ１１２において、送出タイミング決定部１２ｃは、Ｙ軸方向のデータ送信におけるホップ数ｄｙに対応して、データ送信のパケット間ギャップをｄｙ−１に設定する（ｇａｐ＝ｄｙ−１）。次いで、処理はＳ１１３に進む。
【００５１】
Ｓ１１３では、送信先及び送信データ決定部１２ｂは、Ｓ１１２において送出タイミング決定部１２ｃが設定したパケット間ギャップに基づいてデータ送信を行う。具体的には、送信先及び送信データ決定部１２ｂは、データ格納領域１１ｂに格納されているデータのうちノード（ｘ−ｄｘ，ｙ＋ｄｙ）用の領域にあるデータを、目標ノードであるノード（ｘ，ｙ＋ｄｙ）に送信する。ノード（ｘ，ｙ＋ｄｙ）は、ルータ１４及びＮＩＣ１３を経由してノード（ｘ，ｙ）から送信された当該データを受信する。そして、ノード（ｘ，ｙ＋ｄｙ）は、受信した当該データを、ノード（ｘ，ｙ＋ｄｙ）のデータ格納領域１１ｂ内の、ノード（ｘ−ｄｘ，ｙ）に対応する領域に格納する。
【００５２】
Ｓ１１４では、送信先及び送信データ決定部１２ｂは、インターコネクト内の全対全通信において取り得るｄｙについて上記の経由ノードへのデータ送信が完了したか否かを判定する。自ノードのデータ格納領域１１ｂ内に目標ノード（ｘ，ｙ＋ｄｙ）に送信されていないデータが存在する場合は（Ｓ１１４：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ１１５に進める。
【００５３】
Ｓ１１５では、送信先及び送信データ決定部１２ｂは、Ｙ軸方向のホップ数ｄｙについて同ホップ数の転送が完了したか否かを判定する。ここでは、Ｙ軸方向のホップ数ｄｙを固定し、Ｘ軸方向のホップ数ｄｘを変化させることで、上述のＳ１１１〜Ｓ１１３を繰り返し行う。こうすることで、Ｙ軸方向のホップ数ｄｙが同じであるデータ送信をまとめて実行することができる。
【００５４】
したがって、Ｙ軸方向のホップ数がｄｙであるデータ送信対象のデータのうち、Ｓ１１１〜Ｓ１１３においてまだデータ送信処理を行っていないＸ軸方向のホップ数ｄｘが存在する場合は（Ｓ１１５：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ１１５からＳ１１１に戻す。
【００５５】
また、Ｓ１１１〜Ｓ１１３を繰り返し実行して、Ｙ軸方向のホップ数がｄｙであるデータ送信対象のデータのうち、取り得るＸ軸方向のホップ数ｄｘを指定してデータ送信処理が完了した場合は（Ｓ１１５：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ１１６に進める。
【００５６】
Ｓ１１６では、送信制御部１２ａが、バリア同期部１２ｅにバリア同期の実行を指示する。各ノードのバリア同期部１２ｅがバリア同期を実行することにより、インターコネクト内の全ノードにおいて一斉にＳ１１６のバリア同期とＳ１１７のＹ軸方向のホップ数ｄｙの更新を実行する。Ｓ１１７では、送信先及び送信データ決定部１２ｂは、Ｙ軸方向のホップ数ｄｙを、Ｓ１１１〜Ｓ１１３においてまだデータ送信処理を行っていないＹ軸方向のホップ数に更新する。インターコネクト内の全対全通信において取り得るｄｙについて経由ノードへのデータ送信を完了させることができれば、ホップ数の更新方法を任意に取り決めてＳ１１７の処理を実行することができる。Ｓ１１７においてＹ軸方向のホップ数ｄｙを更新したら、送信先及び送信データ決定部１２ｂは、処理をＳ１１１に戻す。そして、送信先及び送信データ決定部１２ｂは、更新されたＹ軸方向のホップ数ｄｙを用いて、上記の通り、取り得るＸ軸方向のホップ数ｄｘを対象にＳ１１１〜Ｓ１１３の処理を行う。
【００５７】
各ノードがＳ１１１〜Ｓ１１７の処理を繰り返し実行することにより、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ）に送信されるべきデータが、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ）のデータ格納領域１１ｂ内におけるノード（ｘ，ｙ）に対応するデータ領域に格納される。このように、各ノードからＹ軸方向へのデータ送信が完了すると（Ｓ１１４：Ｙｅｓ）、本実施例における全対全通信が完了する。
【００５８】
図１３及び図１４に、本実施例における全対全通信の通信パターンの模式図を示す。図１３及び図１４では、インターコネクト内において一番左下のノードに着目し、当該ノードから送信される全データの通信パターンを示す。図１３に示すように、本実施例においては、データ送信対象の全データについて最初にＸ軸方向へのデータ送信を行い、次いでＹ軸方向へのデータ送信を行っている。そして、図１４に示すように、上述のフローチャートに従って処理を行うと、図１２Ａに示す各ステップの処理を実行することで、ステップＡ及びステップＢで示されるＸ軸方向へのデータ送信が行われる。すなわち、ステップＡ、ステップＢに示すように、ホップ数（ｄｘ）が同じ転送はまとめて行われる。そして、図１２Ａに示す各ステップの処理が完了し、Ｓ１０７からＳ１１０に移動して、図１２
Ｂに示す各ステップの処理を実行することで、ステップＣ及びステップＤで示されるＹ軸方向へのデータ送信が行われる。ステップＡ及びステップＢと同様、ステップＣ及びステップＤでも、ホップ数（ｄｙ）が同じ転送はまとめて行われる。
【００５９】
このように本実施例により、データ送信元のノードからデータ送信先のノードに至る経路が時分割される。そして、同方向かつ同ホップ数のデータ送信が一括して行われる。これにより、異なるホップ数で送信されるパケットがインターコネクト内に混在する現象を回避することができる。また、全対全通信におけるバリア同期の回数を削減することができるため、バリア同期によるデータ送信のオーバーヘッドが低減し、全対全通信のデータ送信性能が向上する。
【００６０】
（実施例２）
本実施例では、図１５に示す３次元トーラスによりインターコネクトが構成される場合の全対全通信について説明する。図１６に示すように、各ノードの構成内容は、データ格納領域１１ｃの構成が異なる点とＮＩＣ１５が３つのＮＩＣ１５ａ、ＮＩＣ１５ｂ、ＮＩＣ１５ｃを有する点を除いて図１０及び図１１と同様である。そこで、本実施例では、図１０及び図１１と同一の構成要素については同一の符号を付して説明を省略する。
【００６１】
データ格納領域１１ｃには、データ格納領域１１ｂと同様、ノード１０自身が有するデータや他のノードから転送されたデータが格納される。データ格納領域１１ｃでは、インターコネクト内のノード別に領域が分割されている。ただし、以下に説明するように、ノード別に分割された各領域が、さらに領域ａ１１ｄ、領域ｂ１１ｄ、領域ｃ１１ｅに３分割されている。なお、説明の都合上、以下の説明において、領域ａ１１ｄ、領域ｂ１１ｄ、領域ｃ１１ｅを、領域ａ、領域ｂ、領域ｃとそれぞれ略称する。なお、実施例１と同様、各データは、データの転送先となる宛先ノードのアドレスを有する。そして、各データは、データ格納領域１１ｃ内の当該アドレスに対応するノード用の領域に格納される。
【００６２】
また、ＮＩＣ１５ａ〜１５ｃは、図１１のＮＩＣ１３と同じ機能を有する。Ｘ軸方向のデータ送信はＮＩＣ１５ａに、Ｙ軸方向の転送はＮＩＣ１５ｂに、Ｚ軸方向の転送はＮＩＣ１５ｃにそれぞれ割り当てられる。
【００６３】
本実施例におけるインターコネクトのデータ送信では、各ノードが同時にＸ軸、Ｙ軸、Ｚ軸の各軸方向に対してデータを送信することができる。そこで、送信対象のデータを複数に分割し、複数経路で目標ノードに到達するようにデータ送信を実行する。
【００６４】
図１７Ａ〜図１７Ｃに、本実施例における処理のフローチャートを示す。本実施例では、図１５に示すインターコネクトの各ノードに、インターコネクト内における自ノードの座標が割り当てられている。以下の説明において、実施例１と同様に、Ｘ軸方向の位置（Ｘ座標）をｘ、Ｙ軸方向の位置（Ｙ座標）をｙ、Ｚ軸方向の位置（Ｚ座標）をｚとして、座標（ｘ，ｙ，ｚ）にあるノードを「ノード（ｘ，ｙ，ｚ）」と表記する。各ノードは、管理サーバから全対全通信の開始指示を受けると、図１７Ａ、図１７Ｂ、図１７Ｃのフローチャートに示す処理を実行する。
【００６５】
以下に説明するＳ２０１〜Ｓ２０９の処理は、ＮＩＣ１５ａが実行する。まずＳ２０１において、ノード（ｘ，ｙ，ｚ）の送信先及び送信データ決定部１２ｂは、データ送信におけるＸ軸方向のホップ数ｄｘを１に設定する。次いで処理は、Ｓ２０２に進む。Ｓ２０２では、送信先及び送信データ決定部１２ｂは、Ｙ軸方向のデータ送信におけるホップ数ｄｙとＺ軸方向のデータ送信におけるホップ数ｄｚのうち、まだデータ送信処理を行っていないホップ数をｄｙ、ｄｚにそれぞれ指定する。そして、送信先及び送信データ決定部１２ｂは、自ノードのデータ格納領域１１ｃに格納されているデータのうち、ノード（ｘ
＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）用の領域の領域ａに格納されているデータに対して、ノード（ｘ＋ｄｘ，ｙ，ｚ）を経由ノードとして選択する。
【００６６】
次に、Ｓ２０３において、送出タイミング決定部１２ｃは、Ｘ軸方向のデータ送信におけるホップ数ｄｘに対応して、データ送信のパケット間ギャップをｄｘ−１に設定する（ｇａｐ＝ｄｘ−１）。次いで、処理はＳ２０４に進む。
【００６７】
Ｓ２０４では、送信先及び送信データ決定部１２ｂは、Ｓ２０３において送出タイミング決定部１２ｃが設定したパケット間ギャップに基づいてデータ送信を行う。具体的には、送信先及び送信データ決定部１２ｂは、データ格納領域１１ｃに格納されているデータであってノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）用の領域の領域ａに格納されているデータを、ＮＩＣ１５ａからルータ１４を経由して経由ノードであるノード（ｘ＋ｄｘ，ｙ，ｚ）に送信する。ノード（ｘ＋ｄｘ，ｙ，ｚ）は、ルータ１４及びＮＩＣ１５ａを経由してノード（ｘ，ｙ，ｚ）から送信された当該データを受信する。そして、ノード（ｘ＋ｄｘ，ｙ，ｚ）は、受信した当該データを、ノード（ｘ＋ｄｘ，ｙ，ｚ）のデータ格納領域１１ｃ内の宛先がノード（ｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）に対応する領域のうち領域ａに格納する。
【００６８】
Ｓ２０５では、送信先及び送信データ決定部１２ｂは、インターコネクト内の全対全通信において取り得るｄｘについて上記の経由ノードへのデータ送信が完了したか否かを判定する。自ノードのデータ格納領域１１ｂ内に経由ノード（ｘ＋ｄｘ，ｙ，ｚ）に送信されていないデータが存在する場合は（Ｓ２０５：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ２０６に進める。
【００６９】
Ｓ２０６では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のホップ数ｄｘについて同ホップ数の転送が完了したか否かを判定する。本実施例でも、Ｘ軸方向のホップ数ｄｘを固定し、Ｙ軸方向のホップ数ｄｙとＺ軸方向のホップ数ｄｚをそれぞれ変化させることで、上述のＳ２０２〜Ｓ２０４を繰り返し行う。こうすることで、Ｘ軸方向のホップ数ｄｘが同じであるデータ送信をまとめて実行することができる。
【００７０】
したがって、Ｘ軸方向のホップ数がｄｘであるデータ送信対象のデータのうち、Ｓ２０２〜Ｓ２０４においてまだデータ送信処理を行っていないＹ軸方向のホップ数ｄｙ又はＺ軸方向のホップ数ｄｚが存在する場合は（Ｓ２０６：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ２０６からＳ２０２に戻す。
【００７１】
また、Ｓ２０２〜Ｓ２０４を繰り返し実行して、Ｘ軸方向のホップ数がｄｘであるデータ送信対象のデータのうち、取り得るＹ軸方向のホップ数ｄｙ及びＺ軸方向のホップ数ｄｚを指定してデータ送信処理が完了した場合は（Ｓ２０６：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ２０８に進める。
【００７２】
Ｓ２０８では、送信制御部１２ａが、バリア同期部１２ｅにバリア同期の実行を指示する。各ノードのバリア同期部１２ｅがバリア同期を実行することにより、インターコネクト内の全ノードにおいて一斉にＳ２０８のバリア同期とＳ２０９のＸ軸方向のホップ数ｄｘの更新を実行する。Ｓ２０９では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のホップ数ｄｘを、Ｓ２０２〜Ｓ２０４においてまだデータ送信処理を行っていないＸ軸方向のホップ数に更新する。実施例１と同様、インターコネクト内の全対全通信において取り得るｄｘについて経由ノードへのデータ送信を完了させることができれば、ホップ数の更新方法を任意に取り決めてＳ２０９の処理を実行することができる。Ｓ２０９においてＸ軸方向のホップ数ｄｘを更新したら、送信先及び送信データ決定部１２ｂは、処理をＳ２０２に戻す。そして、送信先及び送信データ決定部１２ｂは、更新されたＸ軸方向のホ
ップ数ｄｘを用いて、取り得るＹ軸方向のホップ数ｄｙ及びＺ軸方向のホップ数ｄｚを対象にＳ２０２〜Ｓ２０６の処理を行う。
【００７３】
以上のＳ２０２〜Ｓ２０６、Ｓ２０８、Ｓ２０９の処理を繰り返し実行することにより、各ホップ数ｄｘ、ｄｙ、ｄｚについて、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）に送信されるべきデータのうち領域ａに格納されているデータが、ノード（ｘ＋ｄｘ，ｙ，ｚ）のデータ格納領域１１ｃ内におけるノード（ｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）に対応するデータ領域の領域ａに格納される。このように、各ノードからＸ軸方向へのデータ送信が完了した場合（Ｓ２０５：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ２０７に進めてバリア同期を行う。さらに、送信先及び送信データ決定部１２ｂは、処理を図１７Ｂに示すＳ２１０に進める。
【００７４】
Ｓ２１０では、送信先及び送信データ決定部１２ｂは、データ送信におけるＺ軸方向のホップ数ｄｚを１に設定する。次いで処理は、Ｓ２１１に進む。Ｓ２１１では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のデータ送信におけるホップ数ｄｘとＹ軸方向のデータ送信におけるホップ数ｄｙのうち、まだデータ送信処理を行っていないホップ数をｄｘ、ｄｙにそれぞれ指定する。そして、送信先及び送信データ決定部１２ｂは、自ノードのデータ格納領域１１ｃに格納されているデータのうち、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）用の領域の領域ｃに格納されているデータに対して、ノード（ｘ，ｙ，ｚ＋ｄｚ）を経由ノードとして選択する。
【００７５】
次に、Ｓ２１２において、送出タイミング決定部１２ｃは、Ｚ軸方向のデータ送信におけるホップ数ｄｚに対応して、データ送信のパケット間ギャップをｄｚ−１に設定する（ｇａｐ＝ｄｚ−１）。次いで、処理はＳ２１３に進む。
【００７６】
Ｓ２１３では、送信先及び送信データ決定部１２ｂは、Ｓ２１２において送出タイミング決定部１２ｃが設定したパケット間ギャップに基づいてデータ送信を行う。具体的には、送信先及び送信データ決定部１２ｂは、データ格納領域１１ｃに格納されているデータであってノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）用の領域の領域ｃに格納されているデータを、ＮＩＣ１５ｃからルータ１４を経由して経由ノードであるノード（ｘ，ｙ，ｚ＋ｄｚ）に送信する。ノード（ｘ，ｙ，ｚ＋ｄｚ）は、ルータ１４及びＮＩＣ１５ｃを経由してノード（ｘ，ｙ，ｚ）から送信された当該データを受信する。そして、ノード（ｘ，ｙ，ｚ＋ｄｚ）は、受信した当該データを、ノード（ｘ，ｙ，ｚ＋ｄｚ）のデータ格納領域１１ｃ内の宛先がノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ）に対応する領域のうち領域ｃに格納する。
【００７７】
Ｓ２１４では、送信先及び送信データ決定部１２ｂは、インターコネクト内の全対全通信において取り得るｄｚについて上記の経由ノードへのデータ送信が完了したか否かを判定する。自ノードのデータ格納領域１１ｂ内に経由ノード（ｘ，ｙ，ｚ＋ｄｚ）に送信されていないデータが存在する場合は（Ｓ２１４：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ２１５に進める。
【００７８】
Ｓ２１５では、送信先及び送信データ決定部１２ｂは、Ｚ軸方向のホップ数ｄｚについて同ホップ数の転送が完了したか否かを判定する。ここでも、Ｚ軸方向のホップ数ｄｚを固定し、Ｘ軸方向のホップ数ｄｘとＹ軸方向のホップ数ｄｙをそれぞれ変化させることで、上述のＳ２１１〜Ｓ２１３を繰り返し行う。こうすることで、Ｚ軸方向のホップ数ｄｚが同じであるデータ送信をまとめて実行することができる。
【００７９】
したがって、Ｚ軸方向のホップ数がｄｚであるデータ送信対象のデータのうち、Ｓ２１１〜Ｓ２１３においてまだデータ送信処理を行っていないＸ軸方向のホップ数ｄｘ又はＹ
軸方向のホップ数ｄｙが存在する場合は（Ｓ２１５：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ２１５からＳ２１１に戻す。
【００８０】
また、Ｓ２１１〜Ｓ２１３を繰り返し実行して、Ｚ軸方向のホップ数がｄｚであるデータ送信対象のデータのうち、取り得るＸ軸方向のホップ数ｄｘ及びＹ軸方向のホップ数ｄｙを指定してデータ送信処理が完了した場合は（Ｓ２１５：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ２１７に進める。
【００８１】
Ｓ２１７では、送信制御部１２ａが、バリア同期部１２ｅにバリア同期の実行を指示する。各ノードのバリア同期部１２ｅがバリア同期を実行することにより、インターコネクト内の全ノードにおいて一斉にＳ２１７のバリア同期とＳ２１８のＺ軸方向のホップ数ｄｚの更新を実行する。Ｓ２１８では、送信先及び送信データ決定部１２ｂは、Ｚ軸方向のホップ数ｄｚを、Ｓ２１１〜Ｓ２１３においてまだデータ送信処理を行っていないＺ軸方向のホップ数に更新する。実施例１と同様、インターコネクト内の全対全通信において取り得るｄｚについて経由ノードへのデータ送信を完了させることができれば、ホップ数の更新方法を任意に取り決めてＳ２１８の処理を実行することができる。Ｓ２１８においてＺ軸方向のホップ数ｄｚを更新したら、送信先及び送信データ決定部１２ｂは、処理をＳ２１１に戻す。そして、送信先及び送信データ決定部１２ｂは、更新されたＺ軸方向のホップ数ｄｚを用いて、取り得るＸ軸方向のホップ数ｄｘ及びＹ軸方向のホップ数ｄｙを対象にＳ２１１〜Ｓ２１５の処理を行う。
【００８２】
以上のＳ２１１〜Ｓ２１５、Ｓ２１７、Ｓ２１８の処理を繰り返し実行することにより、各ホップ数ｄｘ、ｄｙ、ｄｚについて、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）に送信されるべきデータのうち領域ｃに格納されているデータが、ノード（ｘ，ｙ，ｚ＋ｄｚ）のデータ格納領域１１ｃ内におけるノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ）に対応するデータ領域の領域ｃに格納される。このように、各ノードからＺ軸方向へのデータ送信が完了した場合（Ｓ２１６：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ２１６に進めてバリア同期を行う。さらに、送信先及び送信データ決定部１２ｂは、処理を図１７Ｃに示すＳ２１９に進める。
【００８３】
Ｓ２１９では、送信先及び送信データ決定部１２ｂは、データ送信におけるＹ軸方向のホップ数ｄｙを１に設定する。次いで処理は、Ｓ２２０に進む。Ｓ２２０では、送信先及び送信データ決定部１２ｂは、Ｘ軸方向のデータ送信におけるホップ数ｄｘとＺ軸方向のデータ送信におけるホップ数ｄｚのうち、まだデータ送信処理を行っていないホップ数をｄｘ、ｄｚにそれぞれ指定する。そして、送信先及び送信データ決定部１２ｂは、自ノードのデータ格納領域１１ｃに格納されているデータのうち、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）用の領域の領域ｂに格納されているデータに対して、ノード（ｘ，ｙ＋ｄｙ，ｚ）を経由ノードとして選択する。
【００８４】
次に、Ｓ２２１において、送出タイミング決定部１２ｃは、Ｙ軸方向のデータ送信におけるホップ数ｄｙに対応して、データ送信のパケット間ギャップをｄｙ−１に設定する（ｇａｐ＝ｄｙ−１）。次いで、処理はＳ２２２に進む。
【００８５】
Ｓ２２２では、送信先及び送信データ決定部１２ｂは、Ｓ２２１において送出タイミング決定部１２ｃが設定したパケット間ギャップに基づいてデータ送信を行う。具体的には、送信先及び送信データ決定部１２ｂは、データ格納領域１１ｃに格納されているデータであってノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）用の領域の領域ｂに格納されているデータを、ＮＩＣ１５ｂからルータ１４を経由して経由ノードであるノード（ｘ，ｙ＋ｄｙ，ｚ）に送信する。ノード（ｘ，ｙ＋ｄｙ，ｚ）は、ルータ１４及びＮＩＣ１５ｂを経由してノード（ｘ，ｙ，ｚ）から送信された当該データを受信する。そして、ノード（ｘ，
ｙ＋ｄｙ，ｚ）は、受信した当該データを、ノード（ｘ，ｙ＋ｄｙ，ｚ）のデータ格納領域１１ｃ内の宛先がノード（ｘ＋ｄｘ，ｙ，ｚ＋ｄｚ）に対応する領域のうち領域ｂに格納する。
【００８６】
Ｓ２２３では、送信先及び送信データ決定部１２ｂは、インターコネクト内の全対全通信において取り得るｄｙについて上記の経由ノードへのデータ送信が完了したか否かを判定する。自ノードのデータ格納領域１１ｂ内に経由ノード（ｘ，ｙ＋ｄｙ，ｚ）に送信されていないデータが存在する場合は（Ｓ２２３：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ２２４に進める。
【００８７】
Ｓ２２４では、送信先及び送信データ決定部１２ｂは、Ｙ軸方向のホップ数ｄｙについて同ホップ数の転送が完了したか否かを判定する。ここでも、Ｙ軸方向のホップ数ｄｙを固定し、Ｘ軸方向のホップ数ｄｘとＺ軸方向のホップ数ｄｚをそれぞれ変化させることで、上述のＳ２２０〜Ｓ２２２を繰り返し行う。こうすることで、Ｙ軸方向のホップ数ｄｙが同じであるデータ送信をまとめて実行することができる。
【００８８】
したがって、Ｙ軸方向のホップ数がｄｙであるデータ送信対象のデータのうち、Ｓ２２０〜Ｓ２２２においてまだデータ送信処理を行っていないＸ軸方向のホップ数ｄｘ又はＺ軸方向のホップ数ｄｚが存在する場合は（Ｓ２２４：Ｎｏ）、送信先及び送信データ決定部１２ｂは、処理をＳ２２４からＳ２２０に戻す。
【００８９】
また、Ｓ２２０〜Ｓ２２２を繰り返し実行して、Ｙ軸方向のホップ数がｄｙであるデータ送信対象のデータのうち、取り得るＸ軸方向のホップ数ｄｘ及びＺ軸方向のホップ数ｄｚを指定してデータ送信処理が完了した場合は（Ｓ２２４：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、処理をＳ２２５に進める。
【００９０】
Ｓ２２５では、送信制御部１２ａが、バリア同期部１２ｅにバリア同期の実行を指示する。各ノードのバリア同期部１２ｅがバリア同期を実行することにより、インターコネクト内の全ノードにおいて一斉にＳ２２５のバリア同期とＳ２２６のＹ軸方向のホップ数ｄｙの更新を実行する。Ｓ２２６では、送信先及び送信データ決定部１２ｂは、Ｙ軸方向のホップ数ｄｙを、Ｓ２２０〜Ｓ２２２においてまだデータ送信処理を行っていないＹ軸方向のホップ数に更新する。実施例１と同様、インターコネクト内の全対全通信において取り得るｄｙについて経由ノードへのデータ送信を完了させることができれば、ホップ数の更新方法を任意に取り決めてＳ２２６の処理を実行することができる。Ｓ２２６においてＹ軸方向のホップ数ｄｙを更新したら、送信先及び送信データ決定部１２ｂは、処理をＳ２２０に戻す。そして、送信先及び送信データ決定部１２ｂは、更新されたＹ軸方向のホップ数ｄｙを用いて、取り得るＸ軸方向のホップ数ｄｘ及びＺ軸方向のホップ数ｄｚを対象にＳ２２０〜Ｓ２２４の処理を行う。
【００９１】
以上のＳ２２０〜Ｓ２２６の処理を繰り返し実行することにより、各ホップ数ｄｘ、ｄｙ、ｄｚについて、ノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）に送信されるべきデータのうち領域ｂに格納されているデータが、ノード（ｘ，ｙ＋ｄｙ，ｚ）のデータ格納領域１１ｃ内におけるノード（ｘ＋ｄｘ，ｙ，ｚ＋ｄｚ）に対応するデータ領域の領域ｂに格納される。このように、各ノードからＹ軸方向へのデータ送信が完了した場合（Ｓ２２３：Ｙｅｓ）、送信先及び送信データ決定部１２ｂは、データ送信処理を終了する。
【００９２】
以上が、各ノード（ｘ，ｙ，ｚ）がノード（ｘ＋ｄｘ，ｙ＋ｄｙ，ｚ＋ｄｚ）に対して送信するデータが格納されている領域（領域ａ〜ｃ）に応じてＸ、Ｙ、Ｚの各軸方向にそれぞれ送信する処理である。本実施例では、上記の処理を行った後、同様の処理を行ってデータ格納領域１１ｃ内のデータ領域の領域ｂに格納されているデータをＸ軸方向に送信
する。また、領域ｃに格納されているデータをＹ軸方向に、領域ａに格納されているデータをＺ軸方向にそれぞれ送信する。
【００９３】
さらに、これらのデータ送信を行った後に、上記と同様の処理を行って、データ格納領域１１ｃ内のデータ領域の領域ｃに格納されているデータをＸ軸方向に送信する。また、領域ａに格納されているデータをＹ軸方向に、領域ｂに格納されているデータをＺ軸方向にそれぞれ送信する。
【００９４】
各ノード以上の処理を実行することで、目標ノードに対して送信するデータが、３つに分割された経路によって送信される。この結果、各ノードが目標ノードに対して送信するデータは、目標ノードのデータ格納領域１１ｃ内における送信元のノード用の領域に格納される。
【００９５】
なお、このようにデータ送信を行うことができれば、領域ａ、ｂ、ｃのうち、どの領域に格納されたデータをＸ軸方向、Ｙ軸方向、Ｚ軸方向にそれぞれ送信するかは、適宜決定することができる。すなわち、上記の処理では、Ｘ軸方向のデータ送信に着目すると、領域ａに格納されたデータ、領域ｂに格納されたデータ、領域ｃに格納されたデータの順でＸ軸方向のデータ送信を行っている。しかし、データがＹ軸方向又はＺ軸方向のデータ送信の対象として重複しないようにしつつ、例えば、領域ｃに格納されたデータ、領域ａに格納されたデータ、領域ｂに格納されたデータの順でＸ軸方向のデータ送信を行ってもよい。
【００９６】
本実施例により、実施例１と同様、データ送信元のノードからデータ送信先のノードに至る経路が時分割される。そして、同方向かつ同ホップ数のデータ送信がまとめて行われる。これにより、異なるホップ数で送信されるパケットがインターコネクト内に混在する現象を回避することができる。また、全対全通信におけるバリア同期の回数を削減することができるため、バリア同期によるデータ送信のオーバーヘッドが低減し、全対全通信のデータ送信性能が向上する。さらに、データ送信の経路を複数の経路としつつ、データが同じ経路を同じタイミングで送信されないように構成することができる。これにより、各経路に対するデータ送信の負荷を分散させることができる。
【００９７】
以上が本実施形態に関する説明であるが、各ノードの構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、データ送信において、各ノードの接続方向のうちどの一方向を指定して順次データを送信するかは、任意の順番で方向を指定して行うことができる。また、上記の説明では、ノードを格子状に配置した場合を想定しているが、各ノードの配置は格子状の配置に限られない。
【００９８】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、ノード等である。
【００９９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシ
ュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【０１００】
以上の実施形態に関し、さらに以下の付記を開示する。
【０１０１】
（付記１）
複数の情報処理装置が接続された情報処理システムにおいて、
各情報処理装置は、
データの送信先の情報処理装置ごとにデータを格納する格納部と、
格納部に格納されたデータのうち、送信方向が同じでありかつホップ数が同じであるデータを一括して送信する送信制御部を有する
ことを特徴とする情報処理システム。
【０１０２】
（付記２）
格納部には、送信先が同じデータが複数に分割されて格納され、
送信制御部は、分割されたデータをそれぞれ異なる送信方向に送信する
ことを特徴とする付記１に記載の情報処理システム。
【０１０３】
（付記３）
各情報処理装置は、一方向ごとのデータ送信が完了するごとにバリア同期を実行するバリア同期部を有することを特徴とする付記１又は付記２に記載の情報処理システム。
【０１０４】
（付記４）
各情報処理装置同士は、メッシュ構造もしくはトーラス構造にて接続されていることを特徴とする付記１から付記３のいずれかに記載の情報処理システム。
【０１０５】
（付記５）
データの送信先ごとにデータを格納する格納部をそれぞれ有する、複数の情報処理装置が接続された情報処理システムの制御方法において、
複数の情報処理装置のうち、送信元の各情報処理装置が、各送信元の情報処理装置が有する格納部に格納されたデータのうち、送信方向が同じでありかつホップ数が同じである各データを一括に送信し、
複数の情報処理装置のうち、送信先の各情報処理装置が、一括に送信された各データをそれぞれ受信する
ことを特徴とする情報処理システムの制御方法。
【０１０６】
（付記６）
各情報処理装置は、送信先が同じデータを複数に分割してデータ格納領域に格納し、
送信するステップは、該分割されたデータをそれぞれ異なる送信方向に送信する
ことを特徴とする付記５に記載の情報処理システムの制御方法。
【０１０７】
（付記７）
一方向ごとのデータ送信が完了するごとにバリア同期を実行するステップをさらに有することを特徴とする付記５又は付記６に記載の情報処理システムの制御方法。
【０１０８】
（付記８）
各情報処理装置同士は、メッシュ構造もしくはトーラス構造にて接続されていることを特徴とする付記５から付記７のいずれかに記載の情報処理システムの制御方法。
【符号の説明】
【０１０９】
１    並列計算システム
１０、２０、３０、４０、５０    ノード
１１    記憶部
１１ａ    ユーザープログラム
１１ｂ、１１ｃ    データ格納領域
１１ｄ    データ格納領域の領域ａ
１１ｅ    データ格納領域の領域ｂ
１１ｆ    データ格納領域の領域ｃ
１２    制御部
１２ａ    送信制御部
１２ｂ    送信先及び送信データ決定部
１２ｃ    送出タイミング決定部
１２ｄ    送信部
１２ｅ    バリア同期部
１３、１５、１５ａ、１５ｂ、１５ｃ    ＮＩＣ
１４    ルータ
１００    管理サーバ
【図１】
2014137732.tif 000003
【図２】
2014137732.tif 000004
【図３】
2014137732.tif 000005
【図４】
2014137732.tif 000006
【図５】
2014137732.tif 000007
【図６】
2014137732.tif 000008
【図７】
2014137732.tif 000009
【図８】
2014137732.tif 000010
【図９】
2014137732.tif 000011
【図１０】
2014137732.tif 000012
【図１１】
2014137732.tif 000013
【図１２Ａ】
2014137732.tif 000014
【図１２Ｂ】
2014137732.tif 000015
【図１３】
2014137732.tif 000016
【図１４】
2014137732.tif 000017
【図１５】
2014137732.tif 000018
【図１６】
2014137732.tif 000019
【図１７Ａ】
2014137732.tif 000020
【図１７Ｂ】
2014137732.tif 000021
【図１７Ｃ】
2014137732.tif 000022