(57)【特許請求の範囲】
【請求項１】
経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部と、ノード部の経路を設定する構成管理装置とを有し、各ノードに、処理の進行順に、始点と、複数のゲートと、終点が設定され、同じノード内のゲート間または異なるノードのゲート間のうち、前記構成管理装置により選択されたゲート間に、前記経路が設けられ、各ノードの２番目以降のゲートにおいては、前記経路の接続関係に基づいてバリア同期制御がなされる、計算システムにおいて、
前記構成管理装置は、異なるノードのゲート間に前記経路を設定する場合に、異なるノードのゲート間に設けられる前記経路のうち、各ノードの前記終点に近い前記経路の長さを、より前記終点から遠い前記経路の長さより短く設定するノード管理部を有し、
前記ノード部は、複数の前記ノードが前記ノード管理部により設定された経路で接続されているネットワークを用いてデータを処理する
計算システム。
【請求項２】
前記計算システムにおいて、
前記経路の長さは、転送ホップ数で定義される
請求項１記載の計算システム。
【請求項３】
前記計算システムにおいて、
前記ノード部は、各ノードで実行される処理が複数の段階の処理に分割されている
請求項１記載の計算システム。
【請求項４】
前記計算システムにおいて、
前記ノード部は、前記分割された段階の処理毎に他のノードの処理の完了を待ち合わせる
請求項３記載の計算システム。
【請求項５】
前記計算システムにおいて、
前記ノード部が有するネットワークはバタフライネットワークである
請求項１記載の計算システム。
【請求項６】
経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部であって、各ノードに、処理の進行順に、始点と、複数のゲートと、終点が設定され、同じノード内のゲート間または異なるノードのゲート間のうち、選択されたゲート間に、前記経路が設けられ、各ノードの２番目以降のゲートにおいては、前記経路の接続関係に基づいてバリア同期制御がなされる、前記ノード部の経路を設定する構成管理装置において、
異なるノードのゲート間に前記経路を設定する場合に、異なるノードのゲート間に設けられる前記経路のうち、各ノードの前記終点に近い前記経路の長さを、より前記終点から遠い前記経路の長さより短く設定するノード管理部を有する
構成管理装置。
【請求項７】
コンピュータに、経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部であって、各ノードに、処理の進行順に、始点と、複数のゲートと、終点が設定され、同じノード内のゲート間または異なるノードのゲート間のうち、選択されたゲート間に、前記経路が設けられ、各ノードの２番目以降のゲートにおいては、前記経路の接続関係に基づいてバリア同期制御がなされる、前記ノード部の経路を設定する処理を実行させるための構成管理プログラムであって、
前記コンピュータに、
異なるノードのゲート間に前記経路を設定する場合に、異なるノードのゲート間に設けられる前記経路のうち、各ノードの前記終点に近い前記経路の長さを、より前記終点から遠い前記経路の長さより短く設定する
処理を実行させるための構成管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、計算システム、構成管理装置および構成管理プログラムに関する。
【背景技術】
【０００２】
近年、グリッドコンピュータ（grid computer）等のプロセッサを有する多数のノードが結合された並列コンピュータシステムが広く用いられている。また、このような多数のノードが結合された並列コンピュータシステムにおいて、例えば、ノード間の同期を図ると共にノード間の通信を行う手法として、バリア同期や集団通信演算を実現するためにバタフライネットワークモデルを用いたシステムが知られている。
【０００３】
バリア同期では同期を取るポイント、つまりバリアポイントがプロセスの処理の進行段階（ステージ）に応じて設定され、バリア同期を行うプロセスはバリアポイントにプロセスの処理が到達した場合、プロセスの処理を一時的に停止することにより他のノードにおけるプロセスの処理の進行を待ち合わせる。バリア同期を行うプロセスは、バリア同期を行う、並列処理されている全てのプロセスがバリアポイントに到着した時点で、待ち合わせ状態を終了して停止した処理を再開する。これにより、複数のノード間で並列処理されている複数のプロセス間で、並列処理の同期をとることができる。
【０００４】
このバタフライネットワークモデルは、再帰的に構成されるネットワークモデルである。このような多数のノードをバタフライネットワークで接続したシステム処理を行う場合、まず、最初の段で、入力されたデータを処理すると共に、隣接する２つのノード同士で通信し、処理によって得られたデータを交換する。次に、それらのノードの処理によって得られたデータをさらに通信によって他のノードと交換し、各ノードがデータの処理および処理によって得られたデータの他のノードとの通信による交換を繰り返す。そして最終的に、各ノードに全ノードの処理結果を集めることで要求された処理を実行する。
【０００５】
ここで、ネットワークにおけるノードの接続に関して、以下の技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２１２３６０号公報
【特許文献２】特開２００７−１５６８５０号公報
【特許文献３】特開平９−１０６３８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のバタフライネットワークモデル等を用いて多数のノードが結合されたコンピュータシステムでは、段階毎に処理結果のデータが各ノード間を接続する経路を介して転送される。このため、ネットワーク内において多量のデータ通信が行われるので、ノード間のデータ転送量の増大に基づき、通信混雑、処理計算時間のロスが発生する場合があるという問題点がある。
【０００８】
本件はこのような点に鑑みてなされたものであり、ネットワーク内のデータの転送を効率化することが可能な計算システム、構成管理装置および構成管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために以下のような計算システムが提供される。この計算システムは、経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部と、ノード部の経路を設定する構成管理装置とを有する。この計算システムでは、構成管理装置は、ノード同士を接続する経路を設定する場合に、ノード部で処理結果のデータが出力される終点に近い経路の長さを、より終点から遠い経路の長さ以下に設定するノード管理部を有する。ノード部は、複数のノードがノード管理部により設定された経路で接続されているネットワークを用いてデータを処理する。
【００１０】
また、上記目的を達成するために以下のような構成管理装置が提供される。この構成管理装置は、経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部の経路を設定する。この構成管理装置では、ノード管理部は、ノード同士を接続する経路を設定する場合に、ノード部で処理結果のデータが出力される終点に近い経路の長さを、より終点から遠い経路の長さ以下に設定する。
【００１１】
また、上記目的を達成するために以下のような構成管理プログラムが提供される。この構成管理プログラムは、コンピュータに、経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部の経路を設定する処理を実行させる。この構成管理プログラムでは、コンピュータに、ノード同士を接続する経路を設定する場合に、ノード部で処理結果のデータが出力される終点に近い経路の長さを、より終点から遠い経路の長さ以下に設定するステップ、を実行させる。
【発明の効果】
【００１２】
開示の計算システム、構成管理装置および構成管理プログラムによれば、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の構成管理装置を示す図である。
【図２】第２の実施の形態のシステム構成を示す図である。
【図３】第２の実施の形態のサーバのハードウェア構成を示す図である。
【図４】第２の実施の形態のノードのハードウェア構成を示す図である。
【図５】第２の実施の形態のサーバの機能を示すブロック図である。
【図６】第２の実施の形態のノードのネットワークを示す図である。
【図７】第２の実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理の様子を示す図である。
【図８】第２の実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理の様子を示す図である。
【図９】第２の実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理の様子を示す図である。
【図１０】第２の実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理の様子を示す図である。
【図１１】第２の実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理の様子を示す図である。
【図１２】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１３】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１４】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１５】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１６】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１７】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１８】第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
【図１９】第２の実施の形態のネットワーク構成処理を示すフローチャートである。
【図２０】第２の実施の形態のネットワーク構成処理を示すフローチャートである。
【図２１】第２の実施の形態のネットワーク構成処理を示すフローチャートである。
【図２２】第２の実施の形態の使用ゲート数算出処理１を示すフローチャートである。
【図２３】第２の実施の形態の使用ゲート数算出処理２を示すフローチャートである。
【図２４】第２の実施の形態のゲート接続先設定処理を示すフローチャートである。
【図２５】第２の実施の形態の最後ゲート接続先設定処理を示すフローチャートである。
【図２６】第２の実施の形態の最初ゲート接続先設定処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して実施の形態を説明する。
［第１の実施の形態］
図１は、第１の実施の形態の構成管理装置を示す図である。本実施の形態の構成管理装置１は、ノード管理部１ａを有する。また、構成管理装置１は、ノード部２とＬＡＮ（Local Area Network）等の通信回線で接続されている。また、ノード部２は、互いの間に接続する経路を設定可能な複数のノード２ａ，２ｂ，２ｃ，２ｄを有する。
【００１５】
構成管理装置１は、ノード管理部１ａにより、データを処理するノード部２におけるノード同士を接続する経路を設定する。構成管理装置１が設定した経路に従ってノード間で送受信が行われることにより、ノード部２で処理が実行される。
【００１６】
ノード管理部１ａは、ノード部２のノード同士を接続する経路を設定してネットワークを構成する。この場合、ノード管理部１ａは、ノード部２で処理結果のデータが出力される終点に近い経路２ｅの長さを、より終点から遠い経路の長さ２ｆ以下に設定する。
【００１７】
本実施の形態のように、ネットワークモデルを用いたノード２ａ〜２ｄが互いにノード管理部１ａによって設定される経路で接続され、ノード２ａ〜２ｄが互いの処理結果を交換しながら処理を行う計算システムでは、各ノードの処理を経た結果、最初の段のノード間のデータの転送量は少なく、処理の段階が進むに従ってノード間のデータの転送量が次第に増加する場合が多いという傾向がある。そして、データが出力される終点に最も近い最後の段の通信においてノード間のデータの転送量が最も多くなる場合が多いという傾向がある。ノード管理部１ａは、これらに基づいて、ノード部２で処理結果のデータが出力される終点に近い経路２ｅの長さを短く設定することで、計算システムの処理の効率化を図る。
【００１８】
ノード部２は、ノード２ａ〜２ｄのそれぞれが、受信したデータに対して演算等の処理を行った結果である処理結果のデータを他のノードに送信することで、図示しないクライアント装置等からの要求に応じてデータを処理する。ノード２ａ〜２ｄは、それぞれがデータを処理するプロセッサを有しており、受信したデータを処理して処理結果のデータを他のノードに送信する。
【００１９】
ここで、図１では、ノード２ａ〜２ｄが設定された経路に従って互いにデータを送受信しながら処理する様子を示す。ゲート（gate）２ａｇ１，２ａｇ２は、ノード２ａで実行される処理を分割する際の区切りとなる点を示す。なお、ゲート２ａｇ１'は、ノード部２の各ノードで処理された処理結果のデータを集約するダミーのゲートである。同様に、ゲート２ｂｇ１，２ｂｇ２は、ノード２ｂで実行される処理における段階の区分点を示し、ゲート２ｃｇ１，２ｃｇ２は、ノード２ｃで実行される処理における段階の区分点を示し、ゲート２ｄｇ１，２ｄｇ２は、ノード２ｄで実行される処理における段階の区分点を示す。ゲート２ａｇ１'， ゲート２ｂｇ１'， ゲート２ｃｇ１'，ゲート２ｄｇ１'は、ダミーのゲートである。また、各ゲート間を接続する矢印は、ゲート間のデータの送受信を行う経路（例えば、経路２ｅ１，２ｅ２，２ｆ１，２ｆ２）である。各ノードは、各ゲートにおいて、経路の矢印が示す向きにデータを送信する。経路は、ノード管理部１ａによって設定され、各ノードが各ゲートにおける処理が完了した都度、データが送受信される。
【００２０】
図１では、ノード２ａ〜２ｄで実行される処理の進行を、左側のゲートから右側のゲートに順次処理が移行されるように示すものとする。ノード２ａ〜２ｄで処理が開始され、ノード２ａにおける最初の区分された処理が完了すると、最初の区分された処理の結果のデータが、ノード２ａにより経路２ｆ１を介してゲート２ａｇ１からノード２ｃのゲート２ｃｇ２に送信される。また、ノード２ｃにおいて完了した最初の区分された処理の処理結果のデータが、ノード２ｃにより経路２ｆ２を介してゲート２ｃｇ１からノード２ａのゲート２ａｇ２に送信される。ゲート２ｂｇ１，２ｄｇ１においても、各ノードにより最初の区分された処理について、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。ここで、同一のノード同士を接続する経路では、実際にはノード間の処理結果のデータの送受信は行われず、処理結果のデータが処理を実行したノードで保持され、当該ノードで次の段階の処理に使用されることを意味する。次に、次の区分された処理である、ノード２ａにおいてゲート２ａｇ１における最初の区分された処理結果のデータおよびゲート２ｃｇ１からの経路２ｆ２で送受信された最初の区分された処理結果のデータに対する処理がノード２ａにより完了すると、ノード２ａにより、次の区分された処理の処理結果のデータが経路２ｅ１を介してノード２ａに隣接するノード２ｂのゲート２ｂｇ１'に送信される。また、ノード２ｂにおいて完了した次の区分された処理の処理結果のデータが、ノード２ｂによって経路２ｅ２を介してノード２ｂに隣接するノード２ａのゲート２ａｇ１'に送信される。ゲート２ｃｇ２，２ｄｇ２においても、各ノードにより最初の区分された処理について、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。
【００２１】
次に、ノード２ａ〜２ｄは、ダミーのゲートであるゲート２ａｇ１'〜２ｄｇ１ 'において、ゲート２ａｇ２〜２ｄｇ２から送信されたデータを集計した集計結果または当該集計結果に基づいて生成した処理結果を、通信回線を介してクライアント装置等の処理の要求元に送信する。
【００２２】
なお、本実施の形態では、ノード部２は、４個のノード２ａ〜２ｄを有するが、これに限らず、ノード部２は、任意の個数のノードを有してもよい。また、ノード２ａ〜２ｄは、それぞれ２個のゲート２ａｇ１，２ａｇ２，２ｂｇ１，２ｂｇ２，２ｃｇ１，２ｃｇ２，２ｄｇ１，２ｄｇ２，を有するが、これに限らず、ノード２ａ〜２ｄは、それぞれ任意の個数のゲートを有してもよい。また、ノード部２は、自己が有するノードのうち一部のノードを使用せず、任意の個数を使用してネットワークを構成し、データの処理を行うこともできる。
【００２３】
以上のように、本実施の形態では、ノード部２のネットワークの構成について、例えば、最終段への経路２ｅを隣接するノードへの経路とする等、終点に近い経路２ｅを他の経路よりも短く設定することで、ノード部２のネットワーク内の経路の長さ辺りのデータの転送量を減少させ、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
【００２４】
［第２の実施の形態］
次に、図１に示した構成管理装置１の、ネットワーク内のデータの転送を効率化する機能について、サーバ１００に適用した実施の形態を、第２の実施の形態として説明する。
【００２５】
図２は、第２の実施の形態のシステム構成を示す図である。図２に示す計算システムは、サーバ１００、ノード部２００、クライアント装置３００を有する。サーバ１００およびノード部２００ならびにサーバ１００およびクライアント装置３００は、それぞれＬＡＮ等のネットワーク１０を介して通信可能に接続されている。
【００２６】
サーバ１００は、クライアント装置３００からの処理の要求をジョブに分割してノード部２００に送信し、ジョブの処理結果をノード部２００から受け取ると、クライアント装置３００に送信する。
【００２７】
ノード部２００は、分配されたジョブを処理するノード２０１ａ，２０１ｂ，２０１ｃ，２０１ｄ，２０１ｅ，２０１ｆ，２０１ｇ，２０１ｈ，２０１ｓ，２０２ｔ，２０１ｕ，２０１ｖ，２０１ｗ，２０１ｘ，２０１ｙ，２０１ｚを有する。ノード２０１ａ〜２０１ｚは、分配されたジョブの結果をサーバ１００が構成したネットワークモデルに従って互いに交換し、処理結果を集約してサーバ１００に送信する。
【００２８】
ノード部２００は、複数のノードを有すると共に、メモリ分散型の並列計算をサポートするライブラリであるＭＰＩ（Message Passing Interface）を実装し、サーバ１００の指示に基づいて任意の個数のノードを使用したネットワークを構成し、構成したネットワークで要求された処理を実行する。図２の例では、ノード部２００は、１６個のノード２０１ａ〜２０１ｚを有する。ノード２０１ａ〜２０１ｚは、ネットワーク１０を介して互いに通信することによりバリア同期を行って並列演算を実行する。
【００２９】
ここで、バリア同期について簡単に説明する。本実施の形態の計算システムのノード部２００で実行される処理は、複数の段階に分割されると共に、各ノードで分割された段階毎に実行されるものとする。バリア同期では、バリア同期を実行する各ノードは、処理のそれぞれの段階が完了して同期をとるポイント（バリアポイント）に到着した場合、自身の処理を停止する。すなわち、各ノードは、処理の段階が終了してバリアポイントに到達した場合、各々、他のノードによる処理がバリアポイントに到着するのを待ち合わせる。各ノードは、バリア同期を行うノード部２００のすべてのノードによる処理がバリアポイントに到着した時点（すなわち、バリア同期が成立した時点）で、次の処理の段階を開始する。これにより、プロセスを並列処理する複数のノード間で、段階毎に並列処理の同期をとることができる。
【００３０】
このようなバリア同期を実現するアルゴリズムの１つに、バタフライ演算がある。以下
、バタフライ演算を単に「バタフライ」と称する。バタフライにおいては、処理を複数の
段階に分割し、段階毎に他のノードと信号の通信を行う。
【００３１】
クライアント装置３００は、ユーザが操作する情報処理装置である。クライアント装置３００は、サーバ１００に対してノード部２００で処理される要求を、ネットワーク１０を介して送信し、サーバ１００から送信された処理結果を、ネットワーク１０を介して受信する。
【００３２】
図３は、第２の実施の形態のサーバのハードウェア構成を示す図である。サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２および複数の周辺機器が接続されている。
【００３３】
ＲＡＭ１０２は、サーバ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００３４】
バス１０８に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００３５】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、サーバ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリ等の半導体記憶装置を使用することもできる。
【００３６】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＬＣＤ（Liquid Crystal Display）を用いた液晶表示装置等がある。
【００３７】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボール等がある。
【００３８】
光学ドライブ装置１０６は、レーザ光等を利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等がある。
【００３９】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４０】
なお、図３にはサーバ１００のハードウェア構成を示したが、クライアント装置３００も同様のハードウェア構成を有する。
図４は、第２の実施の形態のノードのハードウェア構成を示す図である。本実施の形態のノード２０１ａは、ＣＰＵ２０１ａ１、ＲＡＭ２０１ａ２、バリア同期装置２０１ａ３、通信インタフェース２０１ａ４を有する。ＣＰＵ２０１ａ１は、バス２０１ａ５を介してＲＡＭ２０１ａ２、バリア同期装置２０１ａ３、通信インタフェース２０１ａ４と接続されている。
【００４１】
ＣＰＵ２０１ａ１は、ノード２０１ａの全体を制御する。また、ＣＰＵ２０１ａ１は、バス２０１ａ５を介して、ＲＡＭ２０１ａ２、バリア同期装置２０１ａ３、および、通信インタフェース２０１ａ４との間で必要なデータの送受信を行う。
【００４２】
ＣＰＵ２０１ａ１は、バス２０１ａ５を介して、バリア同期装置２０１ａ３に対してバリアポイント到達の信号を送信し、また、バリア同期装置２０１ａ３からバリア同期成立の信号を受信する。これにより、ＣＰＵ２０１ａ１は、サーバ１００によって設定されたネットワークの構成に基づいて、同期信号の送信先である次の段におけるバリア同期装置２０１ａ３の宛先を、バリア同期装置２０１ａ３に設定する。
【００４３】
また、ＣＰＵ２０１ａ１は、バス２０１ａ５を介して、ＲＡＭ２０１ａ２との間において、必要なデータの送受信を行う。これにより、ＣＰＵ２０１ａ１は、ＲＡＭ２０１ａ２にデータを書き込み、また、ＣＰＵ２０１ａ１はＲＡＭ２０１ａ２からデータを読み出す。このデータは、例えば、クライアント装置３００から処理を要求されたジョブのデータである。
【００４４】
ＲＡＭ２０１ａ２は、ノード２０１ａの主記憶装置として使用される。ＲＡＭ２０１ａ２には、ＣＰＵ２０１ａ１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０１ａ２には、ＣＰＵ２０１ａ１による処理に必要な各種データが格納される。
【００４５】
バリア同期装置２０１ａ３は、ＣＰＵ２０１ａ１による同期信号の送信先の設定に基づいて、ネットワーク１０を介して、他のノードのバリア同期装置２０１ａ３との間で行う通信に基づいて、バリア同期を行う。
【００４６】
通信インタフェース２０１ａ４は、ネットワーク１０を介してサーバ１００や他のノード（ノード２０１ｂ〜２０１ｚ）に対してデータや制御信号を出力すると共に、ネットワーク１０を介してサーバ１００や他のノードから送信されたデータや制御信号を受信する。
【００４７】
なお、図４にはノード２０１ａのハードウェア構成を示したが、ノード２０１ｂ〜２０１ｚも同様のハードウェア構成であり、同様の機能を有するので説明を省略する。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【００４８】
図５は、第２の実施の形態のサーバの機能を示すブロック図である。本実施の形態のサーバ１００は、電源制御部１１１、ノード管理部１１２、クライアント応答部１１３を有する。ノード部２００は、図示したノード２０１ａ，２０１ｂ，２０１ｃ，２０１ｄと、図示しない２０１ｅ，２０１ｆ，２０１ｇ，２０１ｆ，２０１ｇ，２０１ｈ，２０１ｓ，２０１ｔ，２０１ｕ，２０１ｖ，２０１ｗ，２０１ｘ，２０１ｙ，２０１ｚを有する。ノード管理部１１２は、ネットワーク１０でノード２０１ａ〜２０１ｚと接続されている。クライアント応答部１１３は、ネットワーク１０でクライアント装置３００と接続されている。また、ノード２０１ａ〜２０１ｚは、互いの間に接続する経路を設定可能である。
【００４９】
サーバ１００は、データを処理するノード部２００におけるノード同士を接続する経路を設定する。
電源制御部１１１は、ノード部２００およびノード２０１ａ〜２０１ｚに対して稼働に使用する電力を供給する。
【００５０】
ノード管理部１１２は、ノード部２００のノード同士を接続する経路を設定してネットワークを構成する。この場合、ノード管理部１１２は、ノード部２００のネットワークの構成について、例えば、最終段への経路を隣接するノードへの経路とする等、ノード部２００で処理結果のデータが出力される終点に近い経路の長さを、より終点から遠い経路の長さ以下に設定する。また、ノード管理部１１２は、ノード部２００の経路を、処理結果のデータが出力される終点に近い経路ほど、経路の長さを短く設定すると共に、終点から遠い経路ほど、経路の長さを長く設定する。経路の長さは、詳しくは図９において後述する転送ホップ数で定義される。なお、これに限らず、経路の長さは実際の物理的な経路長を用いてもよく、人為的に割り当てた重み付けを用いてもよい。
【００５１】
クライアント応答部１１３は、クライアント装置３００からの処理の要求および処理対象のデータをノード部２００に送信し、ノード部２００から送信された処理結果を受信してクライアントに送信する。
【００５２】
本実施の形態の計算システムでは、処理が複数の段階（ステージ）に区分されて進められると共に、バタフライネットワークモデルを用いたそれぞれプロセッサを有する複数のノード２０１ａ〜２０１ｚが経路で接続され、ノード２０１ａ〜２０１ｚが互いの処理結果を交換しながら処理を行う。このような計算システムでは、ノード２０１ａ〜２０１ｚのそれぞれの処理において、最初の段階のノード間のデータの転送量は少なく、段階が進むに従ってノード間のデータの転送量が次第に増加する場合が多いという傾向がある。すなわち、データが出力される終点に最も近い最終段の通信においてノード間のデータの転送量が最も多くなる場合が多いという傾向があることになる。ノード管理部１１２は、これに基づいて、ノード部２００で処理結果のデータが出力される終点に近い経路の長さを短く設定することで、計算システムの処理の効率化を図る。
【００５３】
ノード部２００は、ノード２０１ａ〜２０１ｚのそれぞれが、受信したデータを処理して処理結果のデータを他のノードに送信することで、クライアント装置３００からの処理の要求に応じてデータを処理する。ノード２０１ａ〜２０１ｚは、それぞれがデータを処理するプロセッサとして、ＣＰＵ（例えば、ＣＰＵ２０１ａ１）を有しており、受信したデータを処理して処理結果のデータを他のノードに送信する。
【００５４】
本実施の形態のノード部２００が有するネットワークは、各ノードが経路によって再帰的に接続されるバタフライネットワークである。ノード部２００は、各ノードで実行される処理が複数の段階の処理に分割されていると共にバリア同期により分割された段階の処理毎に他のノードの処理の完了を待ち合わせる。
【００５５】
ゲート１（ゲートｇａ１，ｇｂ１，ｇｃ１，ｇｄ１）、ゲート２（ゲートｇａ２，ｇｂ２，ｇｃ２，ｇｄ２）は、ノード２０１ａ〜２０１ｄで実行される処理を分割する際の区切りとなる点を示す。ゲート１'（ゲートｇａ１'，ｇｂ１'，ｇｃ１'，ｇｄ１'）は、ノード部２００のノード２０１ａ〜２０１ｄで処理された処理結果のデータを集約するダミーのゲートである。また、各ゲート間を接続する矢印は、ゲート間のデータの送受信を行う経路である。各ノードは、各ゲートにおいて、経路の矢印が示す向きにデータを送信する。経路は、ノード管理部１１２によって設定され、各ノードが各ゲートにおける処理が完了した都度、データが送受信される。本実施の形態では、ゲートが、上記バリアポイントとして機能する。
【００５６】
図５では、ノード２０１ａ〜２０１ｄで実行される処理の進行を、左側のゲートから右側のゲートに順次処理が移行されるように示すものとする。ノード２０１ａ〜２０１ｄで処理が開始され、ノード２０１ａにおける最初の区分された処理が完了すると、最初の区分された処理の結果のデータが、ノード２０１ａにより経路を介してゲートｇａ１からノード２０１ｃのゲートｇｃ２に送信される。また、ノード２０１ｃにおいて完了した最初の区分された処理の処理結果のデータが、ノード２０１ｃによって経路を介してゲートｇｃ１からノード２０１ａのゲートｇａ２に送信される。ノード２０１ｂ，２０１ｃにおいても、最初の区分された処理について、ゲートｇｂ１，ｇｄ１で、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。ここで、同一のノード同士を接続する経路では、実際にはノード間の処理結果のデータの送受信は行われず、処理結果のデータが処理を実行したノードで保持され、当該ノードで次の段階の処理に使用されることを意味する。次に、ノード２０１ａにより、次の区分された処理である、ノード２０１ａにおいてゲートｇａ１における最初の区分された処理結果のデータおよびゲートｇｃ１からの経路で送受信された最初の区分された処理結果のデータの処理が完了すると、ノード２０１ａにより、次の区分された処理の処理結果のデータが経路を介してノード２０１ｂのゲートｇｂ１'に送信される。また、ノード２０１ｂにおいてゲートｇｂ１で完了した次の区分された処理の処理結果のデータが、ノード２０１ｂにより、経路を介してノード２０１ａのゲートｇａ１'に送信される。ノード２０１ｃ，２０１ｄにおいても、各ノードにより最初の区分された処理について、ゲートｇｃ２，ｇｄ２で、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。
【００５７】
次に、ノード２０１ａ〜２０１ｄは、ダミーのゲートであるゲートｇａ１'〜ｇｄ１ 'において、ゲートｇａ２〜ｇｄ２から送信されたデータを集計した集計結果または当該集計結果に基づいて生成した処理結果を、ネットワーク１０を介して処理の要求元であるクライアント装置３００に送信する。
【００５８】
なお、本実施の形態では、ノード部２００は、各ノードがバタフライネットワークで接続されているが、これに限らず、各ノードが任意の構成のネットワークの経路で接続されていてもよい。例えば、ノード部２００は、各ノードを接続する経路のネットワークが３次元トーラス（torus）であってもよい。また、ノード部２００は、各ノードを接続する経路のネットワークがファットツリー（fat tree）であってもよい。
【００５９】
また、本実施の形態では、ノード部２００は、１６個のノード２０１ａ〜２０１ｚを有するが、これに限らず、ノード部２００は、任意の個数のノードを有してもよい。また、ノード部２００は、自己が有するノードのうち一部のノードを使用せず、任意の個数を使用してネットワークを構成し、データの処理を行うこともできる。
【００６０】
図６は、第２の実施の形態のノードのネットワークを示す図である。本実施の形態では、サーバ１００は、ノード部２００の任意の個数のノード（例えば、ノード２０１ａ〜２０１ｚの１６個のノード）を使用してネットワークを構成する。本実施の形態の計算システムでは、各ノードが構成に従って受信したデータを処理し、処理したデータを次のノードに送信することを繰り返して要求された処理を実行する。
【００６１】
図６に従い、ノード２０１ａ〜２０１ｚの１６個のノードを用いて４段階の処理を実行する場合の例を示す。
始点２０１ａｓは、ノード２０１ａで実行される処理の始点を示す。始点２０１ｂｓ〜始点２０１ｚｓについても、それぞれ、ノード２０１ｂ〜２０１ｚで実行される処理の始点を示す。終点２０１ａｅは、ノード２０１ａで実行される処理の終点を示す。終点２０１ｂｅ〜始点２０１ｚｅについても、それぞれ、ノード２０１ｂ〜２０１ｚで実行される処理の終点を示す。
【００６２】
ノード２０１ａには、ゲート（ｇａｔｅ）ｇａ１〜ｇａ４が、ノード２０１ａにおいて実行される処理の段階の同期をとるために設けられており、複数の段階（図６では４段階）に分割された処理における各段階の区切りとなる点を示す。また、ノード２０１ａには、ゲートｇａ１'が、ノード２０１ａの各ノードで処理された処理結果のデータを集約するダミーのゲートである。
【００６３】
同様に、ノード２０１ｂには、ゲートｇｂ１〜ｇｂ４およびゲートｇｂ１'が設けられている。ノード２０１ｃには、ゲートｇｃ１〜ｇｃ４およびゲートｇｃ１'が設けられている。ノード２０１ｄには、ゲートｇｄ１〜ｇｄ４およびゲートｇｄ１'が設けられている。ノード２０１ｅには、ゲートｇｅ１〜ｇｅ４およびゲートｇｅ１'が設けられている。ノード２０１ｆには、ゲートｇｆ１〜ｇｆ４およびゲートｇｆ１'が設けられている。ノード２０１ｇには、ゲートｇｇ１〜ｇｇ４およびゲートｇｇ１'が設けられている。ノード２０１ｈには、ゲートｇｈ１〜ｇｈ４およびゲートｇｈ１'が設けられている。ノード２０１ｓには、ゲートｇｓ１〜ｇｓ４およびゲートｇｓ１'が設けられている。ノード２０１ｔには、ゲートｇｔ１〜ｇｔ４およびゲートｇｔ１'が設けられている。ノード２０１ｕには、ゲートｇｕ１〜ｇｕ４およびゲートｇｕ１'が設けられている。ノード２０１ｖには、ゲートｇｖ１〜ｇｖ４およびゲートｇｖ１'が設けられている。ノード２０１ｗには、ゲートｇｗ１〜ｇｗ４およびゲートｇｗ１'が設けられている。ノード２０１ｘには、ゲートｇｘ１〜ｇｘ４およびゲートｇｘ１'が設けられている。ノード２０１ｙには、ゲートｇｙ１〜ｇｙ４およびゲートｇｙ１'が設けられている。ノード２０１ｚには、ゲートｇｚ１〜ｇｚ４およびゲートｇｚ１'が設けられている。
【００６４】
ノード２０１ａ〜２０１ｄは、各ゲートにおいて、縦方向に並んだ同期をとる対象のゲート（例えば、ゲートｇａ１の場合には、同期をとる対象はゲートｇｂ１，・・・，ｇｚ１）の処理の段階がノード２０１ａ〜２０１ｄで終了するまで待ち合わせ、ノード２０１ａ〜２０１ｄで同期をとるゲートの処理が完了すると、ノード２０１ａ〜２０１ｄは、次の段階の処理を開始する。すなわち、ノード２０１ａ〜２０１ｄで同期をとるゲートの処理が完了すると、ノード２０１ａ〜２０１ｄは、次のゲート（例えば、それぞれゲートｇａ２，・・・，ｇｚ２）に進める。以上のように処理の段階を進めていき、その後、ゲートｇａ４，・・・ｇｚ４の段階の処理が完了すると、ノード２０１ａ〜２０１ｄは、それぞれダミーのゲートであるゲートｇａ１'，・・・，ｇｚ１'に進んで経路で接続されたノードの処理結果を集約する。ノード２０１ａ〜２０１ｄは、それぞれゲートｇａ１'，・・・，ｇｚ１'において、処理されたデータの集約がすべてのノードで完了すると、終点２０１ａｅ，・・・２０１ｚｅにおいて、受信したデータをサーバ１００に送信する。サーバ１００は、各ノードから送信されたデータを収集して、要求された処理の最終的な処理結果をクライアント装置３００に送信する。
【００６５】
また、図６の矢印は、サーバ１００によって設定された、各段階におけるノードによる処理結果のデータの経路を示す。例えば、ゲートｇａ１からゲートｇｓ２およびゲートｇａ２に向かって矢印が示されている。ゲートｇａ１からゲートｇｓ２に向かう矢印は、ゲートｇａ１で処理されたデータがゲートｇｓ２に送信される経路を示す。ゲートｇａ１からゲートｇａ２に向かう矢印は、ゲートｇａ１で処理されたデータがゲートｇａ２にも送信される経路を示す。ここで、同一のノード同士を接続する経路では、実際にはノード間の処理結果のデータの送受信は行われず、処理結果のデータが処理を実行したノードで保持され、当該ノードで次の段階の処理に使用されることを意味する。すなわち、ゲートｇａ１からゲートｇａ２に向かう矢印は、同一のノードであるノード２０１ａｓ同士を接続する経路である。このため、ゲートｇａ１からゲートｇａ２の経路ではデータの送受信は行われず、ゲートｇａ１の処理結果のデータは、ノード２０１ｓｓに送信されると共にノード２０１ａｓで保持される。ノード２０１ａｓは、ノード２０１ｓｓから送信されたデータと共に保持しているゲートｇａ１で処理されたデータを使用してゲートｇａ２における処理を実行する。ここでは説明を省略するが、他のノードについても同様に処理が行われる。
【００６６】
次に、本実施の形態のサーバ１００が、ノード部２００における各ノードのネットワークを構成する処理の様子を説明する。本実施の形態では、図１９から図２１において後述するネットワーク構成による処理において、サーバ１００がランク数（処理に使用するノード数）に基づいてノード部２００におけるノードのゲート間に経路を設定することにより、ノード部２００のネットワークを構成する。このとき、ランク数が２のべき数（“ｎ”を任意の自然数とした場合に“ｎ2”で表すことができる数）である場合と、ランク数が２のべき数でない場合とでネットワークの構成方法が異なる。以下、本実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理およびランク数が２のべき数でない場合のネットワークの構成時の処理について説明する。
【００６７】
図７から図１１は、第２の実施の形態のランク数が２のべき数である場合のネットワークの構成時の処理の様子を示す図である。
本実施の形態のサーバ１００は、図７に示すように、まず構成するネットワークのランク数を取得し、構成するネットワークのランク数に設定する。図７では、サーバ１００は、ランク数として“４”を取得したものとする。これに基づいて、図７に示すように、サーバ１００により、ランク“０”，“１”，“２”，“３”の４個のノード（それぞれノード２０１ａ，２０１ｂ，２０１ｃ，２０１ｄ）が設定される。また、図７に示すように、サーバ１００により、ノード２０１ａの始点２０１ａｓおよび終点２０１ａｅ、ノード２０１ｂの始点２０１ｂｓおよび終点２０１ｂｅ、ノード２０１ｃの始点２０１ｃｓおよび終点２０１ｃｅならびにノード２０１ｄの始点２０１ｄｓおよび終点２０１ｄｅが設定される。
【００６８】
次に、サーバ１００は、取得したランク数の２を底とする対数（ランク数を“Ｒ”とした場合、ｌｏｇ2Ｒ（小数点以下切り捨て））を算出し、結果を使用ゲート数に設定する。上記のようにランク数が４の場合、使用ゲート数は、ｌｏｇ2Ｒ＝ｌｏｇ2４＝２となる。これに従い、図８に示すように、サーバ１００により、各ノードに対して、２個のゲート（ゲート１，２）および１個のダミーのゲート（ゲート１'）が設定される。なお、ダミーのゲートは、使用ゲート数には含まないものとする。具体的には、サーバ１００により、ノード２０１ａに対して、ゲートｇａ１，ｇａ２，ｇａ１'が設定される。同様に、サーバ１００により、ノード２０１ｂに対して、ゲートｇｂ１，ｇｂ２，ｇｂ１'が設定され、ノード２０１ｃに対して、ゲートｇｃ１，ｇｃ２，ｇｃ１'が設定され、ノード２０１ｄに対して、ゲートｇｄ１，ｇｄ２，ｇｄ１'が設定される。
【００６９】
次に、サーバ１００は、各ゲート間（例えば、各ノードにおけるゲート１からゲート２の間、ゲート２からゲート１'の間）を接続する経路であって、ランクが増加する方向（図９における下方向）の経路を設定する。このとき、サーバ１００は、経路を各ノードの終点に近いほど経路の長さが短く（転送ホップ数が少なく）、終点から遠いほど（すなわち、始点に近いほど）経路の長さが長く（転送ホップ数が多く）なるように設定する。上記のようにランク数が４の場合、図９に示すように、サーバ１００により、ノード２０１ａ〜２０１ｄのそれぞれの終点２０１ａｅ〜２０１ｄｅに近い経路（図９における右側）の長さが短く、終点２０１ａｅ〜２０１ｄｅから遠い（すなわち、始点２０１ａｓ〜２０１ｄｓに近い）経路（図９における左側）の長さが長くなるように設定される。ここで、経路の長さは、経路が接続する２つのゲートのランクの値の差（以下、転送ホップ数とする）によって定義するものとする。転送ホップ数が異なる２つの経路がある場合、転送ホップ数が多い経路の方が長く、転送ホップ数が小さい経路の方が短いものとする。例えば、図９に示すランク０のノード２０１ａのゲートｇａ１からランク２のノード２０１ｃのゲートｇｃ２の経路は、転送ホップ数が、ランク２−ランク０＝２となる。また、ランク０のノード２０１ａのゲートｇａ２からランク１のノード２０１ｂのゲートｇｂ１'の経路は、転送ホップ数が、ランク１−ランク０＝１となる。従って、終点に近いゲートｇａ２からゲートｇｂ１'の経路は、終点から遠いゲートｇａ１からゲートｇｃ２の経路よりも短いことになる。
【００７０】
サーバ１００によるゲート間のランクが増加する方向の経路の設定は、具体的には、終点２０１ａｅ〜２０１ｄｅ側に最も近い経路である、ゲート２からゲート１'の経路において、ランク０のノード２０１ａのゲートｇａ２から、１つランクが増加するランク１のノード２０１ｂのゲートｇｂ１'に向かう転送ホップ数１の経路が設定される。また、サーバ１００により、ランク２のノード２０１ｃのゲートｇｃ２から、１つランクが増加するランク３のノード２０１ｄのゲートｇｄ１'に向かう転送ホップ数１の経路が設定される。
【００７１】
また、サーバ１００により、ゲート２からゲート１'の経路と比較して終点２０１ａｅ〜２０１ｄｅ側から遠いゲート１からゲート２の経路において、ランク０のノード２０１ａのゲートｇａ１から、２つランクが増加するランク２のノード２０１ｃのゲートｇｃ２に向かう転送ホップ数２の経路が設定される。また、サーバ１００により、ランク１のノード２０１ｂのゲートｇｂ１から、２つランクが増加するランク３のノード２０１ｄのゲートｇｄ２に向かう転送ホップ数２の経路が設定される。
【００７２】
次に、サーバ１００は、各ゲート間を接続する経路であって、ランクが減少する方向（図１０における上方向）の経路を設定する。このとき、サーバ１００は、図９と同様、経路を各ノードの終点に近いほど経路の長さが短く（転送ホップ数が少なく）、終点から遠いほど経路の長さが長く（転送ホップ数が多く）なるように設定する。
【００７３】
サーバ１００によるゲート間のランクが減少する方向の経路の設定は、具体的には、終点２０１ａｅ〜２０１ｄｅ側に最も近いゲート２からゲート１'の経路において、ランク１のノード２０１ｂのゲートｇｂ２から、１つランクが減少するランク０のノード２０１ａのゲートｇａ１'に向かう転送ホップ数１の経路が設定される。また、サーバ１００により、ランク３のノード２０１ｄのゲートｇｄ２から、１つランクが減少するランク２のノード２０１ｃのゲートｇｃ１'に向かう転送ホップ数１の経路が設定される。
【００７４】
また、ゲート２からゲート１'の経路と比較して終点２０１ａｅ〜２０１ｄｅ側から遠いゲート１からゲート２の経路において、サーバ１００により、ランク２のノード２０１ｃのゲートｇｃ１から、２つランクが減少するランク０のノード２０１ａのゲートｇａ２に向かう転送ホップ数２の経路が設定される。また、サーバ１００により、ランク３のノード２０１ｄのゲートｇｄ１から、２つランクが減少するランク１のノード２０１ｂのゲートｇｂ２に向かう転送ホップ数２の経路が設定される。
【００７５】
次に、サーバ１００は、同一のノードに属するゲート同士を接続する経路を設定する。具体的には、サーバ１００により、ノード２０１ａのゲートｇａ１からゲートｇａ２を接続する経路およびゲートｇａ２からゲートｇａ１'を接続する経路が設定される。また、サーバ１００により、ノード２０１ｂのゲートｇｂ１からゲートｇｂ２を接続する経路およびゲートｇｂ２からゲートｇｂ１'を接続する経路が設定される。また、サーバ１００により、ノード２０１ｃのゲートｇｃ１からゲートｇｃ２を接続する経路およびゲートｇｃ２からゲートｇｃ１'を接続する経路が設定される。また、サーバ１００により、ノード２０１ｄのゲートｇｄ１からゲートｇｄ２を接続する経路およびゲートｇｄ２からゲートｇｄ１'を接続する経路が設定される。
【００７６】
そして、図１１に、サーバ１００が設定した上記すべての経路を示す。以上のように、本実施の形態では、サーバ１００は、ランク数が２のべき数である場合、ノード２０１ａ〜２０１ｄのゲートを接続する経路について、終点２０１ａｅ〜２０１ｄｅに近い経路は転送ホップ数を少なく設定する。また、サーバ１００は、始点２０１ａｓ〜２０１ｄｓに近い経路は転送ホップ数を多く設定する。これにより、ノード２０１ａ〜２０１ｄのゲートを接続する経路について、終点２０１ａｅ〜２０１ｄｅに近いほど経路の長さが短く（転送ホップ数が少なく）、始点２０１ａｓ〜２０１ｄｓに近いほど経路の長さが長く（転送ホップ数が多く）設定される。
【００７７】
図１２から図１８は、第２の実施の形態のランク数が２のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
ここで、ランク数が２のべき数でない場合のネットワークの構成は、ランク数が２のべき数でない場合のネットワークにおいて、サーバ１００により、ランク数を超えない最大の２のべき数を“Ｂmax”とした場合に、Ｂmax個のノードでは、経路ランク数が２のべき数である場合のネットワークの構成と同様の経路が設定される。一方、ランク数から上記Ｂmax個のノードを除いた残りのノードでは、サーバ１００により、残りのノードの最初のゲートからの経路が上記Ｂmax個のノードのいずれかのノードに向けて設定されると共に、上記ランク数が２のべき数の場合と同様の経路が設定されたノードにおける最後から２番目のゲートから、上記残りのノードの最後のゲートに向かう経路が設定される。
【００７８】
具体的には、図１８に示すランク数“５”を超えない最大の２のべき数“４”個のノードであるランク０，１，２，３の４個のノードについては、サーバ１００により、ゲート２からゲート３の経路およびゲート３からゲート２の経路が、図１１に示すランク０，１，２，３のゲート１からゲート２の経路およびゲート２からゲート１'の経路と同様に設定される。一方、残りのノードであるランク４のノードでは、サーバ１００により、ランク４のゲートｇｅ１からの経路がランク０のゲートｇａ２に向けて設定されると共に、上記ランク数が２のべき数の場合と同様の経路が設定されたランク０のゲートｇａ４からランク４のゲートｇｅ１'に経路が設定される。以下、図１２から図１８に従って、ランク数が２のべき数でない場合のサーバ１００によるノード部２００のネットワークの構成時の様子について、具体的に説明する。
【００７９】
本実施の形態のサーバ１００は、ランク数が２のべき数である場合と同様、図１２に示すように、まず構成するネットワークのランク数を取得し、構成するネットワークのランク数に設定する。図１２では、サーバ１００は、ランク数として“５”を取得したものとする。これに基づいて、図１２に示すように、サーバ１００により、ランク“０”，“１”，“２”，“３”，“４”の５個のノード（それぞれノード２０１ａ，２０１ｂ，２０１ｃ，２０１ｄ，２０１ｅ）が設定される。また、図１２に示すように、サーバ１００により、ノード２０１ａの始点２０１ａｓおよび終点２０１ａｅ、ノード２０１ｂの始点２０１ｂｓおよび終点２０１ｂｅ、ノード２０１ｃの始点２０１ｃｓおよび終点２０１ｃｅ、ノード２０１ｄの始点２０１ｄｓおよび終点２０１ｄｅならびにノード２０１ｅの始点２０１ｅｓおよび終点２０１ｅｅが設定される。
【００８０】
次に、サーバ１００は、取得したランク数の２を底とする対数（小数点以下切り捨て）を算出すると共に２を加算し、結果を使用ゲート数に設定する。上記のようにランク数が５の場合、使用ゲート数は、ｌｏｇ2Ｒ＝ｌｏｇ2５≒２．３２１９・・・となり、さらに小数点以下を切り捨てた上で２を加算すると、使用ゲート数は４となる。これに従い、図１３に示すように、サーバ１００により、各ノードに対して、４個のゲート（ゲート１，２，３，４）および１個のダミーのゲート（ゲート１'）が設定される。具体的には、サーバ１００により、ノード２０１ａに対して、ゲートｇａ１，ｇａ２，ｇａ３，ｇａ４，ｇａ１'が設定される。同様に、サーバ１００により、ノード２０１ｂに対して、ゲートｇｂ１，ｇｂ２，ｇｂ３，ｇｂ４，ｇｂ１'が設定され、ノード２０１ｃに対して、ゲートｇｃ１，ｇｃ２，ｇｃ３，ｇｃ４，ｇｃ１'が設定され、ノード２０１ｄに対して、ゲートｇｄ１，ｇｄ２，ｇｄ３，ｇｄ４，ｇｄ１'が設定され、ノード２０１ｅに対して、ゲートｇｅ１，ｇｅ２，ｇｅ３，ｇｅ４，ｇｅ１'が設定される。
【００８１】
次に、サーバ１００は、各ゲート間を接続する経路であって、ランクが増加する方向（図１４における下方向）の経路を設定する。このとき、サーバ１００は、ランク数が２のべき数である場合と同様、経路を各ノードの終点に近いほど経路の長さが短く（転送ホップ数が少なく）、終点から遠いほど経路の長さが長く（転送ホップ数が多く）なるように設定する。上記のようにランク数が５の場合、図１４に示すように、サーバ１００により、ノード２０１ａ〜２０１ｅのそれぞれの終点２０１ａｅ〜２０１ｅｅに近い経路（図１４における右側）の長さが短く、終点２０１ａｅ〜２０１ｅｅから遠い経路（図１４における左側）の長さが長くなるように設定される。
【００８２】
サーバ１００によるゲート間のランクが増加する方向の経路の設定は、具体的には、ゲート３からゲート４の経路において、ランク０のノード２０１ａのゲートｇａ３から、１つランクが増加するランク１のノード２０１ｂのゲートｇｂ４に向かう転送ホップ数１の経路が設定される。また、サーバ１００により、ランク２のノード２０１ｃのゲートｇｃ３から、１つランクが増加するランク３のノード２０１ｄのゲートｇｄ４に向かう転送ホップ数１の経路が設定される。
【００８３】
また、ゲート３からゲート４の経路に比較して終点２０１ａｅ〜２０１ｅｅに遠いゲート２からゲート３の経路において、サーバ１００により、ランク０のノード２０１ａのゲートｇａ２から、２つランクが増加するランク２のノード２０１ｃのゲートｇｃ３に向かう転送ホップ数２の経路が設定される。また、サーバ１００により、ランク１のノード２０１ｂのゲートｇｂ２から、２つランクが増加するランク３のノード２０１ｄのゲートｇｄ３に向かう転送ホップ数２の経路が設定される。
【００８４】
次に、サーバ１００は、各ゲート間を接続する経路であって、ランクが減少する方向（図１５における上方向）の経路を設定する。このとき、サーバ１００は、図１４と同様、経路を各ノードの終点に近いほど経路の長さが短く（転送ホップ数が少なく）、終点から遠いほど経路の長さが長く（転送ホップ数が多く）なるように設定する。
【００８５】
サーバ１００によるゲート間のランクが減少する方向の経路の設定は、具体的には、ゲート３からゲート４の経路において、ランク１のノード２０１ｂのゲートｇｂ３から、１つランクが減少するランク０のノード２０１ａのゲートｇａ４に向かう転送ホップ数１の経路が設定される。また、サーバ１００により、ランク３のノード２０１ｄのゲートｇｄ３から、１つランクが減少するランク２のノード２０１ｃのゲートｇｃ４に向かう転送ホップ数１の経路が設定される。
【００８６】
また、ゲート３からゲート４の経路に比較して終点２０１ａｅ〜２０１ｅｅに遠いゲート２からゲート３の経路において、サーバ１００により、ランク２のノード２０１ｃのゲートｇｃ４から、２つランクが減少するランク０のノード２０１ａのゲートｇａ３に向かう転送ホップ数２の経路が設定される。また、サーバ１００により、ランク３のノード２０１ｄのゲートｇｄ２から、２つランクが減少するランク１のノード２０１ｂのゲートｇｂ３に向かう転送ホップ数２の経路が設定される。
【００８７】
次に、サーバ１００は、上記ランク数が２のべき数の場合と同様の経路が設定されたノードのゲートから上記残りのノードにおける最後のゲートに接続する経路を設定する。具体的には、図１６に示すように、サーバ１００により、ランク０のノード２０１ａのゲートｇａ４からランク４のノード２０１ｅのゲートｇｅ１'の経路が設定される。ここで、図１６では、残りのノードが１つである場合について説明しているが、残りのノードが複数あってもよい。この場合、サーバ１００により、複数の残りのノードにおける最後のゲートと、経路が設定されたノードのうちの異なるノードのゲートとが接続される経路が設定される。
【００８８】
次に、サーバ１００は、上記残りのノードの最初のゲートから上記ランク数が２のべき数の場合と同様の経路が設定されたノードのゲートに接続する経路を設定する。具体的には、図１７に示すように、サーバ１００により、ランク４のノード２０１ｅのゲートｇｅ１からランク０のノード２０１ａのゲートｇａ２の経路が設定される。ここで、図１７では、図１６と同様に、残りのノードが１つである場合について説明しているが、残りのノードが複数あってもよい。この場合、サーバ１００により、複数の残りのノードの最初のゲートと、経路が設定されたノードのうちの異なるノードのゲートとが接続される経路が設定される。
【００８９】
次に、サーバ１００は、ランク数を超えない最大の２のべき数であるＢmax個のノードについて、サーバ１００により、同一のノードに属するゲート同士を接続する経路を設定する。具体的には、サーバ１００により、ノード２０１ａのゲートｇａ１からゲートｇａ２を接続する経路、ゲートｇａ２からゲートｇａ３を接続する経路、ゲートｇａ３からゲートｇａ４を接続する経路およびゲートｇａ４からゲートｇａ１'を接続する経路が設定される。また、サーバ１００により、ノード２０１ｂのゲートｇｂ１からゲートｇｂ２を接続する経路、ゲートｇｂ２からゲートｇｂ３を接続する経路、ゲートｇｂ３からゲートｇｂ４を接続する経路およびゲートｇｂ４からゲートｇｂ１'を接続する経路が設定される。また、サーバ１００により、ノード２０１ｃのゲートｇｃ１からゲートｇｃ２を接続する経路、ゲートｇｃ２からゲートｇｃ３を接続する経路、ゲートｇｃ３からゲートｇｃ４を接続する経路およびゲートｇｃ４からゲートｇｃ１'を接続する経路が設定される。また、サーバ１００により、ノード２０１ｄのゲートｇｄ１からゲートｇｄ２を接続する経路、ゲートｇｄ２からゲートｇｄ３を接続する経路、ゲートｇｄ３からゲートｇｄ４を接続する経路およびゲートｇｄ４からゲートｇｄ１'を接続する経路が設定される。なお、ランク４であるノード２０１ｅについては、ランク数（ランク０〜４の５個）が上記ランク数を超えない最大の２のべき数であるＢmax＝４を超えていると共に、既にランク０〜４のＢmax個のノードで経路が設定されるのでネットワークを構成しない。従って、ランク４のノード２０１ｅに属するゲート同士を接続する経路が設定されない。
【００９０】
そして、図１８に、サーバ１００が設定した上記すべての経路を示す。以上のように、本実施の形態では、サーバ１００は、ランク数が２のべき数でない場合、ノード２０１ａ〜２０１ｅのゲートを接続する経路について、終点２０１ａｅ〜２０１ｅｅに近い経路は転送ホップ数を少なく設定する。また、サーバ１００は、始点２０１ａｓ〜２０１ｅｓに近い経路は転送ホップ数を多く設定する。これにより、ノード２０１ａ〜２０１ｅのゲートを接続する経路について、終点２０１ａｅ〜２０１ｅｅに近いほど経路の長さが短く（転送ホップ数が少なく）、始点２０１ａｓ〜２０１ｅｓに近いほど経路の長さが長く（転送ホップ数が多く）設定される。
【００９１】
また、図１８に示すように、ランク４（ノード２０１ｅ）のゲートｇｅ２，ｇｅ３，ｇｅ４は、ネットワークを構成せず、これらの段階（ステージ）では、ノード２０１ｅは、クライアント装置３００によって要求された処理に使用されない。すなわち、ゲートｇｅ２，ｇｅ３，ｇｅ４ではノード２０１ｅは、データの処理および処理結果の送受信を実行しない。
【００９２】
図１９から図２１は、第２の実施の形態のネットワーク構成処理を示すフローチャートである。本実施の形態のサーバ１００は、ノード部２００に含まれるノードの個数であるランク数を取得し、取得したランク数に基づいてノード部２００のネットワークの構成を設定するネットワーク構成処理を実行する。以下では、図１９から図２１に示すネットワーク構成処理を各フローチャートのステップ番号に沿って説明する。
【００９３】
［ステップＳ１１］ノード管理部１１２は、ユーザの操作によりクライアント装置３００から入力されたランク数を取得し、取得したランク数を“Ｒ”に設定する。これにより、ノード部２００のランク数（すなわち図７および図１２において前述したノードの個数）が決定され、ノード部２００に決定された個数のノードが設定される。
【００９４】
［ステップＳ１２］ノード管理部１１２は、ステップＳ１１で取得したランク数が、「２のべき数」であるか否かを判定する。ランク数が２のべき数であれば（ステップＳ１２  ＹＥＳ）、処理はステップＳ１３に進められる。一方、ランク数が２のべき数でなければ（ステップＳ１２  ＮＯ）、処理はステップＳ２１（図２０）に進められる。
【００９５】
［ステップＳ１３］ノード管理部１１２は、ランク数が２のべき数である場合の使用ゲート数を算出する使用ゲート数算出処理１を実行する。使用ゲート数算出処理１については、詳しくは図２２において後述する。また、ノード管理部１１２は、使用ゲート数算出処理１で算出した使用ゲート数と等しい数のゲートを設定する。これにより、ノード部２００に図８において前述した各ノードが有するゲートの個数が決定され、決定された個数のゲートおよびダミーのゲートが各ノードに対して設定される。
【００９６】
［ステップＳ１４］ノード管理部１１２は、ステップＳ１３で算出し、設定したゲートを接続する経路を設定するために、ゲート接続先設定処理を実行する。ゲート接続先設定処理については、詳しくは図２４において後述する。ステップＳ１４では、ノード管理部１１２は、最初に未だ経路の設定が終了していない任意のランク（ノード）を１つ選択すると共に、選択したランクにおける、未だ経路の設定が終了していない任意のゲートを１つ選択し、選択したゲートについてゲート接続先設定処理を実行する。
【００９７】
［ステップＳ１５］ノード管理部１１２は、ステップＳ１４で選択した任意のランクについてゲート接続先設定処理が実行され、任意のランクのすべてのゲートについて経路の接続先の設定が終了しているか否かについて判定する。任意のランクのすべてのゲートについて経路の接続先の設定が終了していれば（ステップＳ１５  ＹＥＳ）、処理はステップＳ１６に進められる。一方、すべてのゲートのランクのうち、経路の接続先の設定が終了していないランクがあれば（ステップＳ１５  ＮＯ）、処理はステップＳ１４に進められ、ステップＳ１４で選択されたランクにおいて未だ経路の設定が終了していないゲートについて、ゲート接続先設定処理が実行される。
【００９８】
このステップＳ１４およびステップＳ１５のループは、ステップＳ１３で算出された使用ゲート数の回数だけ繰り返される。例えば、図７から図１１の例では、使用ゲート数の差出結果は２であり、各ノードにゲート１，２の２個のゲートが設定されているので、ステップＳ１４のゲート接続先設定処理は２回繰り返される。
【００９９】
［ステップＳ１６］ノード管理部１１２は、すべてのランクのゲートについてゲート接続先設定処理が実行され、すべてのランクのすべてのゲートについて経路の接続先の設定が終了しているか否かについて判定する。すべてのランクのすべてのゲートについて経路の接続先の設定が終了していれば（ステップＳ１６  ＹＥＳ）、処理はステップＳ１７に進められる。一方、すべてのゲートのランクのうち、経路の接続先の設定が終了していないランクがあれば（ステップＳ１６  ＮＯ）、処理はステップＳ１４に進められ、次の任意のランクが選択されると共に選択されたランクの各ゲートについてゲート接続先設定処理が実行される。
【０１００】
このステップＳ１４，ステップＳ１５およびステップＳ１６のループは、ステップＳ１１で取得されたランク数の回数だけ繰り返される。例えば、図７から図１１のフローチャートの例では、ノード部２００のランク数として４が取得され、ランク０，１，２，３の４つのノードが設定されているので、ステップＳ１４からステップＳ１６のループは４回繰り返される。
【０１０１】
［ステップＳ１７］ノード管理部１１２は、接続先が同一のノードとなる経路を設定する。これにより、図１１および図１８のフローチャートにおいて前述したようにノード部２００のすべての処理の経路が設定される。その後、処理は終了する。
【０１０２】
［ステップＳ２１］ノード管理部１１２は、ランク数が２のべき数でない場合の使用ゲート数を算出する使用ゲート数算出処理２を実行する。使用ゲート数算出処理２については、詳しくは図２３において後述する。また、ノード管理部１１２は、使用ゲート数算出処理２で算出した使用ゲート数と等しい数のゲートを設定する。これにより、ノード部２００に図１３において前述した各ノードが有するゲートの個数が決定され、決定された個数のゲートおよびダミーのゲートが各ノードに対して設定される。
【０１０３】
［ステップＳ２２］ノード管理部１１２は、ステップＳ１１で取得したランク数以下であって最大の２のべき数Ｂmaxを算出し、算出結果を“ＮＢ”に設定する。
ここで、ＮＢは、例えば、ランク数を“Ｒ”とし、ｌｏｇ2Ｒを算出して小数点以下を切り捨てて“Ｎ”とし、ＮＢ＝２Nを計算することで算出してもよい。
【０１０４】
［ステップＳ２３］ノード管理部１１２は、ステップＳ２１で算出し、設定したゲートのうち、中間のゲートを接続する経路を設定するために、ゲート接続先設定処理を実行する。中間のゲートとは、設定したゲートのうち、図１７において前述した最初のゲートおよび図１６において前述した最後のゲート以外のゲートである。ステップＳ２３では、ノード管理部１１２は、最初に未だ中間のゲートの経路の設定が終了していない任意のランクを１つ選択すると共に、選択したランクにおける、未だ経路の設定が終了していない任意の中間のゲートを１つ選択し、選択した中間のゲートについてゲート接続先設定処理を実行する。
【０１０５】
［ステップＳ２４］ノード管理部１１２は、ステップＳ２３で選択した任意のランクについてゲート接続先設定処理が実行され、選択したランクのすべての中間のゲートについて経路の接続先の設定が終了しているか否かについて判定する。選択されたランクのすべての中間のゲートについて経路の接続先の設定が終了していれば（ステップＳ２４  ＹＥＳ）、処理はステップＳ２５に進められる。一方、選択されたランクのすべての中間のゲートのうち、経路の接続先の設定が終了していない中間のゲートがあれば（ステップＳ２４  ＮＯ）、処理はステップＳ２３に進められ、ステップＳ２３で選択されたランクにおける未だ経路の設定が終了していない中間のゲートについて、ゲート接続先設定処理が実行される。
【０１０６】
このステップＳ２３およびステップＳ２４のループは、ステップＳ１３で算出された使用ゲート数の回数繰り返される。例えば、図１２から図１８の例では、使用ゲート数の算出結果は４であり、最初のゲートおよび最後のゲートをそれぞれ１個ずつ除けば、各ノードにゲート２，３の２個の中間のゲートが設定されているので、ステップＳ２３のゲート接続先設定処理は２回繰り返される。
【０１０７】
［ステップＳ２５］ノード管理部１１２は、最後のゲートを接続する経路を設定するために、最後ゲート接続先設定処理を実行する。最後ゲート接続先設定処理については、詳しくは図２５において後述する。ステップＳ２５では、ノード管理部１１２は、ステップＳ２４で選択したランクにおける最後のゲートについて最後ゲート接続先設定処理を実行する。
【０１０８】
［ステップＳ２６］ノード管理部１１２は、すべてのランクにおいて、中間のゲートについてゲート接続先設定処理が実行されると共に最後のゲートについて最後ゲート接続先設定処理が実行され、すべてのランクのすべての中間のゲートおよび最後のゲートについて経路の接続先の設定が終了しているか否かについて判定する。すべてのランクのすべての中間のゲートおよび最後のゲートについて経路の接続先の設定が終了していれば（ステップＳ２６  ＹＥＳ）、処理はステップＳ３１（図２１）に進められる。一方、すべての中間のゲートおよび最後のゲートについて経路の接続先の設定が終了していないランクがあれば（ステップＳ２６  ＮＯ）、処理はステップＳ２３に進められ、次の任意のランクが選択されると共に選択されたランクの各中間のゲートについてゲート接続先設定処理が実行され、最後のゲートについて最後ゲート接続先設定処理が実行される。
【０１０９】
［ステップＳ３１］ノード管理部１１２は、最初のゲートを接続する経路を設定するために、最初ゲート接続先設定処理を実行する。最初ゲート接続先設定処理については、詳しくは図２６において後述する。ステップＳ３１では、ノード管理部１１２は、未だ最初のゲートの経路の設定が終了していない任意のランクを１つ選択すると共に、選択したランクの最初のゲートについて最初ゲート接続先設定処理を実行する。
【０１１０】
［ステップＳ３２］ノード管理部１１２は、すべてのランクの最初のゲートについて最初ゲート接続先設定処理が実行され、すべてのランクの最初のゲートについて経路の接続先の設定が終了しているか否かについて判定する。すべてのランクの最初のゲートについて経路の接続先の設定が終了していれば（ステップＳ３２  ＹＥＳ）、処理は終了する。一方、最初のゲートについて経路の接続先の設定が終了していないランクがあれば（ステップＳ３２  ＮＯ）、処理はステップＳ３１に進められ、最初のゲートについて経路の接続先の設定が終了していないランクのうち、次の任意のランクが選択される。次に、選択されたランクの最初のゲートについて最初ゲート接続先設定処理が実行される。
【０１１１】
図２２は、第２の実施の形態の使用ゲート数算出処理１を示す図である。本実施の形態のサーバ１００は、ネットワーク構成処理において取得したランク数が２のべき数である場合、取得した２のべき数であるランク数に基づいて使用ゲート数を算出して設定する使用ゲート数算出処理１を実行する。以下では、図２２に示す使用ゲート数算出処理１をフローチャートのステップ番号に沿って説明する。
【０１１２】
［ステップＳ４１］ノード管理部１１２は、ネットワーク構成処理のステップＳ１１で取得したランク数Ｒの２を底とする対数（ｌｏｇ2Ｒ）を算出する。
［ステップＳ４２］ノード管理部１１２は、ステップＳ４１の算出結果を使用ゲート数“Ｇ”に設定する。その後、処理は復帰する。
【０１１３】
図２３は、第２の実施の形態の使用ゲート数算出処理２を示す図である。本実施の形態のサーバ１００は、ネットワーク構成処理において取得したランク数が２のべき数でない場合、取得した２のべき数でないランク数に基づいて使用ゲート数を算出して設定する使用ゲート数算出処理２を実行する。以下では、図２３に示す使用ゲート数算出処理２をフローチャートのステップ番号に沿って説明する。
【０１１４】
［ステップＳ５１］ノード管理部１１２は、ネットワーク構成処理のステップＳ２２と同様に、ネットワーク構成処理のステップＳ１１で取得したランク数Ｒの２を底とする対数（ｌｏｇ2Ｒ）を算出して、小数点以下を切り捨てた結果である“Ｎ”を算出する。
【０１１５】
［ステップＳ５２］ノード管理部１１２は、ステップＳ５１の算出結果Ｎに２を加算する。
ランク数が２のべき数でない場合、図１６および図１７に示したように、上記残りのノードとランク数が２のべき数の場合と同様の経路が設定されたノードとを接続する経路を設定する必要がある。このため、ランク数が２のべき数でない場合、ランク数が２のべき数である場合に加えて、上記残りのノードの最初のゲートおよび最後のゲートが必要となる。これに基づき、ランク数が２のべき数でない場合、ステップＳ５１においてランク数が２のべき数である場合に比較して使用ゲート数を２個分増加させる。
【０１１６】
［ステップＳ５３］ノード管理部１１２は、ステップＳ５２の算出結果Ｎを使用ゲート数“Ｇ”に設定する。その後、処理は復帰する。
図２４は、第２の実施の形態のゲート接続先設定処理を示すフローチャートである。本実施の形態のサーバ１００は、ネットワーク構成処理において設定されたゲートの経路による接続先を設定するゲート接続先設定処理を実行する。ゲート接続先設定処理は、ランク数が２のべき数である場合には、すべてのゲートの接続先を設定し、ランク数が２のべき数でない場合には、最初のゲートおよび最後のゲート以外の中間のゲートの接続先を設定する。以下では、図２４に示すゲート接続先設定処理をフローチャートのステップ番号に沿って説明する。
【０１１７】
［ステップＳ６１］ノード管理部１１２は、ネットワーク構成処理のステップＳ１４からステップＳ１６またはステップＳ２３からステップＳ２６のループにおけるその時点の処理の対象のランクを示すランク番号を“ＲＣ”に設定する。
【０１１８】
［ステップＳ６２］ノード管理部１１２は、ネットワーク構成処理のステップＳ１４からステップＳ１５またはステップＳ２３からステップＳ２４のループにおけるその時点の処理の対象のゲートを示すゲート番号を“ＧＣ”に設定する。
【０１１９】
［ステップＳ６３］ノード管理部１１２は、ＲＣ／（２G-GC+1）の余りを算出し、算出結果を“ＭＶ”に設定する。
［ステップＳ６４］ノード管理部１１２は、ＭＶ＜２G-GCであるか否かを判定する。ＭＶ＜２G-GCであれば（ステップＳ６４  ＹＥＳ）、処理はステップＳ６５に進められる。一方、ＭＶ≧２G-GCであれば（ステップＳ６４  ＮＯ）、処理はステップＳ６７に進められる。
【０１２０】
［ステップＳ６５］ノード管理部１１２は、２G-GCを算出し、算出結果を“ＮＶ”に設定する。
［ステップＳ６６］ノード管理部１１２は、（Ｒ＋ＲＣ＋ＮＶ）／Ｒの余りを算出し、算出結果が示すゲート番号のゲートを、現在のループにおけるランク番号ＲＣおよびゲート番号ＧＣからの経路の接続先に設定する。これにより、ノード部２００に図９および図１４において前述したランクが増加する方向（図９および図１４における下方向）の経路が設定される。
【０１２１】
［ステップＳ６７］ノード管理部１１２は、２G-GCを算出し、算出結果を“ＮＶ”に設定する。
［ステップＳ６８］ノード管理部１１２は、（Ｒ−ＲＣ＋ＮＶ）／Ｒの余りを算出し、算出結果が示すゲート番号のゲートを、現在のループにおけるランク番号ＲＣおよびゲート番号ＧＣからの経路の接続先に設定する。これにより、ノード部２００に図１０および図１５において前述したランクが減少する方向（図１０および図１５における上方向）の経路が設定される。
【０１２２】
図２５は、第２の実施の形態の最後ゲート接続先設定処理を示すフローチャートである。本実施の形態のサーバ１００は、ランク数が２のべき数でない場合にネットワーク構成処理において設定されたゲートの終点に最も近い側の最後の経路による接続先を設定する最後ゲート接続先設定処理を実行する。以下では、図２５に示す最後ゲート接続先設定処理をフローチャートのステップ番号に沿って説明する。
【０１２３】
［ステップＳ７１］ノード管理部１１２は、ネットワーク構成処理のステップＳ２３からステップＳ２６のループにおけるその時点の処理の対象のランクを示すランク番号を“ＲＣ”に設定する。
【０１２４】
［ステップＳ７２］ノード管理部１１２は、初期値“０”を“ＲＮ”に設定する。
［ステップＳ７３］ノード管理部１１２は、ＲＮ＜ＮＢであるか否かを判定する。ＲＮ＜ＮＢであれば（ステップＳ７３  ＹＥＳ）、処理はステップＳ７４に進められる。一方、ＲＮ≧ＮＢであれば（ステップＳ７３  ＮＯ）、処理は復帰する。
【０１２５】
［ステップＳ７４］ノード管理部１１２は、ＲＮ＜ＲＣ＋１であるか否かを判定する。ＲＮ＜ＲＣ＋１であれば（ステップＳ７４  ＹＥＳ）、処理はステップＳ７５に進められる。一方、ＲＮ≧ＲＣ＋１であれば（ステップＳ７４  ＮＯ）、処理はステップＳ７６に進められる。
【０１２６】
［ステップＳ７５］ノード管理部１１２は、ＲＮ＋ＮＢを算出し、算出結果が示すゲート番号のゲートを、ランク番号ＲＣの最後のゲートの接続先に設定する。すなわち、ノード部２００に図１６において前述した残りのノードにおける最後のゲートが他のゲートと接続される経路が設定される。これにより、ランク数を超えない最大の２のべき数を超えたランクのノードにおける最後のゲートが、ランク数を超えない最大の２のべき数以下のランクのゲートと接続される。
【０１２７】
［ステップＳ７６］ノード管理部１１２は、ＲＮに１を加算する。その後、処理をステップＳ７３に進める。
図２６は、第２の実施の形態の最初ゲート接続先設定処理を示すフローチャートである。本実施の形態のサーバ１００は、ランク数が２のべき数でない場合にネットワーク構成処理において設定されたゲートの終点に最も近い側の最初の経路による接続先を設定する最初ゲート接続先設定処理を実行する。以下では、図２６に示す最初ゲート接続先設定処理をフローチャートのステップ番号に沿って説明する。
【０１２８】
［ステップＳ８１］ノード管理部１１２は、ネットワーク構成処理のステップＳ２３からステップＳ２６のループにおけるその時点の処理の対象のランクを示すランク番号を“ＲＣ”に設定する。
【０１２９】
［ステップＳ８２］ノード管理部１１２は、ＮＢの値を“ＲＮ”に設定する。
［ステップＳ８３］ノード管理部１１２は、ＲＮ＜Ｒであるか否かを判定する。ＲＮ＜Ｒであれば（ステップＳ８３  ＹＥＳ）、処理はステップＳ８４に進められる。一方、ＲＮ≧Ｒであれば（ステップＳ８３  ＮＯ）、処理は復帰する。
【０１３０】
［ステップＳ８４］ノード管理部１１２は、ＲＮ＜ＲＣ＋１であるか否かを判定する。ＲＮ＜ＲＣ＋１であれば（ステップＳ８４  ＹＥＳ）、処理はステップＳ８５に進められる。一方、ＲＮ≧ＲＣ＋１であれば（ステップＳ８４  ＮＯ）、処理はステップＳ８６に進められる。
【０１３１】
［ステップＳ８５］ノード管理部１１２は、ＲＮ−ＮＢを算出し、算出結果が示すゲート番号のゲートを、ランク番号ＲＣの最初のゲートの接続先に設定する。すなわち、ノード部２００に図１６において前述した最初のゲートを接続する経路が設定される。これにより、ランク数を超えない最大の２のべき数を超えたランクのノードにおける最初のゲートが、ランク数を超えない最大の２のべき数以下のランクのゲートと接続される。
【０１３２】
［ステップＳ８６］ノード管理部１１２は、ＲＮに１を加算する。その後、処理をステップＳ８３に進める。
このように、第２の実施の形態のサーバ１００では、ノード部２００のネットワークの構成を、多くのデータが流れる傾向がある終点に近い経路を他の経路よりも短く設定することで、ノード部２００のネットワーク内のデータの転送量を減少させる。これにより、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
【０１３３】
また、相対的に流れるデータの量が多い傾向がある終点に近い経路ほど、経路の長さを短く（転送ホップ数が少なく）設定すると共に、相対的に流れるデータの量が少ない傾向がある終点から遠い経路ほど、経路の長さを長く（転送ホップ数が多く）設定することで、ノード部２００のネットワーク全体におけるデータの転送量を減少させる。これにより、さらにネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
【０１３４】
また、ノード間の経路の長さを転送ホップ数で定義することにより、経路の設定時の処理が単純化でき、特にノード数が大規模なネットワークの構成時の負担の増加も抑制できる。
【０１３５】
また、ノード部２００の各ノードで実行される処理が複数の段階の処理に分割されていると共に、各ノードが経路で接続されることでネットワークが構成されている。これにより、ノード管理部１１２が上記のように経路を設定することで、ノード間で処理されると共に送受信されるデータの転送量を減少させることで、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
【０１３６】
また、ノード部２００では、分割された段階の処理毎に他のノードの処理の完了をバリア同期により待ち合わせながら処理が進められる。このため、各ノードで処理されたデータが他のノードに対して同時に転送される場合が多い。これに対して、ノード管理部１１２が上記のように経路を設定することで、ノード間で処理されると共に送受信されるデータの転送量を減少させることで、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
【０１３７】
また、ノード部２００では、各ノードが経路によって再帰的に接続された経路を用いて処理が進められる。このため、各ノードで処理されたデータが他のノードに対して同時に転送される場合が多い。これに対して、ノード管理部１１２が上記のように経路を設定することで、ノード間で処理されると共に送受信されるデータの転送量を減少させることで、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
【０１３８】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サーバ１００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等がある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等がある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等がある。
【０１３９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４１】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０１４２】
以上、開示の計算システム、構成管理装置および構成管理プログラムを、図示の実施の形態に基づいて説明したが、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の２以上の構成を組み合わせたものであってもよい。
【０１４３】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、開示の技術は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【０１４４】
以上の第１の実施の形態および第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部と、ノード部の経路を設定する構成管理装置とを有する計算システムにおいて、
前記構成管理装置は、前記ノード同士を接続する経路を設定する場合に、前記ノード部で処理結果のデータが出力される終点に近い経路の長さを、より前記終点から遠い経路の長さ以下に設定するノード管理部を有し、
前記ノード部は、複数の前記ノードが前記ノード管理部により設定された経路で接続されているネットワークを用いてデータを処理することを特徴とする計算システム。
【０１４５】
（付記２）  前記計算システムにおいて、
前記ノード管理部は、前記終点に近い経路ほど、経路の長さを短く設定すると共に、前記終点から遠い経路ほど、経路の長さを長く設定することを特徴とする付記１記載の計算システム。
【０１４６】
（付記３）  前記計算システムにおいて、
前記経路の長さは、転送ホップ数で定義されることを特徴とする付記１記載の計算システム。
【０１４７】
（付記４）  前記計算システムにおいて、
前記ノード部は、各ノードで実行される処理が複数の段階の処理に分割されていることを特徴とする付記１記載の計算システム。
【０１４８】
（付記５）  前記計算システムにおいて、
前記ノード部は、前記分割された段階の処理毎に他のノードの処理の完了を待ち合わせることを特徴とする付記４記載の計算システム。
【０１４９】
（付記６）  前記計算システムにおいて、
前記ノード部は、経路のネットワークにおいて各前記ノードが前記経路によって再帰的に接続されることを特徴とする付記１記載の計算システム。
【０１５０】
（付記７）  前記計算システムにおいて、
前記ノード部は、経路のネットワークが３次元トーラスであることを特徴とする付記１記載の計算システム。
【０１５１】
（付記８）  前記計算システムにおいて、
前記ノード部は、経路のネットワークがファットツリーであることを特徴とする付記１記載の計算システム。
【０１５２】
（付記９）  経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部の経路を設定する構成管理装置において、
前記ノード同士を接続する経路を設定する場合に、前記ノード部で処理結果のデータが出力される終点に近い経路の長さを、より前記終点から遠い経路の長さ以下に設定するノード管理部を有することを特徴とする構成管理装置。
【０１５３】
（付記１０）  コンピュータに、経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部の経路を設定する処理を実行させる構成管理プログラムにおいて、
前記コンピュータに、
前記ノード同士を接続する経路を設定する場合に、前記ノード部で処理結果のデータが出力される終点に近い経路の長さを、より前記終点から遠い経路の長さ以下に設定するステップ、
を実行させることを特徴とする構成管理プログラム。
【符号の説明】
【０１５４】
１  構成管理装置
１ａ  ノード管理部
２  ノード部
２ａ，２ｂ，２ｃ，２ｄ  ノード
２ａｇ１，２ａｇ２，２ａｇ１'，２ｂｇ１，２ｂｇ２，２ｂｇ１'，２ｃｇ１，２ｃｇ２，２ｃｇ１'，２ｄｇ１，２ｄｇ２，２ｄｇ１'  ゲート
２ｅ１，２ｅ２，２ｆ１，２ｆ２  経路
【図１】
0005644566.tif 000002
【図２】
0005644566.tif 000003
【図３】
0005644566.tif 000004
【図４】
0005644566.tif 000005
【図５】
0005644566.tif 000006
【図６】
0005644566.tif 000007
【図７】
0005644566.tif 000008
【図８】
0005644566.tif 000009
【図９】
0005644566.tif 000010
【図１０】
0005644566.tif 000011
【図１１】
0005644566.tif 000012
【図１２】
0005644566.tif 000013
【図１３】
0005644566.tif 000014
【図１４】
0005644566.tif 000015
【図１５】
0005644566.tif 000016
【図１６】
0005644566.tif 000017
【図１７】
0005644566.tif 000018
【図１８】
0005644566.tif 000019
【図１９】
0005644566.tif 000020
【図２０】
0005644566.tif 000021
【図２１】
0005644566.tif 000022
【図２２】
0005644566.tif 000023
【図２３】
0005644566.tif 000024
【図２４】
0005644566.tif 000025
【図２５】
0005644566.tif 000026
【図２６】
0005644566.tif 000027