(57)【要約】  一対多または多対多の一意の情報通信を効率よく行うことができるようにする。  所属領域判定手段（１ｂ）が、コンピュータ（１）の位置を原点とした相対座標系を原点からの方向に応じて複数の領域に均等に分割し、ノードの相対座標に基づいてノードそれぞれが属する領域を判定する。その後、一意情報集団通信の実行指示が入力されると、一意情報集団通信実行手段（１ｄ）が、ノードに一意のデータを含むメッセージの送信を、領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する。
2008114440.tif 000002
【特許請求の範囲】
【請求項１】
トーラス網内の一ノードとして機能するコンピュータから前記トーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うための一意情報集団通信プログラムにおいて、
前記コンピュータを、
前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段から前記システム構成情報を読み出し、前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成し、所属領域情報を記憶する所属領域情報記憶手段に記憶させる所属領域判定手段、
一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する一意情報集団通信実行手段、
として機能させることを特徴とする一意情報集団通信プログラム。
【請求項２】
前記コンピュータを、さらに、
前記所属領域情報に基づいて、前記基準時間あたりに送信する全メッセージのホップ数の合計を均等化して、前記領域それぞれにおける各前記ノードの通信順を設定し、前記ノードの前記領域内での通信順を示す領域内順位情報を生成する領域内順位判定手段、
前記領域内順位判定手段で生成された前記領域内順位情報を記憶する領域内順位情報記憶手段、
として機能させ、
前記一意情報集団通信実行手段は、前記領域内順位情報を参照し、前記領域それぞれに属する前記ノードそれぞれに対して、前記領域内順位情報に示される順番で前記メッセージを送信することを特徴とする請求の範囲第１項記載の一意情報集団通信プログラム。
【請求項３】
前記領域内順位判定手段は、複数の前記領域のうち半分の前記領域に対してホップ数の少ない前記ノードから順に通信順を割り当て、残りの半分の前記領域に対してホップ数の多い前記ノードから順に通信順を割り当てることを特徴とする請求の範囲第２項記載の一意情報集団通信プログラム。
【請求項４】
前記領域内順位判定手段は、隣接する２つの領域に関して、一方の領域についてホップ数の少ない前記ノードから順に通信順を割り当て、他方の領域についてホップ数の多い前記ノードから順に通信順を割り当てることを特徴とする請求の範囲第３項記載の一意情報集団通信プログラム。
【請求項５】
前記所属領域判定手段は、前記トーラス網がｘ軸とｙ軸を座標軸とする二次元平面で表現できる場合、前記相対座標系のｘ軸とｙ軸とを境界線とした第１から第４象限を前記領域とし、
前記領域内順位判定手段は、最初に前記第１の象限内の前記ノードそれぞれの通信順を決定し、前記第１の象限内の前記ノードそれぞれの通信順を、前記第１の象限内の前記ノードをｙ軸を基準に線対称に移動させた位置の前記第２象限内の対応する前記ノードに割り当てた上で通信順の前後を入れ替え、前記第１の象限内の前記ノードそれぞれの通信順を、前記第１の象限内の前記ノードを前記相対座標系の原点を基準に点対称に移動させた位置の前記第３象限内の対応する前記ノードに割り当て、前記第１の象限内の前記ノードそれぞれの通信順を、前記第１の象限内の前記ノードをｘ軸を基準に線対称に移動させた位置の前記第４象限内の対応する前記ノードに割り当てた上で通信順の前後を入れ替える、ことを特徴とする請求の範囲第２項記載の一意情報集団通信プログラム。
【請求項６】
前記所属領域判定手段は、前記トーラス網がｘ軸とｙ軸を座標軸とする二次元平面で表現できる場合、前記相対座標系のｘ軸とｙ軸とを境界線とした第１から第４象限を前記領域とし、
前記領域内順位判定手段は、最初に前記第１の象限内の前記ノードそれぞれの通信順を決定し、前記第１の象限内の前記ノードを前記第２から第４の象限それぞれに配置された前記ノードそれぞれと１対１で一致するまで前記第２から第４の象限それぞれへ平行移動させ、前記第１の象限内の前記ノードそれぞれと一致する位置の前記第２から第４象限それぞれに配置された前記ノードに対して、一致した前記第１の象限内の前記ノードの通信順を割り当てることを特徴とする請求の範囲第２項記載の一意情報集団通信プログラム。
【請求項７】
前記領域内順位判定手段は、１つの前記領域内の前記ノードをホップ数の順に仮の順位を決定し、前記仮の順位においてホップ数の少ない方から探索して検出される通信順未割り当ての前記ノードと、ホップ数が多い方とから探索して検出される通信順未割り当ての前記ノードとを交互に探索し、検出された前記ノードの順に通信順を割り当てることを特徴とする請求の範囲第２項記載の一意情報集団通信プログラム。
【請求項８】
前記所属領域判定手段は、前記トーラス網の１軸方向のノード数が偶数の場合、前記相対座標が複数の前記領域の境界上となる前記ノードを、予め定義された規則に従って前記境界の両側の前記領域のいずれか一方の前記領域に属するものと判定することを特徴とする請求の範囲第１項記載の一意情報集団通信プログラム。
【請求項９】
前記所属領域判定手段は、前記トーラス網の１軸方向のノード数が奇数の場合、前記相対座標が複数の前記領域の境界上となる前記ノードを、前記境界の両側の前記領域の双方に属するもの判定することを特徴とする請求の範囲第１項記載の一意情報集団通信プログラム。
【請求項１０】
前記所属領域判定手段は、前記トーラス網がｘ軸とｙ軸を座標軸とする二次元平面で表現できる場合、前記相対座標系のｘ軸とｙ軸とを境界線とした第１から第４象限を前記領域とすることを特徴とする請求の範囲第１項記載の一意情報集団通信プログラム。
【請求項１１】
前記領域内順位判定手段は、隣接する前記ノード間の各伝送路の通信速度を記録する運用情報記憶手段から各伝送路の通信速度を読み出し、前記ノード間の前記伝送路それぞれに対して、前記伝送路の前記通信速度が大きいほど小さい値の仮想ホップ値を設定し、前記ノードまでのルート上の前記伝送路に設定された前記仮想ホップ値の合計値を前記ノードの実効ホップ数と定義し、複数の前記領域のうち半分の前記領域に対して前記実効ホップ数の少ない前記ノードから順に通信順を割り当て、残りの半分の前記領域に対して前記実効ホップ数の多い前記ノードから順に通信順を割り当てることを特徴とする請求の範囲第１項記載の一意情報集団通信プログラム。
【請求項１２】
前記コンピュータを、さらに、
管理用のネットワークを介して接続された管理サーバから隣接する前記ノード間の各伝送路の通信速度を取得し、前記運用情報記憶手段内の情報を動的に更新する運用情報問い合わせ手段として機能させることを特徴とする請求の範囲第１１項記載の一意情報集団通信プログラム。
【請求項１３】
トーラス網内の一ノードとして機能するコンピュータにおいて、
前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段と、
前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成する所属領域判定手段と、
前記所属領域判定手段で生成された前記所属領域情報を記憶する所属領域情報記憶手段と、
一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する一意情報集団通信実行手段と、
を有することを特徴とするコンピュータ。
【請求項１４】
トーラス網内の一ノードとして機能するコンピュータにより、前記トーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うための一意情報集団通信方法において、
所属領域判定手段が、前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段から前記システム構成情報を読み出し、前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成し、生成した前記所属領域情報を所属領域情報記憶手段に格納し、
一意情報集団通信実行手段が、一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する、
ことを特徴とする一意情報集団通信方法。
【請求項１５】
トーラス網内の一ノードとして機能するコンピュータから前記トーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うための一意情報集団通信プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記コンピュータを、
前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段から前記システム構成情報を読み出し、前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成し、所属領域情報を記憶する所属領域情報記憶手段に記憶させる所属領域判定手段、
一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する一意情報集団通信実行手段、
として機能させることを特徴とする一意情報集団通信プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はトーラス網内の一ノードとして機能するコンピュータにより一意情報集団通信を行うための一意情報集団通信プログラム、一意情報集団通信を実行するコンピュータ、一意情報集団通信方法、および一意情報集団通信プログラムを記録した記録媒体に関し、特に伝送路の負荷の平準化を考慮した一意情報集団通信を行うための一意情報集団通信プログラム、伝送路の負荷の平準化を考慮した一意情報集団通信を実行するコンピュータ、伝送路の負荷の平準化を考慮した一意情報集団通信方法、および伝送路の負荷の平準化を考慮した一意情報集団通信を行うための一意情報集団通信プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
科学技術計算のような大規模な演算をコンピュータで行わせる場合、複数のコンピュータによって並列で演算処理を行うことで、短時間での演算を可能にしている。複数のコンピュータに並列処理を実行させる場合、コンピュータ間の相互のデータ通信効率が、全体の処理効率に大きな影響を及ぼす。そこで、効率的なデータ通信を行うための相互結合網として、単純メッシュ型やトーラス型が考えられている。なお、複数のコンピュータで構成されたシステムを構成する各コンピュータをノードと呼ぶ。【０００３】
メッシュ型のネットワークは、格子状に組まれた通信経路の格子点にノードが配置される。トーラス型のネットワークは、メッシュ型の横方向および縦方向に並べられたノード配列の両端同士を伝送路で接続したものである。メッシュ型やトーラス型のネットワークでは、ノード間の通信データを含むメッセージが、たとえば、バケツリレー式で伝送される。バケツリレー式通信では、メッセージを受信した各ノードが、通信の宛先に近い方に隣接するノードへメッセージを渡す（ルーティングする）。【０００４】
このとき、各ノードは、どのルートが最も効率よく伝送できるのかを、そのノード自身が判断してメッセージを転送する。たとえば、周囲のプロセッサの負荷量に基づいて、各プロセッサの負荷量が平均化するようにデータの転送先を決定する技術がある（特許文献１参照）。
【特許文献１】特開昭６３−１９８１５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、メッシュ型やトーラス型でノード間が接続された計算機システムでは、一対多や多対多の通信（集団通信）が発生することがある。集団通信のうち、１台のノードから他の全てのノードへのデータ送信が発生するものとして、broadcast、Scatter、AllToAllがある。そのうち、同一の情報を多ノードに送信するbroadcastは、１つのメッセージに必要なデータを含め、バケツリレー式通信などによって完了できる。【０００６】
しかし、それとは異なりScatter、AllToAllなどの集団通信では、大量のメッセージの通信が発生し、ネットワークの特定の通信経路に輻輳が発生する可能性がある。ここで、Scatterは、ある１台のノードから多数のノードへ個別のデータを送信する集団通信である。AllToAllは、全てのノードが、自己以外の他のノード全てに対して個別のデータを送信する集団通信である。なお、AllToAllは、全てのノードがScatterを実行する場合と同じである。これらの集団通信は、通信元と通信先とのノードの組それぞれで一意の情報通信をすることが、broadcastと大きく異なる（以下、Scatter、AllToAllなどの集団通信を「一意情報集団通信」と呼ぶ）。【０００７】
例えば、メッシュ型およびトーラス型のネットワークで構成されたｎ並列（ｎはノード数を示す自然数）の計算機システムの一意情報集団通信では、Scatterでｎ回、AllToAllでｎの２乗回のバケツリレー式通信が発生する。このような大量のデータ通信を無秩序に開始すると、特定の経路に負荷が集中して輻輳が発生する可能性がある。その結果、一意情報集団通信の開始から終了までの時間が延びてしまう。この問題は、特に多対多の通信を行うAllToAllにおいて顕著となる。【０００８】
従来は、単純メッシュやトーラス網で構成された並列計算機システムにおける一意情報集団通信は、潜在的に通信網に対して高負荷な通信処理でありながら効率のよい通信負荷分散方法が提案されていなかった。そのため、特定の伝送路への負荷の集中を招いていた。【０００９】
本発明はこのような点に鑑みてなされたものであり、一対多または多対多の一意の情報通信を効率よく行うことができる一意情報集団通信プログラム、コンピュータ、一意情報集団通信方法、および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明では上記課題を解決するために、図１に示すような一意情報集団通信プログラムが提供される。本発明に係る一意情報集団通信プログラムは、トーラス網内の一ノードとして機能するコンピュータ１からトーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うために、図１に示す機能をコンピュータ１に実行させることができる。【００１１】
システム構成情報記憶手段１ａは、トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶する。所属領域判定手段１ｂは、システム構成情報に基づいて、コンピュータの位置を原点とした相対座標系を原点からの方向に応じて複数の領域に均等に分割し、ノードの相対座標に基づいてノードそれぞれが属する領域を判定し、ノードそれぞれの相対座標とノードが属する領域とを示す所属領域情報を生成する。所属領域情報記憶手段１ｃは、所属領域判定手段１ｂで生成された所属領域情報を記憶する。一意情報集団通信実行手段１ｄは、一意情報集団通信の実行指示が入力されると、所属領域情報記憶手段を参照し、ノードに一意のデータを含むメッセージの全てのノードに対する送信を、領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する。【００１２】
このような一意情報集団通信プログラムをコンピュータ１に実行させると、所属領域判定手段１ｂにより、コンピュータの位置を原点とした相対座標系が原点からの方向に応じて複数の領域に均等に分割され、ノードの相対座標に基づいてノードそれぞれの属する領域が判定される。その後、一意情報集団通信の実行指示が入力されると、一意情報集団通信実行手段１ｄにより、ノードに一意のデータを含むメッセージの送信が、領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行される。
【発明の効果】
【００１３】
本発明では、コンピュータの位置を原点とした相対座標系を原点からの方向に応じて複数の領域に均等に分割し、全てのノードに対するメッセージの送信を領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行するようにした。これにより、一意情報集団通信における所定の基準時間あたりに領域に対して送出されるメッセージ数が均等となり、伝送路における輻輳の発生を低減できる。【００１４】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】発明の概要を示す図である。
【図２】本実施の形態の計算機システム構成例を示す図である。
【図３】本実施の形態に用いる管理サーバのハードウェア構成例を示す図である。
【図４】トーラス網を構成するノードのハードウェア構成例を示す図である。
【図５】管理サーバとノードの機能を示すブロック図である。
【図６】システム構成情報の例を示す図である。
【図７】所属領域情報を示す図である。
【図８】各ノードへのホップ数を示す図である。
【図９】第１象限の通信順を示す図である。
【図１０】領域内順位情報を示す図である。
【図１１】領域内順位情報に基づいた通信による負荷の分散状況を示す図である。
【図１２】５×５のトーラス網の領域内順位情報を示す図である。
【図１３】領域内順位情報に基づいた通信による負荷の分散状況を示す図である。
【図１４】一意情報集団通信処理の手順を示すフローチャートである。
【図１５】第２の実施の形態の管理サーバとノードとの機能を示すブロック図である。
【図１６】運用情報記憶部のデータ構造例を示す図である。
【図１７】第２の実施の形態における一意情報集団通信処理の手順を示すフローチャートである。
【図１８】領域の他の４分割例を示す図である。
【図１９】領域の８分割例を示す図である。
【図２０】三次元空間の第１の分割例を示す図である。
【図２１】三次元空間の第２の分割例を示す図である。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、発明の概要を示す図である。コンピュータ１は、システム構成情報記憶手段１ａ、所属領域判定手段１ｂ、所属領域情報記憶手段１ｃ、一意情報集団通信実行手段１ｄを有している。【００１７】
システム構成情報記憶手段１ａは、トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶する。なお、コンピュータ１自身の絶対座標も設定されている。たとえば、コンピュータ１のワークメモリ上にシステム構成情報記憶手段１ａが設けられる。【００１８】
所属領域判定手段１ｂは、システム構成情報に基づいて、コンピュータの位置を原点とした相対座標系を原点からの方向に応じて複数の領域に均等に分割する。次に、所属領域判定手段１ｂは、ノードの相対座標に基づいてノードそれぞれが属する領域を判定する。そして、所属領域判定手段１ｂは、ノードそれぞれの相対座標とノードが属する領域とを示す所属領域情報を生成する。【００１９】
所属領域情報記憶手段１ｃは、所属領域判定手段１ｂで生成された所属領域情報を記憶する。たとえば、コンピュータ１のワークメモリ上に所属領域情報記憶手段１ｃが設けられる。【００２０】
一意情報集団通信実行手段１ｄは、一意情報集団通信の実行指示が入力されると、所属領域情報記憶手段を参照し、ノードに一意のデータを含むメッセージの全てのノードに対する送信を、領域それぞれについて所定の基準時間あたり均等な回数（たとえば、１回）ずつ順番に実行する。【００２１】
このような一意情報集団通信プログラムをコンピュータ１に実行させると、所属領域判定手段１ｂにより、コンピュータの位置を原点とした相対座標系が原点からの方向に応じて複数の領域に均等に分割され、ノードの相対座標に基づいてノードそれぞれの属する領域が判定される。その後、一意情報集団通信の実行指示が入力されると、一意情報集団通信実行手段１ｄにより、ノードに一意のデータを含むメッセージの送信が、領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行される。メッセージは、隣接するノード２〜５のうち、送信先となるノードへの最もホップ数が少なくなるルート上のノードに対して送出される。【００２２】
これにより、一意情報集団通信における所定の基準時間あたりに領域に対して送出されるメッセージ数が均等となり、伝送路における輻輳の発生を低減できる。
すなわち、各格子点に計算ノードをもつトーラス網で構成された並列計算機において、基点ノードと残りの全ノードの間で１対１通信を実施することで一意情報集団通信が実現できる。このとき、基点ノードから見て特定の方向にあるノード群に対する通信を、空間的および時間軸上に平準化することで通信負荷を分散できると考えられる。【００２３】
空間的に平準化するには、トーラス網のもつ「任意の格子点１つを原点とみなした際にすべての格子点が原点からの相対座標で表現できる」という特徴を利用する。この性質を利用することにより、任意の計算ノードを基点としたときの相対座標系に対する負荷分散方法を考慮すればよくなる。【００２４】
その実現方法として、図１に示した方法がある。これは、任意の計算ノードを基点としたときに基点を取り囲む形で全ノードを２以上に等分割し、その際各１対１通信が各領域について所定の基準時間あたり均等な回数行われるようにしたものである。これにより、所定の基準時間内に送出されるメッセージを同じ方向に集中させずにすむ。すなわち、空間的な負荷の均等化が図られる。【００２５】
また、時間的にも負荷の均等化を図ることができる。それぞれの１対１通信については、全ノード間における相互通信路のバンド幅が等しいとき、通信のホップ数に比例して通信時に占有される通信路の経路長が増加する。このことから、通信負荷の重み付けとしてホップ数に着目し、所定の基準時間あたりに行われる通信のホップ数の合計を一定にできれば、時間軸における通信負荷も分散できると考えることができる。【００２６】
具体的には、まず、上記の方法によって分割された各領域内における１対１通信に関し、基点ノードからのホップ数によって各計算ノードを順序付けし、各領域への通信順を昇順と降順とで半分ずつになるように組分けする。そして、各領域へ送信される基準時間あたりのメッセージ数を均等にして、設定された通信順で各ノードへメッセージを送信する。これにより、微小時間あたり均等な合計ホップ数となる。【００２７】
また、代表となる１つまたは複数の領域の空間におけるノードの通信順に沿った走査の軌跡を、代表ではない残りの領域間に対して対称(flip)、回転(rotate)、平行移動(shift)またはそれらを組み合わせて複製する。複製された走査の軌跡に沿って、残りの領域の各ノードの通信順を設定する。この方法でも、各基準時間あたりのホップ数を均等にすることができる。特に、代表となる領域とそれらの複製領域との間に各座標軸の正負間で対称性を持つ場合、各座標軸の正方向負方向それぞれにおける各基準時間あたりのホップ数を均等にできる。【００２８】
なお、代表の領域におけるノードの通信順の決定方法として、単純なホップ数による昇順降順だけでなく、ホップ数の近い方からの昇順と遠い方とからの降順とで交互にノードを選択し、選択順を通信順とすることもできる。【００２９】
ホップ数によって順序を決定する際にノード間の各相互通信路のバンド幅（通信速度）が一定ではない場合、伝送路のバンド幅に応じた値を仮想ホップ値として、通信路上の仮想ホップ値の合計を実効ホップ数とする。この際、仮想ホップ値は、バンド幅が広いほど小さな値となる。数式で表すと、以下のようになる。【００３０】
【数１】
2008114440.tif 000003
ここで、ｉは通信路上の各伝送路に振られた番号であり、１以上ホップ数以下の整数である。バンド幅ｉは、ｉ番の伝送路のバンド幅である。【００３１】
このようにして算出した実効ホップ数を通常のホップ数に置き換えて、上記のノードの通信順判定に適用することで、バンド幅の異なる伝送路で接続されたトーラス網にも適用可能となる。【００３２】
以下、これらの方法を組み合わせた実施の形態について詳細に説明する。
［第１の実施の形態］
図２は、本実施の形態の計算機システム構成例を示す図である。本実施の形態の計算機システムは、複数のノードで構成されるトーラス網１０と、そのトーラス網１０を管理するための管理サーバ７０で構成される。【００３３】
図２の例では、６×６の二次元トーラス網が示されている。トーラス網１０は３６台のノード１１〜１６，２１〜２６，３１〜３６，４１〜４６，５１〜５６，６１〜６６で構成されている。ノード１１〜１６は、格子状のネットワークの同一行に並べられており、隣り合ったノード同士が光通信などの高速の伝送路で接続されている。また、配列の両端に位置するノード１１，１６同士も、高速の伝送路で接続されている。ノード１１〜１６の接続関係と同様に、ノード２１〜２６間、ノード３１〜３６間、ノード４１〜４６間、ノード５１〜５６間、ノード６１〜６６間がそれぞれ接続されている。【００３４】
また、ノード１１，２１，３１，４１，５１，６１は、格子状のネットワークの同一列に並べられており、隣り合ったノード同士が光通信などの高速の伝送路で接続されている。また、配列の両端に位置するノード１１，６１同士も、高速の伝送路で接続されている。このノード１１，２１，３１，４１，５１，６１の接続関係と同様に、ノード１２，２２，３２，４２，５２，６２間、ノード１３，２３，３３，４３，５３，６３間、ノード１４，２４，３４，４４，５４，６４間、ノード１５，２５，３５，４５，５５，６５間、ノード１６，２６，３６，４６，５６，６６間が接続されている。【００３５】
このように、格子状に配列された各ノードの横方向および縦方向に隣り合ったノード同士が接続されると共に、それぞれの方向の両端に位置するノード同士が接続されている。これらのノードが互いに通信して連携を取りながらジョブ（与えられた処理）を並列で実行することで、高速の処理が可能となる。【００３６】
トーラス網１０の各ノードには、管理用のネットワークを介して管理サーバ７０が接続されている。管理サーバ７０は、トーラス網１０の各ノードに対してジョブの実行指示を与える。また、システムの起動時には、管理サーバ７０から各ノードに対して、システムの構成情報や、それぞれのノードのアドレスが通知される。【００３７】
図３は、本実施の形態に用いる管理サーバのハードウェア構成例を示す図である。管理サーバ７０は、ＣＰＵ（Central Processing Unit）７０ａによって装置全体が制御されている。ＣＰＵ７０ａには、バス７０ｇを介してＲＡＭ（Random Access Memory）７０ｂ、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）７０ｃ、グラフィック処理装置７０ｄ、入力インタフェース７０ｅ、および通信インタフェース７０ｆが接続されている。【００３８】
ＲＡＭ７０ｂには、ＣＰＵ７０ａに実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ７０ｂには、ＣＰＵ７０ａによる処理に必要な各種データが格納される。ＨＤＤ７０ｃには、ＯＳやアプリケーションプログラムが格納される。【００３９】
グラフィック処理装置７０ｄには、モニタ８１が接続されている。グラフィック処理装置７０ｄは、ＣＰＵ７０ａからの命令に従って、画像をモニタ８１の画面に表示させる。入力インタフェース７０ｅには、キーボード８２とマウス８３とが接続されている。入力インタフェース７０ｅは、キーボード８２やマウス８３から送られてくる信号を、バス７０ｇを介してＣＰＵ７０ａに送信する。【００４０】
通信インタフェース７０ｆは、トーラス網１０に接続されている。通信インタフェース７０ｆは、トーラス網１０を介して、他のコンピュータとの間でデータの送受信を行う。
図４は、トーラス網を構成するノードのハードウェア構成例を示す図である。ノード４４は、ＣＰＵ４４ａによって装置全体が制御されている。ＣＰＵ４４ａには、バス４４ｉを介してＲＡＭ４４ｂ、ハードディスクドライブ４４ｃ、および複数の通信インタフェース４４ｄ〜４４ｈが接続されている。【００４１】
ＲＡＭ４４ｂには、ＣＰＵ４４ａに実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ４４ｂには、ＣＰＵ４４ａによる処理に必要な各種データが格納される。ＨＤＤ４４ｃには、ＯＳやアプリケーションプログラムが格納される。【００４２】
通信インタフェース４４ｄ〜４４ｇは、それぞれ高速の伝送路を介してノード４３，４５，３４，５４に接続されている。通信インタフェース４４ｄ〜４４ｇは、ノード４３，４５，３４，５４との間でデータの送受信を行う。【００４３】
通信インタフェース４４ｈは、管理用のネットワークを介して管理サーバ７０に接続されている。通信インタフェース４４ｈは、管理サーバ７０との間でデータ通信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、トーラス網１０を構成するノードに関してはノード４４のハードウェア構成を代表として説明したが、他のノードも同様のハードウェアで実現できる。【００４４】
図５は、管理サーバとノードの機能を示すブロック図である。管理サーバ７０は、システム構成通知部７１とジョブ実行要求部７２とを有している。
システム構成通知部７１は、各ノードの起動時に、起動されたノードに対してトーラス網１０のシステム構成情報を通知する。通知されるシステム構成情報には、起動されたノードのアドレスや他のノードのアドレスが含まれる。例えば、システム構成通知部７１は、トーラス網１０の各ノードの起動が完了した時点で運用管理者からの操作入力を受け付ける。そして、システム構成通知部７１は、その操作入力に基づいて、各ノードに対してシステム構成情報を送信する。【００４５】
ジョブ実行要求部７２は、ジョブの実行要求をノードに対して送信する。具体的には、ジョブ実行要求部７２は、操作入力などによってジョブの投入指示を受け付ける。その投入指示には、ジョブの実行に必要なノード数が示される。ジョブ実行要求部７２は、トーラス網１０を構成するノードのうち現在ジョブを実行していないノードを、ジョブの実行に必要な数だけ選択する。そして、ジョブ実行要求部７２は、選択したノードに対してジョブの実行要求を送信する。【００４６】
ノード４４は、所属領域判定部４４１、システム構成情報記憶部４４２、所属領域情報記憶部４４３、領域内順位判定部４４４、領域内順位情報記憶部４４５、ジョブ管理部４４６、ジョブプロセス４４７、一意情報集団通信実行部４４８、周期カウンタ４４８ａ、および領域カウンタ４４８ｂを有している。【００４７】
所属領域判定部４４１は、他のノードとの間で一意情報集団通信をおこなうために、ノード４４自身を基点として他のノードの所属領域を判定する。具体的には、所属領域判定部４４１は、管理サーバ７０から送られたシステム構成情報を、システム構成情報記憶部４４２に格納する。次に、所属領域判定部４４１は、ノード４４自身の絶対座標と他のノードの絶対座標とに基づいて、他のノードの所属領域を決定する。所属領域は、２次元平面における所定の領域を表している。そして、所属領域判定部４４１は、自身を原点としたときの他のノードの相対座標と、各ノードの所属領域とを示す所属領域情報を作成し、所属領域情報記憶部４４３に格納する。【００４８】
システム構成情報記憶部４４２は、システム構成情報を記憶するための記憶領域である。たとえば、ＲＡＭ４４ｂの記憶領域の一部がシステム構成情報記憶部４４２として使用される。【００４９】
所属領域情報記憶部４４３は、所属領域情報を記憶するための記憶領域である。たとえば、ＲＡＭ４４ｂの記憶領域の一部が所属領域情報記憶部４４３として使用される。
領域内順位判定部４４４は、所属領域判定部４４１で作成された所属領域情報に基づいて、各領域内でのノード間通信を行う相手ノードの順番を決定する。順番の決定アルゴリズムについては、予め領域内順位判定部４４４に定義されている。そして、領域内順位判定部４４４は、決定された順番に基づく各領域内の各ノードの通信順を定義した領域内順位情報を作成し、領域内順位情報記憶部４４５に格納する。【００５０】
領域内順位情報記憶部４４５は、領域内順位情報を記憶するための記憶領域である。たとえば、ＲＡＭ４４ｂの記憶領域の一部が領域内順位情報記憶部４４５として使用される。なお、本実施の形態では、領域内順位情報は、所属領域情報に示された各ノードの所属領域に関する情報を包含している。そのため、一意情報集団通信を行う際には、領域内順位情報を参照することで、各ノードの相対座標、各ノードの所属領域、および各ノードの領域内での通信順を認識できる。【００５１】
ジョブ管理部４４６は、管理サーバ７０からのジョブ実行要求に基づいてジョブプロセス４４７にジョブを実行させる。なお、実行すべきジョブの処理内容が記載されたプログラムは、たとえば、ＨＤＤ４４ｃから読み出される。その場合、ジョブ管理部４４６は、ＨＤＤ４４ｃに格納されているプログラムを指定した実行要求を示すコマンドをノード４４のＯＳに入力し、その際、ジョブ実行要求に示される実行条件に応じた変数などを、コマンドの引数として指定する。その結果、ＯＳによってジョブプロセス４４７が起動される。【００５２】
ジョブプロセス４４７は、起動時に指定されたプログラムに従ったデータ処理を実行する。すなわち、ジョブプロセス４４７は、プログラム中に示された命令を順番に実行する。なお、ジョブプロセス４４７は、並列ジョブを実行している場合、他のノード上で機能しているジョブプロセスとの間で連携した処理を実行する。【００５３】
このとき、実行すべき命令が一意情報集団通信を指示する命令の場合、ジョブプロセス４４７は、一意情報集団通信実行部４４８に対して一意情報集団通信の実行を依頼する。たとえば、一意情報集団通信実行部４４８の呼び出し用の関数をＯＳに予め定義しておくことができる。その場合、ジョブプロセス４４７によって一意情報集団通信実行部４４８の呼び出し用の関数が呼び出されると、ＯＳによって一意情報集団通信実行部４４８が起動される。また、ジョブプロセス４４７は、一意情報集団通信を指示する場合、他の全てのノードそれぞれに一意のデータ（他のノードに１対１の通信で渡すべきデータ）を一意情報集団通信実行部４４８に渡す。【００５４】
一意情報集団通信実行部４４８は、ジョブプロセス４４７から一意情報集団通信の実行依頼を受け取ると、他の全てのノードとの間でそのノードに一意の情報を通信する。具体的には、一意情報集団通信実行部４４８は、領域内順位情報記憶部４４５に格納された所属領域管理テーブルを参照し、他のノードそれぞれが属する領域と、各領域内でのノードの通信順を取得する。次に、一意情報集団通信実行部４４８は、基準時間の一周期ごとに、それぞれの領域内の該当周期で通信すべきノード相手のメッセージ送信を行う。基準時間は、各象限への１回ずつのメッセージの送出に必要な時間である。メッセージには、送信相手のノードに一意のデータが含まれる。メッセージ送信の際、一意情報集団通信実行部４４８は、周期カウンタ４４８ａを用いて現在何周期目なのかを判断する。また、一意情報集団通信実行部４４８は、領域カウンタ４４８ｂを用いて、一周期内で次に通信対象とすべきノードが属する領域を判断する。【００５５】
周期カウンタ４４８ａは、一意情報集団通信が開始されてからの周期をカウントした値を記憶する記憶領域である。たとえば、ＲＡＭ４４ｂの記憶領域の一部が周期カウンタ４４８ａとして使用される。【００５６】
領域カウンタ４４８ｂは、一意情報集団通信の一周期内で、次に通信相手とすべきノードが属する領域を示す値を記憶する記憶領域である。たとえば、ＲＡＭ４４ｂの記憶領域の一部が領域カウンタ４４８ｂとして使用される。【００５７】
次に、一意情報集団通信に使用される情報の内容を具体的に説明する。
図６は、システム構成情報の例を示す図である。システム構成情報４４２ａには、各ノードの絶対座標が示されている。図６では、各ノードを示す矩形の中にそのノードの絶対座標を示している。【００５８】
この例では、６×６の二次元のトーラス網１０をＸ−Ｙ座標によって表している。すなわち、Ｘ軸の０から５までの整数、Ｙ軸の０から５までの整数を組み合わせて作成される二次元座標が、各ノードに割り当てられている。原点の座標（０，０）には、ノード１１が配置されている。ノード４４の絶対座標は（３，３）である。【００５９】
このように全てのノードが他のノードの座標を知っていることで、通信相手の座標を指定してメッセージを送信すれば、間に挟まっているノードが指定された座標に向けてメッセージを転送する。メッセージの転送は、ノードの配置に基づいて、隣接するノードの中から送信相手に近いノードに対して行われる。【００６０】
このようなシステム構成情報４４２ａに基づいて、所属領域判定部４４１が各ノードの所属領域を判定する。そして、各ノードに対して、基点のノードからの相対座標を付与することで、所属領域管理テーブルが作成される。ここで、基点のノード４４から４方向に境界線を引き、２次元平面をその境界線の間の領域に分割する場合を想定する。【００６１】
図７は、所属領域情報を示す図である。所属領域情報４４３ａは、各ノードが属する領域と、基点のノードと各ノードとの間の相対座標で構成される。この例では、ノード４４を基点ノードとし、６×６の二次元のトーラス網１０をｘ，ｙ座標の正負によって四象限で分割している。なお、この例では、ｘ軸の座標値が０のノードは、ｘの正数の領域（第１または第４象限）に属するものとする。また、ｙ軸の座標値が０のノードは、ｙの正数の領域（第１または第２象限）に属するものとする。【００６２】
本実施の形態では、ｘ軸上のノード（相対座標のｙ値が０）またはｙ軸上のノード（相対座標のｘ値が０）の所属領域の決定方法は、基点のノードの絶対座標に基づいて判断する。その詳細は後述する。【００６３】
各ノードには、ノード４４からの相対座標が定義される。この相対座標は、各ノードの絶対座標から、ノード４４の絶対座標を減算することで求められる。相対座標のｘ値が正、ｙ値が正のノードは、第１象限に属する。相対座標のｘ値が負、ｙ値が正のノードは、第２象限に属する。相対座標のｘ値が負、ｙ値が負のノードは、第３象限に属する。相対座標のｘ値が正、ｙ値が負のノードは、第４象限に属する。【００６４】
このような所属領域情報４４３ａに基づいて、領域内順位判定部４４４において、各領域内での各ノードの通信順が決定される。このとき、一意情報集団通信は、原点である基点ノードを通信元として、１周期あたりそれぞれ各象限に所属する通信先ノードに対して等しい回数（必ずしも１回である必要はない）ずつ通信を行うこととする（たとえば、通信先ノードが属する象限をそれぞれ第１象限−第２象限−第３象限−第４象限−第１象限・・・というような順番で走査するなど）。【００６５】
ここで、同一領域内の通信順の決定ルール（捜査順序ルール）は、基点のノードからのホップ数に応じた昇順、逆にホップ数の降順、インターリーブなどが考えられる。以下にこれらの捜査順序ルールについて説明する。なお、ホップ数とは、送信相手のノードまでに何回の転送（ルーティング）が必要かを示している。【００６６】
図８は、各ノードへのホップ数を示す図である。図８に示すように、基点のノード４４から遠ざかるに従って、ホップ数が増加する。このホップ数を用い、ホップ数が小さいノードから昇順に通信順が設定される。【００６７】
ここで、同一象限内に、ホップ数が同じノードが複数存在する。そこで、ホップ数が同一の場合に通信順を決定するルールが必要となる。本実施の形態では、第１象限に関して、ｘ軸の座標値が大きいノードを優先するものとする。【００６８】
図９は、第１象限の通信順を示す図である。基点であるノード４４の通信順は「１」である。これは、他の象限の通信順の決定に必要であることから便宜上設定したものである。すなわち、ノード４４に通信順「１」が設定されているからといって、第１周期にノード４４に対する何らかの通信処理が発生するわけではない。ただし、一意情報集団通信ではノード４４上で機能するジョブプロセス４４７に対しても所定のデータが渡される場合がある。そのようなデータの受け渡しは、ノード４４の内部処理によって行われる。【００６９】
ノード４５とノード５４は、共にホップ数が「１」であるが、ノード４５の方がｘ軸の正の値が大きい。そのため、ノード４５の通信順が「２」、ノード５４の通信順が「３」とされている。【００７０】
残りの象限については、まず、第１象限とｘ軸,ｙ軸それぞれについて線対称(flip)に順位付けが行われる。その上で第２および第４象限については順位の上位と下位を並べ替える。すなわち、第２および第４象限については、ホップ数が大きいノードの通信順を先にする。【００７１】
このようにして定義した各ノードの通信順が、領域内順位情報に設定される。
図１０は、領域内順位情報を示す図である。領域内順位情報４４５ａに示すように、第２象限の通信順は、第１象限の各ノードの通信順を、ｙ軸について線対称となる第２象限の各ノードに設定し、順位の上位と下位とを逆に並べ替えたものである。【００７２】
第３象限の通信順は、第１象限の各ノードの通信順を、ｙ軸について線対称となる第２象限の各ノードに設定し、さらに第２象限の各ノードの通信順を、ｘ軸について線対称となる第３象限の各ノードに設定したものである。これは、第１象限の各ノードの通信順を、原点について点対称となる第４象限の各ノードに設定した場合と同じである。【００７３】
第４象限の通信順は、第１象限の各ノードの通信順を、ｘ軸について線対称となる第４象限の各ノードに設定し、順位の上位と下位とを逆に並べ替えたものである。
一意情報集団通信が開始されると、このような領域内順位情報４４５ａに基づいて、周期番号と同じ順位のノードを通信先として１対１通信が行われる。【００７４】
なお、図１０では、通信順を分かりやすくするために各ノードをトーラス網１０での配置の通り並べて示している。実際に一意情報集団通信を行う上で必要な情報は、各ノードの絶対座標と、通信順である。従って、領域内順位情報４４５ａは、最低限、各ノードの絶対座標に対応付けて、そのノードの通信順が設定されていればよい。【００７５】
このようにして定義された通信順に沿って一意情報集団通信が行われる。これにより、１周期あたりの空間的に各象限に対して発生する通信がほぼ均等になる。すなわち、第１周期において第１象限のノードに対する通信が発生しない以外は、各周期において各象限それぞれに属する１つのノードに対する通信が行われる。【００７６】
図１１は、領域内順位情報に基づいた通信による負荷の分散状況を示す図である。この図には、周期、ホップ(Hop)方向、第１象限、第２象限、第３象限、第４象限、小計、および合計の欄が設けられている。【００７７】
周期の欄は、一意情報集団通信を開始してからの通信の周期番号を示している。ホップ方向の欄は、基点のノードから見たときの通信相手のノードの通信方向を示している。ホップ方向は、ｘ軸の正方向（ｘ＋）、ｘ軸の負方向（ｘ−）、ｙ軸の正方向（ｙ＋）、ｙ軸の負方向（ｙ−）のいずれかである。【００７８】
第１象限の欄には、各周期で第１象限のノード相手に開始される通信のホップ数を示している。ホップ数は、ホップ方向別に示される。第２象限の欄には、各周期で第２象限のノード相手に開始される通信のホップ数を示している。ホップ数は、ホップ方向別に示される。第３象限の欄には、各周期で第３象限のノード相手に開始される通信のホップ数を示している。ホップ数は、ホップ方向別に示される。第４象限の欄には、各周期で第４象限のノード相手に開始される通信のホップ数を示している。ホップ数は、ホップ方向別に示される。【００７９】
小計の欄には、各周期で発生した通信のホップ数を、ホップ方向別に合計した値が示されている。合計の欄には、各周期で発生した通信のホップ数の、周期ごとの合計が示されている。【００８０】
図１１の例では正負合わせた合計値が、全９周期において常に１２ホップとなる。すなわち、各周期において、均等に１２ホップ分ずつの通信が開始されている。これにより、時間軸における負荷が分散できていることがわかる。【００８１】
なお、ｘ，ｙの正負方向における小計では、各軸の正方向が常に２、負方向が常に４である。これは、象限分割の際にｘ軸上、ｙ軸上のノード（ｘの座標値またはｙの座標値が０）をともに正数と扱ったために発生している。たとえば、第２象限ではｘ軸の負方向に１だけ余分にホップ数が必要となり、第４象限ではｙ軸の負方向に１だけ余分にホップ数が必要となり、第３象限ではｘ軸およびｙ軸それぞれの負方向に１ずつ余分にホップ数が必要となる。これらの数値を合計すると、ｘ軸およびｙ軸それぞれの負方向に２ずつのホップ数が余分となる。その結果、負方向のホップ数は、正方向のホップ数より常に２だけ多くなるのである。【００８２】
このように負の方向に生じる余分なホップは、領域の境界を越えるための伝送に相当する。すると、トーラス網の規模がどれだけ大きくなっても、４つの象限に領域を分割している限り、各軸の負の方向に生じる余分なホップ数は２である。【００８３】
このような負の方向に生じる余分なホップを差し引いて考えると、全軸の全方向が常に２ホップになり負荷分散できていることがわかる。この均等性は、ノード数が増大しても崩れることはない。従って、大規模なトーラス網では、各軸の負の方向に２ずつ余分なホップ数が生じることは大きな問題とはならず、１周期ごとのデータ通信について、データ通信方向の均等性が保たれていることが分かる。【００８４】
次に、ｘ軸上のノード（相対座標のｙ値が０）またはｙ軸上のノード（相対座標のｘ値が０）の所属領域の決定方法について詳細に説明する。
各軸のノード数が偶数で各軸の正負によって領域を分割する場合、象限分割の境界線の設定次第で特定軸の特定方向に余分にホップ数が必要になる。すると、上記のような走査順序ルールが全てのノードにおいて適用された場合、全てのノードにおける一意情報集団通信において、各軸の負の方向に２ずつ余分なホップが生じる。Scatterのように、１つのノードから他の全てのノード相手に一意情報集団通信を行う場合には大きな問題ではないが、AllToAllが行われると、余分なホップが無視できない場合も考えられる。【００８５】
その場合、相対座標の０を正数と扱うか負数と扱うかに関して、基点ノードの絶対座標の各軸値が偶数か奇数かで判断するようなルールにすることで、AllToAllにおける特定方向へのホップ数の偏りを避けることが可能である。【００８６】
たとえば、基点ノードの絶対座標におけるＸ軸の値が偶数であれば、そのノードの所属領域判定処理では相対座標のｘの０を負数と見なす。基点ノードの絶対座標におけるＸ軸の値が奇数であれば、そのノードの所属領域判定処理では相対座標のｘの０を正数と見なす。基点ノードの絶対座標におけるＹ軸の値が偶数であれば、そのノードの所属領域判定処理では相対座標のｙの０を負数と見なす。基点ノードの絶対座標におけるＹ軸の値が奇数であれば、そのノードの所属領域判定処理では相対座標のｙの０を正数と見なす。【００８７】
このように所属領域判定を行うと、図６に示すノード４４を基点ノードとした場合、ノード４４は第１象限に属する。基点のノードが第１象限であれば、余分なホップ数は、ｘ軸の負方向に２、ｙ軸の負方向に２である。ノード４３を基点ノードとした場合、ノード４３は第２象限に属する。基点のノードが第２象限であれば、余分なホップ数は、ｘ軸の正方向に２、ｙ軸の負方向に２である。ノード３３を基点ノードとした場合、ノード３３は第３象限に属する。基点のノードが第３象限であれば、余分なホップ数は、ｘ軸の正方向に２、ｙ軸の正方向に２である。ノード３４を基点ノードとした場合、ノード３４は第４象限に属する。基点のノードが第４象限であれば、余分なホップ数は、ｘ軸の負方向に２、ｙ軸の正方向に２である。【００８８】
この結果、AllToAllをした場合の余分なホップ数を各軸のホップ方向別に合計すると、均等になることが分かる。
ところで、上記の例は６×６の二次元のトーラス網１０における一意情報集団通信のための各ノードの所属領域判断、および領域内での各ノードの通信順を定義したものである。この方法は、偶数×偶数の全ての二次元のトーラス網に適用可能である。一方、奇数×奇数のトーラス網の場合、上記の方法をそのまま適用することができない。以下に、奇数×奇数のトーラス網における各ノードの所属領域判断、および領域内での各ノードの通信順の決定方法について説明する。【００８９】
図１２は、５×５のトーラス網の領域内順位情報を示す図である。これは、各軸の要素数が奇数の場合の代表例であり、５×５の二次元トーラス網をｘ，ｙ座標の正負によって四象限で分割している。【００９０】
ここで、相対座標の座標値が０のノードは、正数負数どちらにも属するものとして扱っている。すなわち、ｘ座標値が０であり、ｙ座標値が正のノード４３，５３は、第１象限と第２象限との両方に属する。ｘ座標が０であり、ｙ座標値が負のノード１３，２３は、第３象限と第４象限との両方に属する。ｙ座標値が０であり、ｘ座標値が正のノード３４，３５は、第１象限と第４象限との両方に属する。ｙ座標が０であり、ｘ座標値が負のノード３１，３２は、第２象限と第３象限との両方に属する。ｘ座標値とｙ座標値とが０のノード３３（基点のノード）は、第１から第４象限の全てに属する。【００９１】
このようにして所属領域を決定した後、各領域（象限）に属するノード内で通信順を決定する。この例で適用した捜査順序ルールでは、まず、第１象限の通信順を決定する。
第１象限のホップ数に基づいて、図９に示したと同様にｘ軸正の値を大きいノードを優先して、仮の順位付けを行う。次に、領域内のノード数をｍ（ｍは、１以上の整数）として、ホップ数に基づいて設定した仮の順位Ｍ（１以上ｍ以下の整数）に対して、Ｍ＝１，ｍ，２，ｍ−１，…という順番（インターリーブ方式）で、通信順を設定する。その結果、仮の順位Ｍが「１」であるノード３３の通信順が「１」、仮の順位Ｍが「９（＝ｍ）」であるノード５５の通信順が「２」、仮の順位Ｍが「２」であるノード３４の通信順が「３」、仮の順位Ｍが「８（＝ｍ−１）」であるノード５４の通信順が「４」、・・・となる。【００９２】
このようにして決定された第１象限の各ノードの通信順を平行移動(shift)して他の象限の各ノードの通信順とする。
このようにして、領域ごとの通信順を決定した結果、複数の領域に属するノードに関しては、それぞれの領域における通信順が与えられる。これは、複数の領域に属するノードは、１回の一意情報集団通信において複数回の通信機会が与えられることを意味する。そこで、通信回数が複数回となるノードに関しては、通信データを与えられた通信回数に応じた数に分割し、通信順の周期になったときに、分割されたデータをメッセージに含めて通信することとする。【００９３】
具体的には、一意情報集団通信を実行する際に、任意のノードにおける各座標軸の通過数の合計をｎ（ｎは、０以上の整数）としたとき１／２ｎ倍のデータサイズで通信内容を分割して１対１通信を行う。そのときのホップ数のカウントについてもホップ数を１／２ｎ倍に補正する。図１２の例では、ノード１３，２３，３１，３２，３４，３５，４３，５３は、１つの座標軸上にある（ｘ座標値またはｙ座標値の一方のみが０）。この場合、ｎ＝１として、通信１回あたりのデータサイズを、全体のデータサイズの１／２として、各ノードと基点ノードとの間の通信が行われる。なお、ノード３３は２つの座標軸上にある（ｘ座標値とｙ座標値との両方が０）が、基点ノードであるため、実際の通信は発生しない。【００９４】
図１３は、領域内順位情報に基づいた通信による負荷の分散状況を示す図である。図１３では、図１２についてのそれぞれの周期に関する各四象限におけるｘ，ｙの正負方向の補正後のホップ数とそれらの小計および正負方向合わせた合計を示している。ここでは正負合わせた合計値が６から８で７±１ホップに収まっており、概ね負荷分散できていることがわかる。【００９５】
また、各軸の正負方向の方向別の小計については、各１周期だけに着目すると偏っているようにも見える。ところが、隣接する奇数と偶数の周期同士における平均をみると１．５ないし２．０となり概ね負荷分散できていることがわかる。すなわち、２周期分を時間分割の１単位として見ると、各所定の基準時間あたりに発生する通信で発生するホップ数は、各方向とも３から４の間であり、その差は１しかない。これはホップ数に関する単純な昇順降順ではなく１，ｍ，２，ｍ−１，…というインターリーブ方式で通信順を決定したことにより、特定の軸方向にホップ数が偏らないようにできたためである。【００９６】
なお、トーラス網の形態として要素数が偶数×奇数や奇数×偶数という形態も考えられる。すなわち、トーラス網における各軸方向のノード数は、軸ごとに異なっている場合もある。このような場合には、奇数のノードが並べられた軸方向に領域を分割したときの各ノードが属する領域の決定方法については、先に説明した奇数×奇数のノードの所属の決め方によって各ノードが属する領域を決定する。また、偶数のノードが並べられた軸方向に領域を分割したときの各ノードが属する領域の決定方法については、先に説明した偶数×偶数のノードの所属の決め方によって各ノードが属する領域を決定する。【００９７】
次に、ノード４４における一意情報集団通信処理の手順について説明する。
図１４は、一意情報集団通信処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。なお、以下の処理は、ノード４４が起動され、トーラス網内の１つのノードとしてデータ処理サービスを開始すべく旨の指示が入力されたときに開始される。サービス開始の指示は、ノード４４の起動時にＯＳが自動的に発行することができる。また、システムの運用管理者が管理サーバ７０を介して入力することもできる。【００９８】
［ステップＳ１１］所属領域判定部４４１は、管理サーバ７０からシステム構成情報を取得する。所属領域判定部４４１は、取得したシステム構成情報をシステム構成情報記憶部４４２に格納する。【００９９】
［ステップＳ１２］所属領域判定部４４１は、トーラス網１０の座標空間を所定数の領域に分割し、各ノードが属する領域を判定する。具体的には、所属領域判定部４４１は、システム構成情報に基づいて、ノード４４自身の絶対座標を認識する。そして、所属領域判定部４４１は、ノード４４を基点のノードとして、ノード４４から見た他の全てのノードの相対座標を求める。【０１００】
次に、所属領域判定部４４１は、相対座標による二次元の座標空間を、四つの象限に分割する。第１の象限は、ｘ軸が正、ｙ軸が正の領域である。第２の象限は、ｘ軸が負、ｙ軸が正の領域である。第３の象限は、ｘ軸が負、ｙ軸が負の領域である。第４の象限は、ｘ軸が正、ｙ軸が負の領域である。【０１０１】
ここで、所属領域判定部４４１は、システム構成情報に基づいて、トーラス網の「ｘ軸方向のノード数」×「ｙ軸方向のノード数」が偶数×偶数なのか、奇数×奇数なのか、奇数×偶数なのか、あるいは偶数×奇数なのかを判断する。【０１０２】
所属領域判定部４４１は、偶数×偶数のトーラス網の場合、基点のノード４４の絶対座標に基づいて、相対座標のｘ軸、ｙ軸の座標値が０のノードが所属する領域の判定方法を決定する。ノード４４の絶対座標のＸ座標値が偶数であれば、相対座標におけるｘ座標値の０を負数と見なす。ノード４４の絶対座標のＸ座標値が奇数であれば、相対座標におけるｘ座標値の０を正数と見なす。ノード４４の絶対座標のＹ座標値が偶数であれば、相対座標におけるｙ座標値の０を負数と見なす。ノード４４の絶対座標のＹ座標値が奇数であれば、相対座標におけるｙ座標値の０を正数と見なす。【０１０３】
図６に示すトーラス網１０であれば、ノード４４の絶対座標は（３，３）であり、Ｘ座標値、Ｙ座標値ともに奇数である。すると、相対座標におけるｘ座標値の０と、ｙ座標値の０との両方を正の数と見なして、各ノードの所属領域を判断する。その結果、図７に示すような所属領域情報４４３ａが生成される。【０１０４】
また、所属領域判定部４４１は、トーラス網が奇数×奇数の場合、相対座標系におけるｘ軸上、ｙ軸上のノードは、そのノードを横切る軸で分けられた双方の領域（象限）に属すると判断する。【０１０５】
トーラス網が奇数×偶数の場合、ノード数が奇数であるｘ軸の座標値が０のノード（ｙ軸上のノード）は、ｙ軸で分けられた双方の領域（象限）に属すると判断する。また、ノード数が偶数であるｙ軸の座標値が０のノード（ｘ軸上のノード）については、基点のノード４４の絶対座標に基づいて、相対座標のｙ軸の座標値が０のノードが所属する領域の判定方法を決定する。ノード４４の絶対座標のＹ座標値が偶数であれば、相対座標におけるｙ座標値の０を負数と見なす。ノード４４の絶対座標のＹ座標値が奇数であれば、相対座標におけるｙ座標値の０を正数と見なす。【０１０６】
トーラス網が偶数×奇数の場合、ノード数が偶数であるｘ軸の座標値が０のノード（ｙ軸上のノード）については、基点のノード４４の絶対座標に基づいて、相対座標のｘ軸の座標値が０のノードが所属する領域の判定方法を決定する。ノード４４の絶対座標のＸ座標値が偶数であれば、相対座標におけるｘ座標値の０を負数と見なす。また、ノード４４の絶対座標のＸ座標値が奇数であれば、相対座標におけるｘ座標値の０を正数と見なす。ノード数が奇数であるｙ軸の座標値が０のノード（ｘ軸上のノード）は、ｘ軸で分けられた双方の領域（象限）に属すると判断する。【０１０７】
所属領域判定部４４１は、各ノードが属する所属領域を示す所属領域情報を作成し、所属領域情報記憶部４４３に格納する。
［ステップＳ１３］領域内順位判定部４４４は、領域内順位を判定する。具体的には、領域内順位判定部４４４は、所属領域情報記憶部４４３に格納された所属領域情報を参照し、まず、第１象限に属するノードを取得する。そして、基点のノード（ノード４４）から各ノードまでのホップ数が少ない順に、通信順の順位付けを行う。ここで、ホープ数が同じノードに関しては、ｘ軸の座標値が大きいノードを優先（先の順位）とする。【０１０８】
次に、領域内順位判定部４４４は、トーラス網の「ｘ軸方向のノード数」×「ｙ軸方向のノード数」が偶数×偶数なのか、奇数×奇数なのか、奇数×偶数なのか、偶数×奇数なのかを判断する。【０１０９】
偶数×偶数の場合、まず領域内順位判定部４４４は、第１象限の各ノードの通信順を、ｙ軸に線対称で第２象限の各ノードに割り当てる。領域内順位判定部４４４は、このとき割り当てた通信順を仮の順位とし、各ノードの仮の順位の配列を前後逆に入れ替え、その結果を通信順とする。次に、領域内順位判定部４４４は、第１象限の各ノードの通信順を、原点に点対称で第４象限の各ノードに割り当て、通信順とする。さらに、領域内順位判定部４４４は、第２象限の各ノードの通信順を、ｘ軸に線対称で第４象限の各ノードに割り当てる。領域内順位判定部４４４は、このとき割り当てた通信順を仮の順位とし、各ノードの仮の順位の配列を前後逆に入れ替え、その結果を通信順とする。【０１１０】
奇数×奇数の場合、まず領域内順位判定部４４４は、第１象限の各ノードの通信順を、そのまま第２象限に平行移動した先のノードに割り当てる。領域内順位判定部４４４は、このとき割り当てた通信順を仮の順位とし、領域内のノード数をｍとして、仮の順位Ｍ（１以上ｍ以下の整数）に対して、Ｍ＝１，ｍ，２，ｍ−１，…という順番（インターリーブ方式）で、通信順を設定する。次に、領域内順位判定部４４４は、第１象限の各ノードの通信順を、そのまま第４象限に平行移動した先のノードに割り当て、そのノードの通信順とする。さらに、領域内順位判定部４４４は、第１象限の各ノードの通信順を、そのまま第４象限に平行移動した先のノードに割り当てる。領域内順位判定部４４４は、このとき割り当てた通信順を仮の順位としインターリーブ方式で、通信順を設定する。【０１１１】
奇数×偶数の場合および偶数×奇数の場合には、奇数×奇数の場合と同様の方法で、通信順を決定する。
領域内順位判定部４４４は、以上のようにして決定された各領域内の通信順に基づいて、領域内順位情報が生成し、領域内順位情報記憶部４４５に格納する。【０１１２】
［ステップＳ１４］一意情報集団通信実行部４４８は、ジョブプロセス４４７から一意情報集団通信のリクエスト（ScatterまたはAllToAll）があるか否かを判断する。一意情報集団通信実行部４４８は、リクエストが入力されると、処理をステップＳ１５に進める。リクエストがなければ、処理がステップＳ１５に進められる。【０１１３】
［ステップＳ１５］一意情報集団通信実行部４４８は、サービス停止の指示が入力されたか否かを判断する。サービス停止の指示は、たとえば、運用管理者の操作入力に基づいて管理サーバ７０を介して入力される。サービ停止が指示された場合、一意情報集団通信実行部４４８は、一意情報集団通信の処理を終了する。サービス停止が指示されていなければ、処理がステップＳ１４に進められる。【０１１４】
［ステップＳ１６］一意情報集団通信実行部４４８は、周期カウンタ４４８ａの値を１に初期化する。
［ステップＳ１７］一意情報集団通信実行部４４８は、領域カウンタ４４８ｂの値を１に初期化する。【０１１５】
［ステップＳ１８］一意情報集団通信実行部４４８は、周期カウンタ４４８ａで示される周期における領域カウンタ４４８ｂで示される領域（象限）で通信順となっているノードを通信先ノードとして、そのノードに一意のデータを含むメッセージを送信する。具体的には、一意情報集団通信実行部４４８は、領域内順位情報内の領域カウンタ４４８ｂで示される象限を参照する。参照先は、領域カウンタ４４８ｂの値が１であれば第１象限、値が２であれば第２象限、値が３であれば第３象限、値が４であれば第４象限である。次に、一意情報集団通信実行部４４８は、参照している象限のなかで、周期カウンタ４４８ａで示される値が通信順として設定されているノードを判定し、そのノードの相対座標を読み出す。一意情報集団通信実行部４４８は、読み出した相対座標を絶対座標に変換し、その絶対座標をメッセージの宛先とする。なお、相対座標から絶対座標への変換は、相対座標の各座標値に対して、基点のノード４４の絶対座標の各座標値を加算すればよい。【０１１６】
次に、一意情報集団通信実行部４４８は、トーラス網が、奇数×奇数、奇数×偶数、あるいは偶数×奇数のいずれかであるか否か（少なくとも一方の軸方向のノード数が奇数）を判断する。ノード数が奇数となる軸方向がある場合、その軸に直交する座標軸（以下、ノード分割軸と呼ぶ）上のノードは複数の領域に属する。そこで、ノード数が奇数となる軸を有するトーラス網であれば、一意情報集団通信実行部４４８は、通信先ノードがノード分割軸上のノードか否かを判断する。ノード分割軸上のノードであれば、一意情報集団通信実行部４４８は、そのノードに対して送信すべきデータの１／２ｎ倍（ｎは、ノードを通過するノード分割軸の合計）のデータサイズ分を、未送信のデータの先頭から取り出し、メッセージに含める。【０１１７】
ノード数が奇数となる軸を有するトーラス網のノード分割軸上のノード以外のノードが通信先ノードであれば、リクエストで指定されたデータ全体がメッセージに含められる。
そして、一意情報集団通信実行部４４８は、通信先ノードに対してメッセージを送信する。この際、一意情報集団通信実行部４４８は、システム構成情報に基づいて、通信先ノードへのホップ数が最短になるルートを判断する。ホップ数が最短となるルートが複数存在する場合、所定のアルゴリズムによってルートを決定する。たとえば、まず、最初のホップで別の領域に入るルートを最優先とし、最短のホープ数で別の領域に入るルート領域が複数あれば、ｘ軸方向を優先する。このようなルートの決定方法は、メッセージを中継する各ノードにおいても同様に用いられる。【０１１８】
たとえば、図７に示したような所属領域となっている場合、ノード４４からノード１１までの最短のホップ数は６である。ただし、ノード４４から見た場合、隣接するノード３４，４３，４５，５４のいずれにメッセージを送信しても、ホップ数６でメッセージを送信できる。ここで、たとえば、ノード５４、ノード６４、ノード６５、ノード６６、ノード１６、ノード１１という順でメッセージが転送されると、ノード１１が第３象限に属するにも拘わらず、メッセージ転送のほとんどが第１象限内で行われている。このようなメッセージ送信を行ってしまうと、同一周期内にそれぞれの領域内のノードに対して送信されるメッセージに関し、ホップ数の均等化を図った意味がなくなってしまう。【０１１９】
そこで、ノード４４からノード１１へメッセージを送信する場合、まず、別領域に属するノード（ノード３４またはノード４３）を送信先とする。本実施の形態では、ｘ軸方向を優先するものとし、ノード４３に接続された通信インタフェース４４ｄからメッセージを送出する。ノード４３では、通信先の絶対座標より、ノード１１にメッセージを転送すべきことを認識する。【０１２０】
ノード４３からノード１１へは最短のホップ数５で送信可能なルートが複数ある。たとえば、ノード５３、ノード６３、ノード１３、ノード１２、ノード１１で送信するルートであってもホップ数は５である。しかし、本実施の形態では、最初のホップで別領域に入るルートを優先するため、ノード３３にメッセージが転送される。以後は、第３象限内でメッセージが転送され、ノード１１に渡される。【０１２１】
［ステップＳ１９］一意情報集団通信実行部４４８は、領域カウンタ４４８ｂに対してインクリメント（１を加算）を行う。
［ステップＳ２０］一意情報集団通信実行部４４８は、１周期分の各領域へのメッセージ送信が完了したか否かを判断する。具体的には、一意情報集団通信実行部４４８は、領域カウンタ４４８ｂの値が、領域数を超えた場合、１周期分のメッセージ送信が完了したものと判断する。１周期分のメッセージ送信が完了したら、処理がステップＳ２１に進められる。１周期内でメッセージ送信を行っていない領域があれば、処理がステップＳ１８に進められる。【０１２２】
［ステップＳ２１］一意情報集団通信実行部４４８は、周期カウンタ４４８ａの値をインクリメントする。
［ステップＳ２２］一意情報集団通信実行部４４８は、全ノードに対しての通信が完了したか否かを判断する。具体的には、一意情報集団通信実行部４４８は、周期カウンタ４４８ａの値が、領域内順位情報における通信順位の最大値を超えた場合に、全ノードへの通信が完了したと判断する。全ノードへの通信が完了したら、処理がステップＳ１４に進められ、一意情報集団通信実行部４４８は次のリクエストを待つ。未通信のノードがあれば、処理がステップＳ１７に進められる。【０１２３】
このようにして、空間的および時間的に均等に一意情報集団通信を行うことができる。その結果、一部の伝送路のみが過負荷になることを防止できる。すなわち、同一周期内で送信するメッセージに関しては、異なる領域内のノードに対して送信するため、伝送ルートの重なりが最小限に抑えられる。【０１２４】
しかも、各周期内で送信するメッセージのホップ数を均等化を図ることで、あるノードが実行した一意情報集団通信によって、トーラス網１０内で通信されるデータ総量が、ある短い時間だけ過大となることを防止できる。たとえば、あるノードがScatterを行う場合を考える。ここで、ホップ数が多いノードへのメッセージ転送は、ホップ数の分だけ時間がかかる。そのため、Scatterによる他の全てのノードへのメッセージ送信を最短の時間で完了することを目的とするのであれば、ホップ数が多いノード（データ伝送に時間のかかるノード）から順にメッセージを送信することとなる。すると、最も近いノードに対してメッセージを送信した頃には、Scatterによって送出されたメッセージが、トーラス網内に溢れていることになる。短い時間であっても、１つのノードで実行されたScatterによるメッセージが、トーラス網全体で伝送されている総データ量のうちの大きな割合を占めると、他のノードによるデータ通信を阻害する可能性がある。【０１２５】
特に、AllToAllが行われると、全てのノードがScatterを実行する。このとき、全てのノードが、ホップ数の多いノードから順にメッセージを送信すると、近くのノードにメッセージを送信するころにはトーラス網の至る所で輻輳が発生してしまう可能性がある。すると、並列ジョブの実効に伴う通常のデータ通信すら困難になりかねず、システム全体の処理効率の低下を招く。【０１２６】
本実施の形態では、同一周期で通信されるメッセージのホップ数の均等化を図っているため、一意情報集団通信を実行したことによって他のノード間のデータ通信を阻害することを防止できる。AllToAllであっても、AllToAllによって発生するデータ総量を所定値以下に抑えることが可能となる。【０１２７】
［第２の実施の形態］
第２の実施の形態は、伝送路の実効通信速度が不均一の場合でも最適な負荷の均等化を図ることができるようにしたものである。【０１２８】
図１５は、第２の実施の形態の管理サーバとノードとの機能を示すブロック図である。なお、第１の実施の形態と同じ機能の要素には、図５に示した第１の実施の形態の要素と同じ符号を付し説明を省略する。【０１２９】
管理サーバ７０Ａは、運用状況管理部７３を有する点が第１の実施の形態と異なる。運用状況管理部７３は、トーラス網１０内の各ノードの運用状況、および各ノード間の通信状況を監視する。そして、運用状況管理部７３は、各ノードが起動されたときにノード間通信の実効速度を各ノードに通知する。また、運用状況管理部７３は、定期的にノード間通信の実効速度を各ノードに通知する。さらに、運用状況管理部７３は、故障などによって運用が停止したノードを検出すると、停止したノードの絶対座標を各ノードに通知する。【０１３０】
ノード４４Ａは、運用情報問い合わせ部４４９ａと運用情報記憶部４４９ｂとを有する点が、第１の実施の形態と異なる。また、領域内順位判定部４４４ａの機能が、第１の実施の形態の領域内順位判定部４４４の機能と異なる。【０１３１】
運用情報問い合わせ部４４９ａは、管理サーバ７０Ａの運用状況管理部７３から運用情報を取得し、その内容を運用情報記憶部４４９ｂに格納する。取得する運用情報には、各ノード間の実効通信速度を示すバンド幅情報と、各ノードの運用の有無を示す故障情報とがある。【０１３２】
運用情報記憶部４４９ｂは、運用情報を格納するための記憶領域である。たとえば、ＲＡＭ４４ｂの記憶領域の一部が運用情報記憶部４４９ｂとして使用される。運用情報は、バンド幅情報テーブルと故障情報テーブルに分けて記憶される。バンド幅情報テーブルには、各ノード間のデータ通信の実効速度が登録されている。故障情報テーブルには、各ノードが運用しているか否かを示す情報が登録されている。【０１３３】
領域内順位判定部４４４ａは、所属領域情報記憶部４４３に格納された所属領域情報と、運用情報記憶部４４９ｂに格納された運用情報とに基づいて、各領域内での各ノードの通信順を決定する。そして、領域内順位判定部４４４ａは、判定した順位を、領域内順位情報として、領域内順位情報記憶部４４５に格納する。【０１３４】
図１６は、運用情報記憶部のデータ構造例を示す図である。運用情報記憶部４４９ｂには、バンド幅情報テーブル４４９ｃと故障情報テーブル４４９ｄとが含まれている。
バンド幅情報テーブル４４９ｃには、伝送路とバンド幅との欄が設けられている。伝送路の欄には、隣接するノード間通信における送信元ノードの絶対座標と、送信先ノードの絶対座標とが設定されている。バンド幅の欄には、ノード間通信における通信速度が設定されている。【０１３５】
故障情報テーブル４４９ｄには、ノードと状態との欄が設けられている。ノードの欄には、トーラス網を構成するノードの絶対座標が設定されている。状態の欄には、対応するノードが運用中か、故障などにより停止中かを示す情報が設定されている。【０１３６】
次に、ノード４４Ａにおける一意情報集団通信処理の手順について説明する。
図１７は、第２の実施の形態における一意情報集団通信処理の手順を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。なお、以下の処理は、ノード４４Ａが起動され、トーラス網内の１つのノードとしてデータ処理サービスを開始する旨の指示が入力されたときに開始される。【０１３７】
ステップＳ３１，Ｓ３３，Ｓ３６〜Ｓ４４の処理は、それぞれステップＳ１１，Ｓ１２，Ｓ１４〜Ｓ２２と同様であるため説明を省略し、ステップＳ３２、Ｓ３４、及びＳ３５のみ説明する。【０１３８】
［ステップＳ３２］運用情報問い合わせ部４４９ａは、管理サーバ７０Ａに対して運用情報を問い合わせる。他のノードが運用中か否かを示す故障情報と、各ノード間の通信速度を示すバンド幅情報とを取得する。そして、運用情報問い合わせ部４４９ａは、取得した情報を運用情報記憶部４４９ｂに格納する。【０１３９】
なお、運用情報問い合わせ部４４９ａは、その後も管理サーバ７０Ａから運用情報が送られると、その運用情報に基づいて、運用情報記憶部４４９ｂの内容を更新する。
その後、ステップＳ３３において、領域分割後の各ノードの所属領域が判定されステップＳ３４に処理が進められる。【０１４０】
［ステップＳ３４］領域内順位判定部４４４ａは、運用情報記憶部４４９ｂを参照し、基点のノード４４Ａ自身から他のノードへの実効ホップ数を計算する。具体的には、まず、領域内順位判定部４４４ａは、故障情報テーブル４４９ｄを参照し、他のノードが運用中か否かを判断する。そして、運用中の各ノードを経由した各ノードへの伝送ルートを判断する。この際、基点ノードと異なる領域に属するノードを通信先とする場合、メッセージが通信先のノードが属する領域内のノードに渡されるまでは、通信先ノードが属する領域内のノードへメッセージを送信するルートを優先する。【０１４１】
次に、領域内順位判定部４４４ａは、各伝送ルートにおける実効ホップ数を計算する。実効ホップ数は、伝送ルート上の各ノード間のバンド幅の逆数を、全て加算することで算出される。計算式は、式（１）で示した通りである。このような計算により、伝送ルート上のノード間のバンド幅が太ければ（伝送速度が速ければ）、実効ホップ数は小さくなる。【０１４２】
［ステップＳ３５］領域内順位判定部４４４ａは、各ノードの領域内での通信順を判定する。具体的には、領域内順位判定部４４４ａは、第１象限について、実効ホップ数の小さい順による仮の順位を設定する。その際、実効ホップ数が同一のノードが複数ある場合、ｘの座標値が大きい方を優先する。仮の順位を設定後は、第１の実施の形態における領域内順位判定部４４４の仮の順位設定後の処理と同様である。【０１４３】
その後、ステップＳ３６以降の処理で、ジョブプロセスから一意情報集団通信のリクエストが入るごとに、領域内順位情報に基づく順番で、他のノードとの間で通信が行われる。【０１４４】
このようにして、ノード間のバンド幅が異なる場合でも、一意情報集団通信の空間的および時間的な負荷の均等化を図ることができる。
［その他の例］
上記の実施の形態では、二次元平面をｘ軸とｙ軸とを境界とした四象限に分割しているが、別の方法で分割することもできる。【０１４５】
図１８は、領域の他の４分割例を示す図である。この例では、相対座標における原点を基準としてｘ軸の正の方向から反時計回りに４５°、１３５°、２２５°、３１５°の各方向に引いた線分を境界線として、平面を４分割し４つの領域を生成している。【０１４６】
図１９は、領域の８分割例を示す図である。この例では、ｘ軸およびｙ軸を境界線とすると共に、相対座標における原点を基準としてｘ軸の正の方向から反時計回りに０°、４５°、９０°、１３５°、１８０°、２２５°、２７０°、３１５°の各方向に引いた線分を境界線として、平面を８分割し８つの領域を生成している。【０１４７】
図２０は、三次元空間の第１の分割例を示す図である。この例では、ｘ−ｙ平面、ｙ−ｚ平面、ｚ−ｘ平面を境界面として、空間を８分割している。
図２１は、三次元空間の第２の分割例を示す図である。この例では、立方体の８つの辺それぞれを底辺とし、原点を頂点とする二等辺三角形を境界面として、空間を６分割している。【０１４８】
図示しないが、トーラス網は１次元（リング）から次元を増やして四次元以上も理論上は可能であり、上記したような手法を多次元に拡張する形で多次元空間を分割し、本発明を実施することができる。【０１４９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理サーバや各ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。【０１５０】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。【０１５１】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。【０１５２】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１５３】
１  コンピュータ
１ａ  システム構成情報記憶手段
１ｂ  所属領域判定手段
１ｃ  所属領域情報記憶手段
１ｄ  一意情報集団通信実行手段
２、３，４，５  ノード
【図１】
2008114440.tif 000004
【図２】
2008114440.tif 000005
【図３】
2008114440.tif 000006
【図４】
2008114440.tif 000007
【図５】
2008114440.tif 000008
【図６】
2008114440.tif 000009
【図７】
2008114440.tif 000010
【図８】
2008114440.tif 000011
【図９】
2008114440.tif 000012
【図１０】
2008114440.tif 000013
【図１１】
2008114440.tif 000014
【図１２】
2008114440.tif 000015
【図１３】
2008114440.tif 000016
【図１４】
2008114440.tif 000017
【図１５】
2008114440.tif 000018
【図１６】
2008114440.tif 000019
【図１７】
2008114440.tif 000020
【図１８】
2008114440.tif 000021
【図１９】
2008114440.tif 000022
【図２０】
2008114440.tif 000023
【図２１】
2008114440.tif 000024
【手続補正書】
【提出日】平成21年4月17日(2009.4.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
トーラス網内の一ノードとして機能するコンピュータから前記トーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うための一意情報集団通信プログラムにおいて、
前記コンピュータを、
前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段から前記システム構成情報を読み出し、前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成し、前記所属領域情報を記憶する所属領域情報記憶手段に記憶させる所属領域判定手段、
一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する一意情報集団通信実行手段、
として機能させることを特徴とする一意情報集団通信プログラム。
【請求項２】
前記コンピュータを、さらに、
前記所属領域情報に基づいて、前記基準時間あたりに送信する全メッセージのホップ数の合計を均等化して、前記領域それぞれにおける各前記ノードの通信順を設定し、前記ノードの前記領域内での通信順を示す領域内順位情報を生成する領域内順位判定手段、
前記領域内順位判定手段で生成された前記領域内順位情報を記憶する領域内順位情報記憶手段、
として機能させ、
前記一意情報集団通信実行手段は、前記領域内順位情報を参照し、前記領域それぞれに属する前記ノードそれぞれに対して、前記領域内順位情報に示される順番で前記メッセージを送信することを特徴とする請求項１記載の一意情報集団通信プログラム。
【請求項３】
前記領域内順位判定手段は、複数の前記領域のうち半分の前記領域に対してホップ数の少ない前記ノードから順に通信順を割り当て、残りの半分の前記領域に対してホップ数の多い前記ノードから順に通信順を割り当てることを特徴とする請求項２記載の一意情報集団通信プログラム。
【請求項４】
前記領域内順位判定手段は、隣接する２つの領域に関して、一方の領域についてホップ数の少ない前記ノードから順に通信順を割り当て、他方の領域についてホップ数の多い前記ノードから順に通信順を割り当てることを特徴とする請求項３記載の一意情報集団通信プログラム。
【請求項５】
前記所属領域判定手段は、前記トーラス網の１軸方向のノード数が偶数の場合、前記相対座標が複数の前記領域の境界上となる前記ノードを、予め定義された規則に従って前記境界の両側の前記領域のいずれか一方の前記領域に属するものと判定することを特徴とする請求項１記載の一意情報集団通信プログラム。
【請求項６】
前記所属領域判定手段は、前記トーラス網の１軸方向のノード数が奇数の場合、前記相対座標が複数の前記領域の境界上となる前記ノードを、前記境界の両側の前記領域の双方に属するものと判定することを特徴とする請求項１記載の一意情報集団通信プログラム。
【請求項７】
前記領域内順位判定手段は、隣接する前記ノード間の各伝送路の通信速度を記録する運用情報記憶手段から各伝送路の通信速度を読み出し、前記ノード間の前記伝送路それぞれに対して、前記伝送路の前記通信速度が大きいほど小さい値の仮想ホップ値を設定し、前記ノードまでのルート上の前記伝送路に設定された前記仮想ホップ値の合計値を前記ノードの実効ホップ数と定義し、複数の前記領域のうち半分の前記領域に対して前記実効ホップ数の少ない前記ノードから順に通信順を割り当て、残りの半分の前記領域に対して前記実効ホップ数の多い前記ノードから順に通信順を割り当てることを特徴とする請求項２記載の一意情報集団通信プログラム。
【請求項８】
前記コンピュータを、さらに、
管理用のネットワークを介して接続された管理サーバから隣接する前記ノード間の各伝送路の通信速度を取得し、前記運用情報記憶手段内の情報を動的に更新する運用情報問い合わせ手段として機能させることを特徴とする請求項７記載の一意情報集団通信プログラム。
【請求項９】
トーラス網内の一ノードとして機能するコンピュータにおいて、
前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段と、
前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成する所属領域判定手段と、
前記所属領域判定手段で生成された前記所属領域情報を記憶する所属領域情報記憶手段と、
一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する一意情報集団通信実行手段と、
を有することを特徴とするコンピュータ。
【請求項１０】
トーラス網内の一ノードとして機能するコンピュータにより、前記トーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うための一意情報集団通信方法において、
所属領域判定手段が、前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段から前記システム構成情報を読み出し、前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成し、生成した前記所属領域情報を所属領域情報記憶手段に格納し、
一意情報集団通信実行手段が、一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する、
ことを特徴とする一意情報集団通信方法。
【請求項１１】
トーラス網内の一ノードとして機能するコンピュータから前記トーラス網内の他のノードに個別のデータを送信する一意情報集団通信を行うための一意情報集団通信プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記コンピュータを、
前記トーラス網に属する各ノードの絶対座標が設定されたシステム構成情報を記憶するシステム構成情報記憶手段から前記システム構成情報を読み出し、前記システム構成情報に基づいて、前記コンピュータの位置を原点とした相対座標系を前記原点からの方向に応じて複数の領域に均等に分割し、前記ノードの相対座標に基づいて前記ノードそれぞれが属する前記領域を判定し、前記ノードそれぞれの相対座標と前記ノードが属する前記領域とを示す所属領域情報を生成し、前記所属領域情報を記憶する所属領域情報記憶手段に記憶させる所属領域判定手段、
一意情報集団通信の実行指示が入力されると、前記所属領域情報記憶手段を参照し、前記ノードに一意のデータを含むメッセージの全ての前記ノードに対する送信を、前記領域それぞれについて所定の基準時間あたり均等な回数ずつ順番に実行する一意情報集団通信実行手段、
として機能させることを特徴とする一意情報集団通信プログラムを記録したコンピュータ読み取り可能な記録媒体。
【国際調査報告】
2008114440.tif 000025
2008114440.tif 000026
2008114440.tif 000027
2008114440.tif 000028