(57)【特許請求の範囲】
【請求項１】
処理装置のハイパーキューブ・ネットワークを動作させる方法であって、
前記ネットワーク中の単一の処理装置に処理させるべきデータを前記ネットワーク中の複数の処理装置が記憶していることを判断するステップと、
前記処理させるべきデータを記憶している前記複数の処理装置のアドレスを取得するステップと、
前記処理すべきデータを記憶している前記複数の処理装置の前記アドレスの各桁について最も共通する数を求めるステップと、
前記求められた各桁について最も共通する数を含む新しいアドレスを、前記単一の処理装置のアドレスとして生成するステップと、
前記生成された新しいアドレスを有する処理装置に前記処理させるべきデータを転送するステップと
を含む、方法。
【請求項２】
前記処理させるべきデータを記憶している前記複数の処理装置のそれぞれが前記ネットワーク中の単一の処理装置に処理させるべきデータ量を求めるステップをさらに含み、前記処理させるべきデータを記憶している前記複数の処理装置の前記アドレスの各桁について最も共通する数を求める前記ステップでは、前記求められたデータ量に従って重み付けを行うことにより、各桁について最も共通する数を求める、請求項１に記載の方法。
【請求項３】
前記処理させるべきデータを記憶している前記複数の処理装置の前記アドレスの桁について最も共通する数が、２つ以上の結果を返す場合は、前記返された結果の１つを選択する、請求項１または２に記載の方法。
【請求項４】
前記処理させるべきデータを記憶している前記複数の処理装置のうちの１つの処理装置に２つ以上のアドレスが割り振られた場合は、前記処理させるべきデータを記憶している前記複数の処理装置のアドレスを取得する前記ステップでは、２つ以上のアドレスが割り振られた前記処理装置については、前記処理装置に対して１つのアドレスのみを取得する、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
処理装置のハイパーキューブ・ネットワークを備える処理システムであって、
前記ネットワーク中の単一の処理装置に処理させるべきデータを前記ネットワーク中の複数の処理装置が記憶していることを判断し、
前記処理させるべきデータを記憶している前記複数の処理装置のアドレスを取得し、
前記処理させるべきデータを記憶している前記複数の処理装置の前記アドレスの各桁について最も共通する数を求め、
前記求められた各桁について最も共通する数を含む新しいアドレスを、前記単一の処理装置のアドレスとして生成し、
前記生成された新しいアドレスを有する処理装置に前記処理させるべきデータを転送する
ように動作可能な、システム。
【請求項６】
処理装置のハイパーキューブ・ネットワークを動作させるための、コンピュータ可読媒体上のコンピュータ・プログラムであって、
前記ネットワーク中の単一の処理装置に処理させるべきデータを前記ネットワーク中の複数の処理装置が記憶していることを判断する命令と、
前記処理させるべきデータを記憶している前記複数の処理装置のアドレスを取得する命令と、
前記処理させるべきデータを記憶している前記複数の処理装置の前記アドレスの各桁について最も共通する数を求める命令と、
前記求められた各桁について最も共通する数を含む新しいアドレスを、前記単一の処理装置のアドレスとして生成する命令と、
前記生成された新しいアドレスを有する処理装置に前記処理させるべきデータを転送する命令と
を備える、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置のハイパーキューブ・ネットワークを動作させる方法に関する。一実施形態では本発明は、データの処理のための中心となる場所を計算することによって、ハイパーキューブ・ネットワーク内のデータ伝送を最適化するための機構を提供する。
【背景技術】
【０００２】
多くのコンピューティング環境では、多数の処理装置がネットワークにおいて一緒に接続される。例えば高度に複雑なソフトウェア製品は、一緒に接続された多数の物理マシンにわたって分割することができる。同様にインターネット上で行われるタスクは頻繁に、ネットワークとして一緒に接続された多数のサーバによって実行される。このような多数の処理装置の他の例は、スーパーコンピュータなどの個別のマシン内にあり、これらは単一のマシン内に多数の処理装置を設けることによって非常に大きな処理能力をもたらす。
【０００３】
多数の場所からのデータを必要とする計算に多数の処理装置が参加するときは、処理装置は、計算を評価できるようにするために単一のポイントに一定量のデータを渡すことが必要になり得る。一例は分散型データベースにおける結合クエリであり、２つのテーブルからのデータは、結合クエリを評価するために共通のノードに統合されなければならない。データは、ネットワーク内の異なる処理装置において異なる大きさで存在し得る。
【０００４】
一部のコンピュータ・ネットワーク、特に大規模な並列スーパーコンピュータはハイパーキューブ・トポロジの形態で構成される。このトポロジでは各処理装置は、それが接続された少数の近傍装置（neighbours）を有する。データを１つの処理装置から既知の送信先に伝送するために、送信先に達するまで、ハイパーキューブ・ネットワーク内の処理装置の位置を表す処理装置の論理アドレスに従って一連の近傍装置の間で次々にデータが渡される。さらなる情報としては例えば、http://en.wikipedia.org/wiki/MIMD#Hypercube_interconnection_networkを参照されたい。
【０００５】
処理のためにデータを複数の処理装置から単一の場所に伝送する必要があるときは、データの量が大きい場合またはネットワーク内の処理装置の間の帯域幅が低い場合あるいはその両方の場合は、伝送される総データ量が最小化されそれによって計算の実行において最小のネットワーク帯域幅を用いるように、すべてのデータを特定の処理装置に伝送するように選ぶことが望ましい。この場合はこのようなネットワークにおいて理想的な処理装置の場所を決定するための方法およびシステムが必要である。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Bhuyan, L.N．and Agrawal, D.P., "Generalized Hypercube and HyperbusStructures for a Computer Network," IEEE Transactions on Computers, volumeC-33, number 4, pages 323 to 333, April 1984
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって本発明の目的は、既知の技術に対して改善を行うことである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によれば、処理装置のハイパーキューブ・ネットワークを動作させる方法が提供され、この方法は、ネットワーク中の単一の処理装置に処理させるべきデータをネットワーク中の複数の処理装置が記憶していることを判断するステップと、処理させるべきデータを記憶している複数の処理装置のアドレスを取得するステップと、処理させるべきデータを記憶している複数の処理装置のアドレスの各桁について最も共通する数を求めるステップと、求められた各桁について最も共通する数を含む新しいアドレスを、単一の処理装置のアドレスとして生成するステップと、生成された新しいアドレスを有する処理装置に処理させるべきデータを転送するステップとを含む。
【０００９】
本発明の第２の態様によれば、処理装置のハイパーキューブ・ネットワークを備えるシステムが提供され、このシステムは、ネットワーク中の単一の処理装置に処理させるべきデータをネットワーク中の複数の処理装置が記憶していることを判断し、処理させるべきデータを記憶している複数の処理装置のアドレスを取得し、処理させるべきデータを記憶している複数の処理装置のアドレスの各桁について最も共通する数を求め、求められた各桁について最も共通する数を含む新しいアドレスを、単一の処理装置のアドレスとして生成し、生成された新しいアドレスを有する処理装置に処理させるべきデータを転送するように動作される。
【００１０】
本発明の第３の態様によれば、処理装置のハイパーキューブ・ネットワークを動作させるための、コンピュータ可読媒体上のコンピュータ・プログラムが提供され、このプログラムはネットワーク中の単一の処理装置に処理させるべきデータをネットワーク中の複数の処理装置が記憶していることを判断する命令と、処理させるべきデータを記憶している複数の処理装置のアドレスを取得する命令と、処理させるべきデータを記憶している複数の処理装置のアドレスの各桁について最も共通する数を求める命令と、求められた各桁について最も共通する数を含む新しいアドレスを、単一の処理装置のアドレスとして生成する命令と、生成された新しいアドレスを有する処理装置に処理させるべきデータを転送するための命令とを備える。
【００１１】
したがって取り出すべきデータの分布が分かれば、ハイパーキューブ・ネットワーク内のどの処理装置が結果としてネットワーク・トラフィックの総量を最小にするかを判断する機構を提供することが可能となる。利点は、ハイパーキューブ・ネットワークにわたる、データ量の多い分散型計算方式のスループットが改善されることである。例えば、１６個の処理装置のうち、４つの装置が単一の場所で処理されなければならないデータを記憶しているネットワークにおいては、上記の方法およびシステムは、ネットワーク内で必要なデータ伝送の量を最小にしながら、１６個の処理装置のうちのどれがその仕事を行うべきかを決定することになる。選択される処理装置は、データを記憶した４つのうちの１つの場合もあり、またはネットワーク内の全く異なる処理装置の場合もあり得る。
【００１２】
ハイパーキューブ・ネットワークを形成する処理装置は例えば、スーパーコンピュータ内のそれぞれにメモリが接続された個々のプロセッサの場合もある。処理装置は例えば、装置のネットワークを形成するようにイーサネット（Ｒ）を通じて一緒に接続された標準のデスクトップ・コンピュータなどのマシンの場合もある。同様に処理装置は地理的に広がり、インターネットなどの広域ネットワークによって一緒に接続される場合もある。ハイパーキューブ・ネットワークを形成する処理装置は同一である必要はなく、異なるマシンがネットワークとして、例えばサーバとクライアント装置のネットワークとして一緒に接続される場合もある。
【００１３】
ハイパーキューブ・ネットワークは、ネットワークのすべてのノードが同じ長さの一意のアドレスを有するネットワークであり、ネットワークのノードの間の接続は、１つの桁だけが異なるアドレスを有する２つのノードが一緒に接続されるように、アドレスによって決定される。ハイパーキューブ・ネットワークを形成する処理装置の数は重要ではない。理論的に数学的に純粋なハイパーキューブ・ネットワークでは、ネットワーク内のノード（処理装置）の数は（２Ｎ）のべき乗であり、各ノードは長さがＮ桁の２進数のラベル（アドレス）を有する。各ノードは、それ自体のアドレスとは１つの桁だけが異なるアドレスを有するノードに接続される。例えばＮ＝３の場合は、０００、００１、０１０、０１１、１００、１０１、１１０、および１１１とラベルが付された８個のノードが存在する。ノード０００は、ノード００１、０１０、および１００に接続されるなどとなる。しかし方法およびシステムの実際の実装形態では、ネットワーク内の処理装置の数が２のべき乗でない場合でも、ネットワークは、２つのアドレスがハイパーキューブ・トポロジの用語で「隣接（adjacent）」しており、依然として接続ルールが守られる限りは、１つまたは複数の処理装置をこれら２つの２進数アドレスを用いてラベル付けすることによって依然としてハイパーキューブ・ネットワークとして構成することができる。
【００１４】
データの処理を実行するために、ネットワーク内の処理装置の正しい場所を決定する方法は、「一般化されたハイパーキューブ」として分類され得るネットワーク上で用いることができる（さらなる情報については、Bhuyan, L.N．and Agrawal, D.P.,"Generalized Hypercube and Hyperbus Structures for a ComputerNetwork," IEEE Transactions on Computers, volume C-33, number 4, pages 323to 333, April 1984を参照されたい）。一般化されたハイパーキューブは、アドレス・ラベルの桁を、２進数アドレスにおいて用いられる０と１以外の値にすることを可能にすることによって、標準のハイパーキューブの概念を拡張するものである。例えばすべてのネットワーク・ラベルは桁に０、１、または２をとることができ、２次元ネットワークに対するラベルの集合として、００、０１、０２、１０、１１、１２、２０、２１、および２２が与えられる。すべての経路指定は標準のハイパーキューブと同じままであり、したがってラベルが唯一の桁だけ異なるノードは近傍ノード（neighbours）である（０２は、ノード１２、２２、００、および０１に接続されることになる）。好ましくは方法はさらに、処理させるべきデータを記憶している複数の処理装置のそれぞれにおいて処理させるべきデータ量を求めるステップを含み、処理させるべきデータを記憶している複数の処理装置のアドレスの各桁について最も共通する数を求めるステップは、各桁に対して求めた最も共通する数を、求められたデータ量に従って重み付けすることを含む。データを処理するために処理装置のどれを用いるかを決定する方法およびシステムは、重み付けされない手順としてまたは重み付けされた手順として行うことができる。重み付けされた手順では、各処理装置が伝送することになるデータ量が、アドレス内の最も共通する数の決定において用いられる。処理を重み付けすることの利点は、データの処理を実行する処理装置を選択することにより、結果としてネットワークにわたって伝送されるデータ量が最も少なくなることである。
【００１５】
２進数アドレスを用いるハイパーキューブ・ネットワークでは、０および１を比較するためにアドレスの各桁が調べられ、これは効果的に、選択された次元に従ってハイパーキューブ構造を両半分に分割し、次いで各半分にある寄与するノードの数が求められ、最も多いノードを有する半分が選ばれる。ハイパーキューブがすべての次元に沿って分割された場合は、特定のノードが中心として分離される。重み付けされる場合は、ハイパーキューブはどちらの半分が最も多く総データを含んでいるかを知るために各次元に沿って半分に分割され、効果的にデータの「重心」を見出す。有利であることには、方法はさらに、処理させるべきデータを記憶している複数の処理装置の２進数アドレスの桁に対する最も共通する数が、２つ以上の結果を返す場合は、返された結果の１つだけを選択するステップを含む。方法は、重み付けされて用いられるか重み付けされないで用いられるかに関わらず２つ以上のアドレスを返すことができ、それによってネットワーク内の２つ以上の処理装置が、帯域幅消費の点から等しいコストで処理を実行できることを示唆する。この場合は、異なる処理装置から選択するために何らかの選択ロジックが必要である。
【００１６】
理想的には、処理させるべきデータを記憶している複数の処理装置のうちの１つの処理装置に２つ以上のアドレスが割り振られた場合は、処理させるべきデータを記憶している複数の処理装置のアドレスを取得するステップは、２つ以上のアドレスが割り振られた処理装置については、その処理装置に対して１つのアドレスのみを取得する。処理装置はそれに付加された２つ以上のアドレスをもつようになることはあり得る。この場合は手順が正しく機能するように、多数の装置によって記憶されたデータの処理を実行するための最良の処理装置を計算するのに、それらのアドレスの１つのみが用いられることになる。
【００１７】
次に本発明の実施形態について例のみとして添付の図面を参照して説明する。
【図面の簡単な説明】
【００１８】
【図１】ハイパーキューブ・ネットワークの概略図である。
【図２】ハイパーキューブ・ネットワークの他の概略図である。
【図３】２進数アドレスの表である。
【図４】ハイパーキューブ・ネットワークを動作させる方法のフローチャートである。
【図５】２進数アドレスおよびデータの表である。
【図６】ハイパーキューブ・ネットワークの他の概略図である。
【発明を実施するための形態】
【００１９】
図１は、接続されたノード１２を備えるハイパーキューブ・ネットワーク１０を示す。ｎ次元ハイパーキューブ・ネットワークはＮ個のノードからなり、Ｎは２のべき乗（２ｎ）である。ネットワーク１０内の各ノード１２にはノード・アドレスが割り当てられ、アドレスはこの例ではｎ桁の２進数である。図１の例では、８個のノードを有する３次元ハイパーキューブ・ネットワークがあり、これらのノードは、３桁の２進数アドレス０００、００１、０１０、０１１、１００、１０１、１１０、および１１１を有する。ノードは、２進数アドレスが唯一の桁だけ異なる場合に一緒に接続される。したがって、０００とラベルが付されたノードはノード００１、０１０、および１００に接続される。１０１とラベルが付されたノードはノード１００、１１１、および００１に接続されるなどとなる。
【００２０】
２つのノードの間の最短の経路は、一度に１桁ずつ２つのノードのアドレスを比較し、２進数アドレスの特定の桁に対して、送信先ノードのアドレスと近傍にあるノードのアドレスが同じで、かつ現在のノードとは異なるときは、近傍にあるノードに移動することによって確定される。図１の例ではノード０００からノード１０１まで移動するメッセージは、最初にノード１００に移動し（第１の桁が０から１に変化する）、次いでノード１０１に移動する（最後の桁が０から１に変化する）ことになる。これは、ハイパーキューブ・ネットワークとして構成されたネットワークにおける論理的な経路指定を規定する。
【００２１】
同じ方法論が、より大きなサイズのすべてのハイパーキューブ・ネットワークに当てはまる。例えばｎ＝４で、ネットワーク・メッセージをノード１１００からノード０１１１に伝送する場合は、メッセージはノード１１００からノード０１００に（送信先のアドレスの第１の桁が発信元と異なるのに従って）伝送することができ、次いでノード０１００からノード０１１０に（送信先と現在のノードの第２の桁は同じであるが、第３の桁が異なる）、最後にメッセージはノード０１１０からノード０１１１（送信先）に伝送される。メッセージは発信元から送信先に到達するのに３段階で渡される必要があり、これは発信元アドレスと送信先アドレスとで異なる桁の数をカウントすることによって容易に求めることができる。この例ではアドレス１１００と０１１１は３桁だけ異なり、したがってメッセージは、これらのノードの間を進むためにネットワーク内で３つのホップで移動する必要がある。２つのアドレスの間で異なる桁の数はハミング距離と呼ばれる。同じ最短の長さの複数の経路が存在し得る。上記の例ではメッセージは、やはり３つのホップを用いて１１００から１１０１、０１０１、０１１１と移動することもできる。
【００２２】
図２は、様々な処理装置１２から構成された図１のハイパーキューブ・ネットワーク１０を示す。この例では処理装置１２はサーバおよびクライアント装置であり、クライアント装置はデスクトップ・コンピュータおよびラップトップ・コンピュータからなる。処理装置は、インターネットなどの広域ネットワークなどの適当なネットワークを通じて一緒に接続される。処理装置はすべてローカルの記憶装置を利用することができ、ネットワークにわたる伝送のためにデータを記憶する。ネットワークのトポロジはハイパーキューブ・ネットワークのトポロジであり、各処理装置には、ハイパーキューブ・ネットワークの接続トポロジを反映した一意の２進数アドレスが割り振られる。
【００２３】
一般にハイパーキューブ・ネットワークの実際の実装形態は、図２に示される８個よりずっと多くの処理装置をもつことになる。例えばハイパーキューブ・ネットワークを成して一緒に接続された非常に多くの処理装置を有するスーパーコンピュータでは、ｎが５、６さらにはより大きくなり得、２ｎ個の処理装置が一緒に接続される。このようなネットワークでは各処理装置はｎ個の近傍装置に接続され、論理２進数の番号付けは、一般に１つだけ異なる２進数アドレスを有する処理装置（したがって論理的な近傍装置）はネットワーク内で物理的に近接して位置することになるという点で、基礎をなす物理的なネットワークの構造を表す。
【００２４】
このような大きなネットワークでは、ネットワークにわたるデータの伝送は重要なタスクであり、例えばｎ＝６の場合は、２つの処理装置は理論的に６個の処理装置だけ離れて位置する場合があり、それらの２つの装置の間のデータの伝送は、上述の経路指定に従って５個の他の処理装置を通過することになる。このようなシステムでは、単一の場所での処理のために、複数の処理装置からのデータが必要になることが普通である。ネットワーク内のいずれの処理装置も処理を実行し得るので、そのタスクのための処理装置を選択することが、全体のハイパーキューブ・ネットワーク内の帯域幅の使用量の点から非常に重要になる。
【００２５】
ハイパーキューブ・ネットワークは、処理のためにデータを複数のノードから単一のノードに伝送する必要があるときはいつでも、ネットワークがノードの集合の中心を決定するように動作するように構成することができる。５次元ハイパーキューブは、ハイパーキューブ・グラフのノードのサブセットのアドレスである、ノードの集合Ｓを有することができ、例えばＳ＝（１０１００，１１１１１，００１１０，０００１０，１００００）である。この場合、集合Ｓは、５次元ハイパーキューブからの５つのラベルの２進数アドレスを含んでいる。
【００２６】
ネットワークは、Ｓ内のノードの２進数アドレスのそれぞれにおける桁を分析して、各桁に対して、いくつのアドレスが「１」を有し、いくつのアドレスが「０」を有するかを求める。この例では、それらの第１の桁では２つのアドレスが「０」を有し、３つのアドレスが「１」を有する。第２の桁では４つのアドレスが「０」を有し、１つのアドレスが「１」を有するなどとなる。これは、ＤｉｇｉｔＣｏｕｎｔ（０）＝（２，４，２，２，４）、およびＤｉｇｉｔＣｏｕｎｔ（１）＝（３，１，３，３，１）と表すことができる。次いで順番に各桁についてどちらの桁カウントがより高いかが判定され、以下のようにノードＣのアドレスがより高いカウントを有する桁の値に設定され、すなわちＨｉｇｈｅｓｔＤｉｇｉｔＣｏｕｎｔ＝（１，０，１，１，０）（第１の桁ではｄｉｇｉｃｏｕｎｔ（１）＞ｄｉｇｉｃｏｕｎｔ（０）、第２の桁ではｄｉｇｉｃｏｕｎｔ（０）＞ｄｉｇｉｃｏｕｎｔ（１）など）であり、それによりＣ＝１０１１０となる。
【００２７】
アドレスが必ずしも２進数アドレスではない、より一般化されたハイパーキューブ方式では、データ伝送を低減するために中心となる処理装置を計算する方法は同じであり、各桁に対してＤｉｇｉｔＣｏｕｎｔの数が増加するだけである。例えば、桁０、１、および２を有するネットワーク・アドレスを含む一般化されたハイパーキューブ・ネットワークでは、３組の桁カウントＤｉｇｉｔＣｏｕｎｔ（０）、ＤｉｇｉｔＣｏｕｎｔ（１）、およびＤｉｇｉｔＣｏｕｎｔ（２）の集計があり、アドレス内の各位置に対して、最も高い桁カウントを有する次元が、中心となるノードの場所として選ばれる。
【００２８】
図３は、２進数アドレスを用いるシステムにおける計算を示す。２進数アドレス１４の集合Ｓは、ノードＣの新しい２進数アドレス１６を生成するために用いられる。アドレスとしてＣを有するノードは、集合Ｓの要素に対する中心ノードである。このノードは、ノードの集合Ｓからの最小の総距離を有する。ノードＣからＳ内の諸ノードへの総距離は、以下のようにアドレス内の各桁について最も低い桁カウントを合計することによって求めることができる。すなわち、ＤｉｇｉｔＣｏｕｎｔ（０）＝（２，４，２，２，４）、ＤｉｇｉｔＣｏｕｎｔ（１）＝（３，１，３，３，１）、ＬｏｗｅｓｔＤｉｇｉｔＣｏｕｎｔ＝（２，１，２，２，１）、およびＴｏｔａｌＬｏｗｅｓｔＤｉｇｉｔＣｏｕｎｔ＝８（２＋１＋２＋２＋１）となる。
【００２９】
この方法は、総ハミング距離への各桁の寄与を順番に考察することによって証明することができる。ノードＣが第１の桁として０を有する場合は、データをそれらの「１」次元から伝送する必要があるノードは３つ存在し、一方、第１の桁として「１」が選ばれた場合は、データを伝送する必要があるノードは２つだけである（なぜなら、２つのノードがそれらのアドレスとして第１の桁に０を有するからである）。アドレス内の各桁について、最も高いカウントを有する桁の値が選ばれた場合は、寄与分はデータを伝送する必要がある全体の枝路の数に最小化され、したがってデータが移動する必要がある全体の距離が最小化される。
【００３０】
ノードが偶数個の場合は、特定の桁において１を有するノードと０を有するノードとが同じ数、存在する場合がある。この場合は中心となるノードの桁に対して０または１を選ぶことができ、それぞれがノードの集合Ｓまでの最小総距離を等しく有する複数のノードが存在することになる。
【００３１】
処理装置のハイパーキューブ・ネットワークを動作させるこの方法は、図４に要約される。方法において第１のステップは、ネットワーク内の複数の処理装置が、単一の処理装置に処理させるべきデータを記憶していることを判断することから成る。これは実行されているコマンドの結果として行われる場合があり、コマンドは複数の場所からのデータが単一の構成要素として処理されることを要求する。方法における次のステップは、処理させるべきデータを記憶している複数の処理装置のアドレスを取得するステップＳ２である。上述のように処理装置はそれぞれ、各装置を識別する一意のアドレス（これは２進数アドレスとすることができる）をもつことになる。
【００３２】
次のステップはステップＳ３であり、処理させるべきデータを記憶している複数の処理装置のアドレスの各桁について、最も共通する数を求めることから成る。図３を参照して前述したように、例えば処理させるべきデータを記憶している装置の集合内の処理装置の２進数アドレスが、２進数アドレスの各位置において最も共通する数字を識別するために調べられる。ハイパーキューブ・ネットワーク・トポロジの性質は、アドレスはすべて同じ長さであることを意味し、各位置での最も共通する数字を決定するために簡単なカウント動作を用いることができる。
【００３３】
このステップの後には、求められた各桁について最も共通する数を含む、新しいアドレスを生成することから成るステップＳ４が続き、さらに生成された新しいアドレスを有する処理装置に、処理させるべきデータを転送することから成るステップＳ５が続く。ステップＳ３で求められる最も共通する数字は、図３の例においてノードＣとして示される「中心ノード」の新しいアドレスを生成するために用いられる。次いで装置の集合内のすべての処理装置によって記憶されたデータは、最も共通する数字を含む新しいアドレスを有する新しい処理装置に転送され、次いでそこでデータが処理される。
【００３４】
上述のプロセスは、異なる処理装置によって記憶されているデータ量を考慮に入れるように変更することができる。この情報が利用可能な場合は、ノードごとにデータ量が異なるノードの集合の中心を求めることが可能になる。例えば、各ノードが共通の場所に届ける必要がある既知のデータの量を有する、ハイパーキューブ・グラフのノードのサブセットのアドレスであるノードの集合Ｓは、Ｄがノードにおいて保持されるデータの量を規定し、それによりＤｉ（Ｄのｉ番目の要素）は、アドレスＳｉ（Ｓのｉ番目の要素）を有するノードにおいて保持されるデータ量を規定する。
【００３５】
図５はこのような一例を示し、Ｓ＝（１０１００，１１１１１，００１１０，０００１０，１００００）、およびＤ＝（１００，５００，２０，１，５００）である。この場合、Ｓは５次元ハイパーキューブからの５つのラベルのアドレスを含んでおり、ＤはＳ内の対応するノードにおいて保持されるデータ量を含んでいる（すなわちノード１０１００は１００項目のデータを保持し、ノード１１１１１は５００項目のデータを保持するなど）。
【００３６】
次いで、Ｓ内のアドレスのそれぞれにおける対応する桁の分析が行われて、その桁について値「１」を有するアドレスにおいて保持される総データ量が求められ、その桁について値「０」を有するアドレスにおいて保持される総データ量が求められる。例えばそれらの第１の桁において、２つのアドレスが「０」を有し、それらのアドレスが２０および１項目のデータを有し、それにより第１の桁において「０」を有するアドレスの総データは２１となる。３つのアドレスがそれらの第１の桁において「１」を有し、それらのアドレスは１００、５００、および５００項目のデータを有し、それにより第１の桁において「１」を有するアドレスの総データは１１００となる。各桁の分析は、以下のように０および１の値に対するＤａｔａＣｏｕｎｔ集合を維持することによって表すことができる。すなわち、ＤａｔａＣｏｕｎｔ（０）＝（２１，６２１，５０１，６００，６２１）、およびＤａｔａＣｏｕｎｔ（１）＝（１１００，５００，６２０，５２１，５００）となる。
【００３７】
次いで順番に各桁に対して、どのデータ・カウントが最も高いかを判定し、ノードＣのアドレスは最も高いカウントを有する桁の値に設定され、それによりＨｉｇｈｅｓｔＤａｔａＣｏｕｎｔ＝（１，０，１，０，０）（第１の桁ではＤａｔａＣｏｕｎｔ（１）＞ＤａｔａＣｏｕｎｔ（０）、第２の桁ではＤａｔａＣｏｕｎｔ（０）＞ＤａｔａＣｏｕｎｔ（１）など）となる。したがってＣ＝１０１００となり、Ｃをアドレスとして有するノードは、このノードの集合およびデータ量に対する「中心」ノードとなる。ノードＳからすべてのデータＤをこのノードに送ることにより、総データ伝送量は最小となる。
【００３８】
集合Ｓ内のノードからノードＣに伝送される総データ量は、以下のようにアドレスにおける各桁の最も低いＤａｔａＣｏｕｎｔを合計することによって求めることができる。すなわち、ＤａｔａＣｏｕｎｔ（０）＝（２１，６２１，５０１，６００，６２１）、ＤａｔａＣｏｕｎｔ（１）＝（１１００，５００，６２０，５２１，５００）、ＬｏｗｅｓｔＤａｔａＣｏｕｎｔ＝（２１，５００，５０１，５２１，５００）、およびＴｏｔａｌＬｏｗｅｓｔＤａｔａＣｏｕｎｔ＝２０４３  （２１＋５００＋５０１＋５２１＋５００）となる。
【００３９】
この方法論は、伝送されるデータの総距離への各桁の寄与を順番に考察することによって証明することができる。ノードＣが第１の桁として「０」を有する場合は、「１」次元から送る必要がある１１００単位のデータが存在し、一方、第１の桁として「１」を選んだ場合は、２１単位のデータを伝送する必要があるだけである。アドレス内の各桁について、最も多くのデータを有する桁の値が選ばれた場合、他のアドレスから伝送されるべき全体のデータ量への寄与は最小化される。任意の数のノードに対して、特定の桁において「１」を有するアドレスの総データ量は、「０」を有するものと同じになり得る。この場合は中心となるノードの桁に対して「０」または「１」を選ぶことができ、それぞれがノードの集合Ｓからの最小の総データ伝送量を等しく有する複数のノードが存在することになる。
【００４０】
図５に示し、前述した方法論は実際上、集合Ｓを形成する処理装置の２進数アドレスにおける最も共通する数字の、重み付けされた決定である。図６は、ネットワーク内のノードのうちの４つが、単一の場所における処理のためのデータを記憶していることを示す図１のハイパーキューブ・ネットワークを示す。ノードの集合Ｓ＝（０００，００１，１００，１１１）、およびデータの集合Ｄ＝（１５，６，１０，２０）である。したがってＤａｔａＣｏｕｎｔ（０）＝（２１，３１，２５）、およびＤａｔａＣｏｕｎｔ（１）＝（３０，２０，２６）であり、これは中心ノードの２進数アドレスがＣ＝１０１であることを意味する。この例では、これがデータの処理を実行するハイパーキューブ・ネットワークの処理装置となる。
【図１】
0005665208.tif 000002
【図２】
0005665208.tif 000003
【図３】
0005665208.tif 000004
【図４】
0005665208.tif 000005
【図５】
0005665208.tif 000006
【図６】
0005665208.tif 000007