(57)【要約】      （修正有）【課題】１つの管理ノード及び複数の計算ノードを備えた高性能計算クラスタにおいて、指定データを管理ノードによって速やかに計算ノードに分配する。【解決手段】管理ノードは、Ｍ個の計算ノードをｍ個（但し、ｍは２以上の整数）の層に分割するステップと、指定データをｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割するステップと、前記ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配するステップとを有し、前記第１層の各計算ノードは、少なくとも１つのデータ・シェアをその内部に獲得し、その親ノードが分配した前記少なくとも１つのデータ・シェアをそのサブノードに分配するステップを有し、各計算ノードは、全ての前記指定データを獲得するために、他の計算ノードに対し残りの指定データを要求するステップとをさらに有する。【選択図】図２
2011118899.tif 000002
【特許請求の範囲】
【請求項１】
一の管理ノード及びＭ個（但し、Ｍは２以上の整数）の計算ノードを備えた高性能計算クラスタにおいて、指定データを前記管理ノードによって前記Ｍ個の計算ノードに分配するための方法であって、
（ａ）前記Ｍ個の計算ノードをｍ個（但し、ｍは２以上の整数）の層に分割するステップと、
（ｂ）前記指定データをｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割するステップと、
（ｃ）前記管理ノードによって、前記ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配するステップとを有し、
前記第１層の各計算ノードは、少なくとも１つのデータ・シェアをその内部に獲得し、
（ｄ）前記各計算ノードによって、その親ノードが分配した少なくとも１つのデータ・シェアをそのサブノードに分配するステップと、
（ｅ）全ての前記指定データを獲得するために、前記各計算ノードによって、他の計算ノードに対し残りの前記指定データを要求するステップとをさらに有する、方法。
【請求項２】
前記ステップ（ｃ）は、前記管理ノードによって、分配開始時刻、全ての前記計算ノードの一のツリー構造及び前記指定データの各シェアのサイズをそのサブノードに分配するステップをさらに含み、
前記ステップ（ｄ）は、前記各計算ノードによって、前記分配開始時刻、全ての前記計算ノードの前記ツリー構造及び前記指定データの各シェアの前記サイズをそのサブノードに分配するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記ステップ（ｅ）は、
どのデータ・シェアが当該計算ノードによってまだ獲得されていないかを判定するステップと、
前記分配開始時刻及び現在時刻に従って、まだ獲得されていないデータ・シェアのうちどのデータ・シェアを要求することができるかを評価するステップと、
要求することができる前記データ・シェアから獲得すべき一のデータ・シェアを選択するステップと、
獲得すべき前記データ・シェアがどの計算ノードによって獲得されたかを評価し且つ当該計算ノードを候補ノードとして使用するステップと、
前記候補ノードから一の計算ノードを選択するステップと、
前記選択された計算ノードから獲得すべき前記データ・シェアを要求し且つ当該データ・シェアを受け取るステップとをさらに含む、請求項２に記載の方法。
【請求項４】
前記ステップ（ｅ）は、
どのデータ・シェアが当該計算ノードによってまだ獲得されていないかを判定するステップと、
前記分配開始時刻及び現在時刻に従って、当該計算ノードが所有しないデータをどの計算ノードが候補ノードとして所有するかを評価するステップと、
前記候補ノードから一の計算ノードを選択するステップと、
前記選択された計算ノードから獲得すべき少なくとも１つのデータ・シェアを要求し且つ当該データ・シェアを受け取るステップとをさらに含む、請求項２に記載の方法。
【請求項５】
前記選択するステップにおいて、前記候補ノードから前記一の計算ノードがランダムに選択される、請求項３又は請求項４に記載の方法。
【請求項６】
前記評価するステップが、前記獲得された分配開始時刻、全ての前記計算ノードの前記ツリー構造、前記指定データの各シェアの前記サイズ及びネットワーク帯域幅に従って、前記各計算ノードによって実行される、請求項３又は請求項４に記載の方法。
【請求項７】
前記選択された計算ノードから獲得すべき前記データ・シェアを要求し且つ当該データ・シェアを受け取った後に、前記要求された計算ノードが当該データ・シェアが存在しないという応答を戻す場合は、前記評価するステップの結果に修正が加えられる、請求項６に記載の方法。
【請求項８】
全ての前記計算ノードによって構築された一のツリー構造において、一の中間計算ノードがそのブランチの１つ以上のデータ・シェアをそのサブノードに分配する間は、当該中間計算ノードは、そのブランチの計算ノードのデータが分配されるまで、他のブランチの計算ノードからデータ要求を受け取らず且つ当該データ要求を他のブランチの計算ノードに伝送せず、そのブランチの計算ノードのデータが分配された後にだけ、当該中間計算ノードは、他のブランチの計算ノードからデータ要求を受け取り且つ当該データ要求を他のブランチの計算ノードに伝送する、請求項１に記載の方法。
【請求項９】
一の計算ノードは、当該ノードが属するブランチのデータを受け取った後だけ、他のブランチの計算ノードからのデータ要求を受け取り且つ当該データ要求を他のブランチの計算ノードに伝送する、請求項８に記載の方法。
【請求項１０】
前記Ｍ個の計算ノードは、次の条件、すなわち
（１）ｍ＝２、
（２）前記第１層の計算ノードの数はｋに等しい、
（３）前記ｋ個のデータ・シェアのサイズは互いに同じである、及び
（４）前記第１層の各計算ノードのサブノードの数は互いに同じである、
という条件を満たす、請求項１に記載の方法。
【請求項１１】
一の管理ノード及びＭ個（但し、Ｍは２以上の整数）の計算ノードを備え、前記管理ノードが指定データを前記Ｍ個の計算ノードに分配し、前記Ｍ個の計算ノードがｍ個（但し、ｍは２以上の整数）の層に分割され、前記指定データがｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割された高性能計算クラスタにおいて、前記指定データを分配するためのシステムであって、
前記管理ノードによって、前記ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配するための管理ノード分配手段を備え、
前記第１層の各計算ノードは、少なくとも１つのデータ・シェアをその内部に獲得し、
前記複数の計算ノードに配置され且つ前記各計算ノードによって、その親ノードが分配した前記少なくとも１つのデータ・シェアをそのサブノードに分配するための複数の計算ノード分配手段を備え、
全ての前記指定データを獲得するために、前記複数の計算ノードに配置され且つ前記各計算ノードによって、他の計算ノードに対し残りの前記指定データを要求するための複数のデータ要求手段を備える、システム。
【請求項１２】
前記管理ノード分配手段は、そのサブノードに対し、分配開始時刻、全ての前記計算ノードの一のツリー構造及び前記指定データの各シェアのサイズをさらに分配し、
前記計算ノード分配手段は、そのサブノードに対し、前記分配開始時刻、全ての前記計算ノードの前記ツリー構造及び前記指定データの各シェアの前記サイズをさらに分配する、請求項１１に記載のシステム。
【請求項１３】
前記各データ要求手段は、
当該計算ノードによってどのデータ・シェアがまだ獲得されていないかを判定するための判定手段と、
前記分配開始時刻及び現在時刻に従って、まだ獲得されていないデータ・シェアのうちどのデータ・シェアを要求することができるかを評価するための第１評価手段と、
要求することができる前記データ・シェアから獲得すべき一のデータ・シェアを選択するためのデータ選択手段と、
獲得すべき前記データ・シェアがどの計算ノードによって獲得されているかを評価し且つ当該計算ノードを候補ノードとして使用するための第２評価手段と、
前記候補ノードから一の計算ノードを選択するためのノード選択手段と、
前記選択された計算ノードから獲得すべき前記データ・シェアを要求し且つ当該データ・シェアを受け取るための受取り手段とを有する、請求項１２に記載のシステム。
【請求項１４】
前記各データ要求手段は、
当該計算ノードによってどのデータ・シェアがまだ獲得されていないかを判定するための判定手段と、
前記分配開始時刻及び現在時刻に従って、当該計算ノードが所有しないデータをどの計算ノードが候補ノードとして所有するかを評価するための第３評価手段と、
前記候補ノードから一の計算ノードを選択するためのノード選択手段と、
前記選択された計算ノードから獲得すべき少なくとも１つのデータ・シェアを要求し且つ当該データ・シェアを受け取るための受取り手段とを有する、請求項１２に記載のシステム。
【請求項１５】
前記ノード選択手段において、前記候補ノードから前記一の計算ノードがランダムに選択される、請求項１３又は請求項１４に記載のシステム。
【請求項１６】
前記第１評価手段ないし前記第３評価手段は、前記獲得された分配開始時刻、全ての前記計算ノードの前記ツリー構造、前記指定データの各シェアの前記サイズ及びネットワーク帯域幅に従って、評価を実行する、請求項１３又は請求項１４に記載のシステム。
【請求項１７】
前記要求受取り手段が一の要求を発行した後、前記要求された計算ノードが当該データ・シェアが存在しないという応答を戻す場合は、前記第１評価手段ないし前記第３評価手段による評価結果に修正が加えられる、請求項１６に記載のシステム。
【請求項１８】
全ての前記計算ノードによって構築された一のツリー構造において、一の中間計算ノードがそのブランチの１つ以上のデータ・シェアをそのサブノードに分配する間は、当該中間計算ノードは、そのブランチの計算ノードのデータが分配されるまで、他のブランチの計算ノードからデータ要求を受け取らず且つ当該データ要求を他のブランチの計算ノードに伝送せず、そのブランチの計算ノードのデータが分配された後にだけ、当該中間計算ノードは、他のブランチの計算ノードからデータ要求を受け取り且つ当該データ要求を他のブランチの計算ノードに伝送する、請求項１１に記載のシステム。
【請求項１９】
一の計算ノードは、当該ノードが属するブランチのデータを受け取った後にだけ、他のブランチの計算ノードからデータ要求を受け取り且つ当該データ要求を他のブランチの計算ノードに伝送する、請求項１８に記載のシステム。
【請求項２０】
前記Ｍ個の計算ノードは、次の条件、すなわち
（１）ｍ＝２、
（２）前記第１層の計算ノードの数はｋに等しい、
（３）前記ｋ個のデータ・シェアのサイズは互いに同じである、及び
（４）前記第１層の各計算ノードのサブノードの数は互いに同じである、
という条件を満たす、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高性能計算クラスタにおいてデータを分配するための方法及びシステムに係る。
【背景技術】
【０００２】
単にクラスタとも呼ばれるコンピュータ・クラスタは、大規模タスクの計算のために協働するように複数のコンピュータ（計算ノードとも呼ばれる。例えば、ソフトウェア及び／又はハードウェア資源）を相互に接続したコンピュータ・システムである。一般に、これらの計算ノードは、同じ管理ドメイン内に位置し、統一された管理ポリシを有し、全体としてユーザにサービスを提供する。クラスタ・システム内の単一のコンピュータは、しばしばノードと呼ばれる。クラスタ・システムは、多くの利点を有する。例えば、クラスタ・システムが負荷平準化の態様で動作する場合、当該クラスタ・システムは、複数のコンピュータを通して同じジョブを実行し、その結果、計算がより速くなるばかりか、エネルギー消費もより低くなる。
【０００３】
高機能計算は、コンピュータ科学の一部門であり、その目的とするところは、単一のコンピュータによっては処理することができないタスク用のスーパ・コンピュータを開発し、並列アルゴリズムを研究し、関係するソフトウェアを開発することにある。高機能計算によって主として研究された問題は、天気予報、地形学的分析及び生物医学的製剤のような大規模な科学的問題、並びにデータ・マイニング、イメージ処理及び遺伝子配列解明のような大量データの格納及び処理である。高性能計算クラスタは、その名前が暗示するように、クラスタ技術を使用することにより高機能計算を研究することである。
【０００４】
一般に、高機能計算は、タスクを（計算を実行するために互いに協働する）幾つかの並列サブタスクに分割する。高性能計算クラスタ内には、多数の計算ノードが存在する。例えば、ＩＢＭ社のクラスタは、１６０００個を超えるノードを含む。高性能計算クラスタ内には、幾つかの管理ノード及び複数の計算ノードが存在する。管理ノードは、ユーザと対話し、情報を管理し、計算資源を割り振り、サブタスクをスケジュールする責任を有する。高性能計算クラスタ内にある全ての計算ノードの接続情報が収集され、管理ノード内に格納される。高性能計算クラスタがタスクを受け取る場合、管理ノードは、最初にクラスタ内の計算資源を割り振り、次にこれらの資源を当該タスクのために割り当てる。すなわち、当該タスクを複数のサブタスクに分割し、各サブタスク用の適切な計算ノードを探し、当該ジョブ用のネットワーク接続テーブルを構築する。このネットワーク接続テーブルは、各タスクのＩｎｆｉｎｉｂａｎｄのような、ネットワーク接続の接続情報を保持する。高機能計算内の一のサブタスクが高機能計算内の他のサブタスクと通信する場合、当該一のサブタスクは、当該他のサブタスクの接続情報を取り出さなければならない。この情報は、ネットワーク・プロトコル内のＩＰアドレス及びポート番号に類似する。従って、大規模タスク（例えば、１００万個のサブタスクを有するタスク）については、ネットワーク接続情報テーブルの全体は、１００万個の項目を含み、その各々は１つのサブタスクに対応する。Ｉｎｆｉｎｉｂａｎｄについては、各項目は、少なくともアダプタ・アドレス、ウィンドウＩＤ、ネットワークＩＤ、論理ＩＤ、ＬＩＤマスク制御されたマスク、ポートＩＤを含む。各項目は、約５０バイトのサイズを有するから、１００万個のサブタスクの全てによって必要とされるネットワーク接続テーブルは、約５０ＭＢである。
【０００５】
その後、管理ノードは、タスクに関係する全ての計算ノードとの接続を確立して計算タスクを配信する。これらのタスクの配信中、管理ノードは、多くの情報を配信する必要がある。そのうちの１つは、ネットワーク接続テーブルであり、このネットワーク接続テーブルによって計算ノードは互いに接続してデータを交換することができる。図１は、従来技術に従った、高性能計算クラスタ内のデータ分配を示す概略図である。図１に示すように、高性能計算クラスタ内の計算ノードは、２層に分割される。その場合、管理ノードは、当該ジョブのネットワーク接続テーブルを第１層の計算ノードに配信し、次に第１層の計算ノードは、当該ジョブのネットワーク接続テーブルを第２層の計算ノードに配信し、全ての計算ノードが当該ジョブのネットワーク接続テーブルを受け取った後、各計算ノードは、管理ノードに通知を送る。管理ノードは、全ての計算ノードからネットワーク接続テーブルに関する確認を受け取り且つ全ての計算ノードの他の関連情報を受け取った後、全ての計算ノードに対し計算サブタスクを開始するように命令する。
【０００６】
多くの高機能計算ジョブは、高性能計算クラスタ内の殆ど全てのノードを使用し、そしてこれらのノードは、互いに密に対話する。例えば、図１の１２８×１２８ノードを使用する高性能計算クラスタについては、もし、ネットワーク接続テーブルのサイズが５０Ｍバイトであり、計算ノードの２層が使用され、そしてネットワーク帯域幅が１０Ｇであれば、管理ノードから全ての計算ノードにネットワーク接続テーブルを配信するだけで、（５０Ｍ×１２８×１２８）／（１０Ｇ／８）＝１０秒の伝送時間を必要とする。管理ノードが一のジョブのための資源を割り当てる時刻から複数の計算ノードが当該ジョブのための計算を開始する時刻までの期間は、ジョブ起動時間と呼ばれる。当然のことながら、一のジョブのネットワーク接続テーブルを伝送するために過度に長い期間を使用すると、ジョブ起動時間が長くなりすぎるであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術の前記問題を解決するために、本発明は、高性能計算クラスタにおいてデータを分配するための方法及びシステムを提案する。
【課題を解決するための手段】
【０００８】
本発明の１つの側面に従って、一の管理ノード及びＭ個（但し、Ｍは２以上の整数）の計算ノードを備えた高性能計算クラスタにおいて、指定データを前記管理ノードによって前記Ｍ個の計算ノードに分配するための方法が提供される。この方法は、
（ａ）前記Ｍ個の計算ノードをｍ個（但し、ｍは２以上の整数）の層に分割するステップと、
（ｂ）前記指定データをｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割するステップと、
（ｃ）前記管理ノードによって、前記ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配するステップとを有し、
前記第１層の各計算ノードは、少なくとも１つのデータ・シェアをその内部に獲得し、
（ｄ）前記各計算ノードによって、その親ノードが分配した少なくとも１つのデータ・シェアをそのサブ計算ノード（以下単に「サブノード」とも称する）に分配するステップと、
（ｅ）全ての前記指定データを獲得するために、前記各計算ノードによって、他の計算ノードに対し残りの前記指定データを要求するステップとをさらに有する。
【０００９】
本発明の他の側面に従って、一の管理ノード及びＭ個（但し、Ｍは２以上の整数）の計算ノードを備え、前記管理ノードが指定データを前記Ｍ個の計算ノードに分配し、前記Ｍ個の計算ノードがｍ個（但し、ｍは２以上の整数）の層に分割され、前記指定データがｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割された高性能計算クラスタにおいて、前記指定データを分配するためのシステムが提供される。このシステムは、
前記管理ノードによって、前記ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配するための管理ノード分配手段を備え、
前記第１層の各計算ノードは、少なくとも１つのデータ・シェアをその内部に獲得し、
前記複数の計算ノードに配置され且つ当該複数の計算ノードによって、その親ノードが分配した前記少なくとも１つのデータ・シェアをそのサブ計算ノード（以下単に「サブノード」とも称する）に分配するための複数の計算ノード分配手段を備え、
全ての前記指定データを獲得するために、前記複数の計算ノードに配置され且つ当該複数の計算ノードによって、他の計算ノードに対し残りの前記指定データを要求するための複数のデータ要求手段を備える。
【発明の効果】
【００１０】
本発明に従った方法を使用すると、データを高性能計算クラスタ内の計算ノードに速やかに分配することができる。そのため、従来技術と比較すると、分配時間を大幅に減少させることができる。
【図面の簡単な説明】
【００１１】
【図１】従来技術に従った、高性能計算クラスタ内のデータ分配を示す概略図である。
【図２】本発明に従った、高性能計算クラスタにおいてデータを分配するための方法を示す図である。
【図３】本発明の実施形態に従った、一の計算ノードが残りの指定データを獲得する方法を示す図である。
【図４】本発明の他の実施形態に従った、一の計算ノードが残りの指定データを獲得する方法を示す図である。
【図５】本発明の実施形態に従った、ノード間のデータ伝送を示す図である。
【図６】本発明の実施形態に従った、特定の時刻におけるノード間のデータ伝送を示す図である。
【図７】本発明に従った、高性能計算クラスタにおいてデータを分配するためのシステムを示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、添付の図面を参照して、本発明の実施形態を詳述する。しかし、本発明は、多くの形式で実装することができるから、本明細書に開示した実施形態に制限されるものと見なすべきではない。対照的に、これらの実施形態は、本発明をより完全にし、当業者に本発明の範囲を包括的に伝えるために提供される。
【００１３】
高性能計算クラスタは多数の計算ノードを含み、当該クラスタ内で処理される一のジョブは当該クラスタ内に含まれる計算ノードの大部分又は全てを使用するのが普通であるから、当該ジョブの動作に関係する全ての計算ノードの接続情報を保持する一のネットワーク接続テーブルは、大きなサイズ（例えば、５０Ｍバイト）を有する。そのように大きなネットワーク接続テーブルは、これを伝送するのに長い時間を必要とする。高性能計算クラスタについては、処理すべき多数のジョブが存在し、各ジョブは当該ジョブのネットワーク接続テーブルを伝送しなければならない。従って、全体として、ネットワーク接続テーブルの伝送時間を無視することができない。特に、複数のジョブを頻繁にディスパッチするクラスタについては、ネットワーク接続テーブルの伝送時間を減少させることが極めて重要である。
【００１４】
従来技術では、全てのジョブに関係する複数の計算ノードが２層に分割され、管理ノードが特定ジョブのネットワーク接続テーブルを第１層の計算ノードに伝送し、次に、第１層の計算ノードが当該ジョブのネットワーク接続テーブルを第２層の計算ノードに伝送する。ネットワーク接続テーブルの全体は、この方法で伝送される。
【００１５】
本発明の根本概念は、次の通りである。すなわち、複数の計算ノードは、依然として複数の層に分割されるが、ネットワーク接続テーブルの全体が伝送されるのではなく、特定ジョブのネットワーク接続テーブルが幾つかのシェアに分割される。管理ノードは、第１層の各計算ノードのためにネットワーク接続テーブルの１つのシェアを伝送し、そして第１層の計算ノードは、受け取ったネットワーク接続テーブルの１つのシェアをその下位層に伝送する。一の計算ノードは、そのブランチに属するネットワーク接続テーブルの１つのシェアを受け取った後、他の計算ノード・ブランチに属するネットワーク接続テーブルの１つのシェアについて他の計算ノードに対しランダムに要求することができる。このようにして、各計算ノードは、幾つかのシェアに分割されたネットワーク接続テーブルの複数のシェアを獲得し、特定ジョブの完全なネットワーク接続テーブルとなるようにネットワーク接続テーブルの全てのシェアを組み合わせた後、そのことを管理ノードに報告することができる。管理ノードは、全ての計算ノードから報告を獲得した後、特定ジョブのネットワーク伝送テーブルが伝送されたことを確認することができる。
【００１６】
以下の説明から明らかなように、本発明のデータ分配方法及びシステムは、特定ジョブのネットワーク接続テーブルの分配のみに制限されるものではなく、全ての計算ノードによって必要とされる同じデータが分配される限り、高性能計算クラスタにおいて任意の所望データを分配することができ、その結果、分配時間を大幅に減少させることができる。
【００１７】
図２は、一の管理ノード及びＭ個（但し、Ｍは２以上の整数）の計算ノードを備えた高性能計算クラスタにおいて、指定データを管理ノードによってＭ個の計算ノードに分配するための方法を示す。この方法は、次のステップを有する。
【００１８】
ステップＳ２０１では、Ｍ個の計算ノードをｍ個（但し、ｍは２以上の整数）の層に分割する。
【００１９】
ステップＳ２０２では、指定データをｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割する。
【００２０】
ステップＳ２０３では、管理ノードによって、ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配する。第１層の各計算ノードは、その内部に少なくとも１つのデータ・シェアを獲得する。
【００２１】
ステップＳ２０４では、各計算ノードによって、その親ノードが分配した少なくとも１つのデータ・シェアをそのサブ計算ノードに分配する。
【００２２】
ステップＳ２０５では、全ての指定データを獲得するために、各計算ノードによって、他の計算ノードに対し残りの指定データを要求する。
【００２３】
以下、図２の各ステップを詳述する。
【００２４】
ステップＳ２０１では、Ｍ個の計算ノードがｍ個（但し、ｍは２以上の整数）の層に分割される。第１層の計算ノードの数がｎ１であり、第２層の計算ノードの数がｎ２であり、同様にｍ番目の層の計算ノードの数がｎｍであるものと仮定する。但し、ｎ１＋ｎ２＋・・・＋ｎｍ＝Ｍである。従って、全てのノードは一のツリー構造と見なすことができ、そこでは管理ノードは当該ツリーのルートであり、第１層の各計算ノード及びそのサブノードの層は、当該ツリーの一のブランチを構成する。これらの計算ノードによって構築された当該ツリーは、複数の層に分割することができるが、そのようにすると、複数の層の計算が比較的複雑になり、管理ノードからサブノードまでの配信時間がより長くなる。従って、本発明の実施形態に従って、ｍ＝２とされる。すなわち、これらの計算ノードが単に２層に分割され、第１層の各計算ノードのサブノードの数を任意に設定することができる。例えば、第１層の各計算ノードのサブノードの数を、互いに同じ数又は互いに異なった数に設定することができる。もし、この数が互いに異なっていれば、後続の処理がより複雑になるであろう。従って、本発明の実施形態によれば、第１層の各計算ノードのサブノードの数は、互いに同じである。
【００２５】
ステップＳ２０２では、指定データがｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割される。指定データは、互いに異なるサイズのｋ個のデータ・シェア又は互いに同じサイズのｋ個のデータ・シェアに分割することができる。これらの２つは同様に処理することができる。しかし、指定データが互いに同じサイズのｋ個のデータ・シェアに分割されるのであれば、伝送時間をより容易に評価することができる。そのため、本発明の実施形態では、指定データは、互いに同じサイズのｋ個のデータ・シェアに分割される。
【００２６】
ステップＳ２０３では、管理ノードは、ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配する。その結果、第１層の各計算ノードは、少なくとも１つのデータ・シェアをその内部に獲得する。このようにして、第１層の計算ノードは、そのブランチ内の１つ以上のデータ・シェアを獲得する。好ましくは、管理ノードは、第１層の計算ノードに対し、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズをさらに分配する。その結果、全ての計算ノードは、後続データ処理の便宜のために、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズを知ることができる。第１層の計算ノードの数ｎ１がｋよりも大きい場合、管理ノードは、最初のｋ個の計算ノードの各々のために１つのデータ・シェアを分配することができる。残りの計算ノードについては、管理ノードは、前記第１データ・シェアの初めからの１つのデータ・シェアを各計算ノードに再び分配することができる。代替的に、残りの計算ノードについては、幾つかのデータ・シェアを伝送のために選択することができる。他の実施形態では、周期的な伝送方法等を使用して、幾つかのデータ・シェアを各計算ノードに伝送することができる。実施形態では、ｎ１＝ｋである。すなわち、第１層の計算ノードの数は、指定データが分割されるデータ・シェアの数と同じである。このようにすると、管理ノードは、各データ・シェアを第１層の各計算ノードに分配することができ、その場合、各計算ノードは、１つのデータ・シェアだけを獲得する。もし、第１層の各計算ノードのサブノードの数が互いに同じであり且つ第１層の計算ノードの数がｋに等しければ、この分配方法は、より容易になるであろう。他の実施形態では、第１層の計算ノードの数が指定データのシェアの数と同じであるだけでなく、第１層の各計算ノードのサブノードの数も互いに同じである。便宜上、この実施形態は、比較のために以下でしばしば使用される。
【００２７】
ステップＳ２０４では、各計算ノードは、その親ノードが分配した少なくとも１つのデータ・シェアをそのサブノードに分配する。その結果、各計算ノードは、そのブランチの少なくとも１つのデータ・シェアを獲得する。好ましくは、計算ノードは、そのサブノードに対し、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズをさらに伝送する。その結果、全ての計算ノードは、後続データ処理の便宜のために、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズを獲得することができる。サブタスク内のデータは、高機能計算動作中にＩｎｆｉｎｉｂａｎｄを通して配信されるが、ノードの制御情報は、ＴＣＰ／ＩＰプロトコルを通して配信される。従って、ブロードキャスト中に、各計算ノードは、ツリーの構造及び当該ツリー内の各計算ノードのＩＰアドレス、すなわち全ての計算ノードの前述のツリー構造を知る必要がある。当該ツリーの構造は、種々の方法で表現することができる。例えば、［ｍ１、ｍ２、ｍ３］によって表される一のツリーは、ｍ２個のブランチ、ｍ３個の層及び合計ｍ１個のノードを有する。各計算ノードのＩＰアドレス情報は、連続的に保存される。例えば、２層化ツリーについては、ＩＰ情報テーブルにおいて、第１層におけるｉ１番目のノードのｊ１番目のサブノード（但し、ｉ１及びｊ１の両方は、０から開始する）は、ｉ１×ｍ２＋ｊ１のインデックス指定された位置を有する。高々１６ｋ個のノードが存在するから、全てのＩＰアドレスのための情報テーブルは６４ｋＢである。データ及びツリー構造のデータは、ブロードキャストの開始時に、各計算ノードに分配されるであろう。全ての計算ノードのツリー構造の情報量は、ネットワーク接続テーブルの情報量よりも遙かに少ないことが分かる。
【００２８】
実施形態では、これらの計算ノードが２層に分割される場合、第１層の計算ノードは、管理ノードから獲得された１つ以上のデータ・シェアをそのサブノードに伝送する。他の実施形態では、第１層の計算ノードの数は、指定データのシェアの数と同じであり、そして第１層の計算ノードのサブノードの数が互いに同じである場合、ステップＳ２０４において、第１層の計算ノードは、管理ノードから獲得された１つのデータ・シェアをそのサブノードに伝送する。
【００２９】
ステップＳ２０５では、全ての指定データを獲得するために、これらの計算ノードは、他の計算ノードに対し残りの指定データを要求する。実施形態では、各計算ノードは、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズを獲得している。従って、これらの計算ノードは、ステップＳ２０３及びＳ２０４において、ネットワーク帯域幅に従ってデータ伝送時間を評価することができ、そして現時刻においてどの計算ノードがどのデータ・シェアを有するかを計算する。具体的には、一の計算ノードについては、当該計算ノードは、それが位置するブランチの一のデータ・シェアを獲得している。
【００３０】
図３は、本発明の実施形態に従った、一の計算ノードが残りの指定データを獲得する方法を示す。この方法は、次のステップを有する。
【００３１】
ステップＳ３０１では、当該計算ノードによって、どのデータ・シェアがまだ獲得されていないかを判定する。
【００３２】
ステップＳ３０２では、分配開始時刻及び現在時刻に従って、まだ獲得されていないデータ・シェアのうちどのデータ・シェアを要求することができるかを評価する。
【００３３】
ステップＳ３０３では、要求することができるデータ・シェアから獲得すべき一のデータ・シェアを選択する。
【００３４】
ステップＳ３０４では、どの計算ノードによって、獲得すべきデータ・シェアが獲得されたかを決定し且つこれらの計算ノードを候補ノードとして使用する。実施形態では、全ての計算ノードは２層に分割され、指定データは互いに同じサイズのｋ個のデータ・シェアに分割される。各データ・シェアがｓビットのサイズを有し、第１層の計算ノードの数が指定データのシェアの数と同じであり、第１層の各計算ノードのサブノードの数が互いに同じ（例えば、ｈ）であるものと仮定する。もし、ネットワーク帯域幅がｇであれば、分配開始時刻後の０〜ｋs／ｇの期間中に、管理ノードは、データを第１層の計算ノードに分配する。管理ノードによる分配開始後のs／ｇ秒の時刻において、第１層内の第１計算ノードは、当該計算ノードによって獲得された１つのデータ・シェアをそのサブノードに分配することを開始する。管理ノードによる分配開始後のｉ×s／ｇ秒の時刻において、第１層内のｉ番目の計算ノードは、そのブランチに属する第１データ・シェアを獲得し、次に当該データ・シェアをそのサブノードに一度に分配することを開始する。すなわち、各計算ノードは、獲得された分配開始時刻、全ての計算ノードのツリー構造、指定データの各シェアのサイズ及びネットワーク帯域幅に従って、一の期間の後に、管理ノードによってそのブランチに分配されたデータをどの計算ノードが有するかを評価することができる。分配中、第１層の計算ノードは、他のブランチの計算ノードからのデータ要求を同時に受け取り、これらのデータ要求を他のブランチの計算ノードに伝送することができる。好ましくは、第１層の計算ノードは、そのサブノードだけにデータを分配し、そのブランチ自体の計算ノードのデータが分配されるまで、他のブランチの計算ノードからのデータ要求を受け取らず、これらのデータ要求を他のブランチの計算ノードに伝送しない。すなわち、そのブランチ自体の計算ノードのデータが分配された後にだけ、他のブランチの計算ノードからのデータ要求を受け取り、これらのデータ要求を他のブランチの計算ノードに伝送することができる。多層化ツリー構造については、任意の中間層の一の計算ノードは、前述の特性を有することが好ましい。このようにすると、データをネットワークの全体に伝送するのに必要な時間がより容易に評価され、伝送効率がより高くなるからである。さらに、第２層の各計算ノードについては、当該計算ノードは、当該計算ノードが属するブランチのデータを受け取る前に、他のブランチの計算ノードに一のデータ要求を伝送することができ、そして当該計算ノードが属するブランチのデータを受け取った後に、他のブランチの計算ノードからデータ要求を受け取ることができる。好ましくは、第２層の各計算ノードは、当該計算ノードが属するブランチのデータを受け取った後にだけ、他のブランチの計算ノードからのデータ要求を受け取り、これらのデータ要求を他のブランチの計算ノードに伝送することができる。多層化ツリー構造については、任意の中間層の一の計算ノードは、前述の特性を有することが好ましい。このようにすると、各計算ノードによってブランチのデータを獲得するのに必要な時間がより容易に評価され、伝送効率がより高くなるか���である。前述の諸実施形態に関しては、第１層内のｉ番目のノードについては、ｊ番目のサブノードによって第１データ・シェアを獲得するのに必要な時間は、全体的な分配プロセス開始後のほぼ（ｉ＋ｊ）×s／ｇ秒であることが分かる。各計算ノードは、現在時刻と分配開始時刻との間の差及びそれぞれの計算ノードの分配時間に従って、どのデータ・シェアを要求することができるかを評価することができ、そして当該計算ノードが対応するブランチのデータ・シェアをどの計算ノードが獲得しているかを評価することができる。このようにして、獲得すべき選択されたデータ・シェアについては、当該データ・シェアがどの計算ノードによって獲得されているかを決定することができる。
【００３５】
ステップＳ３０５では、候補ノードから一の計算ノードを選択する。このステップで、実施形態は、高性能計算クラスタの負荷が全体としてより平準化されるように、ランダム選択の手段によってこの計算ノードを選択する。もちろん、当業者には明らかなように、他の手段（例えば、計算ノードに番号を付け、中間の番号が付けられた計算ノードを選択するか又は最大の番号が付けられた計算ノードを選択すること等）を採用することもできる。
【００３６】
ステップＳ３０６では、選択された計算ノードから獲得すべき一のデータ・シェアを要求し且つこれを受け取る。計算ノードによって獲得されたブランチのデータを評価するためには、分配開始時刻、全ての計算ノードのツリー構造、指定データの各シェアのサイズ及びネットワーク帯域幅のような情報が使用される。ネットワーク内では、多数の予期しない状況（例えば、ネットワーク輻輳に起因する減少された帯域幅）がしばしば生じるから、かかる評価は、十分に正確にならないことがある。この時刻において、もし、評価済みの一の期間の後に管理ノードによってそのブランチに分配されたデータを有する一の計算ノードに対し、一の要求が発行されるならば、当該データ・シェアが存在しないという応答が受け取られるであろう。当該評価済みの期間の後に、管理ノードによってそのブランチに分配されたデータを当該計算ノードが有する場合には、当該評価済みの期間に対し修正が加えられ、そして当該計算ノードによって評価されたツリー全体の分配状態がしばしば前方に移動するものと見なされる。この修正が加えられた後、当該計算ノードは、後続する要求の再度の失敗を回避するために、全体的な分配プロセスの予測をある程度遅らせるであろう。
【００３７】
ステップＳ３０７では、全ての指定データが獲得されるまで、ステップＳ３０１に戻る。
【００３８】
図４は、本発明の他の実施形態に従った、一の計算ノードが残りの指定データを獲得する方法を示す。ステップＳ４０１では、どのデータ・シェアが当該計算ノードによってまだ獲得されていないかを判定する。１つ以上のデータ・シェアが当該計算ノードによって獲得されていないことがある。ステップＳ４０２では、分配開始時刻及び現在時刻に従って、当該計算ノードが所有していないデータ・シェアをどの計算ノードが候補ノードとして所有するかを評価する。この評価方法は、図３に関連して説明したものと同様であり、その結果、当該データ・シェアと当該ノードとの間の対応関係を獲得する。ステップＳ４０３では、候補ノードから一の計算ノードを選択する。図３では、データ・シェアから一の計算ノードを選択するようにしているが、本実施形態では、一の計算ノードのデータ・シェアを獲得するために、当該計算ノードを直接的に選択するようにしている。ステップＳ４０４では、選択された計算ノードから獲得すべき少なくとも１つのデータ・シェアを要求し且つこれを受け取る。ステップＳ４０５では、全ての指定データが獲得されるまでステップＳ４０１に戻る。本実施形態は、図３の実施形態と同様に、修正の問題を有し、従って同じ解決策を有する。
【００３９】
候補ノードから一の計算ノードを選択するステップＳ４０３で、実施形態は、高性能計算クラスタの負荷が全体としてより平準化されるように、ランダム選択の手段によって計算ノードを選択する。もちろん、当業者には明らかなように、他の手段（例えば、計算ノードに番号を付け、中間の番号が付けられた計算ノードを選択するか又は最大の番号が付けられた計算ノードを選択すること等）を採用することもできる。
【００４０】
図５は、前述の実施形態に従ったノード間のデータ伝送を示す。図５において、各計算ノード上の番号は、当該計算ノードが第１データ・シェアを受け取る時刻を表す。通し番号［ｉ，ｊ］は、ツリー内の各計算ノードの位置を表すために使用することができる。但し、ｉは、当該計算ノードが位置するｉ番目のブランチを表し、ｊは、当該計算ノードの親ノードのｊ番目のサブノードを表す。第１層内には、ｋ個の計算ノードが存在するものと仮定する。但し、ｉ＜ｋであり、ｉは正の整数である。また、第１層の各計算ノードについては、第２層内に５個のサブノードが存在するものと仮定する。図５に示すように、第１層の各計算ノードの第２層のサブノードの通し番号は、［ｉ，１］、［ｉ，２］、［ｉ，３］、［ｉ，４］、［ｉ，５］である。前述の実施形態に従って、計算ノード［３，２］がそのブランチの計算ノードに分配されたデータを受け取った後、当該計算ノードは、その番号が表す時刻データを参照する。計算ノード［１，１］、［１，２］、［１，３］、［１，４］、［２，１］、［２，２］、［２、３］がそのブランチの計算ノードに分配されたデータを受け取っていることは分かっているから、計算ノード［３，２］は、計算ノード［１，０］、［１，１］、［１，２］、［１，３］、［１，４］のうちの１つに対し、指定データの第１シェアを要求するか、又は計算ノード［２，０］、［２，１］、［２，２］、［２，３］のうちの１つに対し、指定データの第２シェアを要求することができ、以下同様である。しかし、他の計算ノードについては、計算ノード［３，２］は、他の計算ノードがそのブランチのデータ・シェアを獲得していないことを評価することができ、従って、それらの計算ノードにはデータ要求を発行しない。
【００４１】
前述のステップを通して、当該計算ノードは、全ての指定データの全てのシェアを獲得した後、これらのデータ・シェアを完全な指定データに組み合わせることができる。本発明の方法を使用することによって、全ての計算ノードは、全ての指定データをより短い時間で獲得することができる。その結果、指定データが高性能計算クラスタの全ての計算ノードを通過する期間を減少させることができる。
【００４２】
次に、一の計算ノードが完全な指定データを獲得するごとに、当該計算ノードは、その旨を管理ノードに報告する。全ての計算ノードが報告を終了すると、管理ノードは、高性能計算クラスタ内の計算ノードに対し、他の動作を実行するように命令することができる。
【００４３】
図６は、本発明の実施形態に従った、特定の時刻におけるノード間のデータ伝送を示す。
【００４４】
本発明の方法に従ったデータ伝送時間は、次のように評価される。第１層の計算ノードの数が１２８であり、第１層の各計算ノードのサブノードの数が１２８であり、指定データが１２８個のシェアに分割され、各データ・シェアのサイズが５０ＭＢ／１２８であるものと仮定する。第２層の最後のノード、すなわち第１層の最後のノードの最後のサブノードが、その親ノードが当該サブノードに分配する第１データ・シェアを受け取る時刻は、全体的な分配プロセスの開始後の５０ＭＢ／１２８×（１２８＋１２８）／（１０Ｇ／８）＝１０／１２８＝０.０７８秒である。但し、１つのデータ・シェアのサイズは、５０ＭＢ／１２８である。管理ノードは、各データ・シェアを第１層の計算ノードに一度に分配し、当該データを１つの計算ノードに分配するのに必要な時間は５０ＭＢ／１２８／（１０Ｇ／８）である。第１層の最後の計算ノードが第１データ・シェアを受け取る時刻は、分配開始後の５０ＭＢ／１２８／（１０Ｇ／８）×１２８である。次に、第１層の最後の計算ノードは、当該計算ノードが受け取った１つのデータ・シェアをその１２８個のサブノードに分配する。最後のサブノードが第１データ・シェアを受け取る時刻は、５０ＭＢ／１２８／（１０Ｇ／８）×１２８＋５０ＭＢ／１２８／（１０Ｇ／８）×１２８＝５０ＭＢ／１２８×（１２８＋１２８）／（１０Ｇ／８）＝１０／１２８＝０.０７８秒である。第１層の最後の計算ノードの最後のサブノードが、その第１データ・シェアを受け取った後、当該計算ノードは、他の計算ノードに対し、残りの１２７個のデータ・シェアを要求する必要がある。残りの１２７個のデータ・シェアを配信するのに必要な時間は、５０ＭＢ／１２８×１２７／（１０Ｇ／８）＝０.０３９秒である。当該計算ノードは、全体のツリー構造の最後の計算ノードあるから、当該計算ノードが全ての１２８個のデータ・シェアを受け取った後、他の全ての計算ノードは、全ての１２８個のデータ・シェアを受け取っているはずである。従って、全体的な伝送時間は、０.０７８＋０.０３９＝０.１１７秒である。従来技術の伝送方法と比較すると、本発明の伝送方法が、特定のデータの伝送時間を大幅に減少させていることは明らかである。
【００４５】
同じ１つの発明概念に従って、本発明は、高性能計算クラスタにおいて指定データを分配するためのシステム７００（図７を参照）を開示する。図７に示すように、高性能計算クラスタは、一の管理ノード及びＭ個（但し、Ｍは２以上の整数）の計算ノードを備え、管理ノードは、指定データをＭ個の計算ノードに分配する。システム７００内のＭ個の計算ノードは、ｍ個（但し、ｍは２以上の整数）の層に分割され、指定データは、ｋ個（但し、ｋは２以上の整数）のデータ・シェアに分割される。システム７００は、管理ノードによって、ｋ個のデータ・シェアをそのサブノードとしての第１層の計算ノードに分配するための管理ノード分配手段７０１を備え、第１層の各計算ノードは少なくとも１つのデータ・シェアをその内部に獲得し、複数の計算ノードに配置され且つ複数の計算ノードによって、その親ノードが分配した少なくとも１つのデータ・シェアをそのサブ計算ノードに分配するための複数の計算ノード分配手段７０２ａ，７０２ｂ，・・・，７０２ｆを備え、全ての指定データを獲得するために、複数の計算ノードに配置され且つ複数の計算ノードによって、他の計算ノードに対し残りの指定データを要求するための複数のデータ要求手段７０３ａ，７０３ｂ，・・・，７０３ｇを備える。
【００４６】
実施形態では、管理ノード分配手段７１０は、そのサブノードに対し、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズをさらに分配する。また、計算ノード分配手段７０２は、そのサブノードに対し、分配開始時刻、全ての計算ノードのツリー構造及び指定データの各シェアのサイズをさらに分配する。
【００４７】
図７には示されていないが、他の実施形態では、データ要求手段７０３は、当該計算ノードによってどのデータ・シェアがまだ獲得されていないかを判定するための判定手段と、分配開始時刻及び現在時刻に従って、まだ獲得されていないデータ・シェアのうちどのデータ・シェアを要求することができるかを評価するための第１評価手段と、要求することができるデータ・シェアから獲得すべき一のデータ・シェアを選択するためのデータ選択手段と、獲得すべきデータ・シェアがどの計算ノードによって獲得されているかを評価し且つこれらの計算ノードを候補ノードとして使用するための第２評価手段と、候補ノードから一の計算ノードを選択するためのノード選択手段と、選択された計算ノードから獲得すべきデータ・シェアを要求し且つこれを受け取るための受取り手段とをさらに有する。第１及び第２評価手段内では、各計算ノードは、獲得された分配開始時刻、全ての計算ノードのツリー構造、指定データの各シェアのサイズ及びネットワーク帯域幅に従って、どの計算ノードがどのデータ・シェアを所有するかを評価する。
【００４８】
図７には示されていないが、他の実施形態では、データ要求手段７０３は、当該計算ノードによってどのデータ・シェアがまだ獲得されていないかを判定するための判定手段と、分配開始時刻及び現在時刻に従って、当該計算ノードが所有しないデータをどの計算ノードが候補ノードとして所有するかを評価するための第３評価手段と、候補ノードから一の計算ノードを選択するためのノード選択手段と、選択された計算ノードから獲得すべき少なくとも１つのデータ・シェアを要求し且つこれを受け取るための受取り手段とをさらに有する。
【００４９】
ノード選択手段では、計算ノードの選択は、多くの実施形態を有する。１つの実施形態は、ランダム選択であり、そこでは第１ないし第３評価手段は、獲得された分配開始時刻、全ての計算ノードのツリー構造、指定データの各シェアのサイズ及びネットワーク帯域幅に従って、管理ノードによってそのブランチに分配されたデータを一の期間後にどの計算ノードが所有するかを評価する。好ましくは、要求受取り手段が一の要求を発行した後、要求された計算ノードが当該データ・シェアが存在しないという応答を戻す場合は、当該評価に対し修正が加えられる。１つの簡単な方法は、当該評価済みの期間の後に、管理ノードによってそのブランチに分配されたデータを当該計算ノードが有する場合には、当該評価済みの期間に対し修正を加えることである。
【００５０】
システム７００では、複数の計算ノードによって構築された一のツリー構造における管理ノード分配手段のための実施形態は、一の中間計算ノードがそのブランチの少なくとも１つのデータ・シェアをそのサブノードに分配する間は、当該ノードは、そのブランチの計算ノードのデータが分配されるまで、他のブランチの計算ノードからのデータ要求を受け取らず、これらのデータ要求を他のブランチの計算ノードに伝送しない。すなわち、そのブランチの計算ノードのデータが分配された後にだけ、他のブランチの計算ノードからのデータ要求を受け取り、これらのデータ要求を他のブランチの計算ノードに伝送することができる。一の計算ノードが当該計算ノードが属するブランチのデータを受け取った後にだけ、当該計算ノードは、他のブランチの計算ノードからのデータ要求を受け取り、これらのデータ要求を他のブランチの計算ノードに伝送する。
【００５１】
実施形態では、システム７００は、各計算ノードが完全な指定データを獲得した後、その旨を管理ノードに報告するための、複数の計算ノードに配置された複数の報告手段をさらに備える。
【００５２】
各計算ノードがそのブランチのデータを獲得したことをシステムがより容易に評価するために、そしてシステムの設計を簡単にするために、システム７００内のＭ個の計算ノードは、次の条件、すなわち、（１）ｍ＝２、（２）第１層の計算ノードの数はｋに等しい、（３）ｋ個のデータ・シェアのサイズは互いに同じである、（４）第１層の各計算ノードのサブノードの数は互いに同じである、という条件を満たす。
【００５３】
以上では、添付の図面を参照して本発明の諸実施形態を説明したが、本発明はこれらの実施形態自体に制限されないことを理解されたい。本発明の範囲及び精神から逸脱することなく、種々の変更及び修正を施しうることは明らかであろう。かかる変更及び修正の全ては、本願の請求項によって定義された本発明の範囲に属することが意図されている。
【００５４】
当業者には明らかなように、本発明の諸側面は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明の諸側面は、完全なハードウェア実施形態、完全なソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）又はハードウェア及びソフトウェアの両側面を組み合わせた実施形態の形式を取ることができ、これらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の諸側面は、任意の有形的媒体内にコンピュータ可読プログラム・コードを具体化した、コンピュータ・プログラムの形式を取ることができる。
【００５５】
１つ以上のコンピュータ可読媒体の任意の組み合わせを使用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記録媒体とすることができる。例えば、コンピュータ可読媒体は、電子、磁気、光学、電磁気、赤外線又は半導体式のシステム（若しくは装置）、伝送媒体又はこれらの適切な任意の組み合わせとすることができる。コンピュータ可読記録媒体のより特殊な例は、１つ以上の線を有する電気的な接続、フレキシブル・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、読み取り専用のＣＤ−ＲＯＭ、光ストレージ装置、磁気ストレージ装置又はこれらの適切な任意の組み合わせとすることができるであろう。本明細書の文脈では、コンピュータ可読記録媒体又はコンピュータ使用可能媒体は、命令実行システム等に関連して又はこれらによって使用するためのプログラムを保持し、格納し、通信し、伝搬し、移送することができる、任意の有形的媒体とすることができる。コンピュータ使用可能媒体は、伝搬されるデータ信号の形式を有することもできるが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ使用可能プログラム・コードを具体化することができる。コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ又はこれらの適切な任意の組み合わせを使用して伝送することができる。
【００５６】
本発明の諸側面の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語のような通常の手続き的プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書くことができる。このプログラム・コードは、独立のソフトウェア・パッケージとしてユーザ・コンピュータ上で完全に実行することができ、その一部をユーザ・コンピュータ上で且つ他の一部を遠隔コンピュータ上で実行することができ、或いは遠隔コンピュータ又はサーバ上で完全に実行することができる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザ・コンピュータに接続することができ、或いはその接続を（例えば、インターネット・サービス・プロバイダを使用するインターネットを通して）外部コンピュータに行うことができる。
【００５７】
さらに、フローチャート又はブロック図の各ブロック、フローチャート又はブロック図の複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができる。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、当該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサ上で実行される諸命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装するための手段を作成することを目的として、一のマシンを生産することができる。
【００５８】
また、これらのコンピュータ・プログラム命令をコンピュータ可読媒体内に格納すると、当該コンピュータ可読媒体内に格納された諸命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装する命令手段を含む製品を生産することを目的として、コンピュータ又は他のプログラム可能なデータ処理装置に対し特定の態様で機能するように指示することができる。
【００５９】
また、これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能なデータ処理装置にロードすると、当該コンピュータ又は他のプログラム可能なデータ処理装置上で実行される諸命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装するための方法を提供することを目的として、一のコンピュータ実装方法を生成するように当該コンピュータ又は他のプログラム可能なデータ処理装置上で一連の動作ステップを実行させることができる。
【００６０】
図面中のフローチャート及びブロック図は、本発明の種々の実施形態に従った、システム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性及び動作を示す。この点に関連して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための１つ以上の実行可能な命令から成る、モジュール、シェア又はコードの部分を表すことができる。幾つかの代替実装では、ブロック内に表記した機能は、図面に示す順序とは異なる順序で生じることができる。例えば、図面に順次に示した２つのブロックは、それらの機能性に依存して、実質的に同時に実行することができ、或いは逆の順序で実行することもできる。さらに、ブロック図又はフローチャートの各ブロック及び複数ブロックの組み合わせは、指定された機能を実行する専用のハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる。
【符号の説明】
【００６１】
７００・・・システム
７０１・・・管理ノード分配手段
７０２・・・計算ノード分配手段
７０３・・・データ要求手段
【図１】
2011118899.tif 000003
【図２】
2011118899.tif 000004
【図３】
2011118899.tif 000005
【図４】
2011118899.tif 000006
【図５】
2011118899.tif 000007
【図６】
2011118899.tif 000008
【図７】
2011118899.tif 000009