以下、図面を参照して実施の形態を説明する。
[第1の実施の形態]
図1は、第1の実施の形態の構成管理装置を示す図である。本実施の形態の構成管理装置1は、ノード管理部1aを有する。また、構成管理装置1は、ノード部2とLAN(Local Area Network)等の通信回線で接続されている。また、ノード部2は、互いの間に接続する経路を設定可能な複数のノード2a,2b,2c,2dを有する。
構成管理装置1は、ノード管理部1aにより、データを処理するノード部2におけるノード同士を接続する経路を設定する。構成管理装置1が設定した経路に従ってノード間で送受信が行われることにより、ノード部2で処理が実行される。
ノード管理部1aは、ノード部2のノード同士を接続する経路を設定してネットワークを構成する。この場合、ノード管理部1aは、ノード部2で処理結果のデータが出力される終点に近い経路2eの長さを、より終点から遠い経路の長さ2f以下に設定する。
本実施の形態のように、ネットワークモデルを用いたノード2a〜2dが互いにノード管理部1aによって設定される経路で接続され、ノード2a〜2dが互いの処理結果を交換しながら処理を行う計算システムでは、各ノードの処理を経た結果、最初の段のノード間のデータの転送量は少なく、処理の段階が進むに従ってノード間のデータの転送量が次第に増加する場合が多いという傾向がある。そして、データが出力される終点に最も近い最後の段の通信においてノード間のデータの転送量が最も多くなる場合が多いという傾向がある。ノード管理部1aは、これらに基づいて、ノード部2で処理結果のデータが出力される終点に近い経路2eの長さを短く設定することで、計算システムの処理の効率化を図る。
ノード部2は、ノード2a〜2dのそれぞれが、受信したデータに対して演算等の処理を行った結果である処理結果のデータを他のノードに送信することで、図示しないクライアント装置等からの要求に応じてデータを処理する。ノード2a〜2dは、それぞれがデータを処理するプロセッサを有しており、受信したデータを処理して処理結果のデータを他のノードに送信する。
ここで、図1では、ノード2a〜2dが設定された経路に従って互いにデータを送受信しながら処理する様子を示す。ゲート(gate)2ag1,2ag2は、ノード2aで実行される処理を分割する際の区切りとなる点を示す。なお、ゲート2ag1'は、ノード部2の各ノードで処理された処理結果のデータを集約するダミーのゲートである。同様に、ゲート2bg1,2bg2は、ノード2bで実行される処理における段階の区分点を示し、ゲート2cg1,2cg2は、ノード2cで実行される処理における段階の区分点を示し、ゲート2dg1,2dg2は、ノード2dで実行される処理における段階の区分点を示す。ゲート2ag1', ゲート2bg1', ゲート2cg1',ゲート2dg1'は、ダミーのゲートである。また、各ゲート間を接続する矢印は、ゲート間のデータの送受信を行う経路(例えば、経路2e1,2e2,2f1,2f2)である。各ノードは、各ゲートにおいて、経路の矢印が示す向きにデータを送信する。経路は、ノード管理部1aによって設定され、各ノードが各ゲートにおける処理が完了した都度、データが送受信される。
図1では、ノード2a〜2dで実行される処理の進行を、左側のゲートから右側のゲートに順次処理が移行されるように示すものとする。ノード2a〜2dで処理が開始され、ノード2aにおける最初の区分された処理が完了すると、最初の区分された処理の結果のデータが、ノード2aにより経路2f1を介してゲート2ag1からノード2cのゲート2cg2に送信される。また、ノード2cにおいて完了した最初の区分された処理の処理結果のデータが、ノード2cにより経路2f2を介してゲート2cg1からノード2aのゲート2ag2に送信される。ゲート2bg1,2dg1においても、各ノードにより最初の区分された処理について、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。ここで、同一のノード同士を接続する経路では、実際にはノード間の処理結果のデータの送受信は行われず、処理結果のデータが処理を実行したノードで保持され、当該ノードで次の段階の処理に使用されることを意味する。次に、次の区分された処理である、ノード2aにおいてゲート2ag1における最初の区分された処理結果のデータおよびゲート2cg1からの経路2f2で送受信された最初の区分された処理結果のデータに対する処理がノード2aにより完了すると、ノード2aにより、次の区分された処理の処理結果のデータが経路2e1を介してノード2aに隣接するノード2bのゲート2bg1'に送信される。また、ノード2bにおいて完了した次の区分された処理の処理結果のデータが、ノード2bによって経路2e2を介してノード2bに隣接するノード2aのゲート2ag1'に送信される。ゲート2cg2,2dg2においても、各ノードにより最初の区分された処理について、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。
次に、ノード2a〜2dは、ダミーのゲートであるゲート2ag1'〜2dg1 'において、ゲート2ag2〜2dg2から送信されたデータを集計した集計結果または当該集計結果に基づいて生成した処理結果を、通信回線を介してクライアント装置等の処理の要求元に送信する。
なお、本実施の形態では、ノード部2は、4個のノード2a〜2dを有するが、これに限らず、ノード部2は、任意の個数のノードを有してもよい。また、ノード2a〜2dは、それぞれ2個のゲート2ag1,2ag2,2bg1,2bg2,2cg1,2cg2,2dg1,2dg2,を有するが、これに限らず、ノード2a〜2dは、それぞれ任意の個数のゲートを有してもよい。また、ノード部2は、自己が有するノードのうち一部のノードを使用せず、任意の個数を使用してネットワークを構成し、データの処理を行うこともできる。
以上のように、本実施の形態では、ノード部2のネットワークの構成について、例えば、最終段への経路2eを隣接するノードへの経路とする等、終点に近い経路2eを他の経路よりも短く設定することで、ノード部2のネットワーク内の経路の長さ辺りのデータの転送量を減少させ、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
[第2の実施の形態]
次に、図1に示した構成管理装置1の、ネットワーク内のデータの転送を効率化する機能について、サーバ100に適用した実施の形態を、第2の実施の形態として説明する。
図2は、第2の実施の形態のシステム構成を示す図である。図2に示す計算システムは、サーバ100、ノード部200、クライアント装置300を有する。サーバ100およびノード部200ならびにサーバ100およびクライアント装置300は、それぞれLAN等のネットワーク10を介して通信可能に接続されている。
サーバ100は、クライアント装置300からの処理の要求をジョブに分割してノード部200に送信し、ジョブの処理結果をノード部200から受け取ると、クライアント装置300に送信する。
ノード部200は、分配されたジョブを処理するノード201a,201b,201c,201d,201e,201f,201g,201h,201s,202t,201u,201v,201w,201x,201y,201zを有する。ノード201a〜201zは、分配されたジョブの結果をサーバ100が構成したネットワークモデルに従って互いに交換し、処理結果を集約してサーバ100に送信する。
ノード部200は、複数のノードを有すると共に、メモリ分散型の並列計算をサポートするライブラリであるMPI(Message Passing Interface)を実装し、サーバ100の指示に基づいて任意の個数のノードを使用したネットワークを構成し、構成したネットワークで要求された処理を実行する。図2の例では、ノード部200は、16個のノード201a〜201zを有する。ノード201a〜201zは、ネットワーク10を介して互いに通信することによりバリア同期を行って並列演算を実行する。
ここで、バリア同期について簡単に説明する。本実施の形態の計算システムのノード部200で実行される処理は、複数の段階に分割されると共に、各ノードで分割された段階毎に実行されるものとする。バリア同期では、バリア同期を実行する各ノードは、処理のそれぞれの段階が完了して同期をとるポイント(バリアポイント)に到着した場合、自身の処理を停止する。すなわち、各ノードは、処理の段階が終了してバリアポイントに到達した場合、各々、他のノードによる処理がバリアポイントに到着するのを待ち合わせる。各ノードは、バリア同期を行うノード部200のすべてのノードによる処理がバリアポイントに到着した時点(すなわち、バリア同期が成立した時点)で、次の処理の段階を開始する。これにより、プロセスを並列処理する複数のノード間で、段階毎に並列処理の同期をとることができる。
このようなバリア同期を実現するアルゴリズムの1つに、バタフライ演算がある。以下
、バタフライ演算を単に「バタフライ」と称する。バタフライにおいては、処理を複数の
段階に分割し、段階毎に他のノードと信号の通信を行う。
クライアント装置300は、ユーザが操作する情報処理装置である。クライアント装置300は、サーバ100に対してノード部200で処理される要求を、ネットワーク10を介して送信し、サーバ100から送信された処理結果を、ネットワーク10を介して受信する。
図3は、第2の実施の形態のサーバのハードウェア構成を示す図である。サーバ100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス108を介してRAM(Random Access Memory)102および複数の周辺機器が接続されている。
RAM102は、サーバ100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
バス108に接続されている周辺機器としては、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、および通信インタフェース107がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、サーバ100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリ等の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、LCD(Liquid Crystal Display)を用いた液晶表示装置等がある。
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボール等がある。
光学ドライブ装置106は、レーザ光等を利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等がある。
通信インタフェース107は、ネットワーク10に接続されている。通信インタフェース107は、ネットワーク10を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
なお、図3にはサーバ100のハードウェア構成を示したが、クライアント装置300も同様のハードウェア構成を有する。
図4は、第2の実施の形態のノードのハードウェア構成を示す図である。本実施の形態のノード201aは、CPU201a1、RAM201a2、バリア同期装置201a3、通信インタフェース201a4を有する。CPU201a1は、バス201a5を介してRAM201a2、バリア同期装置201a3、通信インタフェース201a4と接続されている。
CPU201a1は、ノード201aの全体を制御する。また、CPU201a1は、バス201a5を介して、RAM201a2、バリア同期装置201a3、および、通信インタフェース201a4との間で必要なデータの送受信を行う。
CPU201a1は、バス201a5を介して、バリア同期装置201a3に対してバリアポイント到達の信号を送信し、また、バリア同期装置201a3からバリア同期成立の信号を受信する。これにより、CPU201a1は、サーバ100によって設定されたネットワークの構成に基づいて、同期信号の送信先である次の段におけるバリア同期装置201a3の宛先を、バリア同期装置201a3に設定する。
また、CPU201a1は、バス201a5を介して、RAM201a2との間において、必要なデータの送受信を行う。これにより、CPU201a1は、RAM201a2にデータを書き込み、また、CPU201a1はRAM201a2からデータを読み出す。このデータは、例えば、クライアント装置300から処理を要求されたジョブのデータである。
RAM201a2は、ノード201aの主記憶装置として使用される。RAM201a2には、CPU201a1に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM201a2には、CPU201a1による処理に必要な各種データが格納される。
バリア同期装置201a3は、CPU201a1による同期信号の送信先の設定に基づいて、ネットワーク10を介して、他のノードのバリア同期装置201a3との間で行う通信に基づいて、バリア同期を行う。
通信インタフェース201a4は、ネットワーク10を介してサーバ100や他のノード(ノード201b〜201z)に対してデータや制御信号を出力すると共に、ネットワーク10を介してサーバ100や他のノードから送信されたデータや制御信号を受信する。
なお、図4にはノード201aのハードウェア構成を示したが、ノード201b〜201zも同様のハードウェア構成であり、同様の機能を有するので説明を省略する。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図5は、第2の実施の形態のサーバの機能を示すブロック図である。本実施の形態のサーバ100は、電源制御部111、ノード管理部112、クライアント応答部113を有する。ノード部200は、図示したノード201a,201b,201c,201dと、図示しない201e,201f,201g,201f,201g,201h,201s,201t,201u,201v,201w,201x,201y,201zを有する。ノード管理部112は、ネットワーク10でノード201a〜201zと接続されている。クライアント応答部113は、ネットワーク10でクライアント装置300と接続されている。また、ノード201a〜201zは、互いの間に接続する経路を設定可能である。
サーバ100は、データを処理するノード部200におけるノード同士を接続する経路を設定する。
電源制御部111は、ノード部200およびノード201a〜201zに対して稼働に使用する電力を供給する。
ノード管理部112は、ノード部200のノード同士を接続する経路を設定してネットワークを構成する。この場合、ノード管理部112は、ノード部200のネットワークの構成について、例えば、最終段への経路を隣接するノードへの経路とする等、ノード部200で処理結果のデータが出力される終点に近い経路の長さを、より終点から遠い経路の長さ以下に設定する。また、ノード管理部112は、ノード部200の経路を、処理結果のデータが出力される終点に近い経路ほど、経路の長さを短く設定すると共に、終点から遠い経路ほど、経路の長さを長く設定する。経路の長さは、詳しくは図9において後述する転送ホップ数で定義される。なお、これに限らず、経路の長さは実際の物理的な経路長を用いてもよく、人為的に割り当てた重み付けを用いてもよい。
クライアント応答部113は、クライアント装置300からの処理の要求および処理対象のデータをノード部200に送信し、ノード部200から送信された処理結果を受信してクライアントに送信する。
本実施の形態の計算システムでは、処理が複数の段階(ステージ)に区分されて進められると共に、バタフライネットワークモデルを用いたそれぞれプロセッサを有する複数のノード201a〜201zが経路で接続され、ノード201a〜201zが互いの処理結果を交換しながら処理を行う。このような計算システムでは、ノード201a〜201zのそれぞれの処理において、最初の段階のノード間のデータの転送量は少なく、段階が進むに従ってノード間のデータの転送量が次第に増加する場合が多いという傾向がある。すなわち、データが出力される終点に最も近い最終段の通信においてノード間のデータの転送量が最も多くなる場合が多いという傾向があることになる。ノード管理部112は、これに基づいて、ノード部200で処理結果のデータが出力される終点に近い経路の長さを短く設定することで、計算システムの処理の効率化を図る。
ノード部200は、ノード201a〜201zのそれぞれが、受信したデータを処理して処理結果のデータを他のノードに送信することで、クライアント装置300からの処理の要求に応じてデータを処理する。ノード201a〜201zは、それぞれがデータを処理するプロセッサとして、CPU(例えば、CPU201a1)を有しており、受信したデータを処理して処理結果のデータを他のノードに送信する。
本実施の形態のノード部200が有するネットワークは、各ノードが経路によって再帰的に接続されるバタフライネットワークである。ノード部200は、各ノードで実行される処理が複数の段階の処理に分割されていると共にバリア同期により分割された段階の処理毎に他のノードの処理の完了を待ち合わせる。
ゲート1(ゲートga1,gb1,gc1,gd1)、ゲート2(ゲートga2,gb2,gc2,gd2)は、ノード201a〜201dで実行される処理を分割する際の区切りとなる点を示す。ゲート1'(ゲートga1',gb1',gc1',gd1')は、ノード部200のノード201a〜201dで処理された処理結果のデータを集約するダミーのゲートである。また、各ゲート間を接続する矢印は、ゲート間のデータの送受信を行う経路である。各ノードは、各ゲートにおいて、経路の矢印が示す向きにデータを送信する。経路は、ノード管理部112によって設定され、各ノードが各ゲートにおける処理が完了した都度、データが送受信される。本実施の形態では、ゲートが、上記バリアポイントとして機能する。
図5では、ノード201a〜201dで実行される処理の進行を、左側のゲートから右側のゲートに順次処理が移行されるように示すものとする。ノード201a〜201dで処理が開始され、ノード201aにおける最初の区分された処理が完了すると、最初の区分された処理の結果のデータが、ノード201aにより経路を介してゲートga1からノード201cのゲートgc2に送信される。また、ノード201cにおいて完了した最初の区分された処理の処理結果のデータが、ノード201cによって経路を介してゲートgc1からノード201aのゲートga2に送信される。ノード201b,201cにおいても、最初の区分された処理について、ゲートgb1,gd1で、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。ここで、同一のノード同士を接続する経路では、実際にはノード間の処理結果のデータの送受信は行われず、処理結果のデータが処理を実行したノードで保持され、当該ノードで次の段階の処理に使用されることを意味する。次に、ノード201aにより、次の区分された処理である、ノード201aにおいてゲートga1における最初の区分された処理結果のデータおよびゲートgc1からの経路で送受信された最初の区分された処理結果のデータの処理が完了すると、ノード201aにより、次の区分された処理の処理結果のデータが経路を介してノード201bのゲートgb1'に送信される。また、ノード201bにおいてゲートgb1で完了した次の区分された処理の処理結果のデータが、ノード201bにより、経路を介してノード201aのゲートga1'に送信される。ノード201c,201dにおいても、各ノードにより最初の区分された処理について、ゲートgc2,gd2で、同様の処理が実行され、それぞれに接続された経路を介して処理結果のデータの送受信が行われる。
次に、ノード201a〜201dは、ダミーのゲートであるゲートga1'〜gd1 'において、ゲートga2〜gd2から送信されたデータを集計した集計結果または当該集計結果に基づいて生成した処理結果を、ネットワーク10を介して処理の要求元であるクライアント装置300に送信する。
なお、本実施の形態では、ノード部200は、各ノードがバタフライネットワークで接続されているが、これに限らず、各ノードが任意の構成のネットワークの経路で接続されていてもよい。例えば、ノード部200は、各ノードを接続する経路のネットワークが3次元トーラス(torus)であってもよい。また、ノード部200は、各ノードを接続する経路のネットワークがファットツリー(fat tree)であってもよい。
また、本実施の形態では、ノード部200は、16個のノード201a〜201zを有するが、これに限らず、ノード部200は、任意の個数のノードを有してもよい。また、ノード部200は、自己が有するノードのうち一部のノードを使用せず、任意の個数を使用してネットワークを構成し、データの処理を行うこともできる。
図6は、第2の実施の形態のノードのネットワークを示す図である。本実施の形態では、サーバ100は、ノード部200の任意の個数のノード(例えば、ノード201a〜201zの16個のノード)を使用してネットワークを構成する。本実施の形態の計算システムでは、各ノードが構成に従って受信したデータを処理し、処理したデータを次のノードに送信することを繰り返して要求された処理を実行する。
図6に従い、ノード201a〜201zの16個のノードを用いて4段階の処理を実行する場合の例を示す。
始点201asは、ノード201aで実行される処理の始点を示す。始点201bs〜始点201zsについても、それぞれ、ノード201b〜201zで実行される処理の始点を示す。終点201aeは、ノード201aで実行される処理の終点を示す。終点201be〜始点201zeについても、それぞれ、ノード201b〜201zで実行される処理の終点を示す。
ノード201aには、ゲート(gate)ga1〜ga4が、ノード201aにおいて実行される処理の段階の同期をとるために設けられており、複数の段階(図6では4段階)に分割された処理における各段階の区切りとなる点を示す。また、ノード201aには、ゲートga1'が、ノード201aの各ノードで処理された処理結果のデータを集約するダミーのゲートである。
同様に、ノード201bには、ゲートgb1〜gb4およびゲートgb1'が設けられている。ノード201cには、ゲートgc1〜gc4およびゲートgc1'が設けられている。ノード201dには、ゲートgd1〜gd4およびゲートgd1'が設けられている。ノード201eには、ゲートge1〜ge4およびゲートge1'が設けられている。ノード201fには、ゲートgf1〜gf4およびゲートgf1'が設けられている。ノード201gには、ゲートgg1〜gg4およびゲートgg1'が設けられている。ノード201hには、ゲートgh1〜gh4およびゲートgh1'が設けられている。ノード201sには、ゲートgs1〜gs4およびゲートgs1'が設けられている。ノード201tには、ゲートgt1〜gt4およびゲートgt1'が設けられている。ノード201uには、ゲートgu1〜gu4およびゲートgu1'が設けられている。ノード201vには、ゲートgv1〜gv4およびゲートgv1'が設けられている。ノード201wには、ゲートgw1〜gw4およびゲートgw1'が設けられている。ノード201xには、ゲートgx1〜gx4およびゲートgx1'が設けられている。ノード201yには、ゲートgy1〜gy4およびゲートgy1'が設けられている。ノード201zには、ゲートgz1〜gz4およびゲートgz1'が設けられている。
ノード201a〜201dは、各ゲートにおいて、縦方向に並んだ同期をとる対象のゲート(例えば、ゲートga1の場合には、同期をとる対象はゲートgb1,・・・,gz1)の処理の段階がノード201a〜201dで終了するまで待ち合わせ、ノード201a〜201dで同期をとるゲートの処理が完了すると、ノード201a〜201dは、次の段階の処理を開始する。すなわち、ノード201a〜201dで同期をとるゲートの処理が完了すると、ノード201a〜201dは、次のゲート(例えば、それぞれゲートga2,・・・,gz2)に進める。以上のように処理の段階を進めていき、その後、ゲートga4,・・・gz4の段階の処理が完了すると、ノード201a〜201dは、それぞれダミーのゲートであるゲートga1',・・・,gz1'に進んで経路で接続されたノードの処理結果を集約する。ノード201a〜201dは、それぞれゲートga1',・・・,gz1'において、処理されたデータの集約がすべてのノードで完了すると、終点201ae,・・・201zeにおいて、受信したデータをサーバ100に送信する。サーバ100は、各ノードから送信されたデータを収集して、要求された処理の最終的な処理結果をクライアント装置300に送信する。
また、図6の矢印は、サーバ100によって設定された、各段階におけるノードによる処理結果のデータの経路を示す。例えば、ゲートga1からゲートgs2およびゲートga2に向かって矢印が示されている。ゲートga1からゲートgs2に向かう矢印は、ゲートga1で処理されたデータがゲートgs2に送信される経路を示す。ゲートga1からゲートga2に向かう矢印は、ゲートga1で処理されたデータがゲートga2にも送信される経路を示す。ここで、同一のノード同士を接続する経路では、実際にはノード間の処理結果のデータの送受信は行われず、処理結果のデータが処理を実行したノードで保持され、当該ノードで次の段階の処理に使用されることを意味する。すなわち、ゲートga1からゲートga2に向かう矢印は、同一のノードであるノード201as同士を接続する経路である。このため、ゲートga1からゲートga2の経路ではデータの送受信は行われず、ゲートga1の処理結果のデータは、ノード201ssに送信されると共にノード201asで保持される。ノード201asは、ノード201ssから送信されたデータと共に保持しているゲートga1で処理されたデータを使用してゲートga2における処理を実行する。ここでは説明を省略するが、他のノードについても同様に処理が行われる。
次に、本実施の形態のサーバ100が、ノード部200における各ノードのネットワークを構成する処理の様子を説明する。本実施の形態では、図19から図21において後述するネットワーク構成による処理において、サーバ100がランク数(処理に使用するノード数)に基づいてノード部200におけるノードのゲート間に経路を設定することにより、ノード部200のネットワークを構成する。このとき、ランク数が2のべき数(“n”を任意の自然数とした場合に“n2”で表すことができる数)である場合と、ランク数が2のべき数でない場合とでネットワークの構成方法が異なる。以下、本実施の形態のランク数が2のべき数である場合のネットワークの構成時の処理およびランク数が2のべき数でない場合のネットワークの構成時の処理について説明する。
図7から図11は、第2の実施の形態のランク数が2のべき数である場合のネットワークの構成時の処理の様子を示す図である。
本実施の形態のサーバ100は、図7に示すように、まず構成するネットワークのランク数を取得し、構成するネットワークのランク数に設定する。図7では、サーバ100は、ランク数として“4”を取得したものとする。これに基づいて、図7に示すように、サーバ100により、ランク“0”,“1”,“2”,“3”の4個のノード(それぞれノード201a,201b,201c,201d)が設定される。また、図7に示すように、サーバ100により、ノード201aの始点201asおよび終点201ae、ノード201bの始点201bsおよび終点201be、ノード201cの始点201csおよび終点201ceならびにノード201dの始点201dsおよび終点201deが設定される。
次に、サーバ100は、取得したランク数の2を底とする対数(ランク数を“R”とした場合、log2R(小数点以下切り捨て))を算出し、結果を使用ゲート数に設定する。上記のようにランク数が4の場合、使用ゲート数は、log2R=log24=2となる。これに従い、図8に示すように、サーバ100により、各ノードに対して、2個のゲート(ゲート1,2)および1個のダミーのゲート(ゲート1')が設定される。なお、ダミーのゲートは、使用ゲート数には含まないものとする。具体的には、サーバ100により、ノード201aに対して、ゲートga1,ga2,ga1'が設定される。同様に、サーバ100により、ノード201bに対して、ゲートgb1,gb2,gb1'が設定され、ノード201cに対して、ゲートgc1,gc2,gc1'が設定され、ノード201dに対して、ゲートgd1,gd2,gd1'が設定される。
次に、サーバ100は、各ゲート間(例えば、各ノードにおけるゲート1からゲート2の間、ゲート2からゲート1'の間)を接続する経路であって、ランクが増加する方向(図9における下方向)の経路を設定する。このとき、サーバ100は、経路を各ノードの終点に近いほど経路の長さが短く(転送ホップ数が少なく)、終点から遠いほど(すなわち、始点に近いほど)経路の長さが長く(転送ホップ数が多く)なるように設定する。上記のようにランク数が4の場合、図9に示すように、サーバ100により、ノード201a〜201dのそれぞれの終点201ae〜201deに近い経路(図9における右側)の長さが短く、終点201ae〜201deから遠い(すなわち、始点201as〜201dsに近い)経路(図9における左側)の長さが長くなるように設定される。ここで、経路の長さは、経路が接続する2つのゲートのランクの値の差(以下、転送ホップ数とする)によって定義するものとする。転送ホップ数が異なる2つの経路がある場合、転送ホップ数が多い経路の方が長く、転送ホップ数が小さい経路の方が短いものとする。例えば、図9に示すランク0のノード201aのゲートga1からランク2のノード201cのゲートgc2の経路は、転送ホップ数が、ランク2−ランク0=2となる。また、ランク0のノード201aのゲートga2からランク1のノード201bのゲートgb1'の経路は、転送ホップ数が、ランク1−ランク0=1となる。従って、終点に近いゲートga2からゲートgb1'の経路は、終点から遠いゲートga1からゲートgc2の経路よりも短いことになる。
サーバ100によるゲート間のランクが増加する方向の経路の設定は、具体的には、終点201ae〜201de側に最も近い経路である、ゲート2からゲート1'の経路において、ランク0のノード201aのゲートga2から、1つランクが増加するランク1のノード201bのゲートgb1'に向かう転送ホップ数1の経路が設定される。また、サーバ100により、ランク2のノード201cのゲートgc2から、1つランクが増加するランク3のノード201dのゲートgd1'に向かう転送ホップ数1の経路が設定される。
また、サーバ100により、ゲート2からゲート1'の経路と比較して終点201ae〜201de側から遠いゲート1からゲート2の経路において、ランク0のノード201aのゲートga1から、2つランクが増加するランク2のノード201cのゲートgc2に向かう転送ホップ数2の経路が設定される。また、サーバ100により、ランク1のノード201bのゲートgb1から、2つランクが増加するランク3のノード201dのゲートgd2に向かう転送ホップ数2の経路が設定される。
次に、サーバ100は、各ゲート間を接続する経路であって、ランクが減少する方向(図10における上方向)の経路を設定する。このとき、サーバ100は、図9と同様、経路を各ノードの終点に近いほど経路の長さが短く(転送ホップ数が少なく)、終点から遠いほど経路の長さが長く(転送ホップ数が多く)なるように設定する。
サーバ100によるゲート間のランクが減少する方向の経路の設定は、具体的には、終点201ae〜201de側に最も近いゲート2からゲート1'の経路において、ランク1のノード201bのゲートgb2から、1つランクが減少するランク0のノード201aのゲートga1'に向かう転送ホップ数1の経路が設定される。また、サーバ100により、ランク3のノード201dのゲートgd2から、1つランクが減少するランク2のノード201cのゲートgc1'に向かう転送ホップ数1の経路が設定される。
また、ゲート2からゲート1'の経路と比較して終点201ae〜201de側から遠いゲート1からゲート2の経路において、サーバ100により、ランク2のノード201cのゲートgc1から、2つランクが減少するランク0のノード201aのゲートga2に向かう転送ホップ数2の経路が設定される。また、サーバ100により、ランク3のノード201dのゲートgd1から、2つランクが減少するランク1のノード201bのゲートgb2に向かう転送ホップ数2の経路が設定される。
次に、サーバ100は、同一のノードに属するゲート同士を接続する経路を設定する。具体的には、サーバ100により、ノード201aのゲートga1からゲートga2を接続する経路およびゲートga2からゲートga1'を接続する経路が設定される。また、サーバ100により、ノード201bのゲートgb1からゲートgb2を接続する経路およびゲートgb2からゲートgb1'を接続する経路が設定される。また、サーバ100により、ノード201cのゲートgc1からゲートgc2を接続する経路およびゲートgc2からゲートgc1'を接続する経路が設定される。また、サーバ100により、ノード201dのゲートgd1からゲートgd2を接続する経路およびゲートgd2からゲートgd1'を接続する経路が設定される。
そして、図11に、サーバ100が設定した上記すべての経路を示す。以上のように、本実施の形態では、サーバ100は、ランク数が2のべき数である場合、ノード201a〜201dのゲートを接続する経路について、終点201ae〜201deに近い経路は転送ホップ数を少なく設定する。また、サーバ100は、始点201as〜201dsに近い経路は転送ホップ数を多く設定する。これにより、ノード201a〜201dのゲートを接続する経路について、終点201ae〜201deに近いほど経路の長さが短く(転送ホップ数が少なく)、始点201as〜201dsに近いほど経路の長さが長く(転送ホップ数が多く)設定される。
図12から図18は、第2の実施の形態のランク数が2のべき数でない場合のネットワークの構成時の処理の様子を示す図である。
ここで、ランク数が2のべき数でない場合のネットワークの構成は、ランク数が2のべき数でない場合のネットワークにおいて、サーバ100により、ランク数を超えない最大の2のべき数を“Bmax”とした場合に、Bmax個のノードでは、経路ランク数が2のべき数である場合のネットワークの構成と同様の経路が設定される。一方、ランク数から上記Bmax個のノードを除いた残りのノードでは、サーバ100により、残りのノードの最初のゲートからの経路が上記Bmax個のノードのいずれかのノードに向けて設定されると共に、上記ランク数が2のべき数の場合と同様の経路が設定されたノードにおける最後から2番目のゲートから、上記残りのノードの最後のゲートに向かう経路が設定される。
具体的には、図18に示すランク数“5”を超えない最大の2のべき数“4”個のノードであるランク0,1,2,3の4個のノードについては、サーバ100により、ゲート2からゲート3の経路およびゲート3からゲート2の経路が、図11に示すランク0,1,2,3のゲート1からゲート2の経路およびゲート2からゲート1'の経路と同様に設定される。一方、残りのノードであるランク4のノードでは、サーバ100により、ランク4のゲートge1からの経路がランク0のゲートga2に向けて設定されると共に、上記ランク数が2のべき数の場合と同様の経路が設定されたランク0のゲートga4からランク4のゲートge1'に経路が設定される。以下、図12から図18に従って、ランク数が2のべき数でない場合のサーバ100によるノード部200のネットワークの構成時の様子について、具体的に説明する。
本実施の形態のサーバ100は、ランク数が2のべき数である場合と同様、図12に示すように、まず構成するネットワークのランク数を取得し、構成するネットワークのランク数に設定する。図12では、サーバ100は、ランク数として“5”を取得したものとする。これに基づいて、図12に示すように、サーバ100により、ランク“0”,“1”,“2”,“3”,“4”の5個のノード(それぞれノード201a,201b,201c,201d,201e)が設定される。また、図12に示すように、サーバ100により、ノード201aの始点201asおよび終点201ae、ノード201bの始点201bsおよび終点201be、ノード201cの始点201csおよび終点201ce、ノード201dの始点201dsおよび終点201deならびにノード201eの始点201esおよび終点201eeが設定される。
次に、サーバ100は、取得したランク数の2を底とする対数(小数点以下切り捨て)を算出すると共に2を加算し、結果を使用ゲート数に設定する。上記のようにランク数が5の場合、使用ゲート数は、log2R=log25≒2.3219・・・となり、さらに小数点以下を切り捨てた上で2を加算すると、使用ゲート数は4となる。これに従い、図13に示すように、サーバ100により、各ノードに対して、4個のゲート(ゲート1,2,3,4)および1個のダミーのゲート(ゲート1')が設定される。具体的には、サーバ100により、ノード201aに対して、ゲートga1,ga2,ga3,ga4,ga1'が設定される。同様に、サーバ100により、ノード201bに対して、ゲートgb1,gb2,gb3,gb4,gb1'が設定され、ノード201cに対して、ゲートgc1,gc2,gc3,gc4,gc1'が設定され、ノード201dに対して、ゲートgd1,gd2,gd3,gd4,gd1'が設定され、ノード201eに対して、ゲートge1,ge2,ge3,ge4,ge1'が設定される。
次に、サーバ100は、各ゲート間を接続する経路であって、ランクが増加する方向(図14における下方向)の経路を設定する。このとき、サーバ100は、ランク数が2のべき数である場合と同様、経路を各ノードの終点に近いほど経路の長さが短く(転送ホップ数が少なく)、終点から遠いほど経路の長さが長く(転送ホップ数が多く)なるように設定する。上記のようにランク数が5の場合、図14に示すように、サーバ100により、ノード201a〜201eのそれぞれの終点201ae〜201eeに近い経路(図14における右側)の長さが短く、終点201ae〜201eeから遠い経路(図14における左側)の長さが長くなるように設定される。
サーバ100によるゲート間のランクが増加する方向の経路の設定は、具体的には、ゲート3からゲート4の経路において、ランク0のノード201aのゲートga3から、1つランクが増加するランク1のノード201bのゲートgb4に向かう転送ホップ数1の経路が設定される。また、サーバ100により、ランク2のノード201cのゲートgc3から、1つランクが増加するランク3のノード201dのゲートgd4に向かう転送ホップ数1の経路が設定される。
また、ゲート3からゲート4の経路に比較して終点201ae〜201eeに遠いゲート2からゲート3の経路において、サーバ100により、ランク0のノード201aのゲートga2から、2つランクが増加するランク2のノード201cのゲートgc3に向かう転送ホップ数2の経路が設定される。また、サーバ100により、ランク1のノード201bのゲートgb2から、2つランクが増加するランク3のノード201dのゲートgd3に向かう転送ホップ数2の経路が設定される。
次に、サーバ100は、各ゲート間を接続する経路であって、ランクが減少する方向(図15における上方向)の経路を設定する。このとき、サーバ100は、図14と同様、経路を各ノードの終点に近いほど経路の長さが短く(転送ホップ数が少なく)、終点から遠いほど経路の長さが長く(転送ホップ数が多く)なるように設定する。
サーバ100によるゲート間のランクが減少する方向の経路の設定は、具体的には、ゲート3からゲート4の経路において、ランク1のノード201bのゲートgb3から、1つランクが減少するランク0のノード201aのゲートga4に向かう転送ホップ数1の経路が設定される。また、サーバ100により、ランク3のノード201dのゲートgd3から、1つランクが減少するランク2のノード201cのゲートgc4に向かう転送ホップ数1の経路が設定される。
また、ゲート3からゲート4の経路に比較して終点201ae〜201eeに遠いゲート2からゲート3の経路において、サーバ100により、ランク2のノード201cのゲートgc4から、2つランクが減少するランク0のノード201aのゲートga3に向かう転送ホップ数2の経路が設定される。また、サーバ100により、ランク3のノード201dのゲートgd2から、2つランクが減少するランク1のノード201bのゲートgb3に向かう転送ホップ数2の経路が設定される。
次に、サーバ100は、上記ランク数が2のべき数の場合と同様の経路が設定されたノードのゲートから上記残りのノードにおける最後のゲートに接続する経路を設定する。具体的には、図16に示すように、サーバ100により、ランク0のノード201aのゲートga4からランク4のノード201eのゲートge1'の経路が設定される。ここで、図16では、残りのノードが1つである場合について説明しているが、残りのノードが複数あってもよい。この場合、サーバ100により、複数の残りのノードにおける最後のゲートと、経路が設定されたノードのうちの異なるノードのゲートとが接続される経路が設定される。
次に、サーバ100は、上記残りのノードの最初のゲートから上記ランク数が2のべき数の場合と同様の経路が設定されたノードのゲートに接続する経路を設定する。具体的には、図17に示すように、サーバ100により、ランク4のノード201eのゲートge1からランク0のノード201aのゲートga2の経路が設定される。ここで、図17では、図16と同様に、残りのノードが1つである場合について説明しているが、残りのノードが複数あってもよい。この場合、サーバ100により、複数の残りのノードの最初のゲートと、経路が設定されたノードのうちの異なるノードのゲートとが接続される経路が設定される。
次に、サーバ100は、ランク数を超えない最大の2のべき数であるBmax個のノードについて、サーバ100により、同一のノードに属するゲート同士を接続する経路を設定する。具体的には、サーバ100により、ノード201aのゲートga1からゲートga2を接続する経路、ゲートga2からゲートga3を接続する経路、ゲートga3からゲートga4を接続する経路およびゲートga4からゲートga1'を接続する経路が設定される。また、サーバ100により、ノード201bのゲートgb1からゲートgb2を接続する経路、ゲートgb2からゲートgb3を接続する経路、ゲートgb3からゲートgb4を接続する経路およびゲートgb4からゲートgb1'を接続する経路が設定される。また、サーバ100により、ノード201cのゲートgc1からゲートgc2を接続する経路、ゲートgc2からゲートgc3を接続する経路、ゲートgc3からゲートgc4を接続する経路およびゲートgc4からゲートgc1'を接続する経路が設定される。また、サーバ100により、ノード201dのゲートgd1からゲートgd2を接続する経路、ゲートgd2からゲートgd3を接続する経路、ゲートgd3からゲートgd4を接続する経路およびゲートgd4からゲートgd1'を接続する経路が設定される。なお、ランク4であるノード201eについては、ランク数(ランク0〜4の5個)が上記ランク数を超えない最大の2のべき数であるBmax=4を超えていると共に、既にランク0〜4のBmax個のノードで経路が設定されるのでネットワークを構成しない。従って、ランク4のノード201eに属するゲート同士を接続する経路が設定されない。
そして、図18に、サーバ100が設定した上記すべての経路を示す。以上のように、本実施の形態では、サーバ100は、ランク数が2のべき数でない場合、ノード201a〜201eのゲートを接続する経路について、終点201ae〜201eeに近い経路は転送ホップ数を少なく設定する。また、サーバ100は、始点201as〜201esに近い経路は転送ホップ数を多く設定する。これにより、ノード201a〜201eのゲートを接続する経路について、終点201ae〜201eeに近いほど経路の長さが短く(転送ホップ数が少なく)、始点201as〜201esに近いほど経路の長さが長く(転送ホップ数が多く)設定される。
また、図18に示すように、ランク4(ノード201e)のゲートge2,ge3,ge4は、ネットワークを構成せず、これらの段階(ステージ)では、ノード201eは、クライアント装置300によって要求された処理に使用されない。すなわち、ゲートge2,ge3,ge4ではノード201eは、データの処理および処理結果の送受信を実行しない。
図19から図21は、第2の実施の形態のネットワーク構成処理を示すフローチャートである。本実施の形態のサーバ100は、ノード部200に含まれるノードの個数であるランク数を取得し、取得したランク数に基づいてノード部200のネットワークの構成を設定するネットワーク構成処理を実行する。以下では、図19から図21に示すネットワーク構成処理を各フローチャートのステップ番号に沿って説明する。
[ステップS11]ノード管理部112は、ユーザの操作によりクライアント装置300から入力されたランク数を取得し、取得したランク数を“R”に設定する。これにより、ノード部200のランク数(すなわち図7および図12において前述したノードの個数)が決定され、ノード部200に決定された個数のノードが設定される。
[ステップS12]ノード管理部112は、ステップS11で取得したランク数が、「2のべき数」であるか否かを判定する。ランク数が2のべき数であれば(ステップS12 YES)、処理はステップS13に進められる。一方、ランク数が2のべき数でなければ(ステップS12 NO)、処理はステップS21(図20)に進められる。
[ステップS13]ノード管理部112は、ランク数が2のべき数である場合の使用ゲート数を算出する使用ゲート数算出処理1を実行する。使用ゲート数算出処理1については、詳しくは図22において後述する。また、ノード管理部112は、使用ゲート数算出処理1で算出した使用ゲート数と等しい数のゲートを設定する。これにより、ノード部200に図8において前述した各ノードが有するゲートの個数が決定され、決定された個数のゲートおよびダミーのゲートが各ノードに対して設定される。
[ステップS14]ノード管理部112は、ステップS13で算出し、設定したゲートを接続する経路を設定するために、ゲート接続先設定処理を実行する。ゲート接続先設定処理については、詳しくは図24において後述する。ステップS14では、ノード管理部112は、最初に未だ経路の設定が終了していない任意のランク(ノード)を1つ選択すると共に、選択したランクにおける、未だ経路の設定が終了していない任意のゲートを1つ選択し、選択したゲートについてゲート接続先設定処理を実行する。
[ステップS15]ノード管理部112は、ステップS14で選択した任意のランクについてゲート接続先設定処理が実行され、任意のランクのすべてのゲートについて経路の接続先の設定が終了しているか否かについて判定する。任意のランクのすべてのゲートについて経路の接続先の設定が終了していれば(ステップS15 YES)、処理はステップS16に進められる。一方、すべてのゲートのランクのうち、経路の接続先の設定が終了していないランクがあれば(ステップS15 NO)、処理はステップS14に進められ、ステップS14で選択されたランクにおいて未だ経路の設定が終了していないゲートについて、ゲート接続先設定処理が実行される。
このステップS14およびステップS15のループは、ステップS13で算出された使用ゲート数の回数だけ繰り返される。例えば、図7から図11の例では、使用ゲート数の差出結果は2であり、各ノードにゲート1,2の2個のゲートが設定されているので、ステップS14のゲート接続先設定処理は2回繰り返される。
[ステップS16]ノード管理部112は、すべてのランクのゲートについてゲート接続先設定処理が実行され、すべてのランクのすべてのゲートについて経路の接続先の設定が終了しているか否かについて判定する。すべてのランクのすべてのゲートについて経路の接続先の設定が終了していれば(ステップS16 YES)、処理はステップS17に進められる。一方、すべてのゲートのランクのうち、経路の接続先の設定が終了していないランクがあれば(ステップS16 NO)、処理はステップS14に進められ、次の任意のランクが選択されると共に選択されたランクの各ゲートについてゲート接続先設定処理が実行される。
このステップS14,ステップS15およびステップS16のループは、ステップS11で取得されたランク数の回数だけ繰り返される。例えば、図7から図11のフローチャートの例では、ノード部200のランク数として4が取得され、ランク0,1,2,3の4つのノードが設定されているので、ステップS14からステップS16のループは4回繰り返される。
[ステップS17]ノード管理部112は、接続先が同一のノードとなる経路を設定する。これにより、図11および図18のフローチャートにおいて前述したようにノード部200のすべての処理の経路が設定される。その後、処理は終了する。
[ステップS21]ノード管理部112は、ランク数が2のべき数でない場合の使用ゲート数を算出する使用ゲート数算出処理2を実行する。使用ゲート数算出処理2については、詳しくは図23において後述する。また、ノード管理部112は、使用ゲート数算出処理2で算出した使用ゲート数と等しい数のゲートを設定する。これにより、ノード部200に図13において前述した各ノードが有するゲートの個数が決定され、決定された個数のゲートおよびダミーのゲートが各ノードに対して設定される。
[ステップS22]ノード管理部112は、ステップS11で取得したランク数以下であって最大の2のべき数Bmaxを算出し、算出結果を“NB”に設定する。
ここで、NBは、例えば、ランク数を“R”とし、log2Rを算出して小数点以下を切り捨てて“N”とし、NB=2Nを計算することで算出してもよい。
[ステップS23]ノード管理部112は、ステップS21で算出し、設定したゲートのうち、中間のゲートを接続する経路を設定するために、ゲート接続先設定処理を実行する。中間のゲートとは、設定したゲートのうち、図17において前述した最初のゲートおよび図16において前述した最後のゲート以外のゲートである。ステップS23では、ノード管理部112は、最初に未だ中間のゲートの経路の設定が終了していない任意のランクを1つ選択すると共に、選択したランクにおける、未だ経路の設定が終了していない任意の中間のゲートを1つ選択し、選択した中間のゲートについてゲート接続先設定処理を実行する。
[ステップS24]ノード管理部112は、ステップS23で選択した任意のランクについてゲート接続先設定処理が実行され、選択したランクのすべての中間のゲートについて経路の接続先の設定が終了しているか否かについて判定する。選択されたランクのすべての中間のゲートについて経路の接続先の設定が終了していれば(ステップS24 YES)、処理はステップS25に進められる。一方、選択されたランクのすべての中間のゲートのうち、経路の接続先の設定が終了していない中間のゲートがあれば(ステップS24 NO)、処理はステップS23に進められ、ステップS23で選択されたランクにおける未だ経路の設定が終了していない中間のゲートについて、ゲート接続先設定処理が実行される。
このステップS23およびステップS24のループは、ステップS13で算出された使用ゲート数の回数繰り返される。例えば、図12から図18の例では、使用ゲート数の算出結果は4であり、最初のゲートおよび最後のゲートをそれぞれ1個ずつ除けば、各ノードにゲート2,3の2個の中間のゲートが設定されているので、ステップS23のゲート接続先設定処理は2回繰り返される。
[ステップS25]ノード管理部112は、最後のゲートを接続する経路を設定するために、最後ゲート接続先設定処理を実行する。最後ゲート接続先設定処理については、詳しくは図25において後述する。ステップS25では、ノード管理部112は、ステップS24で選択したランクにおける最後のゲートについて最後ゲート接続先設定処理を実行する。
[ステップS26]ノード管理部112は、すべてのランクにおいて、中間のゲートについてゲート接続先設定処理が実行されると共に最後のゲートについて最後ゲート接続先設定処理が実行され、すべてのランクのすべての中間のゲートおよび最後のゲートについて経路の接続先の設定が終了しているか否かについて判定する。すべてのランクのすべての中間のゲートおよび最後のゲートについて経路の接続先の設定が終了していれば(ステップS26 YES)、処理はステップS31(図21)に進められる。一方、すべての中間のゲートおよび最後のゲートについて経路の接続先の設定が終了していないランクがあれば(ステップS26 NO)、処理はステップS23に進められ、次の任意のランクが選択されると共に選択されたランクの各中間のゲートについてゲート接続先設定処理が実行され、最後のゲートについて最後ゲート接続先設定処理が実行される。
[ステップS31]ノード管理部112は、最初のゲートを接続する経路を設定するために、最初ゲート接続先設定処理を実行する。最初ゲート接続先設定処理については、詳しくは図26において後述する。ステップS31では、ノード管理部112は、未だ最初のゲートの経路の設定が終了していない任意のランクを1つ選択すると共に、選択したランクの最初のゲートについて最初ゲート接続先設定処理を実行する。
[ステップS32]ノード管理部112は、すべてのランクの最初のゲートについて最初ゲート接続先設定処理が実行され、すべてのランクの最初のゲートについて経路の接続先の設定が終了しているか否かについて判定する。すべてのランクの最初のゲートについて経路の接続先の設定が終了していれば(ステップS32 YES)、処理は終了する。一方、最初のゲートについて経路の接続先の設定が終了していないランクがあれば(ステップS32 NO)、処理はステップS31に進められ、最初のゲートについて経路の接続先の設定が終了していないランクのうち、次の任意のランクが選択される。次に、選択されたランクの最初のゲートについて最初ゲート接続先設定処理が実行される。
図22は、第2の実施の形態の使用ゲート数算出処理1を示す図である。本実施の形態のサーバ100は、ネットワーク構成処理において取得したランク数が2のべき数である場合、取得した2のべき数であるランク数に基づいて使用ゲート数を算出して設定する使用ゲート数算出処理1を実行する。以下では、図22に示す使用ゲート数算出処理1をフローチャートのステップ番号に沿って説明する。
[ステップS41]ノード管理部112は、ネットワーク構成処理のステップS11で取得したランク数Rの2を底とする対数(log2R)を算出する。
[ステップS42]ノード管理部112は、ステップS41の算出結果を使用ゲート数“G”に設定する。その後、処理は復帰する。
図23は、第2の実施の形態の使用ゲート数算出処理2を示す図である。本実施の形態のサーバ100は、ネットワーク構成処理において取得したランク数が2のべき数でない場合、取得した2のべき数でないランク数に基づいて使用ゲート数を算出して設定する使用ゲート数算出処理2を実行する。以下では、図23に示す使用ゲート数算出処理2をフローチャートのステップ番号に沿って説明する。
[ステップS51]ノード管理部112は、ネットワーク構成処理のステップS22と同様に、ネットワーク構成処理のステップS11で取得したランク数Rの2を底とする対数(log2R)を算出して、小数点以下を切り捨てた結果である“N”を算出する。
[ステップS52]ノード管理部112は、ステップS51の算出結果Nに2を加算する。
ランク数が2のべき数でない場合、図16および図17に示したように、上記残りのノードとランク数が2のべき数の場合と同様の経路が設定されたノードとを接続する経路を設定する必要がある。このため、ランク数が2のべき数でない場合、ランク数が2のべき数である場合に加えて、上記残りのノードの最初のゲートおよび最後のゲートが必要となる。これに基づき、ランク数が2のべき数でない場合、ステップS51においてランク数が2のべき数である場合に比較して使用ゲート数を2個分増加させる。
[ステップS53]ノード管理部112は、ステップS52の算出結果Nを使用ゲート数“G”に設定する。その後、処理は復帰する。
図24は、第2の実施の形態のゲート接続先設定処理を示すフローチャートである。本実施の形態のサーバ100は、ネットワーク構成処理において設定されたゲートの経路による接続先を設定するゲート接続先設定処理を実行する。ゲート接続先設定処理は、ランク数が2のべき数である場合には、すべてのゲートの接続先を設定し、ランク数が2のべき数でない場合には、最初のゲートおよび最後のゲート以外の中間のゲートの接続先を設定する。以下では、図24に示すゲート接続先設定処理をフローチャートのステップ番号に沿って説明する。
[ステップS61]ノード管理部112は、ネットワーク構成処理のステップS14からステップS16またはステップS23からステップS26のループにおけるその時点の処理の対象のランクを示すランク番号を“RC”に設定する。
[ステップS62]ノード管理部112は、ネットワーク構成処理のステップS14からステップS15またはステップS23からステップS24のループにおけるその時点の処理の対象のゲートを示すゲート番号を“GC”に設定する。
[ステップS63]ノード管理部112は、RC/(2G-GC+1)の余りを算出し、算出結果を“MV”に設定する。
[ステップS64]ノード管理部112は、MV<2G-GCであるか否かを判定する。MV<2G-GCであれば(ステップS64 YES)、処理はステップS65に進められる。一方、MV≧2G-GCであれば(ステップS64 NO)、処理はステップS67に進められる。
[ステップS65]ノード管理部112は、2G-GCを算出し、算出結果を“NV”に設定する。
[ステップS66]ノード管理部112は、(R+RC+NV)/Rの余りを算出し、算出結果が示すゲート番号のゲートを、現在のループにおけるランク番号RCおよびゲート番号GCからの経路の接続先に設定する。これにより、ノード部200に図9および図14において前述したランクが増加する方向(図9および図14における下方向)の経路が設定される。
[ステップS67]ノード管理部112は、2G-GCを算出し、算出結果を“NV”に設定する。
[ステップS68]ノード管理部112は、(R−RC+NV)/Rの余りを算出し、算出結果が示すゲート番号のゲートを、現在のループにおけるランク番号RCおよびゲート番号GCからの経路の接続先に設定する。これにより、ノード部200に図10および図15において前述したランクが減少する方向(図10および図15における上方向)の経路が設定される。
図25は、第2の実施の形態の最後ゲート接続先設定処理を示すフローチャートである。本実施の形態のサーバ100は、ランク数が2のべき数でない場合にネットワーク構成処理において設定されたゲートの終点に最も近い側の最後の経路による接続先を設定する最後ゲート接続先設定処理を実行する。以下では、図25に示す最後ゲート接続先設定処理をフローチャートのステップ番号に沿って説明する。
[ステップS71]ノード管理部112は、ネットワーク構成処理のステップS23からステップS26のループにおけるその時点の処理の対象のランクを示すランク番号を“RC”に設定する。
[ステップS72]ノード管理部112は、初期値“0”を“RN”に設定する。
[ステップS73]ノード管理部112は、RN<NBであるか否かを判定する。RN<NBであれば(ステップS73 YES)、処理はステップS74に進められる。一方、RN≧NBであれば(ステップS73 NO)、処理は復帰する。
[ステップS74]ノード管理部112は、RN<RC+1であるか否かを判定する。RN<RC+1であれば(ステップS74 YES)、処理はステップS75に進められる。一方、RN≧RC+1であれば(ステップS74 NO)、処理はステップS76に進められる。
[ステップS75]ノード管理部112は、RN+NBを算出し、算出結果が示すゲート番号のゲートを、ランク番号RCの最後のゲートの接続先に設定する。すなわち、ノード部200に図16において前述した残りのノードにおける最後のゲートが他のゲートと接続される経路が設定される。これにより、ランク数を超えない最大の2のべき数を超えたランクのノードにおける最後のゲートが、ランク数を超えない最大の2のべき数以下のランクのゲートと接続される。
[ステップS76]ノード管理部112は、RNに1を加算する。その後、処理をステップS73に進める。
図26は、第2の実施の形態の最初ゲート接続先設定処理を示すフローチャートである。本実施の形態のサーバ100は、ランク数が2のべき数でない場合にネットワーク構成処理において設定されたゲートの終点に最も近い側の最初の経路による接続先を設定する最初ゲート接続先設定処理を実行する。以下では、図26に示す最初ゲート接続先設定処理をフローチャートのステップ番号に沿って説明する。
[ステップS81]ノード管理部112は、ネットワーク構成処理のステップS23からステップS26のループにおけるその時点の処理の対象のランクを示すランク番号を“RC”に設定する。
[ステップS82]ノード管理部112は、NBの値を“RN”に設定する。
[ステップS83]ノード管理部112は、RN<Rであるか否かを判定する。RN<Rであれば(ステップS83 YES)、処理はステップS84に進められる。一方、RN≧Rであれば(ステップS83 NO)、処理は復帰する。
[ステップS84]ノード管理部112は、RN<RC+1であるか否かを判定する。RN<RC+1であれば(ステップS84 YES)、処理はステップS85に進められる。一方、RN≧RC+1であれば(ステップS84 NO)、処理はステップS86に進められる。
[ステップS85]ノード管理部112は、RN−NBを算出し、算出結果が示すゲート番号のゲートを、ランク番号RCの最初のゲートの接続先に設定する。すなわち、ノード部200に図16において前述した最初のゲートを接続する経路が設定される。これにより、ランク数を超えない最大の2のべき数を超えたランクのノードにおける最初のゲートが、ランク数を超えない最大の2のべき数以下のランクのゲートと接続される。
[ステップS86]ノード管理部112は、RNに1を加算する。その後、処理をステップS83に進める。
このように、第2の実施の形態のサーバ100では、ノード部200のネットワークの構成を、多くのデータが流れる傾向がある終点に近い経路を他の経路よりも短く設定することで、ノード部200のネットワーク内のデータの転送量を減少させる。これにより、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
また、相対的に流れるデータの量が多い傾向がある終点に近い経路ほど、経路の長さを短く(転送ホップ数が少なく)設定すると共に、相対的に流れるデータの量が少ない傾向がある終点から遠い経路ほど、経路の長さを長く(転送ホップ数が多く)設定することで、ノード部200のネットワーク全体におけるデータの転送量を減少させる。これにより、さらにネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
また、ノード間の経路の長さを転送ホップ数で定義することにより、経路の設定時の処理が単純化でき、特にノード数が大規模なネットワークの構成時の負担の増加も抑制できる。
また、ノード部200の各ノードで実行される処理が複数の段階の処理に分割されていると共に、各ノードが経路で接続されることでネットワークが構成されている。これにより、ノード管理部112が上記のように経路を設定することで、ノード間で処理されると共に送受信されるデータの転送量を減少させることで、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
また、ノード部200では、分割された段階の処理毎に他のノードの処理の完了をバリア同期により待ち合わせながら処理が進められる。このため、各ノードで処理されたデータが他のノードに対して同時に転送される場合が多い。これに対して、ノード管理部112が上記のように経路を設定することで、ノード間で処理されると共に送受信されるデータの転送量を減少させることで、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
また、ノード部200では、各ノードが経路によって再帰的に接続された経路を用いて処理が進められる。このため、各ノードで処理されたデータが他のノードに対して同時に転送される場合が多い。これに対して、ノード管理部112が上記のように経路を設定することで、ノード間で処理されると共に送受信されるデータの転送量を減少させることで、ネットワーク内のデータの転送を効率化して通信量を削減し、通信の混雑や処理時間のロスの発生を抑制することが可能となる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サーバ100が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等がある。光磁気記録媒体には、MO(Magneto-Optical disk)等がある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することもできる。
以上、開示の計算システム、構成管理装置および構成管理プログラムを、図示の実施の形態に基づいて説明したが、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の2以上の構成を組み合わせたものであってもよい。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、開示の技術は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
以上の第1の実施の形態および第2の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部と、ノード部の経路を設定する構成管理装置とを有する計算システムにおいて、
前記構成管理装置は、前記ノード同士を接続する経路を設定する場合に、前記ノード部で処理結果のデータが出力される終点に近い経路の長さを、より前記終点から遠い経路の長さ以下に設定するノード管理部を有し、
前記ノード部は、複数の前記ノードが前記ノード管理部により設定された経路で接続されているネットワークを用いてデータを処理することを特徴とする計算システム。
(付記2) 前記計算システムにおいて、
前記ノード管理部は、前記終点に近い経路ほど、経路の長さを短く設定すると共に、前記終点から遠い経路ほど、経路の長さを長く設定することを特徴とする付記1記載の計算システム。
(付記3) 前記計算システムにおいて、
前記経路の長さは、転送ホップ数で定義されることを特徴とする付記1記載の計算システム。
(付記4) 前記計算システムにおいて、
前記ノード部は、各ノードで実行される処理が複数の段階の処理に分割されていることを特徴とする付記1記載の計算システム。
(付記5) 前記計算システムにおいて、
前記ノード部は、前記分割された段階の処理毎に他のノードの処理の完了を待ち合わせることを特徴とする付記4記載の計算システム。
(付記6) 前記計算システムにおいて、
前記ノード部は、経路のネットワークにおいて各前記ノードが前記経路によって再帰的に接続されることを特徴とする付記1記載の計算システム。
(付記7) 前記計算システムにおいて、
前記ノード部は、経路のネットワークが3次元トーラスであることを特徴とする付記1記載の計算システム。
(付記8) 前記計算システムにおいて、
前記ノード部は、経路のネットワークがファットツリーであることを特徴とする付記1記載の計算システム。
(付記9) 経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部の経路を設定する構成管理装置において、
前記ノード同士を接続する経路を設定する場合に、前記ノード部で処理結果のデータが出力される終点に近い経路の長さを、より前記終点から遠い経路の長さ以下に設定するノード管理部を有することを特徴とする構成管理装置。
(付記10) コンピュータに、経路で接続された複数のノードのそれぞれが、受信したデータを処理し、処理結果のデータを他のノードに送信することで、データを処理するノード部の経路を設定する処理を実行させる構成管理プログラムにおいて、
前記コンピュータに、
前記ノード同士を接続する経路を設定する場合に、前記ノード部で処理結果のデータが出力される終点に近い経路の長さを、より前記終点から遠い経路の長さ以下に設定するステップ、
を実行させることを特徴とする構成管理プログラム。