(57)【要約】【課題】利便性の高い分散処理技術を提供する。【解決手段】端末２０は、データを処理するタスクに関する情報を取得するタスク情報取得部５５と、タスクが必要とするデータの入手先が、タスクを実行する装置にネットワークを介して接続されたタスクを実行する装置とは別の装置である場合に、入手先の装置がタスクを実行する装置へタスクが必要とするデータを送信するための送信タスクを生成して入手先の装置へ送信する通信タスク生成部５６と、を備える。【選択図】図１０
2008242983.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するタスクに関する情報を取得するタスク情報取得部と、
前記タスクが必要とするデータの入手先が、前記タスクを実行する装置にネットワークを介して接続された前記タスクを実行する装置とは別の装置である場合に、前記入手先の装置が前記タスクを実行する装置へ前記タスクが必要とするデータを送信するための送信タスクを生成して前記入手先の装置へ送信する通信タスク生成部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記通信タスク生成部は、前記タスクを実行する装置が、前記入手先の装置から送信されたデータを受信して前記タスクの入力データを生成するための受信タスクを生成することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記入手先の装置が複数ある場合、前記通信タスク生成部は、それぞれの前記入手先の装置について前記送信タスクを生成して送信し、
前記受信タスクは、複数の前記入手先の装置から送信されたデータを受信して前記入力データを生成することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記送信タスクは、前記入手先の装置が保持するデータの中から必要なデータを選択して送信することを特徴とする請求項１から３のいずれかに記載のデータ処理装置。
【請求項５】
前記受信タスクは、前記入手先の装置から受信したデータから生成した前記入力データを前記タスクへ入力するタイミングを調整することを特徴とする請求項２から４のいずれかに記載のデータ処理装置。
【請求項６】
前記受信タスクは、前記入手先の装置から受信したデータを、前記タスクの入力インタフェースに応じたデータ型に変換して、前記入力データを生成することを特徴とする請求項２から５のいずれかに記載のデータ処理装置。
【請求項７】
前記送信タスクには、前記入手先の装置又は前記タスクを実行する装置の処理能力又は前記タスクが必要とするデータの内容に応じて、予め通信パラメータが設定されることを特徴とする請求項１から６のいずれかに記載のデータ処理装置。
【請求項８】
前記タスクを取得するタスク取得部と、
前記タスクを実行するタスク実行部と、
前記受信タスクを実行し、前記入手先の装置から受信したデータから生成した前記入力データを、前記タスク実行部へ転送する受信タスク実行部と、
を更に備えることを特徴とする請求項２から７のいずれかに記載のデータ処理装置。
【請求項９】
前記タスク実行部は、
前記タスクの入力データを格納する入力バッファと、
前記タスクの出力データを格納する出力バッファと、を含み、
前記受信タスク実行部は、前記入力データを前記入力バッファへ転送することを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
後続のタスクを実行する装置から、前記送信タスクを取得する送信タスク取得部と、
前記送信タスクを実行し、前記出力バッファに格納された出力データを前記後続のタスクを実行する装置へ送信する送信タスク実行部と、
を更に備えることを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
ネットワークを介して、複数の前記タスクを実行する装置から、それぞれの装置の処理能力に関する情報を取得する処理能力情報取得部と、
複数の前記タスクを実行する装置に処理させる複数のタスクを含むアプリケーションの情報を取得するアプリケーション情報取得部と、
前記処理能力情報取得部が取得したそれぞれの装置の処理能力に関する情報に基づいて、前記アプリケーションに含まれる複数のタスクをいずれの装置に処理させるかを決定するタスク分配部と、
前記タスク分配部により分配されたタスクを、前記ネットワークを介して前記複数のタスクを実行する装置へ送信するタスク送信部と、
を更に備えることを特徴とする請求項１から７のいずれかに記載のデータ処理装置。
【請求項１２】
前記アプリケーション情報取得部は、前記アプリケーションに含まれる複数のタスクの実行順序と、タスク間のデータの授受に関する情報を記述したファイルを読み込むことにより、前記アプリケーションの情報を取得することを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
前記ファイルは、マークアップ言語で記述されており、
前記アプリケーション情報取得部は、前記マークアップ言語で記述された文書をパースすることにより前記アプリケーションの情報を取得することを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
前記タスクは、単一の前記タスクを実行する装置の処理能力で処理可能に設計されたことを特徴とする請求項１１から１３のいずれかに記載のデータ処理装置。
【請求項１５】
複数のデータ処理装置と、
前記複数のデータ処理装置とネットワークを介して接続され、アプリケーションを前記複数のデータ処理装置に分散させて処理する際に、前記複数のデータ処理装置を管理する分散処理管理装置と、を備え、
前記分散処理管理装置は、
ネットワークを介して、前記複数のデータ処理装置から、それぞれのデータ処理装置の処理能力に関する情報を取得する処理能力情報取得部と、
前記データ処理装置に処理させる複数のタスクを含むアプリケーションの情報を取得するアプリケーション情報取得部と、
前記処理能力情報取得部が取得したそれぞれの処理システムの処理能力に関する情報に基づいて、前記アプリケーションに含まれる複数のタスクをいずれのデータ処理装置に処理させるかを決定するタスク分配部と、
前記タスク分配部により決定されたデータ処理装置へタスクを送信するタスク送信部と、
前記タスクが必要とする入力データの入手先に関する情報を前記データ処理装置へ通知するタスク情報通知部と、を備え、
前記データ処理装置は、
前記タスクを取得するタスク取得部と、
前記タスクを実行するタスク実行部と、
前記タスクが必要とするデータの入手先に関する情報を取得するタスク情報取得部と、
前記タスクが必要とするデータの入手先が、該データ処理装置にネットワークを介して接続された該データ処理装置とは別のデータ処理装置である場合に、前記入手先のデータ処理装置が該データ処理装置へ前記タスクが必要とするデータを送信するための送信タスクを生成して前記入手先のデータ処理装置へ送信する通信タスク生成部と、を備えることを特徴とする分散処理システム。
【請求項１６】
複数のデータ処理装置と、
前記複数のデータ処理装置とネットワークを介して接続され、アプリケーションを前記複数のデータ処理装置に分散させて処理する際に、前記複数のデータ処理装置を管理する分散処理管理装置と、を備え、
前記分散処理管理装置は、
ネットワークを介して、前記複数のデータ処理装置から、それぞれのデータ処理装置の処理能力に関する情報を取得する処理能力情報取得部と、
前記データ処理装置に処理させる複数のタスクを含むアプリケーションの情報を取得するアプリケーション情報取得部と、
前記処理能力情報取得部が取得したそれぞれの処理システムの処理能力に関する情報に基づいて、前記アプリケーションに含まれる複数のタスクをいずれのデータ処理装置に処理させるかを決定するタスク分配部と、
前記タスク分配部により決定されたデータ処理装置へタスクを送信するタスク送信部と、
１つのアプリケーションに含まれる複数のタスクを、複数のデータ処理装置に分散して配分したときに、タスクを実行するためのデータの授受がデータ処理装置間で必要である場合は、前記ネットワークを介してデータを授受するための通信タスクを生成し、データ処理装置へ送信されるタスクに付加する通信タスク生成部と、を備え、
前記データ処理装置は、
前記タスクを取得するタスク取得部と、
前記タスクに付加された通信タスクを実行する通信タスク実行部と、
前記タスクを実行するタスク実行部と、を備えることを特徴とする分散処理システム。
【請求項１７】
データを処理するタスクに関する情報を取得するステップと、
前記タスクが必要とするデータの入手先が、前記タスクを実行する装置にネットワークを介して接続された前記タスクを実行する装置とは別の装置である場合に、前記入手先の装置が前記タスクを実行する装置へ前記タスクが必要とするデータを送信するための送信タスクを生成して前記入手先の装置へ送信するステップと、
を備えることを特徴とするデータ処理方法。
【請求項１８】
データを処理するタスクに関する情報を取得する機能と、
前記タスクが必要とするデータの入手先が、前記タスクを実行する装置にネットワークを介して接続された前記タスクを実行する装置とは別の装置である場合に、前記入手先の装置が前記タスクを実行する装置へ前記タスクが必要とするデータを送信するための送信タスクを生成して前記入手先の装置へ送信する機能と、
をコンピュータに実現させることを特徴とするデータ処理プログラム。
【請求項１９】
データを処理するタスクに関する情報を取得する機能と、
前記タスクが必要とするデータの入手先が、前記タスクを実行する装置にネットワークを介して接続された前記タスクを実行する装置とは別の装置である場合に、前記入手先の装置が前記タスクを実行する装置へ前記タスクが必要とするデータを送信するための送信タスクを生成して前記入手先の装置へ送信する機能と、
をコンピュータに実現させることを特徴とするデータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理技術に関し、とくに、ネットワークで接続された複数のデータ処理装置に分散してタスクを処理させるデータ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラムに関する。
【背景技術】
【０００２】
多くのリソースを必要とする大規模な計算を、複数のプロセッサに分散して処理させることが可能な分散処理システムが知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、単一のプロセッサで処理されることを想定して設計されたアプリケーションを複数のモジュールに分割し、複数のプロセッサに分散して処理させることは、一般には容易ではない。また、予め複数のプロセッサに分散して処理させることを想定してアプリケーションを設計する場合は、データの授受などの問題から、どのモジュールをどのプロセッサに処理させるのかということまで考慮して設計する必要があり、柔軟性や汎用性に欠ける。
【０００４】
本発明はこうした状況に鑑みてなされたものであり、その目的は、より利便性の高い分散処理技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様は、データ処理装置に関する。このデータ処理装置は、データを処理するタスクに関する情報を取得するタスク情報取得部と、前記タスクが必要とするデータの入手先が、前記タスクを実行する装置にネットワークを介して接続された前記タスクを実行する装置とは別の装置である場合に、前記入手先の装置が前記タスクを実行する装置へ前記タスクが必要とするデータを送信するための送信タスクを生成して前記入手先の装置へ送信する通信タスク生成部と、を備えることを特徴とする。
【０００６】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００７】
本発明によれば、より利便性の高い分散処理技術を提供することができる。
【発明を実施するための最良の形態】
【０００８】
（第１の実施の形態）
図１は、第１の実施の形態に係る分散処理システム１０の構成を示す。分散処理システム１０は、分散処理管理装置８０と複数の端末２０を含む。これらの装置は、データ処理装置の一例であり、インターネットやＬＡＮなどのネットワーク１２により接続されている。分散処理管理装置８０は、アプリケーションを複数の端末２０に分散させて処理する際に、複数の端末２０間における処理の実行を管理する。
【０００９】
図２は、分散処理管理装置８０の構成を示す。分散処理管理装置８０は、通信部８２、制御部９０、リソースデータベース８４を備える。制御部９０は、処理能力情報取得部９１、アプリケーション情報取得部９２、タスク分配部９３、タスク送信部９５、実行状況管理部９６を含む。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００１０】
処理能力情報取得部９１は、ネットワーク１２を介して、複数の端末２０から、それぞれの端末２０の処理能力に関する情報を取得する。処理能力情報取得部９１は、それぞれの端末２０から、その端末２０に搭載されているプロセッサの種別、動作クロック周波数、メモリの容量などを取得する。また、処理能力情報取得部９１は、端末２０から、所定のタイミングで、その時点でのプロセッサの稼働率、メモリの使用量などの情報を取得する。端末２０が全て同じ構成を有している場合は、処理能力情報取得部９１は、プロセッサの稼働率として、タスクを実行中ではない、すなわち空いているプロセッサ３２の数を取得してもよい。処理能力情報取得部９１は、取得した情報をリソースデータベース８４に登録する。
【００１１】
図３は、リソースデータベース８４の内部データの例を示す。リソースデータベース８４には、端末ＩＤ欄１０２、プロセッサ周波数欄１０４、プロセッサ数欄１０６、メモリ欄１０８、プロセッサ稼働率欄１１０、メモリ使用率欄１１２、分配日時欄１１４、分配中タスクＩＤ欄１１６、分配中タスク量欄１１８、実行済タスク量欄１２０が設けられている。端末ＩＤ欄１０２は、端末２０のＩＤを格納する。プロセッサ周波数欄１０４は、端末２０に搭載されているプロセッサの動作周波数を格納する。プロセッサ数欄１０６は、端末２０に搭載されているプロセッサの数を格納する。メモリ欄１０８は、端末２０に搭載されているメモリの容量を格納する。プロセッサ稼働率欄１１０は、端末２０のプロセッサの稼働率を格納する。メモリ使用率欄１１２は、端末２０のメモリの使用率を格納する。分配日時欄１１４は、端末２０にタスクを分配した日時を格納する。分配中タスクＩＤ欄１１６は、端末２０に分配したタスクのＩＤを格納する。分配中タスク量欄１１８は、端末２０に分配したタスクの量を格納する。実行済タスク量欄１２０は、端末２０が既に実行したタスクの量を格納する。
【００１２】
アプリケーション情報取得部９２は、端末２０に処理させる複数のタスクを含むアプリケーションの情報を取得する。本実施の形態では、アプリケーション情報取得部９２は、アプリケーションに含まれる複数のタスクの実行順序と、タスク間のデータの授受に関する情報を記述したＸＭＬ文書を取得し、ＸＭＬ文書をパースすることによりアプリケーションに関する情報を取得する。
【００１３】
タスク分配部９３は、処理能力情報取得部９１が取得したそれぞれの端末２０の処理能力に関する情報に基づいて、アプリケーション情報取得部９２が取得したＸＭＬ文書に記述されたアプリケーションに含まれる複数のタスクをいずれの端末２０に処理させるかを決定する。例えば、第１のタスクが２つのプロセッサを必要とし、第２のタスクが３つのプロセッサを必要とする場合、その時点で、５つのプロセッサが使用可能な端末２０が存在すれば、全てのタスクを同じ端末２０に分配することができる。しかし、全てのタスクを実行可能な端末２０が存在しない場合は、タスク分配部９３は、複数の端末２０に分散してタスクを分配する。この場合、アプリケーション情報取得部９２とタスク分配部９３が、タスクの情報を取得するタスク情報取得部としての機能を担う。
【００１４】
通信タスク生成部９４は、複数のタスクを複数の端末２０に分配したときに、タスクを実行するためのデータの授受が端末２０間で必要である場合は、ネットワーク１２を介して端末２０間でデータを授受するための通信タスクを生成し、端末２０へ送信されるタスクに付加する。データを送信する側の端末２０に送信されるタスクには、タスクが出力した出力データを後続のタスクを実行する装置に送信する送信タスクが付加される。データを受信する側の端末２０に送信されるタスクには、タスクが必要とするデータの入手先の装置から受信したデータを、タスクの入力インタフェースに応じたデータ型に変換して、入力データを生成する受信タスクが付加される。これらの通信タスクには、タスクが必要とするデータの入手先、すなわち送信側の端末２０や、後続のタスクを実行する装置、すなわち受信側の端末２０の処理能力に応じて、予め通信パラメータが設定される。通信パラメータは、例えば、端末２０の通信速度、バッファの容量、端末２０を接続するネットワークの種別などに応じて設定されてもよい。また、通信パラメータは、タスクが必要とするデータの内容に応じて設定されてもよい。例えば、通信パラメータには、送信側の端末２０が送信すべきデータを選択するための情報や、受信側の端末２０が受信したデータの中からデータを選択、変換、又はマージして入力データを生成するための情報などが含まれてもよい。また、通信パラメータには、入力データを入力するタイミングに関する情報などが含まれてもよい。タスクが必要とするデータに関する情報は、アプリケーション情報取得部９２が取得するＸＭＬ文書に記述されていてもよい。
【００１５】
タスク送信部９５は、タスク分配部９３により分配されたタスクを、ネットワーク１２を介して端末２０へ送信する。実行状況管理部９６は、タスクを分配した各端末２０からタスクの実行状況を取得し、リソースデータベース８４に記録して、各端末２０におけるタスクの実行状況を管理する。必要であれば、タスク送信部９５は、タスク分配部９３にタスクの再分配を指示する。
【００１６】
図４は、アプリケーションに関する情報を記述したＸＭＬ文書の例を示す。図４に示した例では、アプリケーションに含まれる２つのタスク「senderInstance_A」及び「receiverInstance_A」の情報が記述されている。第２のタスク「receiverInstance_A」に関する情報が記述された部分において、<stream>要素１３０に、第２のタスクに入力されるデータが宣言されている。ここでは、<channelIn1>要素に、<channelOut1>要素に記述されたデータを第２のタスクに入力すべきことが宣言されている。<channelOut1>要素には、データの入手先が、第１のタスク「senderInstance_A」から出力されたデータであることが記述されている。すなわち、第１のタスクから出力されたデータを、第２のデータに入力すべきであることが分かる。
【００１７】
図５は、図４に示したＸＭＬ文書に記述されたタスク間の関係を示す。以下、通信タスク生成部９４により生成される通信タスクと区別するために、アプリケーションを構成するタスクを「コアタスク」と呼ぶ。まず、第１のコアタスク１４２が実行され、第１のコアタスク１４２から出力されたデータが第２のコアタスク１５４に入力され、第２のコアタスク１５４が実行される。この例では、第１のコアタスク１４２から出力されるデータを、第２のコアタスク１５４へ入力する必要があるので、タスク分配部９３が、第１のコアタスク１４２と第２のコアタスク１５４を異なる端末２０へ分配する場合は、通信タスク生成部９４は、第１のコアタスク１４２に、第１のコアタスク１４２から出力されるデータを第２のコアタスク１５４が分配される端末２０へ送信する送信タスク１４４を付加する。また、第２のコアタスク１５４に、第１のコアタスク１４２が分配される端末２０から送信されるデータを受信して第２のコアタスク１５４の入力データを生成する受信タスク１５２を付加する。タスク送信部９５は、通信タスクが付加された第１のタスク１４０及び第２のタスク１５０を、分配されたそれぞれの端末２０へ送信する。
【００１８】
図６は、端末２０の構成を示す。端末２０は、通信部２１及び制御部５０を備える。制御部５０は、タスク取得部５１、タスク実行部５２、受信タスク実行部５３、及び送信タスク実行部５４を含む。これらの機能ブロックも、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
【００１９】
タスク取得部５１は、ネットワーク１２を介して、分散処理管理装置８０からタスクを取得する。タスク実行部５２は、取得したタスクを実行する。タスク実行部５２は、後述するように、端末２０に複数搭載されているプロセッサと、それぞれのプロセッサに設けられたローカルメモリとにより実現される。受信タスク実行部５３は、取得したタスクに受信タスクが付加されている場合、受信タスクを実行し、タスクが必要とするデータの入手先の装置から受信したデータから生成した入力データを、タスク実行部５２へ転送する。受信タスク実行部５３は、後述するように、ローカルメモリの入力バッファに入力データを転送する。送信タスク実行部５４は、取得したタスクに送信タスクが付加されている場合、送信タスクを実行し、ローカルメモリの出力バッファに格納された出力データの中から必要なデータを選択して後続のタスクを実行する装置へ送信する。
【００２０】
図７は、端末２０のハードウェア構成を示す。端末２０は、マイクロプロセッサユニット（ＭＰＵ）２２、グラフィクス処理ユニット（ＧＰＵ）４０、メインメモリ４２、補助記憶装置（ＨＤＤ）４４、ネットワーク制御部４６を備え、それぞれがメインバス３８を介して接続される。ネットワーク制御部４６は、ネットワーク１２を介して他の端末２０や分散処理管理装置８０などの装置との間でデータを送受信する。
【００２１】
ＭＰＵ２２は、非対称型のマルチプロセッサユニットであり、１つの入出力ユニット２４と、タスク実行部５２の一例である複数の処理ユニット３０を有する。入出力ユニット２４は、他の構成との間でデータの入出力を行うユニットであり、プロセッサ２６とローカルメモリ２８を含む。ローカルメモリ２８は、例えばキャッシュメモリである。各処理ユニット３０は、それぞれがアプリケーションに含まれるタスクを独立して実行するユニットであり、それぞれプロセッサ３２とローカルメモリ３４を含む。メインメモリ４２から読み出されたプログラム、データ、動作パラメータなどがローカルメモリ３４に書き込まれ、プロセッサ３２により実行される。
【００２２】
入出力ユニット２４は、メインバス３８を介して、ＧＰＵ４０、メインメモリ４２、ＨＤＤ４４、ネットワーク制御部４６などの端末２０内の他の構成との間でデータを送受信する。また、ネットワーク制御部４６を介して他の装置との間でデータを送受信する。本実施の形態では、処理ユニット３０は、他の処理ユニット３０、入出力ユニット２４、ＧＰＵ４０、及びメインメモリ４２との間でデータの送受信を行うことはできるが、ネットワーク制御部４６を介して他の装置との間で直接データの送受信を行うことはできない。処理ユニット３０は、入出力ユニット２４を介して、他の装置との間でデータを送受信する。
【００２３】
別の実施の形態においては、処理ユニット３０も他の装置との間で直接データの送受信が行えるように構成してもよい。また、ＭＰＵ２２は、対称型のマルチプロセッサユニットであってもよく、その場合、いずれかの処理ユニット３０が入出力ユニット２４の機能を果たしてもよいし、全ての処理ユニット３０が他の装置との間で直接データの送受信を行ってもよい。
【００２４】
端末２０に分配されたタスクは、入出力ユニット２４において実行されるプロセス管理機能による管理のもと、複数の処理ユニット３０の少なくとも一部により実行される。入出力ユニット２４は、複数の処理ユニット３０のうち使用されていない処理ユニット３０を選択してタスクを実行させる。
【００２５】
図８は、入出力ユニット２４の機能的な構成を示す。入出力ユニット２４は、インタフェース部６７、制御部６０、タスクキュー６８を含む。制御部６０は、ファイル入出力インタフェース６１、通信インタフェース６２、データベースインタフェース６３、メモリ入出力インタフェース６４、プロセス管理部６５、及び実行状況管理部６６を含む。
【００２６】
インタフェース部６７は、メインバス３８を介したデータの送受信を行う。ファイル入出力インタフェース６１は、例えばＨＤＤ４４に格納されたファイルの入出力を行う。通信インタフェース６２は、例えばネットワーク制御部４６を介した他の装置との間のデータの入出力を行う。データベースインタフェース６３は、例えばＨＤＤ４４に格納された、又はメインメモリ４２にロードされたデータベースとの間でデータの入出力を行う。メモリ入出力インタフェース６４は、例えばメインメモリ４２上のデータの入出力を行う。
【００２７】
プロセス管理部６５は、処理ユニット３０において実行されるプロセスを管理する。処理ユニット３０が実行すべきタスクは、タスクキュー６８に順次格納されている。処理ユニット３０のプロセッサ３２が、次のタスクを実行可能な状態になると、タスクキュー６８を参照して次のタスクが取得され、実行される。プロセス管理部６５は、それぞれの処理ユニット３０のプロセッサ３２がタスクを実行中であるか否かを管理し、分散処理管理装置８０へ通知する。
【００２８】
実行状況管理部６６は、処理ユニット３０のプロセッサ３２が、端末２０間に分散されたアプリケーションのタスクを実行しているときに、その実行状況を管理する。実行状況管理部６６は、例えば、処理ユニット３０が実行すべきタスクが過剰にタスクキュー６８に積まれ、分配されたアプリケーションのタスクをすぐには実行することができない状況にある場合、その旨を分散処理管理装置８０へ通知して、タスクを他の端末２０へ再分配するよう依頼する。
【００２９】
プロセス管理機能は、処理ユニット３０のそれぞれにより実行されてもよい。この場合、各処理ユニット３０のプロセス管理機能は、その処理ユニット３０が他のタスクを実行可能な状態になると、実行待ちのタスクをタスクキューから取得して実行する。このように、タスクは処理ユニット３０により実行されるので、端末２０へ与えられるタスクは、処理ユニット３０で処理されるプログラムとして設計されていることが好ましい。また、タスクは、単一の端末２０の処理能力で処理可能に設計されることが好ましい。
【００３０】
（第２の実施の形態）
第１の実施の形態では、分散処理管理装置８０がアプリケーションを構成するタスクを複数の端末２０に分配する際に、必要に応じて通信タスクを自動的に生成したが、第２の実施の形態では、タスクを分配された端末２０が通信タスクを生成する。
【００３１】
図９は、第２の実施の形態に係る分散処理管理装置８０の構成を示す。第２の実施の形態の分散処理管理装置８０は、図２に示した第１の実施の形態の分散処理管理装置８０の構成に比して、通信タスク生成部９４に代えてタスク情報通知部９７を備える。その他の構成及び動作は第１の実施の形態と同様である。
【００３２】
タスク情報通知部９７は、タスクを分配した端末２０に、タスクが必要とするデータの入手先の装置に関する情報を通知する。これにより、端末２０は、入手先の装置からデータを入手するための送信タスクを自ら生成して入手先の装置に送信することができる。タスク情報通知部９７は、タスクが必要とするデータの内容に関する情報を更に通知してもよい。例えば、タスクの入力データのデータ型、データ長、入力タイミングに関する条件などを通知してもよい。
【００３３】
図１０は、第２の実施の形態に係る端末２０の構成を示す。第２の実施の形態の端末２０は、図６に示した第１の実施の形態の端末２０の構成に比して、タスク情報取得部５５及び通信タスク生成部５６を更に備える。その他の構成及び動作は第１の実施の形態と同様である。
【００３４】
タスク情報取得部５５は、データを処理するタスクに関する情報を取得する。タスク情報取得部５５は、タスク取得部５１が取得するタスクが必要とするデータの入手先に関する情報を取得する。通信タスク生成部５６は、取得したタスクが必要とするデータの入手先が、自端末にネットワークを介して接続された別の端末である場合に、入手先の端末が自端末へ、タスクが必要とするデータを送信するための送信タスクを生成して入手先の端末へ送信する。また、通信タスク生成部５６は、入手先の端末からデータを受信してタスクの入力データを生成するための受信タスクを生成して受信タスク実行部５３へ送る。
【００３５】
図１１は、アプリケーションの例を示す。アプリケーション２００は、動画像から人の顔を検出して認証するアプリケーションであり、動画像をデコードするコアタスク１６２、デコードされた動画像の中から人の顔を検出するコアタスク１７４及び１８４、検出された顔の画像を認識するコアタスク１９４、認識された顔をデータベースと照合して認証するコアタスク１９６を含む。なお、顔を検出するタスクは、動画像の上半分から顔を検出するコアタスク１７４と動画像の下半分から顔を検出するコアタスク１８４に分割されている。
【００３６】
図１１の例では、アプリケーション２００に含まれる各タスクは、異なる複数の端末に分配されている。具体的には、コアタスク１６２は端末１６０に、コアタスク１７４は端末１７０に、コアタスク１８４は端末１８０に、コアタスク１９４及び１９６は端末１９０に、それぞれ分配される。
【００３７】
分散処理管理装置８０のタスク情報通知部９７は、コアタスク１７４が分配された端末１７０に、顔の検出に必要な動画像のデータが端末１６０から出力される旨を通知する。また、コアタスク１７４は動画像の上半分のみを処理すればよいので、コアタスク１６２から出力されるデータのうち、動画像の上半分のデータのみを取得すればよい旨を通知する。端末１７０の通信タスク生成部５６は、端末１６０で実行されるコアタスク１６２が出力したデータを端末１７０に送信する送信タスク１６４を生成して端末１６０に送信する。この送信タスク１６４には、タスク情報通知部９７から通知された情報に基づいて、コアタスク１６２が出力したデータの中から動画像の上半分のデータを選択する旨の通信パラメータが予め設定される。また、通信タスク生成部５６は、端末１６０からデータを受信してコアタスク１７４に入力する入力データを生成する受信タスク１７２を生成する。同様に、端末１８０の通信タスク生成部５６は、送信タスク１６６を生成して端末１６０に送信するとともに、受信タスク１８２を生成する。送信タスク１６４は、設定された通信パラメータにしたがって、コアタスク１６２の出力バッファから動画像の上半分のデータを選択して受信タスク１７２へ送信する。同様に、送信タスク１６６は、動画像の下半分のデータを選択して受信タスク１８２へ送信する。
【００３８】
コアタスク１９４は、コアタスク１７４を実行する端末１７０から出力されるデータと、コアタスク１８４を実行する端末１８０から出力されるデータの双方を必要とするので、それぞれの端末がデータを送信するための送信タスク１７６及び送信タスク１８６を生成して、それぞれの端末へ送信する。また、送信タスク１７６及び送信タスク１８６から受信したデータをマージして入力データを生成する受信タスク１９１及び受信タスク１９２を生成する。受信タスク１９１及び受信タスク１９２は、端末１７０及び１８０から受信したデータの中から必要なデータを選択して、コアタスク１９４の入力データを生成してもよい。また、受信タスク１９１及び受信タスク１９２は、端末１７０及び１８０から受信したデータから生成した入力データをコアタスク１９４へ入力するタイミングを調整してもよい。例えば、コアタスク１９４は、コアタスク１７４とコアタスク１８４の双方の結果を必要とするので、受信タスク１９１及び受信タスク１９２は、いずれか一方の出力データを受信しても、他方の出力データを受信するまで待機してもよい。なお、受信タスク１９１及び受信タスク１９２は、一つの受信タスクとしてまとめられてもよい。
【００３９】
コアタスク１９４とコアタスク１９６は、同一の端末１９０に分配されたので、これらのタスク間におけるデータの授受は、ネットワークを介した通信を必要としない。したがって、送信タスクと受信タスクは生成されない。この場合、通信タスク生成部５６は、タスク情報通知部９７から通知された情報に基づいて、コアタスク１９４が出力したデータの中からコアタスク１９６が必要とするデータを選択し、必要であれば適切なデータ型に変換したり、データの順序を並べ替えたり、他のコアタスクが出力したデータとマージしたりして、コアタスク１９６を実行する処理ユニット３０の入力バッファ３５に転送するためのＤＭＡコマンドを生成する。コアタスク１９４が実行されて出力データが出力バッファ３６に格納されると、通信タスク生成部５６により生成されたＤＭＡコマンドが、コアタスク１９４が実行された処理ユニット３０又はコアタスク１９６が実行される処理ユニット３０のＤＭＡコントローラ３７により実行され、コアタスク１９６の入力データが入力バッファ３５にセットされる。
【００４０】
図１２は、図１１に示したようにタスクが分配されたときに、コアタスク１９４の入力データが生成される様子を説明するための図である。端末１７０において、コアタスク１７４が実行されると、コアタスク１７４が実行された処理ユニット３０の出力バッファ３６に出力データが格納される。送信タスク１７６には、出力バッファ３６に格納されている出力データの中から、コアタスク１９４が必要とするデータを選択するための情報を含む通信パラメータが予め設定されているので、送信タスク１７６は、必要なデータを選択して送信データ１７８を生成し、コアタスク１９４が分配されている端末１９０へ送信する。同様に、送信タスク１８６は、出力バッファ３６に格納された出力データの中から、コアタスク１９４が必要とするデータを選択して送信データ１８８を生成し、端末１９０へ送信する。なお、コアタスク１７４又は１８４が出力した出力データは、出力バッファ３６からメインメモリ４２に転送されてもよい。この場合、送信タスク１７６又は１８６は、メインメモリ４２に格納されているデータの中から必要なデータを選択して送信データ１７８又は１８８を生成してもよい。
【００４１】
端末１９０において実行される受信タスク１９１及び１９２は、それぞれ、端末１７０、端末１８０から送信データ１７８、１８８を受信すると、コアタスク１９４の入力インタフェースに応じたデータ型に変換し、それらのデータをマージして、コアタスク１９４を実行する処理ユニット３０の入力バッファ３５に入力データ１９８を格納する。このとき、必要であれば、コアタスク１９４の入力データを入力バッファ３５へ転送するタイミングを調整する。例えば、入力バッファ３５が、全ての入力データを格納する容量を有していない場合は、コアタスク１９４の進行に応じて、必要ではなくなったデータを上書きする形で、後続の入力データを入力バッファ３５へ転送する。この場合、受信タスク１９１及び１９２は、受信した送信データ１７８及び１８８をいったんメインメモリ４２などに格納しておいてもよい。
【００４２】
図１３は、図１１に示したアプリケーションに含まれるタスクの別の分配例を示す。図１３に示した例では、コアタスク１７４、１８４、１９４、及び１９６が、同一の端末１９０に分配されている。この場合、コアタスク１７４及び１８４とコアタスク１９４との間のデータの授受に端末間通信を必要としないので、送信タスク１７６及び１８６、受信タスク１９１及び１９２は生成されない。
【００４３】
図１４は、図１３に示したようにタスクが分配されたときに、コアタスク１９４の入力データが生成される様子を説明するための図である。コアタスク１７４が実行される処理ユニット３０ａと、コアタスク１８４が実行される処理ユニット３０ｂと、コアタスク１９４が実行される処理ユニット３０ｃは、全て同じ端末１９０内にある。したがって、処理ユニット３０ｃは、コアタスク１８４の出力データが格納されている処理ユニット３０ａの出力バッファ３６ａと、コアタスク１９４の出力データが格納されている処理ユニット３０ｂの出力バッファ３６ｂに、直接アクセスしてデータを入手することが可能である。そのため、この場合は、送信タスクと受信タスクは生成されない。その代わりに、通信タスク生成部５６により、出力バッファ３６ａ及び３６ｂに格納されたデータの中から、コアタスク１９４が必要とするデータを選択して入力バッファ３５ｃに転送するＤＭＡコマンドのリストが生成される。ＤＭＡコントローラ３７ｃは、生成されたＤＭＡコマンドを実行して、入力バッファ３５ｃにコアタスク１９４の入力データ１９８を格納する。
【００４４】
このように、アプリケーションに複数の含まれるタスクが同じ端末２０に分配された場合であっても、異なる複数の端末２０に分配された場合であっても、データの入出力に必要な通信タスク又はＤＭＡコマンドを自動的に生成するので、適切にデータの授受が行われる。したがって、アプリケーションの設計者は、タスクが端末２０間にどのように分散されるのかを意識せずにアプリケーションを設計することができる。これにより、大規模なアプリケーションを容易に構築することが可能な環境を提供することができる。また、各タスクは入力データを入手して実行環境が整えば、他のタスクとは無関係に非同期的に実行することができるので、処理を効率化することができる。また、端末２０におけるプロセッサ３２の使用状況に応じて、適切にタスクが分配されるので、アプリケーションの設計者は、タスクをどのように分散させて処理させるかを意識せずにアプリケーションを設計することができる。
【００４５】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４６】
実施の形態では、分散処理管理装置８０から端末２０にタスクが分配される例について説明したが、これに限定されない。例えば、あるデータ処理装置が、複数のタスクを含むアプリケーションを実行しようとするときに、他の装置の空いているリソースを利用するために他の装置へタスクを分配する場合や、複数のタスクを分配されたデータ処理装置が、分配されたタスクの一部を他の装置へ再分配する場合にも、実施の形態で説明した技術を適用可能である。このような場合であっても、通信タスクを自動生成することにより、複数の装置へタスクを自由に分配することができ、分配された装置では、分配されたタスクを実行可能な環境が整った段階で非同期的にタスクを実行することができるので、分散処理の効率を飛躍的に向上させることができる。
【図面の簡単な説明】
【００４７】
【図１】第１の実施の形態に係る分散処理システムの構成を示す図である。
【図２】分散処理管理装置の構成を示す図である。
【図３】リソースデータベースの内部データの例を示す図である。
【図４】アプリケーションに関する情報を記述したＸＭＬ文書の例を示す図である。
【図５】図４に示したＸＭＬ文書に記述されたタスク間の関係を示す図である。
【図６】端末の構成を示す図である。
【図７】端末のハードウェア構成を示す図である。
【図８】入出力ユニットの機能的な構成を示す図である。
【図９】第２の実施の形態に係る分散処理管理装置の構成を示す図である。
【図１０】第２の実施の形態に係る端末の構成を示す図である。
【図１１】アプリケーションの例を示す図である。
【図１２】図１１に示したようにタスクが分配されたときに、コアタスクの入力データが生成される様子を説明するための図である。
【図１３】図１１に示したアプリケーションに含まれるタスクの別の分配例を示す図である。
【図１４】図１３に示したようにタスクが分配されたときに、コアタスクの入力データが生成される様子を説明するための図である。
【符号の説明】
【００４８】
１０  分散処理システム、１２  ネットワーク、２０  端末、２１  通信部、２２  ＭＰＵ、２４  入出力ユニット、２６  プロセッサ、２８  ローカルメモリ、３０  処理ユニット、３２  プロセッサ、３４  ローカルメモリ、４２  メインメモリ、４６  ネットワーク制御部、５０  制御部、５１  タスク取得部、５２  タスク実行部、５３  受信タスク実行部、５４  送信タスク実行部、５５  タスク情報取得部、５６  通信タスク生成部、６０  制御部、６５  プロセス管理部、６６  実行状況管理部、６８  タスクキュー、８０  分散処理管理装置、８４  リソースデータベース、９０  制御部、９１  処理能力情報取得部、９２  アプリケーション情報取得部、９３  タスク分配部、９４  通信タスク生成部、９５  タスク送信部、９６  実行状況管理部、９７  タスク情報通知部。
【図１】
2008242983.tif 000003
【図２】
2008242983.tif 000004
【図３】
2008242983.tif 000005
【図４】
2008242983.tif 000006
【図５】
2008242983.tif 000007
【図６】
2008242983.tif 000008
【図７】
2008242983.tif 000009
【図８】
2008242983.tif 000010
【図９】
2008242983.tif 000011
【図１０】
2008242983.tif 000012
【図１１】
2008242983.tif 000013
【図１２】
2008242983.tif 000014
【図１３】
2008242983.tif 000015
【図１４】
2008242983.tif 000016