(57)【要約】【課題】エージェント間でのジョブの処理結果の転送時間の短縮化を図ること。【解決手段】（Ａ）マスターＭがエージェントＡ１にジョブＪ１を投入する。（Ｂ）マスターＭがジョブＪ２の割当先をエージェントＡ２に決定する。マスターＭはエージェントＡ１に処理結果Ｒ１のエージェントＡ２への転送要求を送信する。エージェントＡ１はエージェントＡ２に処理結果Ｒ１を直接転送する。（Ｃ）マスターＭが最後のジョブＪ３の割当先をエージェントＡ３に決定する。マスターＭはエージェントＡ２に処理結果Ｒ２のエージェントＡ３への転送要求を送信する。エージェントＡ２はエージェントＡ３に処理結果Ｒ２を直接転送する。（Ｄ）マスターＭはエージェントＡ１〜Ａ３に処理結果Ｒ１〜Ｒ３の取得要求を配信する。エージェントＡ１〜Ａ３は処理結果Ｒ１〜Ｒ３をマスターＭに返す。【選択図】図１
2012256380.tif 000002
【特許請求の範囲】
【請求項１】
エージェント群にアクセス可能なマスターサーバーを、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出手段、
前記第１のジョブの処理結果を用いて処理される第２および第３のジョブを生成する生成手段、
前記エージェント群の中から選ばれた前記第２のジョブの割当先候補における前記第２および第３のジョブの予測処理時間の総和を算出する第１の算出手段、
前記第１のジョブの割当先のエージェントと前記第２のジョブの割当先候補との間の通信レートとを取得する取得手段、
前記処理結果のデータサイズと、前記取得手段によって取得された通信レートとに基づいて、前記第１のジョブの割当先のエージェントから前記割当先候補への前記処理結果の転送時間を算出する第２の算出手段、
前記第２の算出手段によって算出された転送時間が前記第１の算出手段によって算出された予測処理時間の総和より大きい場合、前記第２のジョブと前記第３のジョブとをクラスタ化するクラスタ化手段、
前記検出手段によって完了が検出された場合、前記クラスタ化手段によってクラスタ化されたクラスタの割当先のエージェントを、前記第１のジョブの割当先のエージェントに決定する決定手段、
前記エージェント群と通信する通信手段、
前記通信手段を制御して、前記第１のジョブの割当先のエージェントに対し、前記クラスタの処理要求を送信する制御手段、
として機能させることを特徴とする分散処理プログラム。
【請求項２】
エージェント群に分散処理させる分散処理装置であって、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出手段と、
前記第１のジョブの処理結果を用いて処理される第２および第３のジョブを生成する生成手段と、
前記エージェント群の中から選ばれた前記第２のジョブの割当先候補における前記第２および第３のジョブの予測処理時間の総和を算出する第１の算出手段と、
前記第１のジョブの割当先のエージェントと前記第２のジョブの割当先候補との間の通信レートとを取得する取得手段と、
前記処理結果のデータサイズと、前記取得手段によって取得された通信レートとに基づいて、前記第１のジョブの割当先のエージェントから前記割当先候補への前記処理結果の転送時間を算出する第２の算出手段と、
前記第２の算出手段によって算出された転送時間が前記第１の算出手段によって算出された予測処理時間の総和より大きい場合、前記第２のジョブと前記第３のジョブとをクラスタ化するクラスタ化手段と、
前記検出手段によって完了が検出された場合、前記クラスタ化手段によってクラスタ化されたクラスタの割当先のエージェントを、前記第１のジョブの割当先のエージェントに決定する決定手段と、
前記エージェント群と通信する通信手段と、
前記通信手段を制御して、前記第１のジョブの割当先のエージェントに対し、前記クラスタの処理要求を送信する制御手段と、
を備えることを特徴とする分散処理装置。
【請求項３】
エージェント群と分散処理装置とを有する分散処理システムであって、
前記分散処理装置は、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出手段と、
前記第１のジョブの処理結果を用いて処理される第２および第３のジョブを生成する生成手段と、
前記エージェント群の中から選ばれた前記第２のジョブの割当先候補における前記第２および第３のジョブの予測処理時間の総和を算出する第１の算出手段と、
前記第１のジョブの割当先のエージェントと前記第２のジョブの割当先候補との間の通信レートとを取得する取得手段と、
前記処理結果のデータサイズと、前記取得手段によって取得された通信レートとに基づいて、前記第１のジョブの割当先のエージェントから前記割当先候補への前記処理結果の転送時間を算出する第２の算出手段と、
前記第２の算出手段によって算出された転送時間が前記第１の算出手段によって算出された予測処理時間の総和より大きい場合、前記第２のジョブと前記第３のジョブとをクラスタ化するクラスタ化手段と、
前記検出手段によって完了が検出された場合、前記クラスタ化手段によってクラスタ化されたクラスタの割当先のエージェントを、前記第１のジョブの割当先のエージェントに決定する決定手段と、
前記エージェント群と通信する通信手段と、
前記通信手段を制御して、前記第１のジョブの割当先のエージェントに対し、前記クラスタの処理要求を送信する制御手段と、を有し、
前記エージェント群の各々は、
前記分散処理装置によって割り当てられた第１のジョブの処理を実行するとともに、前記クラスタの処理要求が受信された場合、前記第１のジョブを実行することにより得られた処理結果に基づいて、前記クラスタの処理を実行する実行手段を有することを特徴とする分散処理システム。
【請求項４】
エージェント群に分散処理させる分散処理方法であって、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出工程と、
前記第１のジョブの処理結果を用いて処理される第２および第３のジョブを生成する生成工程と、
前記エージェント群の中から選ばれた前記第２のジョブの割当先候補における前記第２および第３のジョブの予測処理時間の総和を算出する第１の算出工程と、
前記第１のジョブの割当先のエージェントと前記第２のジョブの割当先候補との間の通信レートとを取得する取得工程と、
前記処理結果のデータサイズと、前記取得工程によって取得された通信レートとに基づいて、前記第１のジョブの割当先のエージェントから前記割当先候補への前記処理結果の転送時間を算出する第２の算出工程と、
前記第２の算出工程によって算出された転送時間が前記第１の算出工程によって算出された予測処理時間の総和より大きい場合、前記第２のジョブと前記第３のジョブとをクラスタ化するクラスタ化工程と、
前記検出工程によって完了が検出された場合、前記クラスタ化工程によってクラスタ化されたクラスタの割当先のエージェントを、前記第１のジョブの割当先のエージェントに決定する決定工程と、
前記第１のジョブの割当先のエージェントに対し、前記クラスタの処理要求を送信する送信工程と、
を含んだことを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マスターサーバー（マスター計算機ともいう。以下、単に「マスター」と称す。）が複数のエージェント計算機（以下、単に「エージェント」と称す。）に分散処理させるグリッドコンピューティングにおける分散処理プログラム、分散処理装置、分散処理システム、および分散処理方法に関する。
【背景技術】
【０００２】
従来、ネットワークを介して通信可能なマスターとエージェント群との間でやり取りされるジョブの流れでは、まず、マスターがジョブおよびその処理に必要なデータをエージェントに投入する。つぎに、投入されたエージェントはジョブの処理を実行する。そして、そのエージェントは、ジョブの処理結果をマスターに返す。処理結果を受けたマスターは、その処理結果とそれを元に処理を行うジョブを同一または他のエージェントに投入する。これらを繰り返すことで、ジョブ全体をエージェントに分散処理させている（たとえば、下記特許文献１を参照。）。
【０００３】
特許文献１は、マスターに相当するグリッド仲介装置とエージェントに相当するリソース計算機との間の処理能力（データサイズ／処理時間）を考慮してジョブを割り当てるリソース計算機を決定する技術である。
【０００４】
なお、マスターが複数のエージェントに分散処理させるグリッドコンピューティングシステムではなく、双方のコンピュータＡ，Ｂのうち余力のあるコンピュータにプログラムを実行させるという技術がある（下記特許文献２を参照。）。
【０００５】
特許文献２は、具体的には、プログラムを有するコンピュータＡと当該プログラムに与えるデータを有するコンピュータＢとの間で、コンピュータＢがコンピュータＡにデータを与えて、そのデータによりコンピュータＡがプログラムにより処理結果を出力してコンピュータＢに転送する第１の手順と、コンピュータＡがコンピュータＢにプログラムを与えて、そのプログラムによりコンピュータＢが処理結果を出力する第２の手順とのうち、いずれの手順を採用するかを、双方のコンピュータＡ，Ｂの稼働状況や処理能力により決定する。
【０００６】
なお、マスターが複数のエージェントに分散処理させるグリッドコンピューティングシステムではなく、単に複数のＣＰＵが搭載された計算機システムである（下記特許文献２を参照。）。特許文献３では、エージェントに相当する第１のＣＰＵおよび第２のＣＰＵを管理するマスターサーバーが存在しない。また、ＣＰＵごとに割り当てられるジョブの種別が固定されている。したがって、第１および第２のＣＰＵ間ではジョブ管理属性テーブルが転送されるだけであり、ジョブ実行結果リストは、第１のＣＰＵから第２のＣＰＵへは転送されず、第２のＣＰＵが記憶装置に対して参照することとなる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２０８９２２号公報
【特許文献２】特開２００２−９９５２１号公報
【特許文献３】特開平８−１４７２４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した特許文献１では、一のリソース計算機による処理結果をグリッド仲介装置に返す構成であるため、その処理結果を用いて処理されるジョブを他のリソース計算機に投入する場合、処理結果は、一のリソース計算機⇒グリッド仲介装置⇒他のリソース計算機という転送経路で、他のリソース計算機に投入される。したがって、処理結果の転送時間が長くなり、ネットワーク上のトラフィックが増大するという問題がある。
【０００９】
また、上述した特許文献２および特許文献３はいずれもマスターが複数のエージェントに分散処理させるグリッドコンピューティングシステムではなく、マスターが存在しない構成である。したがって、特許文献１の一のリソース計算機からグリッド仲介装置を介さずに他のリソース計算機に直接処理結果を転送しようとしても、処理結果を用いて処理されるジョブの投入先を決定する機能がない。
【００１０】
このため、特許文献１に開示されているように、処理結果は、一のリソース計算機⇒グリッド仲介装置⇒他のリソース計算機という転送経路で、他のリソース計算機に投入されることとなり、特許文献２または特許文献３を適用した場合であっても、処理結果の転送時間が長くなり、ネットワーク上のトラフィックが増大するという問題がある。
【００１１】
この発明は、上述した従来技術による問題点を解消するため、マスターの管理下にあるエージェント間でのジョブの処理結果の転送時間の短縮化を図ることにより、マスターとエージェント群との間のネットワークのトラフィックの低減化を図ることができる分散処理プログラム、分散処理装置、分散処理システム、および分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、この分散処理プログラム、分散処理装置、分散処理システム、および分散処理方法は、エージェント群にアクセス可能なマスターサーバーを、第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出し、前記第１のジョブの処理結果を用いて処理される第２および第３のジョブを生成し、前記エージェント群の中から選ばれた前記第２のジョブの割当先候補における前記第２および第３のジョブの予測処理時間の総和を算出し、前記第１のジョブの割当先のエージェントと前記第２のジョブの割当先候補との間の通信レートとを取得し、前記処理結果のデータサイズと、前記取得手段によって取得された通信レートとに基づいて、前記第１のジョブの割当先のエージェントから前記割当先候補への前記処理結果の転送時間を算出し、前記算出された転送時間が予測処理時間の総和より大きい場合、前記第２のジョブと前記第３のジョブとをクラスタ化し、前記完了が検出された場合、クラスタ化されたクラスタの割当先のエージェントを、前記第１のジョブの割当先のエージェントに決定し、前記エージェント群と通信し、前記第１のジョブの割当先のエージェントに対し、前記クラスタの処理要求を送信することを要件とする。
【発明の効果】
【００１３】
この分散処理プログラム、分散処理装置、分散処理システム、および分散処理方法によれば、マスターの管理下にあるエージェント間でのジョブの処理結果の転送時間の短縮化を図ることにより、マスターとエージェント群との間のネットワークのトラフィックの低減化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態にかかるグリッドコンピューティングシステム１００におけるジョブの投入例１を示す説明図である。
【図２】本実施の形態にかかるグリッドコンピューティングシステム１００におけるジョブの投入例２を示す説明図である。
【図３】本実施の形態にかかるグリッドコンピューティングシステム１００におけるジョブの投入例３を示す説明図である。
【図４】実施の形態にかかる分散処理装置のハードウェア構成を示すブロック図である。
【図５】通信レート管理テーブルの記憶内容を示す説明図である。
【図６】ジョブ管理テーブルの記憶内容を示す説明図である。
【図７】エージェント管理テーブルの記憶内容を示す説明図である。
【図８】マスターの機能的構成を示すブロック図である。
【図９】エージェントの機能的構成を示すブロック図である。
【図１０】グリッドコンピューティングシステムにおけるエージェント間通信レート測定シーケンス図である。
【図１１】グリッドコンピューティングシステムにおける分散処理シーケンス図である。
【図１２】図１１に示したジョブ割当処理（ステップＳ１１０２，Ｓ１１０８）の詳細な処理手順を示すフローチャートである。
【図１３】図１２に示したジョブＩＤ割当処理（ステップＳ１２０１）の詳細な処理手順を示すフローチャートである。
【図１４】図１２に示した予測処理時間算出処理（ステップＳ１２０２）の詳細な処理手順を示すフローチャートである。
【図１５】図１４に示した予測処理時間の計算処理（ステップＳ１４０４）の詳細な処理手順を示すフローチャートである。
【図１６】図１２に示した割当先決定処理（ステップＳ１２０３）の詳細な処理手順を示すフローチャート（前半）である。
【図１７】図１２に示した割当先決定処理（ステップＳ１２０３）の詳細な処理手順を示すフローチャート（後半）である。
【図１８】図１７に示したクラスタ化処理（ステップＳ１７０９）の詳細な処理手順を示すフローチャートである。
【図１９−１】一連のジョブの分散処理を時系列（Ａ）〜（Ｃ）で示した説明図である。
【図１９−２】一連のジョブの分散処理を時系列（Ｄ）〜（Ｆ）で示した説明図である。
【図２０−１】図１９−１（Ａ）におけるジョブＪ１の割当先決定時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−２】図１９−１（Ｂ）におけるジョブＪ１の処理情報登録時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−３】図１９−１（Ｂ）におけるジョブＪ１−１の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−４】図１９−１（Ｂ）におけるジョブＪ１−１の割当先候補の転送時間を示す説明図である。
【図２０−５】図１９−１（Ｃ）におけるジョブＪ１−２の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−６】図１９−２（Ｄ）におけるジョブＪ１−３の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−７】ジョブＪ１−２，Ｊ１−３の処理情報の登録後のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−８】図１９−２（Ｅ）におけるジョブＪ１−４の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【図２０−９】図１９−２（Ｄ）におけるジョブＪ１−４の割当先時のジョブ管理テーブル６００の記憶内容を示す説明図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して、この分散処理プログラム、分散処理装置、分散処理システム、および分散処理方法の好適な実施の形態を詳細に説明する。なお、本明細書において、分散処理装置とは、グリッドコンピューティングシステムを構成する計算機（マスターまたはエージェント）であり、分散処理プログラムとは、分散処理装置にインストールされたプログラムである。
【００１６】
本実施の形態にかかるグリッドコンピューティングシステムは、インターネット、ＬＡＮ、ＷＡＮなどのネットワークを介して通信可能なマスターとエージェント群から構成される。各エージェントは異なる処理能力（同一でもよい）を持ち、また、ＯＳやハードウェア・アーキテクチャなど異なる構造（同一でもよい）を持つ。また、ネットワークの通信品質は一定または画一的である必要もない。
【００１７】
このグリッドコンピューティングシステムでは、マスターがジョブと呼ばれる解析用プログラムを順次生成して、適切なエージェントに割り当ててジョブを投入する。ジョブの処理結果は、その都度マスターに返すのではなく、その処理結果を用いて処理されるジョブの割当先のエージェントに、マスターを介さず直接転送される。
【００１８】
なお、処理結果を用いて処理されるジョブの割当先と処理結果の転送先とが同一のエージェントであれば、割当先のエージェントを先に決めてその割当先のエージェントに処理結果を転送してもよく、処理結果の転送先のエージェントを先に決めてその転送先のエージェントに、処理結果を用いて処理されるジョブを割り当てて投入してもよい。
【００１９】
また、各割当先のエージェントで処理された処理結果は、すべてのジョブの処理が完了したあとに、各割当先のエージェントからマスターに返すことで、ジョブの処理中におけるトラフィックの低減化を図ることができる。
【００２０】
（ジョブ投入の類型）
図１は、本実施の形態にかかるグリッドコンピューティングシステム１００におけるジョブの投入例１を示す説明図である。説明を簡略化するため、（Ａ）〜（Ｄ）において、エージェントを３台にして説明する。図１においては、ネットワーク１１０を介してマスターＭが３台のエージェントＡ１〜Ａ３に分散処理させるグリッドコンピューティングシステム１００が示されている。
【００２１】
（Ａ）では、マスターＭがジョブＪ１を生成し、その割当先に指定されたエージェントＡ１にジョブＪ１を投入（ネットワーク１１０経由で送信）する。割当先は、エージェントＡ１〜Ａ３におけるジョブＪ１の予測処理時間を算出して決定する。ジョブＪ１が投入されたエージェントＡ１は、ジョブＪ１の処理が完了すると、その旨のデータや必要に応じて処理結果のデータサイズ、ジョブＪ１の処理時間、エージェントＡ１のＣＰＵ負荷をマスターＭに返す。ジョブＪ１の処理結果Ｒ１そのものは返さない。
【００２２】
（Ｂ）では、マスターＭがジョブＪ１の処理が完了したことを検出し、あらたに生成された次のジョブＪ２の割当先を、ジョブ処理中でないエージェントＡ１〜Ａ３の中からエージェントＡ２に決定している。割当先は、エージェントＡ１〜Ａ３におけるジョブＪ２の予測処理時間を算出して決定する。
【００２３】
ジョブＪ２は、ジョブＪ１の処理結果Ｒ１を用いて処理されるジョブである。マスターＭはジョブＪ２をエージェントＡ２に投入する。また、マスターＭは、処理結果Ｒ１を保持するエージェントＡ１に、処理結果Ｒ１のエージェントＡ２への転送要求を送信する。転送要求を受けたエージェントＡ１は、ジョブＪ２の割当先であるエージェントＡ２に処理結果Ｒ１を直接転送する。
【００２４】
なお、エージェントＡ１では処理結果Ｒ１は保持したままである。ジョブＪ２が投入されたエージェントＡ２は、ジョブＪ２の処理が完了すると、その旨のデータや必要に応じて処理結果のデータサイズ、ジョブＪ２の処理時間、エージェントＡ２のＣＰＵ負荷をマスターＭに返す。ジョブＪ２の処理結果Ｒ２そのものは返さない。
【００２５】
（Ｃ）では、（Ｂ）と同様、マスターＭがジョブＪ２の処理が完了したことを検出し、あらたに生成された最後のジョブＪ３の割当先を、ジョブ処理中でないエージェントＡ１〜Ａ３の中からエージェントＡ３に決定している。割当先は、エージェントＡ１〜Ａ３におけるジョブＪ３の予測処理時間を算出して決定する。ジョブＪ３は、ジョブＪ２の処理結果Ｒ２を用いて処理されるジョブである。マスターＭはジョブＪ３をエージェントＡ３に投入する。
【００２６】
また、マスターＭは、処理結果Ｒ２を保持するエージェントＡ２に、処理結果Ｒ２のエージェントＡ３への転送要求を送信する。転送要求を受けたエージェントＡ２は、ジョブＪ３の割当先であるエージェントＡ３に処理結果Ｒ２を直接転送する。なお、エージェントＡ２では処理結果Ｒ２は保持したままである。
【００２７】
ジョブＪ３が投入されたエージェントＡ３は、ジョブＪ３の処理が完了すると、その旨のデータや必要に応じて処理結果のデータサイズ、ジョブＪ２の処理時間、エージェントＡ２のＣＰＵ負荷をマスターＭに返す。
【００２８】
（Ｄ）では、最後のジョブＪ３の処理の完了が検出されると、マスターＭは割当先のエージェントＡ１〜Ａ３に対し、処理結果Ｒ１〜Ｒ３の取得要求を配信する。各エージェントＡ１〜Ａ３は、その取得要求を受信すると、保持している処理結果Ｒ１〜Ｒ３をマスターＭに返す。
【００２９】
図２は、本実施の形態にかかるグリッドコンピューティングシステム１００におけるジョブの投入例２を示す説明図である。図２は、マスターＭからの処理結果の転送要求が不要な場合の例である。（Ａ）および（Ｂ）の状態は、図１の（Ａ）および（Ｂ）と同一であるため説明を省略する。
【００３０】
（Ｃ）では、（Ｂ）と同様、マスターＭがジョブＪ２の処理が完了したことを検出するが、あらたに生成された最後のジョブＪ３の割当先を、ジョブ処理中でないエージェントＡ１〜Ａ３の中から、前段のジョブＪ２を処理したエージェントＡ２に決定している。マスターＭはジョブＪ３をエージェントＡ２に投入する。
【００３１】
この場合、エージェントＡ２が処理結果Ｒ２とジョブＪ３とを保持することになるため、処理結果Ｒ２を転送する必要はなく、ジョブＪ３の処理結果Ｒ３は処理結果Ｒ２とともにエージェントＡ２で保持される。
【００３２】
（Ｄ）では、最後のジョブＪ３の処理の完了が検出されると、マスターＭは割当先のエージェントＡ１，Ａ２に対し、処理結果Ｒ１〜Ｒ３の取得要求を配信する。各エージェントＡ１，Ａ２は、その取得要求を受信すると、保持している処理結果Ｒ１〜Ｒ３をマスターＭに返す。
【００３３】
図３は、本実施の形態にかかるグリッドコンピューティングシステム１００におけるジョブの投入例３を示す説明図である。図３は、マスターＭで生成されたジョブが共通するジョブ（親ジョブ。図３ではジョブＪ１）の処理結果を用いて処理される複数のジョブ（図３では３個。ジョブＪ１−１〜Ｊ１−３）をクラスタ化して処理する例である。（Ａ）の状態は、図１の（Ａ）と同一であるため説明を省略する。
【００３４】
（Ｂ）において、マスターＭでは、ジョブＪ１の処理結果Ｒ１を用いて処理されるジョブＪ１−１〜Ｊ１−３が順次生成される。マスターＭは、まず、最初に生成されたジョブＪ１−１の割当先のエージェントＡ１を決定する。そして、予測処理時間の合計が割当先候補であるエージェントＡ１から他のエージェントＡ２，Ａ３への転送時間よりも長くなるまでジョブのクラスタ化をおこなう。ここでは、ジョブＪ１−１〜Ｊ１−３からなるクラスタが得られる。マスターＭはクラスタ（ジョブＪ１−１〜Ｊ１−３）をエージェントＡ１に投入する。
【００３５】
（Ｃ）では、マスターＭがクラスタ（ジョブＪ１−１〜Ｊ１−３）の処理が完了したことを検出し、あらたに生成された最後のジョブＪ２の割当先を、ジョブ処理中でないエージェントＡ１〜Ａ３の中からエージェントＡ２に決定している。割当先は、エージェントＡ１〜Ａ３におけるジョブＪ２の予測処理時間を算出して決定する。ジョブＪ２は、クラスタ（ジョブＪ１−１〜Ｊ１−３）の処理結果Ｒ１−１〜Ｒ１−３を用いて処理されるジョブである。マスターＭはジョブＪ２をエージェントＡ２に投入する。
【００３６】
また、マスターＭは、処理結果Ｒ１−１〜Ｒ１−３を保持するエージェントＡ１に、処理結果Ｒ１−１〜Ｒ１−３のエージェントＡ２への転送要求を送信する。転送要求を受けたエージェントＡ１は、ジョブＪ２の割当先であるエージェントＡ２に処理結果Ｒ１−１〜Ｒ１−３を直接転送する。なお、エージェントＡ１では処理結果Ｒ１−１〜Ｒ１−３は保持したままである。
【００３７】
ジョブＪ２が投入されたエージェントＡ２は、ジョブＪ２の処理が完了すると、その旨のデータや必要に応じて処理結果のデータサイズ、ジョブＪ２の処理時間、エージェントＡ２のＣＰＵ負荷をマスターＭに返す。
【００３８】
（Ｄ）では、最後のジョブＪ２の処理の完了が検出されると、マスターＭは割当先のエージェントＡ１，Ａ２に対し、処理結果Ｒ１，Ｒ１−１〜Ｒ１−３，Ｒ２の取得要求を配信する。各エージェントＡ１，Ａ２は、その取得要求を受信すると、保持している処理結果Ｒ１，Ｒ１−１〜Ｒ１−３，Ｒ２をマスターＭに返す。
【００３９】
（分散処理装置のハードウェア構成）
まず、実施の形態にかかる分散処理装置（マスターＭ、エージェントＡ）のハードウェア構成について説明する。図４は、実施の形態にかかる分散処理装置のハードウェア構成を示すブロック図である。
【００４０】
図４において、分散処理装置は、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、ＨＤＤ（ハードディスクドライブ）４０４と、ＨＤ（ハードディスク）４０５と、ＦＤＤ（フレキシブルディスクドライブ）４０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）４０７と、ディスプレイ４０８と、Ｉ／Ｆ（インターフェース）４０９と、キーボード４１０と、マウス４１１と、スキャナ４１２と、プリンタ４１３と、を備えている。また、各構成部はバス４００によってそれぞれ接続されている。
【００４１】
ここで、ＣＰＵ４０１は、分散処理装置の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。ＨＤＤ４０４は、ＣＰＵ４０１の制御にしたがってＨＤ４０５に対するデータのリード／ライトを制御する。ＨＤ４０５は、ＨＤＤ４０４の制御で書き込まれたデータを記憶する。
【００４２】
ＦＤＤ４０６は、ＣＰＵ４０１の制御にしたがってＦＤ４０７に対するデータのリード／ライトを制御する。ＦＤ４０７は、ＦＤＤ４０６の制御で書き込まれたデータを記憶したり、ＦＤ４０７に記憶されたデータを分散処理装置に読み取らせたりする。
【００４３】
また、着脱可能な記録媒体として、ＦＤ４０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ４０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４４】
Ｉ／Ｆ４０９は、通信回線を通じてインターネットなどのネットワーク１１０に接続され、このネットワーク１１０を介して他の装置に接続される。そして、Ｉ／Ｆ４０９は、ネットワーク１１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４５】
キーボード４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４６】
スキャナ４１２は、画像を光学的に読み取り、分散処理装置内に画像データを取り込む。なお、スキャナ４１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ４１３は、画像データや文書データを印刷する。プリンタ４１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４７】
（通信レート管理テーブルの記憶内容）
図５は、通信レート管理テーブルの記憶内容を示す説明図である。通信レート管理テーブル５００は、処理結果の転送時間を求める場合に用いられる。通信レート管理テーブル５００はマスターＭに備えられる。図５において、通信レート管理テーブル５００には、エージェント間またはマスター−エージェント間の通信レートが記憶されている。
【００４８】
各エージェントは、送信元となる計算機がマスターＭから依頼を受けて宛先の計算機との通信レートを測定する。測定手法としては、たとえば、ｐｉｎｇコマンドを宛先に送信してから応答が受信されるまでの時間により測定することができる。通信レート管理テーブル５００は、図４に示したＲＡＭ４０３やＨＤ４０５などの記録領域によりその機能を実現する。
【００４９】
（ジョブ管理テーブルの記憶内容）
図６は、ジョブ管理テーブルの記憶内容を示す説明図である。ジョブ管理テーブル６００は、あらたに生成されたジョブの各エージェントによる予測処理時間を求める場合に用いられる。ジョブ管理テーブル６００はマスターＭに備えられる。図６において、ジョブ管理テーブル６００には、ＣＰＵ処理能力比、ジョブ情報、ＣＰＵ負荷がエージェントごとに記憶されている。ＣＰＵ処理能力比とは、特定のＣＰＵの処理能力（たとえば、クロック周波数）を基準とした各エージェントのＣＰＵの処理能力の比率である。
【００５０】
ジョブ情報とは、ジョブＩＤ、処理時間、サイズを含む情報である。ジョブＩＤとは、エージェントに割り当てられる、または割り当てられたジョブの識別コードである。ジョブＩＤは、マスターＭがジョブを割り当てる際に記憶される。
【００５１】
処理時間とは、エージェントに投入されたジョブの当該エージェントでの実際の処理時間である。サイズとは、エージェントにおいてジョブが処理された際に得られる処理結果のデータサイズである。処理時間とサイズは、ジョブが投入されたエージェントから返ってくる処理情報に含まれている情報であり、処理情報が受信されると書き込まれる。
【００５２】
ＣＰＵ負荷とは、エージェントのＣＰＵ負荷であり、ジョブの投入前が過去のＣＰＵ負荷であり、ジョブの投入後が現在のＣＰＵ負荷となる。ＣＰＵ負荷もマスターＭに返ってくる処理情報に含まれる情報であり、処理情報が受信されると書き込まれる。ジョブ管理テーブル６００は、図４に示したＲＡＭ４０３やＨＤ４０５などの記録領域によりその機能を実現する。
【００５３】
（エージェント管理テーブルの記憶内容）
図７は、エージェント管理テーブルの記憶内容を示す説明図である。エージェント管理テーブル７００は、ジョブの割当先となるエージェントや処理結果の転送先となるエージェントのＩＰアドレスを特定する場合に用いられる。エージェント管理テーブル７００はマスターＭに備えられる。図７において、エージェント管理テーブル７００には、エージェントごとにＩＰアドレスが記憶されている。エージェント管理テーブル７００は、図４に示したＲＡＭ４０３やＨＤ４０５などの記録領域によりその機能を実現する。
【００５４】
（分散処理装置の機能的構成）
つぎに、分散処理装置の機能的構成について説明する。まず、マスターＭについて説明する。図８は、マスターＭの機能的構成を示すブロック図である。図８において、マスターＭは、検出部８０１と、生成部８０２と、決定部８０３と、通信部８０４、制御部８０５と、算出部８０６と、取得部８０７と、クラスタ化処理部８０８と、から構成されている。これら各機能８０１〜８０８は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、ＨＤ４０５などの記憶領域に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９によりその機能を実現する。
【００５５】
まず、検出部８０１は、ジョブの割当先のエージェントによりジョブの処理が完了したことを検出する機能を有する。具体的には、たとえば、ジョブの処理が完了したエージェントからその旨のメッセージや、ジョブ情報やＣＰＵ負荷などが含まれている処理情報を受信することで、ジョブ処理の完了を検出することができる。
【００５６】
また、生成部８０２は、一連のジョブを生成する機能を有する。一連のジョブは先頭のジョブからツリー構造のようにつながっており、親となる前段のジョブの処理結果を用いて後段のジョブの処理が実行される。また、生成部８０２は、ジョブが生成される都度、そのジョブに固有のジョブＩＤを割り付ける。たとえば、最初に生成されたジョブについては、“Ｊ１”、そのジョブＪ１の処理結果を用いて処理されるジョブが生成されると、そのジョブに“Ｊ２”を割り付ける。
【００５７】
また、共通するジョブの処理結果を用いて処理されるジョブ群が生成されると、枝番を用いてジョブＩＤを割り付ける。たとえば、図３に示したように、共通するジョブＪ１の処理結果Ｒ１を用いて処理されるジョブ群については、“Ｊ１−１”、“Ｊ１−２”、“Ｊ１−３”というように、ジョブＩＤを割り付ける。このようにジョブＩＤを割り付けることにより、一連のジョブがツリー構造として認識される。
【００５８】
また、決定部８０３は、生成部８０２によって生成されたジョブの割当先のエージェントをエージェント群の中から決定する機能を有する。具体的には、あるジョブの完了が検出されると、そのジョブを用いて処理されるジョブの割当先のエージェントを決定する。割当先のエージェントの決定処理としては、各エージェントにおける割当予定のジョブの予測処理時間によって決定する。具体的には、予測処理時間が最短のエージェントを割当先に決定する。また、ジョブ処理中でないエージェントの中から決定したり、マスターＭとの通信レートが高いエージェントに決定したり、ランダムに決定したりすることとしてもよい。
【００５９】
また、通信部８０４は、エージェント群と通信する機能を有する。具体的には、たとえば、エージェントから送信されてくる、通信レートや処理情報、処理結果を受信したり、エージェントに対し各種リクエスト、ジョブなどを送信する。
【００６０】
また、制御部８０５は、通信部８０４を制御して、エージェント群との通信を制御する機能を有する、具体的には、たとえば、図１（Ａ）に示したように、割当先のエージェントＡ１に対し、ジョブＪ１の処理要求を送信する。また、図１（Ｂ）に示したように、ジョブＪ２の割当先のエージェントＡ２への処理結果Ｒ１の転送要求を、処理結果Ｒ１を保持するエージェントＡ１に送信する。
【００６１】
また、図２（Ｃ）に示したように、ジョブＪ２の処理結果Ｒ２を用いて処理されるジョブＪ３の割当先が処理結果Ｒ２を保持するエージェントと同一である場合、処理結果Ｒ２の転送要求は送信しない。また、図１（Ｄ）に示したように、最後のジョブＪ３の処理の完了が検出された場合、割当先となったエージェントＡ１〜Ａ３に対し、処理結果Ｒ１〜Ｒ３の取得要求を送信する。
【００６２】
また、算出部８０６は、エージェント群の中から選ばれたジョブの割当先候補ごとに、ジョブの予測処理時間を算出する機能を有する。具体的には、たとえば、ジョブ管理テーブル６００を参照して、割り当てられるジョブの予測処理時間を割当先候補ごとに算出する。この予測処理時間は、下記式（１）により算出することができる。
【００６３】
Ｔｐｉｋ＝ｔｐｉｋ×Ｌａｉ／Ｌｂｉ・・・（１）
【００６４】
ここで、Ｔｐｉｋは、割当先候補のエージェントＡｉのジョブＪｋの予測処理時間、ｔｐｉｋは、ジョブ管理テーブル６００に記憶された割当先候補のエージェントＡｉのジョブＪｋに関する処理時間、Ｌａｉは、ジョブ管理テーブル６００に記憶された割当先候補のエージェントＡｉの現在のＣＰＵ負荷、Ｌｂｉは、ジョブ管理テーブル６００に記憶された割当先のエージェントＡｉの過去のＣＰＵ負荷である。
【００６５】
また、ｔｐｉｋは、異なるパラメータでジョブＪｋの処理時間がジョブ管理テーブル６００に記憶されている場合にはその処理時間がｔｐｉｋとなる。また、同一の処理結果を用いて処理されたジョブの処理時間が記憶されている場合にはその処理時間がｔｐｉｋとなる。また、ジョブＪｋと同一または近似（たとえば、１０％程度の差）するデータサイズのジョブの処理時間が記憶されている場合にはその処理時間がｔｐｉｋとなる。また、最初に生成されたジョブなどのように処理時間ｔｐｉｋが設定できない場合は、下記式（２）により、予測処理時間を算出する。
【００６６】
Ｔｐｉｋ＝１／Ｐｉ・・・（２）
【００６７】
ただし、Ｐｉは、割当先候補のエージェントＡｉのＣＰＵ処理能力比である。なお、予測処理時間Ｔｐｉｋは、割当先候補となるエージェントＡｉの台数分算出されるが、最短の予測処理時間Ｔｐｉｋのみに絞り込む。
【００６８】
また、取得部８０７は、エージェント間の通信レートを取得する機能を有する。具体的には、たとえば、分散処理の実行に先立って、各エージェントに他のエージェントとの通信レートの取得要求を送信する。各エージェントは、取得要求を受けると他のエージェントに対しｐｉｎｇコマンドを送信するなどして他のエージェントとの通信レートを測定する。そして、得られた通信レートをレスポンスとしてマスターＭが受けることで、エージェント間の通信レートを取得することができる。
【００６９】
取得された通信レートは、通信レート管理テーブル５００に書き込まれるため、通信レートが必要なときは、送信元のエージェントと宛先のエージェントを指定すれば、通信レート管理テーブル５００から該当する通信レートを取得することができる。たとえば、図１の（Ｂ）において、エージェントＡ１，Ａ２間の通信レートを取得したい場合、処理結果Ｒ１を保持するエージェントＡ１を送信先、ジョブＪ２の割当先のエージェントＡ２を宛先として、通信レート管理テーブル５００から通信レートＣ１２を読み出す。
【００７０】
この場合、算出部８０６では、処理結果のデータサイズと、取得部８０７によって取得された通信レートとに基づいて、処理結果を保持するエージェントから割当先候補への処理結果の転送時間を算出する。この転送時間は、下記式（３）により算出することができる。
【００７１】
Ｔｔｊ＝ｓｊ／Ｃｍｉ・・・（３）
【００７２】
ただし、Ｔｔｊは、ジョブＪｋの親となるジョブＪｊを処理したエージェントＡｍからジョブＪｋの割当先候補となるエージェントＡｉへのジョブＪｊの処理結果Ｒｊの転送時間、ｓｊは処理結果Ｒｊのデータサイズ、Ｃｍｉは、エージェントＡｍを送信元、エージェントＡｉを宛先とした場合の通信レートである。データサイズｓｊはジョブ管理テーブル６００に記憶されている。通信レートＣｍｉは、通信レート管理テーブル５００に記憶されている。
【００７３】
またこの場合、決定部８０３は、さらに、予測処理時間Ｔｐｉｋと算出部８０６によって算出された転送時間Ｔｔｊとを比較することにより、割当先候補のエージェントを割当先に決定する。具体的には、たとえば、Ｔｐｉｋ＜Ｔｔｊとなった場合、割当先候補のエージェントＡｉをジョブＪｋの割当先のエージェントに決定する。割当先のエージェントＡｉは、エージェントＡｍからの処理結果Ｒｊの転送先にもなる。
【００７４】
また、クラスタ化処理部８０８は、生成部８０２によって生成されたジョブ群をクラスタ化する機能を有する。クラスタ化の対象となるジョブ群は、親ジョブが共通するジョブ群である。具体的には、たとえば、図３に示したような親ジョブＪ１の処理結果Ｒ１を用いるジョブ群Ｊ１−１〜Ｊ１−３である。
【００７５】
つぎに、エージェントの機能的構成について説明する。図９は、エージェントの機能的構成を示すブロック図である。図９において、エージェントＡは、実行部９０１と、受信部９０２と、特定部９０３と、送信部９０４と、から構成されている。これら各機能９０１〜９０４は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、ＨＤ４０５などの記憶領域に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９によりその機能を実現する。
【００７６】
まず、実行部９０１は、マスターＭによって割り当てられたジョブの処理を実行する機能を有する。ジョブの処理は、エージェントのＣＰＵによって実行され、その処理結果はエージェント内の記憶領域に保持される。
【００７７】
また、受信部９０２は、実行部９０１による実行によって得られたジョブの処理結果の転送要求をマスターＭから受信する機能を有する。転送要求やマスターＭからの処理結果の取得要求が受信されない限り、処理結果は他の計算機に送信されることはない。
【００７８】
また、特定部９０３は、受信部９０２によって受信された転送要求から処理結果を用いて処理されるジョブの割当先のエージェントを特定する機能を有する。転送要求には、割当先のエージェントのＩＰアドレスが埋め込まれているため、このＩＰアドレスを抽出する。
【００７９】
また、送信部９０４は、特定部９０３によって特定されたエージェントに処理結果を送信する機能を有する。転送要求から抽出されたＩＰアドレスを宛先に設定することで処理結果を転送することができる。
【００８０】
（グリッドコンピューティングシステム１００のシーケンス）
つぎに、グリッドコンピューティングシステム１００のシーケンスについて説明する。図１０は、グリッドコンピューティングシステム１００におけるエージェント間通信レート測定シーケンス図である。
【００８１】
図１０において、マスターＭは、通信レートの測定対象となるエージェントを指定して、その指定エージェントに対し、通信レート測定要求を送信する（ステップＳ１００１）。通信レート測定要求には、通信レートの測定対象となる指定エージェントおよび被測定エージェントのＩＰアドレスが含まれている。
【００８２】
指定エージェントは、通信レート測定要求を受けると、被測定エージェントに対し、ｐｉｎｇコマンドによるエコー要求を送信する（ステップＳ１００２）。被測定エージェントは、エコー要求を受けると指定エージェントに対しエコー応答を返す（ステップＳ１００３）。
【００８３】
指定エージェントは、エコー要求を送信してからエコー応答を受信するまでの通信時間と、エコー要求およびエコー応答のデータサイズとにより、指定エージェントを送信元、被測定エージェントを宛先とした場合の通信レートを算出する（ステップＳ１００４）。そして、算出された通信レートをマスターＭに送信する（ステップＳ１００５）。マスターＭは、通信レートを受けると、通信レート管理テーブル５００に測定結果として登録する（ステップＳ１００６）。
【００８４】
図１１は、グリッドコンピューティングシステム１００における分散処理シーケンス図である。まず、マスターＭは、最初にジョブを生成し（ステップＳ１１０１）、生成されたジョブについてのジョブ割当処理を実行し（ステップＳ１１０２）、割当先エージェントＡａに対してジョブ処理要求を送信する（ステップＳ１１０３）。ジョブ処理要求には、生成されたジョブが含まれている。
【００８５】
割当先エージェントＡａは、ジョブ処理要求を受けると、ジョブ処理を実行する（ステップＳ１１０４）。そして、得られた処理結果のデータサイズ、処理時間、処理前後のＣＰＵ負荷を、処理情報としてマスターＭに返す（ステップＳ１１０５）。マスターＭは、処理情報を受けると、ジョブ管理テーブル６００に登録する（ステップＳ１１０６）。
【００８６】
マスターＭは、後続のジョブを生成し（ステップＳ１１０７）、生成されたジョブについてのジョブ割当処理を実行し（ステップＳ１１０８）、割当先エージェントＡｂに対してジョブ処理要求を送信する（ステップＳ１１０９）。ジョブ処理要求には、生成されたジョブが含まれている。このジョブは、先の割当先エージェントＡａで処理されたジョブの処理結果を用いて処理されるジョブである。また、マスターＭは、先の割当先エージェントＡａに対して割当先エージェントＡｂへの処理結果の転送要求を送信する（ステップＳ１１１０）。
【００８７】
先の割当先エージェントＡａは、この転送要求を受けると、処理結果を割当先エージェントＡｂへ転送する（ステップＳ１１１１）。割当先エージェントＡｂは、先の割当先エージェントＡａからの処理結果と、その処理結果を用いて処理されるジョブが投入されたため、そのジョブの処理を実行する（ステップＳ１１１２）。そして、得られた処理結果のデータサイズ、処理時間、処理前後のＣＰＵ負荷を、処理情報としてマスターＭに返す（ステップＳ１１１３）。マスターＭは、処理情報を受けると、ジョブ管理テーブル６００に登録する（ステップＳ１１１４）。
【００８８】
このあと、グリッドコンピューティングシステム１００では、ジョブの生成が終了するまで、ステップＳ１１０７〜Ｓ１１１４を繰り返し実行する。最後のジョブについて処理情報の登録が完了すると、マスターＭは、前記割当先エージェントＡａ〜Ａｚに対し処理結果の取得要求を配信する（ステップＳ１１１５）。各割当先エージェントＡａ〜Ａｚは、その取得要求を受けると、マスターＭに対し処理結果を返す（ステップＳ１１１６）。これにより、一連のジョブの分散処理が終了することとなる。
【００８９】
図１２は、図１１に示したジョブ割当処理（ステップＳ１１０２，Ｓ１１０８）の詳細な処理手順を示すフローチャートである。図１２において、まず、生成されたジョブに対してジョブＩＤ割当処理を実行し（ステップＳ１２０１）、つぎに、予測処理時間算出処理を実行し（ステップＳ１２０２）、最後に、割当先決定処理を実行する（ステップＳ１２０３）ことで、ジョブ割当処理を終了する。
【００９０】
図１３は、図１２に示したジョブＩＤ割当処理（ステップＳ１２０１）の詳細な処理手順を示すフローチャートである。まず、ジョブが生成されるまで待ち受け（ステップＳ１３０１：Ｎｏ）、ジョブが生成された場合（ステップＳ１３０１：Ｙｅｓ）、親ジョブ、すなわち、生成されたジョブに与える処理結果の処理元となるジョブがあるか否かを判断する（ステップＳ１３０２）。たとえば、図３の例では、生成されたジョブがジョブＪ１−２である場合、親ジョブはジョブＪ１である。
【００９１】
親ジョブがない場合（ステップＳ１３０２：Ｎｏ）、ジョブＩＤを生成してそのジョブに割り当てる（ステップＳ１３０３）。これにより、ジョブＩＤ割当処理を終了する。一方、親ジョブがある場合（ステップＳ１３０２：Ｙｅｓ）、固有の文字列を生成し（ステップＳ１３０４）、文字列の接頭に親ジョブのジョブＩＤを付与して、今回生成されたジョブのジョブＩＤを生成する（ステップＳ１３０５）。そして生成されたジョブＩＤを割り当てる（ステップＳ１３０６）。これにより、ジョブＩＤ割当処理を終了して、予測処理時間算出処理に移行する。
【００９２】
図３の例では、ジョブＪ１−１までジョブＩＤが付与されているとすると、今回生成されたジョブについては、親ジョブＪ１が存在するため、固有の文字列“２”を生成する。なお、ジョブＪ１−１がすでに存在するため、“１”は生成できない。そして、生成された文字列“２”の接頭に、親ジョブのジョブＩＤ：Ｊ１を付与することで、今回生成されたジョブのジョブＩＤ：Ｊ１−２が生成、割り当てられる。
【００９３】
図１４は、図１２に示した予測処理時間算出処理（ステップＳ１２０２）の詳細な処理手順を示すフローチャートである。まず、未選択のエージェントがあるか否かを判断する（ステップＳ１４０１）。未選択のエージェントがある場合（ステップＳ１４０１：Ｙｅｓ）、未選択のエージェントを抽出する（ステップＳ１４０２）。具体的には、未選択のエージェントについてのエージェント管理テーブル７００のエントリを特定する（ステップＳ１４０２）。そして、そのエージェントがジョブ処理中であるか否かを判断する（ステップＳ１４０３）。
【００９４】
ジョブ処理中である場合（ステップＳ１４０３：Ｙｅｓ）、ステップＳ１４０１に戻る。一方、ジョブ処理中でない場合（ステップＳ１４０３：Ｎｏ）、予測処理時間の計算処理を実行する（ステップＳ１４０４）。そして、予測処理時間が算出されると、ステップＳ１４０１に戻る。一方、ステップＳ１４０１において、未選択のエージェントがない場合（ステップＳ１４０１：Ｎｏ）、予測処理時間算出処理を終了して、割当先決定処理（ステップＳ１２０３）に移行する。
【００９５】
図１５は、図１４に示した予測処理時間の計算処理（ステップＳ１４０４）の詳細な処理手順を示すフローチャートである。まず、処理時間がすでに登録済みであるか否かを判断し（ステップＳ１５０１）、登録済みである場合（ステップＳ１５０１：Ｙｅｓ）、処理時間、過去のＣＰＵ負荷、現在のＣＰＵ負荷を、選択エージェントにおけるジョブ管理テーブル６００のエントリから取得する（ステップＳ１５０２）。そして、ステップＳ１５０７に移行する。
【００９６】
登録済みの処理時間とは、今回生成されたジョブと同一のジョブであるが、与えられたパラメータが異なるジョブの処理時間である。この場合、今回生成されたジョブの処理時間の予測に先立って、すでにジョブ管理テーブル６００に登録されているため、予測処理時間の算出に用いる。
【００９７】
一方、処理時間が登録済みでない場合（ステップＳ１５０１：Ｎｏ）、親が共通するジョブの処理時間が登録済みであるか否かを判断する（ステップＳ１５０３）。登録済みである場合（ステップＳ１５０３：Ｙｅｓ）、親が共通するジョブの処理時間、過去のＣＰＵ負荷、および現在のＣＰＵ負荷を、選択エージェントにおけるジョブ管理テーブル６００のエントリから取得する（ステップＳ１５０４）。そして、ステップＳ１５０７に移行する。
【００９８】
要するに、親が共通するジョブどうしでは、その処理時間はほぼ同等であるとの予測に基づくものである。たとえば、あるエージェントにおけるジョブＪ１−２の予測処理時間を算出する場合、親ジョブＪ１が共通するジョブＪ１−１の処理時間を用いて、ジョブＪ１−２の予測処理時間を算出することとなる。
【００９９】
一方、処理時間が登録済みでない場合（ステップＳ１５０３：Ｎｏ）、同サイズのジョブの処理時間が登録済みであるか否かを判断する（ステップＳ１５０５）。登録済みである場合（ステップＳ１５０５：Ｙｅｓ）、同サイズのジョブの処理時間、過去のＣＰＵ負荷、現在のＣＰＵ負荷を、ジョブ管理テーブル６００のエントリから取得する（ステップＳ１５０６）。そして、ステップＳ１５０７に移行する。
【０１００】
なお、同サイズのジョブは、選択エージェントのエントリに登録されていてもよく、また、他のエントリに登録されていてもよい。この場合、ＣＰＵ負荷は、登録エントリのＣＰＵ負荷を読み出すこととなる。要するに、サイズがほぼ同等であれば処理時間も同等であるとの予測に基づくものである。
【０１０１】
そして、ステップＳ１５０７では、ステップＳ１５０２、Ｓ１５０４、またはＳ１５０６での取得情報を用いて、選択エージェントによるジョブの予測処理時間を算出する（ステップＳ１５０７）。具体的には、取得情報を、上述した式（１）に代入することにより算出する。これにより、予測処理時間の計算処理を終了して、ステップＳ１４０１に戻る。
【０１０２】
一方、ステップＳ１５０５において登録済みでない場合（ステップＳ１５０５：Ｎｏ）、選択エージェントのＣＰＵ処理能力比を用いて、選択エージェントによるジョブの予測処理時間を算出する（ステップＳ１５０８）。具体的には、選択エージェントのＣＰＵ処理能力比を、上述した式（２）に代入することにより算出する。これにより、予測処理時間の計算処理を終了して、ステップＳ１４０１に戻る。
【０１０３】
図１６は、図１２に示した割当先決定処理（ステップＳ１２０３）の詳細な処理手順を示すフローチャート（前半）である。まず、生成されたジョブが最上位のジョブ、すなわち、最初に生成されたジョブであるか否かを判断する（ステップＳ１６０１）。最上位のジョブである場合（ステップＳ１６０１：Ｙｅｓ）、予測処理時間が最短となるエージェントをジョブの割当先エージェントに決定する（ステップＳ１６０２）。
【０１０４】
そして、決定された割当先エージェントに対し、ジョブ処理要求を送信する（ステップＳ１６０３）。これにより、ジョブ割当処理を終了する。一方、ステップＳ１６０１において、最上位のジョブでない場合（ステップＳ１６０１：Ｎｏ）、図１７のフローチャートに移行する。
【０１０５】
図１７は、図１２に示した割当先決定処理（ステップＳ１２０３）の詳細な処理手順を示すフローチャート（後半）である。図１７において、エージェントごとに算出された予測処理時間の中から最短の予測処理時間Ｔｐｉｋを抽出し（ステップＳ１７０１）、抽出予測処理時間Ｔｐｉｋの算出元エージェントを、親ジョブを処理したエージェントが保持する処理結果の転送先候補として選択する（ステップＳ１７０２）。選択転送先候補への転送時間Ｔｔｊを上記式（３）により算出して（ステップＳ１７０３）、抽出予測処理時間Ｔｐｉｋと転送時間Ｔｔｊとを比較する（ステップＳ１７０４）。
【０１０６】
Ｔｐｉｋ＜Ｔｔｊでない場合（ステップＳ１７０４：Ｎｏ）、転送時間Ｔｔｊの方が短いことになるため、抽出予測処理時間Ｔｐｉｋの算出元エージェントを、ジョブの割当先エージェントに決定する（ステップＳ１７０５）。そして、決定された割当先エージェントに対しジョブ処理要求を送信する（ステップＳ１７０６）。
【０１０７】
また、割当先と転送先とが同一エージェントであるか否かを判断し（ステップＳ１７０７）、同一である場合（ステップＳ１７０７：Ｙｅｓ）、転送要求を送信せずに、割当先決定処理を終了して、ステップＳ１４０１に戻る。一方、同一でない場合（ステップＳ１７０７：Ｎｏ）、親ジョブの処理結果を保持するエージェントに対し、その処理結果の割当先エージェントへの転送要求を送信する（ステップＳ１７０８）。これにより、割当先決定処理を終了する。
【０１０８】
Ｔｐｉｋ＜Ｔｔｊである場合（ステップＳ１７０４：Ｙｅｓ）、クラスタ化処理を実行する（ステップＳ１７０９）。クラスタ化処理は、ジョブをまとめてクラスタにする処理である。詳細は後述する。
【０１０９】
クラスタ化処理のあと、親ジョブの処理結果を保持するエージェントを、クラスタの割当先エージェントに決定し（ステップＳ１７１０）、その割当先エージェントに対しジョブ処理要求（厳密にはクラスタの処理要求）を送信する（ステップＳ１７１１）。これにより、割当先エージェントにはクラスタを構成するジョブ群が投入されることとなる。このあと、割当先決定処理を終了する。
【０１１０】
図１８は、図１７に示したクラスタ化処理（ステップＳ１７０９）の詳細な処理手順を示すフローチャートである。まず、クラスタを生成する（ステップＳ１８０１）。この状態では、空集合である。つぎに、クラスタにジョブを追加する（ステップＳ１８０２）。そして、そのジョブと親が共通するジョブを生成する（ステップＳ１８０３）。図３の例では、クラスタにジョブＪ１−１を追加した場合、親（ジョブＪ１）が共通するジョブを生成する。このジョブは、このあとのジョブＩＤ割当処理により、ジョブＪ１−２となる。
【０１１１】
つぎに、ジョブＩＤ割当処理（ステップＳ１８０４）と予測処理時間算出処理（ステップＳ１８０５）とを実行する。このジョブＩＤ割当処理は、図１３に示したジョブＩＤ割当処理と同一処理であり、予測処理時間算出処理（ステップＳ１８０５）も、図１４および図１５に示した予測処理時間算出処理と同一処理である。このあと、選択転送先候補への転送時間Ｔｔｊを上記式（３）により算出して（ステップＳ１８０６）、抽出予測処理時間Ｔｐｉｋと転送時間Ｔｔｊとを比較する（ステップＳ１８０７）。
【０１１２】
Ｔｐｉｋ＜Ｔｔｊである場合（ステップＳ１８０７：Ｙｅｓ）、抽出予測処理時間Ｔｐｉｋの方が短いため、そのジョブをクラスタに追加する（ステップＳ１８０８）。そして、ジョブ追加後のクラスタの予測処理時間ΣＴｐｉｋと転送時間Ｔｔｊとを比較する（ステップＳ１８０９）。クラスタの予測処理時間ΣＴｐｉｋとは、クラスタに追加されたジョブ群の抽出予測処理時間Ｔｐｉｋの総和である。
【０１１３】
ΣＴｐｉｋ＜Ｔｔｊである場合（ステップＳ１８０９：Ｙｅｓ）、クラスタに余裕があるため、ジョブ生成が終了か否かを判断する（ステップＳ１８１０）。一方、ΣＴｐｉｋ＜Ｔｔｊでない場合（ステップＳ１８０９：Ｎｏ）、クラスタ化処理を終了して、ステップＳ１７１０に移行する。
【０１１４】
一方、ステップＳ１８０７において、Ｔｐｉｋ＜Ｔｔｊでない場合（ステップＳ１８０７：Ｎｏ）、そのジョブをクラスタに追加せずに、ステップＳ１８１０に移行する。ステップＳ１８１０では、親を共通とするジョブの生成が終了したか否かを判断し（ステップＳ１８１０）、終了していない場合（ステップＳ１８１０：Ｎｏ）、ステップＳ１８０３に戻り、終了した場合（ステップＳ１８１０：Ｙｅｓ）、クラスタ化処理を終了して、ステップＳ１７１０に移行する。
【実施例】
【０１１５】
つぎに、このグリッドコンピューティングによる分散処理の一実施例について説明する。図１９−１および図１９−２は、一連のジョブの分散処理を時系列（Ａ）〜（Ｆ）で示した説明図である。（Ａ）において、マスターＭは最上位のジョブＪ１を生成して、その割当先エージェントを、エージェントＡ１〜Ａ３の中からエージェントＡ１に決定し、ジョブを投入する。
【０１１６】
図２０−１は、図１９−１（Ａ）におけるジョブＪ１の割当先決定時のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−１では、ジョブＪ１の処理時間、ジョブＪ１と親が共通するジョブの処理時間、ジョブＪ１とサイズが同等のジョブの処理時間のいずれも登録されていないため、上記式（２）により、エージェントＡ１〜Ａ３ごとに予測処理時間が算出される。予測処理時間のうち、エージェントＡ１の予測処理時間が最短であるため、ジョブＪ１の割当先をエージェントＡ１に決定する。
【０１１７】
（Ｂ）において、ジョブＪ１が投入されたエージェントＡ１からその処理情報が返ってくるとマスターＭはジョブ管理テーブル６００に登録する。そして、次のジョブＪ１−１を生成して、その割当先エージェントを、エージェントＡ１〜Ａ３の中からエージェントＡ１に決定し、ジョブを投入する。ジョブＪ１−１はジョブＪ１を親とするジョブであり、ジョブＪ１の処理結果Ｒ１を用いて処理される。
【０１１８】
図２０−２は、図１９−１（Ｂ）におけるジョブＪ１の処理情報登録時のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−２では、ジョブＪ１の処理時間として１５〔ｍｓ〕、ジョブＪ１のデータサイズとして１〔ｂｙｔｅ〕、現在のＣＰＵ負荷として１０〔％〕、過去のＣＰＵ負荷として２０〔％〕が登録される。
【０１１９】
図２０−３は、図１９−１（Ｂ）におけるジョブＪ１−１の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−３においても、図２０−１と同様、ジョブＪ１−１の処理時間、ジョブＪ１−１と親が共通するジョブの処理時間、ジョブＪ１−１とサイズが同等のジョブの処理時間のいずれも登録されていないため、上記式（２）により、エージェントＡ１〜Ａ３ごとに予測処理時間が算出される。予測処理時間のうち、エージェントＡ１の予測処理時間が最短であるため、ジョブＪ１−１の割当先候補をエージェントＡ１に絞り込む。
【０１２０】
図２０−４は、図１９−１（Ｂ）におけるジョブＪ１−１の割当先候補の転送時間を示す説明図である。マスターＭは通信レート管理テーブル５００を参照して、処理結果Ｒ１の転送元をエージェントＡ１とし割当先候補Ａ１の転送時間を算出する。そして、予測処理時間と転送時間を比較すると、転送時間の方が短いため、エージェントＡ１が、ジョブＪ１−１の割当先に決定される。したがって、処理結果Ｒ１は転送する必要がない。
【０１２１】
（Ｃ）において、マスターＭは、ジョブＪ１−１の処理情報の受信にかかわらず、つぎのジョブＪ１−２を生成する。ジョブＪ１−２はジョブＪ１−１と親（ジョブＪ１）が共通するジョブであり、ジョブＪ１の処理結果Ｒ１を用いて処理される。このジョブＪ１−２の割当先をエージェントＡ２に決定して、エージェントＡ２にジョブＪ１−２を投入する。
【０１２２】
また、エージェントＡ１に対してジョブＪ１の処理結果Ｒ１の転送要求をエージェントＡ１に送る。エージェントＡ１はその転送要求にしたがって、処理結果Ｒ１をエージェントＡ２に転送する。これにより、エージェントＡ２では、ジョブＪ１−２の処理を実行することができる。
【０１２３】
図２０−５は、図１９−１（Ｃ）におけるジョブＪ１−２の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−５では、エージェントＡ１がジョブＪ１−１の処理中であるため、割当先候補から外れる。また、図２０−５においても、図２０−３と同様、ジョブＪ１−２の処理時間、ジョブＪ１−２と親が共通するジョブの処理時間、ジョブＪ１−２とサイズが同等のジョブの処理時間のいずれも登録されていないため、上記式（２）により、エージェントＡ２，Ａ３ごとに予測処理時間が算出される。予測処理時間のうち、エージェントＡ２の予測処理時間が最短であるため、ジョブＪ１−２の割当先候補をエージェントＡ２に絞り込む。
【０１２４】
また、図２０−４に示したように、マスターＭは通信レート管理テーブル５００を参照して、処理結果Ｒ１の転送元をエージェントＡ１とし、割当先候補Ａ２の転送時間を算出する。そして、予測処理時間と転送時間を比較すると、転送時間の方が短いため、エージェントＡ２が、ジョブＪ１−２の割当先に決定される。この場合、エージェントＡ２は処理結果Ｒ１の転送先にもなる。
【０１２５】
（Ｄ）において、マスターＭは、ジョブＪ１−１，Ｊ１−２の処理情報の受信にかかわらず、つぎのジョブＪ１−３を生成する。ジョブＪ１−３はジョブＪ１−１と親（ジョブＪ１）が共通するジョブであり、ジョブＪ１の処理結果Ｒ１を用いて処理される。このジョブＪ１−３の割当先をエージェントＡ３に決定して、エージェントＡ３にジョブＪ１−３を投入する。
【０１２６】
図２０−６は、図１９−２（Ｄ）におけるジョブＪ１−３の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−６では、エージェントＡ１，Ａ２がジョブＪ１−１，Ｊ１−２の処理中であるため、割当先候補から外れる。また、図２０−６においても、図２０−５と同様、ジョブＪ１−３の処理時間、ジョブＪ１−３と親が共通するジョブの処理時間、ジョブＪ１−３とサイズが同等のジョブの処理時間のいずれも登録されていないため、上記式（２）により、エージェントＡ３の予測処理時間が算出される。ここでは、エージェントＡ３の予測処理時間しかないため、ジョブＪ１−３の割当先候補はエージェントＡ３となる。
【０１２７】
図２０−７は、ジョブＪ１−２，Ｊ１−３の処理情報の登録後のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−７に示した状態では、ジョブＪ１−１はまだ処理中である。
【０１２８】
（Ｅ）において、マスターＭは、ジョブＪ１−１の処理情報の受信にかかわらず、つぎのジョブＪ１−４を生成する。ジョブＪ１−４はジョブＪ１−１と親（ジョブＪ１）が共通するジョブであり、ジョブＪ１の処理結果Ｒ１を用いて処理される。このジョブＪ１−４の割当先をエージェントＡ３に決定して、エージェントＡ３にジョブＪ１−４を投入する。
【０１２９】
図２０−８は、図１９−２（Ｅ）におけるジョブＪ１−４の割当先候補の絞込み時のジョブ管理テーブル６００の記憶内容を示す説明図である。図２０−８では、エージェントＡ１がジョブＪ１−１の処理中であるため、割当先候補から外れる。また、図２０−８においては、ジョブＪ１−３と親が共通するジョブＪ１−２，Ｊ１−３の処理時間が登録されているため、上記式（１）により、エージェントＡ２，Ａ３の予測処理時間が算出される。予測処理時間のうち、エージェントＡ３の予測処理時間が最短であるため、ジョブＪ１−４の割当先候補をエージェントＡ３に絞り込む。
【０１３０】
図２０−９は、図１９−２（Ｄ）におけるジョブＪ１−４の割当先時のジョブ管理テーブル６００の記憶内容を示す説明図である。このあと、すべてのジョブの処理が完了した場合、（Ｆ）において、各割当先エージェントＡ１〜Ａ３に保持されている処理結果Ｒ１，Ｒ１−１〜Ｒ１−４の取得要求をマスターＭから受けることにより、各割当先エージェントＡ１〜Ａ３は、処理結果Ｒ１，Ｒ１−１〜Ｒ１−４をマスターＭに返す。
【０１３１】
以上説明したように、本実施の形態（実施例含む）によれば、エージェントによるジョブの処理結果をマスターＭを経由せずに直接他のエージェントに転送するため、マスターＭの管理下にあるエージェント間でのジョブの処理結果の転送時間の短縮化を図ることができる。
【０１３２】
また、割当先の決定に際し、エージェントごとのジョブの予測処理時間をジョブの投入間に算出することにより、処理効率のよいエージェントに投入前のジョブを割り当てることができる。これにより、ジョブ全体の処理時間の短縮化を図ることができる。また、同一のジョブや類似のジョブの処理時間を参照することで、予測処理時間を簡単かつ高精度に予測することができる。
【０１３３】
また、割当先の決定に際し、エージェント間の通信レートを参照して処理結果の転送時間を算出するため、転送時間が短くなるエージェントをジョブの割当先に決定することができ、処理結果の転送時間の短縮化を図ることができる。
【０１３４】
また、予測処理時間が転送時間に満たないジョブ群をクラスタ化することにより、そのジョブ群の処理に用いられる処理結果を保持するエージェントに一括投入することで、処理結果の転送回数を削減することができ、ジョブ処理の効率化とエージェントの負荷低減を図ることができ、ジョブ全体の処理時間の短縮化を図ることができる。
【０１３５】
このように、上述した実施の形態のグリッドコンピューティングシステム１００では、一連のジョブの処理時間の短縮化を図ることができ、マスターＭとエージェント群との間のネットワーク１１０のトラフィックの低減化を図ることができる。
【０１３６】
なお、本実施の形態で説明した分散処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワーク１１０を介して配布することが可能な媒体であってもよい。
【０１３７】
また、本実施の形態で説明した分散処理装置は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した分散処理装置の機能８０１〜８０８，９０１〜９０４をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、分散処理装置を製造することができる。
【０１３８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３９】
（付記１）エージェント群にアクセス可能なマスターサーバーを、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出手段、
前記第１のジョブの処理結果を用いて処理される第２のジョブを生成する生成手段、
前記検出手段によって完了が検出された場合、前記生成手段によって生成された第２のジョブの割当先のエージェントを前記エージェント群の中から決定する決定手段、
前記エージェント群と通信する通信手段、
前記通信手段を制御して、前記決定手段によって決定されたエージェントに対し、前記第２のジョブの処理要求を送信するとともに、前記第１のジョブの割当先のエージェントに対し、当該エージェントから前記第２のジョブの割当先のエージェントへの前記処理結果の転送要求を送信する制御手段、
として機能させることを特徴とする分散処理プログラム。
【０１４０】
（付記２）前記マスターサーバーを、
前記エージェント群の中から選ばれた前記第２のジョブの割当先候補ごとに、前記第２のジョブの予測処理時間を算出する算出手段として機能させ、
前記決定手段は、
前記算出手段によって算出された前記各割当先候補の予測処理時間に基づいて、前記割当先候補の中から前記第２のジョブの割当先のエージェントを決定することを特徴とする付記１に記載の分散処理プログラム。
【０１４１】
（付記３）前記算出手段は、
さらに、異なるパラメータで処理された前記第２のジョブの処理時間に基づいて、前記第２のジョブの予測処理時間を算出することを特徴とする付記２に記載の分散処理プログラム。
【０１４２】
（付記４）前記算出手段は、
さらに、前記第２のジョブの類似ジョブの処理時間に基づいて、前記第２のジョブの予測処理時間を算出することを特徴とする付記２に記載の分散処理プログラム。
【０１４３】
（付記５）前記類似ジョブは、前記各割当先候補において前記処理結果を用いて前記第２のジョブよりも先に処理されたジョブであることを特徴とする付記４に記載の分散処理プログラム。
【０１４４】
（付記６）前記類似ジョブは、前記各割当先候補において前記第２のジョブよりも先に処理された前記第２のジョブと同等のデータサイズのジョブであることを特徴とする付記４に記載の分散処理プログラム。
【０１４５】
（付記７）前記マスターサーバーを、
前記第１のジョブの割当先のエージェントと前記第２のジョブの割当先候補との間の通信レートとを取得する取得手段として機能させ、
前記算出手段は、
前記処理結果のデータサイズと、前記取得手段によって取得された通信レートとに基づいて、前記第１のジョブの割当先のエージェントから前記割当先候補への前記処理結果の転送時間を算出し、
前記決定手段は、
さらに、前記予測処理時間と前記算出手段によって算出された転送時間とを比較することにより、前記割当先候補の中から前記第２のジョブの割当先のエージェントを決定することを特徴とする付記２〜６のいずれか一つに記載の分散処理プログラム。
【０１４６】
（付記８）前記決定手段は、
前記転送時間が前記予測処理時間よりも短い割当先候補を、前記第２のジョブの割当先のエージェントに決定することを特徴とする付記７に記載の分散処理プログラム。
【０１４７】
（付記９）前記マスターサーバーを、
前記転送時間が前記予測処理時間以上である場合、前記処理結果を用いて処理される第３のジョブを順次生成することにより、前記第２のジョブと前記第３のジョブとをクラスタ化するクラスタ化手段として機能させ、
前記決定手段は、
前記クラスタ化手段によってクラスタ化されたクラスタの割当先のエージェントを、前記第１のジョブの割当先のエージェントに決定し、
前記制御手段は、
前記通信手段を制御して、前記第１のジョブの割当先のエージェントに対し、前記クラスタの処理要求を送信することを特徴とする付記８に記載の分散処理プログラム。
【０１４８】
（付記１０）前記算出手段は、
前記第３のジョブが生成される都度、前記割当先候補の処理能力に基づいて、前記第３のジョブの予測処理時間を算出し、
前記クラスタ化手段は、
前記算出手段によって算出された前記第３のジョブの予測処理時間が前記転送時間よりも短い場合、前記第３のジョブを前記クラスタに追加することを特徴とする付記９に記載の分散処理プログラム。
【０１４９】
（付記１１）前記クラスタ化手段は、
前記クラスタを構成するジョブの予測処理時間の合計が前記転送時間を超えるまで、順次生成されてくる前記第３のジョブを追加することを特徴とする付記９または１０に記載の分散処理プログラム。
【０１５０】
（付記１２）前記検出手段は、
すべてのジョブの処理が完了したことを検出し、
前記制御手段は、
前記通信手段を制御して、前記検出手段によってすべてのジョブの処理が完了したことが検出された場合、前記各ジョブが割り当てられたエージェントに対し、前記ジョブの処理結果の取得要求を送信するとともに、当該取得要求に応じて送信されてくる前記各ジョブの処理結果を受信することを特徴とする付記１〜１１のいずれか一つに記載の分散処理プログラム。
【０１５１】
（付記１３）マスターサーバーにアクセス可能なエージェントを、
前記マスターサーバーによって割り当てられた第１のジョブの処理を実行する実行手段、
前記実行手段による実行によって得られた前記第１のジョブの処理結果の転送要求を前記マスターサーバーから受信する受信手段、
前記受信手段によって受信された転送要求から前記処理結果を用いて処理される第２のジョブの割当先のエージェントを特定する特定手段、
前記特定手段によって特定されたエージェントに前記処理結果を送信する送信手段、
として機能させることを特徴とする分散処理プログラム。
【０１５２】
（付記１４）エージェント群に分散処理させる分散処理装置であって、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出手段と、
前記検出手段によって完了が検出された場合、前記第１のジョブの処理結果を用いて処理される第２のジョブを生成する生成手段と、
前記生成手段によって生成された第２のジョブの割当先のエージェントを前記エージェント群の中から決定する決定手段と、
前記エージェント群と通信する通信手段と、
前記通信手段を制御して、前記決定手段によって決定されたエージェントに対し、前記第２のジョブの処理要求を送信するとともに、前記第１のジョブの割当先のエージェントに対し、当該エージェントから前記第２のジョブの割当先のエージェントへの前記処理結果の転送要求を送信する制御手段と、
を備えることを特徴とする分散処理装置。
【０１５３】
（付記１５）マスターサーバーによって割り当てられた第１のジョブの処理を実行する実行手段と、
前記実行手段による実行によって得られた前記第１のジョブの処理結果の転送要求を前記マスターサーバーから受信する受信手段と、
前記受信手段によって受信された転送要求から前記処理結果を用いて処理される第２のジョブの割当先のエージェントを特定する特定手段と、
前記特定手段によって特定されたエージェントに前記処理結果を送信する送信手段と、
を備えることを特徴とする分散処理装置。
【０１５４】
（付記１６）エージェント群に分散処理させる分散処理方法であって、
第１のジョブの割当先のエージェントにより前記第１のジョブの処理が完了したことを検出する検出工程と、
前記検出工程によって完了が検出された場合、前記第１のジョブの処理結果を用いて処理される第２のジョブを生成する生成工程と、
前記生成工程によって生成された第２のジョブの割当先のエージェントを前記エージェント群の中から決定する決定工程と、
前記決定工程によって決定されたエージェントに対し、前記第２のジョブの処理要求を送信するとともに、前記第１のジョブの割当先のエージェントに対し、当該エージェントから前記第２のジョブの割当先のエージェントへの前記処理結果の転送要求を送信する送信工程と、
を含んだことを特徴とする分散処理方法。
【０１５５】
（付記１７）マスターサーバーによって割り当てられた第１のジョブの処理を実行する実行工程と、
前記実行工程による実行によって得られた前記第１のジョブの処理結果の転送要求を前記マスターサーバーから受信する受信工程と、
前記受信工程によって受信された転送要求から前記処理結果を用いて処理される第２のジョブの割当先のエージェントを特定する特定工程と、
前記特定工程によって特定されたエージェントに前記処理結果を送信する送信工程と、
を含んだことを特徴とする分散処理方法。
【産業上の利用可能性】
【０１５６】
以上のように、分散処理プログラム、分散処理装置、分散処理システム、および分散処理方法は、ネットワークを用いたグリッドコンピューティングに有用であり、たとえば、ＤＮＡの解析、車両の衝突解析などに適している。
【符号の説明】
【０１５７】
１００  グリッドコンピューティングシステム
１１０  ネットワーク
５００  通信レート管理テーブル
６００  ジョブ管理テーブル
７００  エージェント管理テーブル
８０１  検出部
８０２  生成部
８０３  決定部
８０４  通信部
８０５  制御部
８０６  算出部
８０７  取得部
８０８  クラスタ化処理部
９０１  実行部
９０２  受信部
９０３  特定部
９０４  送信部
【図１】
2012256380.tif 000003
【図２】
2012256380.tif 000004
【図３】
2012256380.tif 000005
【図４】
2012256380.tif 000006
【図５】
2012256380.tif 000007
【図６】
2012256380.tif 000008
【図７】
2012256380.tif 000009
【図８】
2012256380.tif 000010
【図９】
2012256380.tif 000011
【図１０】
2012256380.tif 000012
【図１１】
2012256380.tif 000013
【図１２】
2012256380.tif 000014
【図１３】
2012256380.tif 000015
【図１４】
2012256380.tif 000016
【図１５】
2012256380.tif 000017
【図１６】
2012256380.tif 000018
【図１７】
2012256380.tif 000019
【図１８】
2012256380.tif 000020
【図１９−１】
2012256380.tif 000021
【図１９−２】
2012256380.tif 000022
【図２０−１】
2012256380.tif 000023
【図２０−２】
2012256380.tif 000024
【図２０−３】
2012256380.tif 000025
【図２０−４】
2012256380.tif 000026
【図２０−５】
2012256380.tif 000027
【図２０−６】
2012256380.tif 000028
【図２０−７】
2012256380.tif 000029
【図２０−８】
2012256380.tif 000030
【図２０−９】
2012256380.tif 000031