(57)【要約】  利便性の高いデータ処理技術を提供する。  仲介サーバ１００は、計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバから、プロジェクトに関する情報を取得してプロジェクトデータベース１４２に格納するプロジェクト情報取得部１２１と、端末へプロジェクトに関する情報を提示し、端末が参加を希望するプロジェクトのプロジェクトサーバに端末がアクセスするための情報を端末へ送信するプロジェクト情報送信部１２５と、取得した情報を用いてプロジェクトサーバへアクセスした端末が、プロジェクトサーバから与えられたタスクを実行した旨を示す通知を受信し、実行状況を端末データベース１４４に格納する実行状況管理部１２９と、を備える。
2008096390.tif 000002
【特許請求の範囲】
【請求項１】
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバから、前記プロジェクトに関する情報を取得してプロジェクトデータベースに格納するプロジェクト情報取得部と、
前記端末へ前記プロジェクトに関する情報を提示し、前記端末が参加を希望するプロジェクトのプロジェクトサーバに前記端末がアクセスするための情報を前記端末へ送信するプロジェクト情報送信部と、
前記情報を用いて前記プロジェクトサーバへアクセスした端末が、前記プロジェクトサーバから与えられたタスクを実行した旨を示す通知を受信し、実行状況を端末データベースに格納する実行状況管理部と、
を備えることを特徴とする仲介サーバ。
【請求項２】
前記端末から、参加を希望するプロジェクトに関する条件を取得し、前記プロジェクトデータベースを参照して、前記条件に合致するプロジェクトを選択するプロジェクト選択部を更に備えることを特徴とする請求項１に記載の仲介サーバ。
【請求項３】
前記プロジェクトサーバから前記タスクの実行要求を取得するタスク実行要求取得部と、
前記端末から前記端末に関する情報を取得する端末情報取得部と、
実行を要求されたタスクの情報と、前記端末に関する情報に基づいて、実行を要求されたタスクを端末に分配する分配部と、
を更に備えることを特徴とする請求項１又は２に記載の仲介サーバ。
【請求項４】
前記分配部は、同種の処理回路又は記憶装置を有する端末をグループとして管理することを特徴とする請求項３に記載の仲介サーバ。
【請求項５】
前記タスクの実行に要する時間或いは処理回路又は記憶装置の量を前記端末に送信するタスク情報送信部を更に備えることを特徴とする請求項３又は４に記載の仲介サーバ。
【請求項６】
前記端末から、前記タスクの実行に要した時間或いは処理回路又は記憶装置の量を取得し、それらに基づいて前記端末のユーザに前記タスクの実行の対価を付与する対価付与部を更に備えることを特徴とする請求項１から５のいずれかに記載の仲介サーバ。
【請求項７】
前記分配部によるタスクの分配の状況を前記プロジェクトサーバに通知する分配状況通知部を更に備えることを特徴とする請求項３から６のいずれかに記載の仲介サーバ。
【請求項８】
前記実行状況管理部が取得した前記端末による実行状況の統計情報を前記プロジェクトサーバに通知する統計情報通知部を更に備えることを特徴とする請求項１から７のいずれかに記載の仲介サーバ。
【請求項９】
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバから、前記プロジェクトに関する情報を取得してプロジェクトデータベースに格納するステップと、
前記端末へ前記プロジェクトに関する情報を提示し、前記端末が参加を希望するプロジェクトのプロジェクトサーバに前記端末がアクセスするための情報を前記端末へ送信するステップと、
前記情報を用いて前記プロジェクトサーバへアクセスした端末が、前記プロジェクトサーバから与えられたタスクを実行した旨を示す通知を受信し、実行状況を端末データベースに格納するステップと、
を備えることを特徴とする分散処理方法。
【請求項１０】
コンピュータを、
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバから、前記プロジェクトに関する情報を取得してプロジェクトデータベースに格納する手段、
前記端末へ前記プロジェクトに関する情報を提示し、前記端末が参加を希望するプロジェクトのプロジェクトサーバに前記端末がアクセスするための情報を前記端末へ送信する手段、
前記情報を用いて前記プロジェクトサーバへアクセスした端末が、前記プロジェクトサーバから与えられたタスクを実行した旨を示す通知を受信し、実行状況を端末データベースに格納する手段、
として機能させることを特徴とするプログラム。
【請求項１１】
コンピュータを、
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバから、前記プロジェクトに関する情報を取得してプロジェクトデータベースに格納する手段、
前記端末へ前記プロジェクトに関する情報を提示し、前記端末が参加を希望するプロジェクトのプロジェクトサーバに前記端末がアクセスするための情報を前記端末へ送信する手段、
前記情報を用いて前記プロジェクトサーバへアクセスした端末が、前記プロジェクトサーバから与えられたタスクを実行した旨を示す通知を受信し、実行状況を端末データベースに格納する手段、
として機能させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバと前記複数の端末との間を仲介する仲介サーバから、参加を希望するプロジェクトを管理するプロジェクトサーバにアクセスするための情報を取得するプロジェクト情報取得部と、
前記情報を用いて前記プロジェクトサーバにアクセスし、前記タスクを取得するタスク取得部と、
前記タスクを実行するタスク実行部と、
前記タスクの実行結果を前記プロジェクトサーバに送信する実行結果送信部と、
前記タスクを実行した旨を前記仲介サーバへ通知する実行状況通知部と、
を備えることを特徴とする端末。
【請求項１３】
前記タスク実行部は、管理部と複数の処理部とを含み、
前記管理部の管理のもと、前記複数の処理部の少なくとも一部が前記タスクを実行することを特徴とする請求項１２に記載の端末。
【請求項１４】
前記タスクは、前記処理部で処理されるプログラムとして設計されたことを特徴とする請求項１３に記載の端末。
【請求項１５】
前記管理部は、前記複数の処理部のうち使用されていない処理部を選択して前記タスクを実行させることを特徴とする請求項１３又は１４に記載の端末。
【請求項１６】
前記タスクの実行を完了すべき期限を前記仲介サーバ又は前記プロジェクトサーバから取得するタスク情報取得部を更に備え、
前記管理部は、前記期限と前記複数の処理部の使用状況に基づいて前記タスクを実行させる処理部を選択することを特徴とする請求項１３から１５のいずれかに記載の端末。
【請求項１７】
前記タスクの実行に使用すべき処理回路の量の指定を取得するタスク情報取得部を更に備え、
前記管理部は、指定された量の処理部に前記タスクを実行させることを特徴とする請求項１３から１６のいずれかに記載の端末。
【請求項１８】
前記タスク実行部は、前記処理部が前記タスクの実行を中断するときに途中結果を保存し、前記タスクの実行を再開するときに保存していた途中結果を読み出すことを特徴とする請求項１２から１７のいずれかに記載の端末。
【請求項１９】
前記タスク取得部は、前記プロジェクトサーバにより暗号化された前記タスクの実行プログラムを取得し、
前記タスク実行部は、暗号化された実行プログラムを復号する復号部を含むことを特徴とする請求項１２から１８のいずれかに記載の端末。
【請求項２０】
前記タスク実行部は、前記タスクの実行結果を署名する署名部を含み、
前記実行結果送信部は、署名された実行結果を前記プロジェクトサーバに送信することを特徴とする請求項１２から１９のいずれかに記載の端末。
【請求項２１】
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバと前記複数の端末との間を仲介する仲介サーバから、参加を希望するプロジェクトを管理するプロジェクトサーバにアクセスするための情報を取得するステップと、
前記情報を用いて前記プロジェクトサーバにアクセスし、前記タスクを取得するステップと、
前記タスクを実行するステップと、
前記タスクの実行結果を前記プロジェクトサーバに送信するステップと、
前記タスクを実行した旨を前記仲介サーバへ通知するステップと、
を備えることを特徴とする分散処理方法。
【請求項２２】
コンピュータを、
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバと前記複数の端末との間を仲介する仲介サーバから、参加を希望するプロジェクトを管理するプロジェクトサーバにアクセスするための情報を取得する手段、
前記情報を用いて前記プロジェクトサーバにアクセスし、前記タスクを取得する手段、
前記タスクを実行する手段、
前記タスクの実行結果を前記プロジェクトサーバに送信する手段、
前記タスクを実行した旨を前記仲介サーバへ通知する手段、
として機能させることを特徴とするプログラム。
【請求項２３】
コンピュータを、
計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバと前記複数の端末との間を仲介する仲介サーバから、参加を希望するプロジェクトを管理するプロジェクトサーバにアクセスするための情報を取得する手段、
前記情報を用いて前記プロジェクトサーバにアクセスし、前記タスクを取得する手段、
前記タスクを実行する手段、
前記タスクの実行結果を前記プロジェクトサーバに送信する手段、
前記タスクを実行した旨を前記仲介サーバへ通知する手段、
として機能させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理技術に関し、とくに、プロジェクトを管理するサーバとプロジェクトに含まれるタスクを分散して処理する複数の端末との間を仲介する仲介サーバ、端末、及び分散処理方法に関する。
【背景技術】
【０００２】
ネットワークを介して複数のコンピュータを結ぶことで仮想的に高性能コンピュータを構築する分散処理技術が知られている。従来は、遺伝子の解析やタンパク質の構造解析など、大規模な計算を必要とするプロジェクトは、非常に高価で大型のスーパーコンピュータを開発して処理させるしか方法がなかったが、分散処理システムを構築することにより、空いているリソースを有効に活用し、大規模な計算処理を非常に安価に実行することが可能となっている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、現状では、グリッドコンピューティングの趣旨に賛同して自身のコンピュータのリソースを提供しているユーザはごく一部に限られ、グリッドコンピューティングの存在すら認識していないユーザが大多数である。近年、ネットワークのインフラが整備され、コンピュータの普及率が飛躍的に増大したことで、大規模なグリッドコンピューティングを実現する準備が整っているにもかかわらず、実際には、ほとんどのリソースが有効に利用されていない。【０００４】
本発明はこうした状況に鑑みてなされたものであり、その目的は、リソースを有効に利用することが可能な分散処理技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様は、仲介サーバに関する。この仲介サーバは、計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバから、前記プロジェクトに関する情報を取得してプロジェクトデータベースに格納するプロジェクト情報取得部と、前記端末へ前記プロジェクトに関する情報を提示し、前記端末が参加を希望するプロジェクトのプロジェクトサーバに前記端末がアクセスするための情報を前記端末へ送信するプロジェクト情報送信部と、前記情報を用いて前記プロジェクトサーバへアクセスした端末が、前記プロジェクトサーバから与えられたタスクを実行した旨を示す通知を受信し、実行状況を端末データベースに格納する実行状況管理部と、を備えることを特徴とする。【０００６】
本発明の別の態様は、端末に関する。この端末は、計算処理を複数のタスクに分割して複数の端末へ処理させるプロジェクトを管理するプロジェクトサーバと前記複数の端末との間を仲介する仲介サーバから前記プロジェクトに関する情報の提示を受け、参加を希望するプロジェクトを管理するプロジェクトサーバにアクセスするための情報を取得するプロジェクト情報取得部と、前記情報を用いて前記プロジェクトサーバにアクセスし、前記タスクを取得するタスク取得部と、前記タスクを実行するタスク実行部と、前記タスクの実行結果を前記プロジェクトサーバに送信する実行結果送信部と、前記タスクを実行した旨を前記仲介サーバへ通知する実行状況通知部と、を備えることを特徴とする。【０００７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、リソースを有効に利用することが可能な分散処理技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態に係る分散処理システムの構成を示す図である。
【図２】分散処理システムにおける処理の流れを概略的に示すシーケンス図である。
【図３】実施の形態に係る仲介サーバの構成を示す図である。
【図４】プロジェクトデータベースの内部データの例を示す図である。
【図５】端末データベースの内部データの例を示す図である。
【図６】履歴データベースの内部データの例を示す図である。
【図７】実施の形態に係る端末の構成を示す図である。
【図８】端末のハードウェア構成を示す図である。
【符号の説明】
【００１０】
１０  分散処理システム、１２  インターネット、１４  プロジェクトサーバ、２０  インターネット、２４  入出力ユニット、２６  プロセッサ、２８  ローカルメモリ、３０  処理ユニット、３２  プロセッサ、３４  ローカルメモリ、１００  仲介サーバ、１２１  プロジェクト情報取得部、１２２  タスク実行要求取得部、１２３  端末情報取得部、１２４  プロジェクト選択部、１２５  プロジェクト情報送信部、１２６  タスク分配部、１２７  タスク情報送信部、１２８  分配状況通知部、１２９  実行状況管理部、１３０  対価付与部、１３１  統計情報通知部、１４２  プロジェクトデータベース、１４４  端末データベース、１４６  履歴データベース、２００  端末 検索 、２２１  端末情報送信部、２２２  プロジェクト情報取得部、２２３  タスク情報取得部、２２４  タスク取得部、２２６  タスク実行部、２２７  実行状況通知部、２２８  実行結果送信部、２２９  復号部、２３０  署名部。
【発明を実施するための最良の形態】
【００１１】
図１は、実施の形態に係る分散処理システム１０の構成を示す。分散処理システム１０は、ある目的をもって大規模な計算を実行するプロジェクトを管理するプロジェクトサーバ１４と、プロジェクトに含まれる計算を分散して処理する複数の端末２００と、プロジェクトサーバ１４と端末２００との間を仲介する仲介サーバ１００とを備える。これらの装置は、ネットワークの一例であるインターネット１２を介して接続されている。【００１２】
プロジェクトに含まれる計算を複数の端末２００で分散して処理できるように、端末２００のプロセッサ単位で実行可能なプログラムと、プログラムが使用するデータや動作パラメータなどを格納したデータファイルが用意される。以降、これらをタスクと呼ぶ。後述するように、端末２００が複数のプロセッサを含む場合、端末２００に複数のタスクが割り当てられてもよい。この場合、複数のタスクをタスクセットと呼ぶ。仲介サーバ１００は、プロジェクトサーバ１４が実行を要求するタスクを、端末２００に効率的に分配するための支援を行う。【００１３】
図２は、分散処理システム１０における処理の流れを概略的に示すシーケンス図である。処理の詳細は後述するとして、ここではまず概略的な流れを説明する。プロジェクトサーバ１４は、プロジェクトに関する情報を仲介サーバ１００へ送信する（Ｓ１０）。仲介サーバ１００は、プロジェクトサーバ１４から受信したプロジェクトに関する情報をプロジェクトデータベースに登録する（Ｓ１２）。プロジェクトサーバ１４は、さらに、端末２００に実行を要求するタスクに関する情報を仲介サーバ１００へ送信する（Ｓ１４）。仲介サーバ１００は、プロジェクトサーバ１４から受信した実行要求情報をプロジェクトデータベースに登録する（Ｓ１６）。【００１４】
端末２００は、端末２００に関する情報を仲介サーバ１００へ送信する（Ｓ１８）。端末２００に関する情報は、例えば、端末２００に搭載されているプロセッサの種別、クロック周波数、数、稼働率、メモリの容量、残量、その時点で端末２００が実行可能なタスクの量、端末２００のユーザが参加を希望するプロジェクトの条件、などを含んでもよい。仲介サーバ１００は、端末２００から受信した端末に関する情報に基づいて、端末２００に紹介するプロジェクトの候補を選択し（Ｓ２０）、端末２００へ送信する（Ｓ２２）。端末２００のユーザが、提示された候補の中から参加を希望するプロジェクトを選択し（Ｓ２３）、仲介サーバ１００へ通知すると（Ｓ２４）、仲介サーバ１００は、端末２００に分配するタスクの量を決定し（Ｓ２５）、プロジェクトサーバ１４にアクセスするための情報と、実行すべきタスクに関する情報を端末２００へ送信する（Ｓ２６）。プロジェクトサーバ１４にアクセスするための情報は、プロジェクトサーバ１４のＵＲＬ、プロジェクトＩＤなどであってもよい。仲介サーバ１００は、プロジェクトサーバ１４へ、端末２００にタスクを分配した旨を通知する（Ｓ２７）。【００１５】
端末２００は、仲介サーバ１００から受信した情報をもとに、プロジェクトサーバ１４へアクセスし、実行すべきタスクのダウンロードを要求する（Ｓ２８）。プロジェクトサーバ１４は、端末２００に実行させるタスクを選択し、暗号化して端末２００へ送信する（Ｓ２９）。端末２００は、プロジェクトサーバ１４から取得したタスクを復号して実行する（Ｓ３０）。端末２００に実行させるタスクのうち、プログラムは既に端末２００がプロジェクトサーバ１４から入手しているものと同一であって、データやパラメータなどが異なる場合は、プロジェクトサーバ１４は、プログラムを端末２００に送信せず、データやパラメータのみを送信してもよい。端末２００は、タスクの実行を完了すると、実行結果に署名を付してプロジェクトサーバ１４へ送信する（Ｓ３２）とともに、仲介サーバ１００へ実行を完了した旨を通知する（Ｓ３４）。【００１６】
仲介サーバ１００は、端末２００によるタスクの実行状況を端末データベースに登録する（Ｓ３６）。仲介サーバ１００は、端末２００が実行したタスクの量に応じて、端末２００のユーザへ対価を付与する（Ｓ３８）。仲介サーバ１００は、プロジェクトサーバ１４におけるプロジェクトの実行計画の参考のため、端末２００へのタスクの分配状況や端末２００におけるタスクの実行状況などの統計情報をプロジェクトサーバ１４へ通知する（Ｓ４０）。【００１７】
このように、仲介サーバ１００が、プロジェクトサーバ１４と端末２００との間を仲介することで、端末２００の空いているリソースを効率良く利用してプロジェクトを推進させることができる。また、仲介サーバ１００が端末２００へプロジェクトに関する情報を紹介するので、端末２００のユーザにプロジェクトに関する情報を広く告知することができ、プロジェクトへの参加を促進することができる。本実施の形態の仲介サーバ１００は、タスクや実行結果などのデータの送受信は仲介しないので、トラフィックの増大や輻輳を抑えることができる。【００１８】
図３は、実施の形態に係る仲介サーバ１００の構成を示す。仲介サーバ１００は、通信部１１０、制御部１２０、及び記憶装置１４０を備える。通信部１１０は、ネットワークを介した他の装置との間の通信を制御する。制御部１２０は、プロジェクト情報取得部１２１、タスク実行要求取得部１２２、端末情報取得部１２３、プロジェクト選択部１２４、プロジェクト情報送信部１２５、タスク分配部１２６、タスク情報送信部１２７、分配状況通知部１２８、実行状況管理部１２９、対価付与部１３０、及び統計情報通知部１３１を含む。記憶装置１４０は、プロジェクトデータベース１４２、端末データベース１４４、及び履歴データベース１４６を格納する。【００１９】
これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。【００２０】
プロジェクトデータベース１４２は、プロジェクトサーバ１４により管理されるプロジェクトに関する情報を格納する。図４は、プロジェクトデータベース１４２の内部データの例を示す。プロジェクトデータベース１４２には、プロジェクトＩＤ欄１５０、プロジェクト名欄１５１、プロジェクトサーバＵＲＬ欄１５２、プロジェクト内容欄１５３、要求日時欄１５４、期限欄１５５、プロセッサ欄１５６、メモリ欄１５７、要求タスク量欄１５８、分配済タスク量欄１５９、実行済タスク量欄１６０が設けられている。【００２１】
プロジェクトＩＤ欄１５０は、プロジェクトサーバ１４により管理されるプロジェクトのＩＤを格納する。プロジェクト名欄１５１は、プロジェクトの名称を格納する。プロジェクトサーバＵＲＬ欄１５２は、端末２００がプロジェクトサーバ１４にアクセスする際に使用するプロジェクトサーバ１４のＵＲＬを格納する。プロジェクト内容欄１５３は、プロジェクトの内容に関する情報を格納する。要求日時欄１５４は、プロジェクトサーバ１４が仲介サーバ１００にタスクの実行要求を送信した日時を格納する。期限欄１５５は、プロジェクトサーバ１４が仲介サーバ１００に実行を要求したタスクを完了すべき期限を格納する。プロセッサ欄１５６は、プロジェクトに含まれるタスクを実行する端末２００に要求されるプロセッサの条件を格納する。メモリ欄１５７は、端末２００のメモリに関する条件を格納する。要求タスク量欄１５８は、プロジェクトサーバ１４が仲介サーバ１００に要求したタスクの量を格納する。分配済タスク量欄１５９は、プロジェクトサーバ１４が仲介サーバ１００に要求したタスクのうち、仲介サーバ１００が端末２００へ分配したタスクの量を格納する。実行済タスク量欄１６０は、仲介サーバ１００が端末２００へ分配したタスクのうち、端末２００が実行を完了したタスクの量を格納する。タスクの量は、プログラムコードの量やファイルサイズなどで示されてもよいし、実行に要する時間で示されてもよい。【００２２】
端末データベース１４４は、プロジェクトを分散して処理する端末２００に関する情報を格納する。図５は、端末データベース１４４の内部データの例を示す。端末データベース１４４には、端末ＩＤ欄１６５、ユーザＩＤ欄１６６、プロセッサ欄１６７、メモリ欄１６８、条件欄１８５、分配中プロジェクトＩＤ欄１６９、分配日時欄１７０、期限欄１７１、分配中タスク量欄１７２、実行状況欄１７３、総分配量欄１７４、総実行量欄１７５、及び対価欄１７６が設けられている。【００２３】
端末ＩＤ欄１６５は、端末２００のＩＤを格納する。ユーザＩＤ欄１６６は、端末２００のユーザのＩＤを格納する。プロセッサ欄１６７は、端末２００に搭載されているプロセッサの種別やクロック周波数などの情報を格納する。メモリ欄１６８は、端末２００に搭載されているメモリの容量などの情報を格納する。条件欄１８５は、端末２００のユーザが参加を希望するプロジェクトの条件を格納する。分配中プロジェクトＩＤ欄１６９は、端末２００に現在分配されているタスクのプロジェクトＩＤを格納する。分配日時欄１７０は、端末２００にタスクが分配された日時を格納する。期限欄１７１は、端末２００に分配されているタスクの期限を格納する。分配中タスク量欄１７２は、端末２００に分配されているタスクの量を格納する。実行状況欄１７３は、端末２００に分配したタスクの実行状況に関する情報を格納する。実行状況に関する情報は、例えば、既に完了したタスクの量などであってもよい。総分配量欄１７４は、端末２００に分配したタスクの総量を格納する。総実行量欄１７５は、端末２００が実行したタスクの総量を格納する。対価欄１７６は、タスクの実行に対して端末２００のユーザに付与される対価を格納する。【００２４】
履歴データベース１４６は、端末２００にタスクを分配した履歴に関する情報を格納する。図６は、履歴データベース１４６の内部データの例を示す。履歴データベース１４６には、履歴ＩＤ欄１７７、端末ＩＤ欄１７８、ユーザＩＤ欄１７９、プロジェクトＩＤ欄１８０、分配日時欄１８１、期限欄１８２、完了日時欄１８３、及びタスク量欄１８４が設けられている。履歴ＩＤ欄１７７は、履歴情報のＩＤを格納する。端末ＩＤ欄１７８は、タスクが分配された端末２００のＩＤを格納する。ユーザＩＤ欄１７９は、端末２００のユーザのＩＤを格納する。プロジェクトＩＤ欄１８０は、端末２００に分配されたタスクのプロジェクトＩＤを格納する。分配日時欄１８１は、端末２００にタスクが分配された日時を格納する。期限欄１８２は、端末２００に分配されたタスクの期限を格納する。完了日時欄１８３は、端末２００が分配されたタスクを完了した日時を格納する。タスク量欄１８４は、端末２００が実行したタスクの量を格納する。【００２５】
プロジェクト情報取得部１２１は、プロジェクトサーバ１４からインターネット２０を介してプロジェクトに関する情報を取得する。プロジェクトに関する情報は、プロジェクトの名称、ＵＲＬ、プロジェクトの目的、内容などを説明するための文章、画像、動画像などを含んでもよい。プロジェクト情報取得部１２１は、プロジェクトサーバ１４からプロジェクトに関する情報を受信すると、受信した情報をプロジェクトデータベース１４２に登録する。【００２６】
タスク実行要求取得部１２２は、プロジェクトサーバ１４からインターネット２０を介してタスクの実行要求を取得する。このとき、タスク実行要求取得部１２２は、実行すべきタスクの量、期限、実行に必要なプロセッサやメモリなどに関する条件などの情報を取得して、プロジェクトデータベース１４２に登録する。【００２７】
端末情報取得部１２３は、端末２００からインターネット２０を介して端末２００に関する情報を取得する。端末２００に関する情報は、端末２００のユーザＩＤ、搭載されているプロセッサやメモリなどに関する情報を含んでもよい。端末情報取得部４３は、端末２００から端末２００に関する情報を受信すると、受信した情報を端末データベース１４４に登録する。【００２８】
端末情報取得部１２３は、端末２００がプロジェクトに参加してタスクを実行しようとするときに、端末２００のユーザが参加を希望するプロジェクトの条件と、端末２００のリソースに関する情報を受け付ける。端末２００のリソースに関する情報は、プロセッサの稼働率、メモリの空き容量などを含んでもよい。端末２００のユーザがプロジェクトに参加しようと考えたときに仲介サーバ１００にアクセスするようにしてもよいし、端末２００に、リソースに空きができてタスクを実行する余地ができたときに自動的に仲介サーバ１００にアクセスする構成を設けてもよいし、端末２００に、所定のタイミングで自動的にリソースに関する情報を仲介サーバ１００に送信する構成を設けてもよい。【００２９】
プロジェクト選択部１２４は、端末情報取得部４３が取得した端末２００に関する情報に基づいて、プロジェクトデータベース１４２を参照し、端末２００に紹介するプロジェクトの候補を選択する。プロジェクト選択部１２４は、参加を希望するプロジェクトの条件に合致するプロジェクトを、プロジェクトデータベース１４２のプロジェクト内容欄１５３を参照して選択する。プロジェクト選択部１２４は、選択されたプロジェクトのプロセッサ欄１５６及びメモリ欄１５７から、タスクの実行に要求されるプロセッサ及びメモリの条件を読み出し、端末データベース１４４のプロセッサ欄１６７及びメモリ欄１６８、端末２００から取得した情報を参照して、端末２００が条件を満たしているかを確認する。【００３０】
プロジェクト情報送信部１２５は、プロジェクト選択部１２４により選択されたプロジェクトの候補に関する情報を端末２００に提示し、いずれのプロジェクトに参加するかを端末２００に問い合わせる。プロジェクト情報送信部１２５は、端末２００が参加を希望するプロジェクトを受け付けると、プロジェクトサーバ１４に端末２００がアクセスするための情報、例えばプロジェクトサーバ１４のＵＲＬやプロジェクトＩＤなどを端末２００へ送信する。【００３１】
タスク分配部１２６は、端末２００から参加するプロジェクトの決定を受け付けると、端末２００に分配するタスクの量を決定する。タスク分配部１２６は、まず、プロジェクトデータベース１４２を参照して、プロジェクトサーバ１４から要求されているタスクの残量を確認する。つづいて、タスク分配部１２６は、端末２００から取得した端末２００の空きリソースに関する情報に基づいて、タスクの残量を超えない範囲で、端末２００に分配するタスクの量を決定する。タスク分配部１２６は、端末データベース１４４の総分配量欄１７４及び総実行量欄１７５を参照して実行率を確認し、実行率が低い端末２００に対するタスクの分配量を抑えてもよい。また、タスク分配部１２６は、端末２００に既に分配しているタスクの実行が完了していない場合は、その端末２００へのタスクの分配を中止してもよい。タスク分配部１２６は、端末２００に対するタスクの分配量を決定すると、プロジェクトデータベース１４２の分配済タスク量欄１５９に、分配したタスクの量を加算するとともに、端末データベース１４４の分配中プロジェクトＩＤ欄１６９、分配日時欄１７０、期限欄１７１、及び分配中タスク量欄１７２に情報を登録する。【００３２】
タスク分配部１２６は、同種の処理回路又は記憶装置を有する端末をグループとして管理してもよい。これにより、タスクの実行に必要なリソースの量や、タスクの実行に要する時間などを容易かつ精確に見積もることができ、タスクを効率良く分配することができる。後述するように、仲介サーバ１００がタスクを分配する端末２００が全て同じハードウェア構成を有している場合は、更に、タスクの実行に要する時間等を容易かつ精確に見積もることができ、的確にタスクを分配することができる。【００３３】
タスク情報送信部１２７は、端末２００に、端末２００が実行すべきタスクの量を送信する。タスクの量は、タスクの実行に要する時間或いは処理回路又は記憶装置の量として表現されてもよい。分配状況通知部１２８は、端末２００にタスクを分配した旨をプロジェクトサーバ１４に通知する。このとき、端末２００に分配したタスクの量を通知してもよい。仲介サーバ１００がタスクの分配を行わず、プロジェクトサーバ１４に任せる場合は、タスク分配部１２６及びタスク情報送信部１２７は設けられなくてもよい。【００３４】
実行状況管理部１２９は、プロジェクト情報送信部１２５が端末２００に送信した情報を用いてプロジェクトサーバ１４へアクセスした端末２００からタスクの実行状況を受信し、端末データベース１４４の実行状況欄１７３に登録する。実行状況管理部１２９は、端末データベース１４４を参照して、期限が近づいた未完了のタスクの実行状況を確認し、端末２００に実行状況を確認するとともに、必要であれば他の端末２００へタスクを再分配する。実行状況管理部１２９は、端末２００から分配したタスクを他の端末２００へ再分配する旨の要求を受け付けると、その端末２００に分配した未完了のタスクを他の端末２００へ再分配する。実行状況管理部１２９は、端末２００からタスクの実行を完了した旨の通知を受けると、プロジェクトデータベース１４２の実行済タスク量欄１６０に、完了したタスクの量を加算し、端末データベース１４４の分配中プロジェクトＩＤ欄１６９、分配日時欄１７０、期限欄１７１、分配中タスク量欄１７２、及び実行状況欄１７３を初期化し、総実行量欄１７５に完了したタスクの量を加算する。また、履歴データベース１６４に新たなレコードを追加して、完了したタスクの情報を登録する。【００３５】
対価付与部１３０は、端末２００から実行したタスクの量を取得し、タスクの量に基づいて端末２００のユーザにタスクの実行の対価を付与する。タスクの量は、タスクの実行に要した時間或いは処理回路又は記憶装置の量として表現されてもよい。対価付与部１３０は、端末２００が実行したタスクの量に基づいてユーザに付与する対価を算出し、端末データベース１４４の対価欄１７６に加算する。【００３６】
統計情報通知部１３１は、実行状況管理部１２９が取得し、履歴データベース１４６に格納された、端末２００による実行状況の統計情報をプロジェクトサーバ１４に通知する。これにより、プロジェクトの管理者は、タスクの分配状況や実行状況を把握することができ、プロジェクトの計画を立案する際などに参考にすることができる。【００３７】
図７は、実施の形態に係る端末２００の構成を示す。端末２００は、通信部２１０及び制御部２２０を備える。通信部２１０は、ネットワークを介した他の装置との間の通信を制御する。制御部２２０は、端末情報送信部２２１、プロジェクト情報取得部２２２、タスク情報取得部２２３、タスク取得部２２４、タスク実行部２２６、実行状況通知部２２７、及び実行結果送信部２２８を含む。これらの構成も、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。【００３８】
端末情報送信部２２１は、端末２００に関する情報を仲介サーバ１００に送信する。前述したように、端末２００に関する情報は、端末２００のユーザＩＤ、搭載されているプロセッサやメモリなどに関する情報、プロセッサの稼働率、メモリの空き容量などを含んでもよい。また、端末情報送信部２２１は、端末２００のユーザがプロジェクトに参加しようとするときに仲介サーバ１００に端末情報を送信してもよいし、自端末２００のリソースに空きができてタスクを実行する余地ができたときに自動的に端末情報を送信してもよいし、所定のタイミングで自動的に端末情報を送信してもよい。【００３９】
プロジェクト情報取得部２２２は、仲介サーバ１００からプロジェクトの候補の提示を受け、ユーザが候補の中から選択したプロジェクトのプロジェクトサーバ１４にアクセスするための情報を取得する。【００４０】
タスク情報取得部２２３は、仲介サーバ１００から分配されたタスクに関する情報を取得する。タスクに関する情報は、タスクの実行を完了すべき期限、タスクの量、タスクの実行に使用すべき処理回路の量などを含んでもよい。【００４１】
タスク取得部２２４は、プロジェクト情報取得部２２２が取得した情報を用いてプロジェクトサーバ１４にアクセスし、暗号化されたタスクを取得する。プロジェクト情報取得部２２２が、仲介サーバ１００からプロジェクトＩＤを取得する場合は、タスク取得部２２４は、取得したプロジェクトＩＤに対応するプロジェクトに参加するためのプログラムを実行することにより、プロジェクトサーバ１４にアクセスしてもよい。このプログラムは、図示しないダウンロードサーバからダウンロードしてもよい。この場合、ダウンロードしたプログラムにプロジェクトサーバ１４のＵＲＬが含まれている。プロジェクト情報取得部２２２が、仲介サーバ１００からプロジェクトサーバ１４のＵＲＬを取得する場合は、タスク取得部２２４は、取得したＵＲＬにアクセスしてタスクを取得する。タスクは、公開鍵暗号方式により暗号化されてもよいし、共通鍵暗号方式により暗号化されてもよく、要はタスクを実行する端末２００以外の第三者が復号できないようになっていればよい。タスクは、暗号化以外の方法で不正な複製が制限されてもよい。【００４２】
タスク実行部２２６は、タスク取得部２２４が取得したタスクを実行する。タスク実行部２２６は、復号部２２９及び署名部２３０を含む。復号部２２９は、タスク取得部２２４が取得した暗号化されたタスクを復号する。タスクが端末２００の公開鍵で暗号化されている場合は、復号部２２９は、端末２００に秘密裡に保持されている秘密鍵で復号する。タスクが共通鍵で暗号化されている場合は、復号部２２９は、プロジェクトサーバ１４から秘密裡に入手した共通鍵で復号する。これにより、第三者がタスクを収集して実行し、プロジェクトに関する情報を得ようとするのを防ぎ、プロジェクト管理者の利益を守ることができる。【００４３】
署名部２３０は、タスクの実行結果に端末２００の署名を付す。署名部２３０は、例えば、端末２００の秘密鍵で実行結果を暗号化することにより、実行結果に電子署名を付してもよい。これにより、タスクが分配された端末２００による実行結果であることを証明することができるので、第三者が端末２００を装って不正な実行結果をプロジェクトサーバ１４に送るのを防ぎ、プロジェクト管理者の利益を守ることができる。【００４４】
実行状況通知部２２７は、タスクの実行状況を仲介サーバ１００に通知する。実行状況通知部２２７は、所定の時間間隔で定期的にタスクの実行状況を仲介サーバ１００に通知してもよいし、タスクが所定の割合まで完了したときに実行状況を仲介サーバ１００に通知してもよい。実行状況通知部２２７は、タスクの残量、自端末のプロセッサやメモリの使用状況などに基づいて、タスクの実行を完了すべき期限までにタスクを完了させることができないと判断したときは、仲介サーバ１００にタスクの再分配を依頼してもよい。実行状況通知部２２７は、タスクの実行が完了すると、実行が完了した旨を仲介サーバ１００へ通知する。実行結果送信部２２８は、タスクの実行結果をプロジェクトサーバ１４に送信する。【００４５】
図８は、端末２００のハードウェア構成を示す。端末２００は、マイクロプロセッサユニット（ＭＰＵ）２２、グラフィクス処理ユニット（ＧＰＵ）４０、メインメモリ４２、補助記憶装置（ＨＤＤ）４４、ネットワーク制御部４６を備え、それぞれがメインバス３８を介して接続される。ネットワーク制御部４６は、ネットワークを介して他の装置との間でデータを送受信する。【００４６】
ＭＰＵ２２は、非対称型のマルチプロセッサユニットであり、管理部の一例である１つの入出力ユニット２４と、処理部の一例である複数の処理ユニット３０を有する。入出力ユニット２４は、他の構成との間でデータの入出力を行うユニットであり、プロセッサ２６とローカルメモリ２８を含む。ローカルメモリ２８は、例えばキャッシュメモリである。各処理ユニット３０は、タスクを独立して実行するユニットであり、それぞれプロセッサ３２とローカルメモリ３４を含む。メインメモリ４２から読み出されたプログラム、データ、動作パラメータなどがローカルメモリ３４に書き込まれ、プロセッサ３２により実行される。【００４７】
入出力ユニット２４は、メインバス３８を介して、ＧＰＵ４０、メインメモリ４２、ＨＤＤ４４、ネットワーク制御部４６などの端末２００内の他の構成との間でデータを送受信する。また、ネットワーク制御部４６を介して他の装置との間でデータを送受信する。本実施の形態では、処理ユニット３０は、他の処理ユニット３０、入出力ユニット２４、ＧＰＵ４０、及びメインメモリ４２との間でデータの送受信を行うことはできるが、ネットワーク制御部４６を介して他の装置との間で直接データの送受信を行うことはできない。処理ユニット３０は、入出力ユニット２４を介して、他の装置との間でデータを送受信する。【００４８】
別の実施の形態においては、処理ユニット３０も他の装置との間で直接データの送受信が行えるように構成してもよい。また、ＭＰＵ２２は、対称型のマルチプロセッサユニットであってもよく、その場合、いずれかの処理ユニット３０が入出力ユニット２４の機能を果たしてもよいし、全ての処理ユニット３０が他の装置との間で直接データの送受信を行ってもよい。【００４９】
端末２００に分配されたタスクは、入出力ユニット２４において実行されるプロセス管理機能による管理のもと、複数の処理ユニット３０の少なくとも一部により実行される。入出力ユニット２４は、複数の処理ユニット３０のうち使用されていない処理ユニット３０を選択してタスクを実行させる。【００５０】
入出力ユニット２４は、タスク情報取得部２２３が仲介サーバ１００から指定された量の処理ユニット３０にタスクを実行させる。例えば、仲介サーバ１００から３つの処理ユニット３０を使用するよう指定され、タスク取得部２２４が、それぞれが１つの処理ユニット３０で処理されることを想定して設計された３つのタスクを含むタスクセットを取得した場合、入出力ユニット２４は、３つの処理ユニット３０に対してそれぞれのタスクの実行を指示する。入出力ユニット２４は、タスク情報取得部２２３が仲介サーバ１００から取得したタスクの期限と、複数の処理ユニット３０の使用状況に基づいて、タスクを実行させる処理ユニット３０を選択してもよい。例えば、３つのタスクを含むタスクセットを取得した場合に、期限までに時間的余裕があるときは、１つの処理ユニット３０に３つのタスクを直列的に実行させることにより、同時に使用する処理ユニット３０の数を減らして空きをつくるようにしてもよいし、期限までに時間的余裕がないときは、３つの処理ユニット３０に３つのタスクを並列的に実行させてもよい。【００５１】
プロセス管理機能は、処理ユニット３０のそれぞれにより実行されてもよい。この場合、タスクセットに含まれるタスクは、メインメモリ４２の一部などを利用して設けられたタスクキューに積まれ、各処理ユニット３０のプロセス管理機能は、その処理ユニット３０が他のタスクを実行可能な状態になると、実行待ちのタスクをタスクキューから取得して実行する。このように、タスクは処理ユニット３０により実行されるので、プロジェクトサーバ１４から端末２００へ与えられるタスクは、処理ユニット３０で処理されるプログラムとして設計されていることが好ましい。【００５２】
タスク実行部２２６は、処理ユニット３０がタスクの実行を中断するときに途中結果を保存し、タスクの実行を再開するときに保存していた途中結果を読み出す機能を有してもよい。例えば、処理ユニット３０が、優先度の高い別の処理を実行する必要が生じた場合などであっても、タスクの実行を一時中断し、後で再開できるようにしておくことで、それまでの計算を無駄にすることなくタスクを切り換えることができ、柔軟かつ有効に処理ユニット３０のリソースを活用することができる。【００５３】
このように、仲介サーバ１００がプロジェクトを端末２００へ周知することにより、端末２００がプロジェクトに参加する機会を増加させることができ、プロジェクトの実行を促進することができる。【００５４】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【産業上の利用可能性】
【００５５】
本発明は、分散処理システムに利用することができる。
【図１】
2008096390.tif 000003
【図２】
2008096390.tif 000004
【図３】
2008096390.tif 000005
【図４】
2008096390.tif 000006
【図５】
2008096390.tif 000007
【図６】
2008096390.tif 000008
【図７】
2008096390.tif 000009
【図８】
2008096390.tif 000010
【国際調査報告】
2008096390.tif 000011
2008096390.tif 000012
2008096390.tif 000013
2008096390.tif 000014