(57)【要約】【課題】処理端末装置に稼働状況、処理能力等に応じて並列処理に係る処理を実行させ、並列処理の効率性及び高速性を向上させることができる並列処理システム等を提供する。【解決手段】マスタ２は、スレーブ７毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する。マスタ２は、ネットワーク９上の通信負荷を監視し、設定する。通信負荷が所定の基準以上になった場合、各スレーブ７に、増加させた処理粒度に従って、割付処理を割り付け実行させる。更に、通信負荷が所定の基準以上の場合、通信負荷が所定の基準まで下がるまで、割付処理の割り付けを一時的に停止する。また、マスタ２は、スレーブ７毎の処理履歴等を保持し、この処理履歴等を参照して、あるいは、事前に入力されたスレーブ７毎の処理能力に応じて、スレーブ７毎に処理能力を設定する。【選択図】　図２
2004062686.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理端末装置と、１又は複数のサーバと、がネットワークを介して接続され、前記サーバに入力された依頼処理を並列処理により処理する並列処理システムであって、
前記サーバは、
前記依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、前記処理端末装置に当該割付処理を割り付け送信し実行させる処理割付手段と、
前記処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する粒度制御手段と、
を具備し、
前記処理端末装置は、
前記サーバから送られた前記割付処理を実行する割付処理実行手段と、
前記割付処理の実行結果を前記サーバに送信する割付処理結果送信手段と、
を具備することを特徴とする並列処理システム。
【請求項２】
前記サーバは、さらに、
前記処理端末装置毎の処理の履歴を保持する保持手段と、
前記処理の履歴に基づいて前記処理能力を算出する処理能力算出手段と、
を具備することを特徴とする請求項１に記載の並列処理システム。
【請求項３】
前記サーバは、さらに、
前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記処理粒度を強制的に増加させる第１の処理制御手段を具備することを特徴とする請求項１または請求項２に記載の並列処理システム。
【請求項４】
前記サーバは、さらに、
前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記通信負荷が所定の基準まで下がるまで、前記処理端末装置への前記割付処理の割り付けを一時的に停止する第２の処理制御手段を具備することを特徴とする請求項１から請求項３のいずれかに記載の並列処理システム。
【請求項５】
前記サーバは、
前記処理端末装置に対して、ブロードキャスト通信により、前記並列処理への参加募集を行い、前記参加募集に対して参加応募している処理端末装置に前記割付処理を割り付け送信し実行させることを特徴とする請求項１から請求項４のいずれかに記載の並列処理システム。
【請求項６】
複数の処理端末装置にネットワークを介して接続され、入力された依頼処理を並列処理により処理する１又は複数のサーバであって、
前記依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、前記処理端末装置に当該割付処理を割り付け送信し実行させる処理割付手段と、
前記処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する粒度制御手段と、
を具備することを特徴とするサーバ。
【請求項７】
前記処理端末装置毎の処理の履歴を保持する保持手段と、
前記処理の履歴に基づいて前記処理能力を算出する処理能力算出手段と、
を具備することを特徴とする請求項６に記載のサーバ。
【請求項８】
前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記処理粒度を強制的に増加させる第１の処理制御手段を具備することを特徴とする請求項６または請求項７に記載のサーバ。
【請求項９】
前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記通信負荷が所定の基準まで下がるまで、前記処理端末装置への前記割付処理の割り付けを一時的に停止する第２の処理制御手段を具備することを特徴とする請求項６から請求項８のいずれかに記載のサーバ。
【請求項１０】
前記処理端末装置に対して、ブロードキャスト通信により、前記並列処理への参加募集を行い、前記参加募集に対して参加応募している処理端末装置に前記割付処理を割り付け送信し実行させることを特徴とする請求項６から請求項９のいずれかに記載のサーバ。
【請求項１１】
複数の処理端末装置にネットワークを介して接続され、入力された依頼処理を並列処理により処理する１又は複数のサーバが、実行する並列処理方法であって、
前記依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、前記処理端末装置に当該割付処理を割り付け送信し実行させる処理割付工程と、
前記処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する粒度制御工程と、
を具備することを特徴とする並列処理方法。
【請求項１２】
前記処理端末装置毎の処理の履歴を保持する保持工程と、
前記処理の履歴に基づいて前記処理能力を算出する処理能力算出工程と、
を具備することを特徴とする請求項１１に記載の並列処理方法。
【請求項１３】
前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記処理粒度を強制的に増加させる第１の処理制御工程を具備することを特徴とする請求項１１または請求項１２に記載の並列処理方法。
【請求項１４】
前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記通信負荷が所定の基準まで下がるまで、前記処理端末装置への前記割付処理の割り付けを一時的に停止する第２の処理制御工程を具備することを特徴とする請求項１１から請求項１３のいずれかに記載の並列処理方法。
【請求項１５】
前記処理端末装置に対して、ブロードキャスト通信により、前記並列処理への参加募集を行い、前記参加募集に対して参加応募している処理端末装置に前記割付処理を割り付け送信し実行させることを特徴とする請求項１１から請求項１４のいずれかに記載の並列処理方法。
【請求項１６】
コンピュータを請求項６から請求項１０のいずれかに記載のサーバとして機能させるプログラム。
【請求項１７】
コンピュータを請求項６から請求項１０のいずれかに記載のサーバとして機能させるプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１の処理を複数の処理端末装置に分散して処理する並列処理システム等に関する。より詳細には、処理端末装置に並列処理への参加を募集する並列処理システム等に関する。
【０００２】
【従来の技術】
従来、一般の並列処理システムは、並列処理専用の複数の処理端末装置を設け、これらの処理端末装置に並列処理を実行させるものである。また、一般ＯＡ用途に用いられているパーソナルコンピュータ等の端末装置の未使用時間等を利用するボランティア端末装置参加型の並列処理システム（例えば、バイオ計算等）が幾つか存在する。
【０００３】
【発明が解決しようとする課題】
しかしながら、このようなシステムでは、基本的に膨大な計算資源に対し、処理端末装置側から処理データを取りに行き、実行結果を返す仕組みであり、処理端末装置の状態、処理能力等とは無関係であり、指示した処理結果がいつ返って来るか分からないので、納期付きの処理実行はできないという問題点がある。また、決められた処理のみ実行可能で、外部からの並列処理実行依頼を容易に実行することはできないという問題点がある。
【０００４】
また、従来の並列処理システムでは、同一の処理体系、演算体系を採るＣＰＵを対象としたものしかなく、制御機器や携帯電話機、情報家電等、互いに異なる処理体系、演算体系を採る演算装置を有する機器を対象とした並列処理手段はない。
【０００５】
本発明は、以上の点に鑑みてなされたものであり、処理端末装置に稼働状況、処理能力等に応じて並列処理に係る処理を実行させ、並列処理の効率性及び高速性を向上させることができる並列処理システム等を提供することを目的とする。
【０００６】
【課題を解決するための手段】
前述した目的を達成するために第１の発明は、複数の処理端末装置と、１又は複数のサーバと、がネットワークを介して接続され、前記サーバに入力された依頼処理を並列処理により処理する並列処理システムであって、前記サーバは、前記依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、前記処理端末装置に当該割付処理を割り付け送信し実行させる処理割付手段と、前記処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する粒度制御手段と、を具備し、前記処理端末装置は、前記サーバから送られた前記割付処理を実行する割付処理実行手段と、前記割付処理の実行結果を前記サーバに送信する割付処理結果送信手段と、を具備することを特徴とする並列処理システムである。
【０００７】
また、前記サーバは、さらに、前記処理端末装置毎の処理の履歴を保持する保持手段と、前記処理の履歴に基づいて前記処理能力を算出する処理能力算出手段とを具備することが望ましい。
また、前記サーバは、さらに、前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記処理粒度を強制的に増加させる第１の処理制御手段を具備することが望ましい。
また、前記サーバは、さらに、前記ネットワーク上の通信負荷を監視し、前記通信負荷が所定の基準以上である場合、前記通信負荷が所定の基準まで下がるまで、前記処理端末装置への前記割付処理の割り付けを一時的に停止する第２の処理制御手段を具備することが望ましい。
【０００８】
第１の発明では、ネットワークを介して、あるいは直接サーバに依頼処理が入力されると、サーバは、依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、処理端末装置に、割付処理を割り付け送信し実行させる。
サーバは、処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する。
処理端末装置は、サーバから送られた割付処理を実行し、前記割付処理の実行結果をサーバに送信する。サーバは、割付処理の実行結果を依頼処理毎の実行結果に集約する。
【０００９】
「サーバ」は、サーバコンピュータ等であり、処理端末装置としてのスレーブを制御する「マスタ」として機能する。サーバは、ネットワークを介してあるいは直接サーバに入力された処理（「依頼処理」）から「割付処理」を生成して処理端末装置に割り付け、実行させる。尚、サーバは、割付処理を生成する際、必要に応じて依頼処理を分割する。また、サーバは、分散化が可能である。
【００１０】
「処理端末装置」は、コンピュータ等であり、サーバから割り付けられた処理（割付処理）を実行する。処理端末装置は、サーバとしてのマスタにより制御される「スレーブ」として機能する。
【００１１】
「処理」（「依頼処理」あるいは「割付処理」）は、処理依頼要求、処理プログラム、処理データ等である。
「処理能力」は、処理端末装置に割付処理を割り付け実行させる際、サーバが設定するＣＰＵ能力である。
「処理粒度」は、一度に割り付ける処理量である。
「通信負荷」は、測定器を用いてネットワーク上の通信負荷を測定し、算出する通信負荷率である。
「処理の履歴」は、処理端末装置における処理実績、処理時間、平均処理時間等である。サーバは、この処理の履歴を処理端末装置毎に処理履歴テーブル等としてデータベースに保持する。サーバは、この処理の履歴に基づいて上記の処理能力を算出することができる。
【００１２】
第１の発明では、サーバは、並列処理への参加を募集し、処理端末装置は、稼働状況に応じて並列処理に参加する。従って、サーバは、処理端末装置の稼働状況を管理する必要がなく、参加応募した処理端末装置に割付処理を割り当てることにより、効率的かつ高速な並列処理を実現することができる。
【００１３】
また、サーバは、各処理端末装置に、処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御するので、１の処理端末装置であっても、１又は複数の割付処理を同時に並行して実行することができ、並列処理全体として処理の高速化が可能である。
【００１４】
また、サーバは、予め調査、記録した処理端末装置の処理能力（ＣＰＵ能力等）、あるいは、処理の履歴から算出した処理端末装置の処理能力（ＣＰＵ能力等）に基づいて、処理端末装置毎に割付処理量である処理粒度を設定する。すなわち、サーバは、処理端末装置毎に処理能力に応じて処理粒度を設定するので、一律の割付処理量を設定する場合と比較して、並列処理全体として処理の高速化が可能である。
【００１５】
また、サーバは、ブロードキャスト通信等により複数の処理端末装置全体に対して並列処理への参加募集を行い、また、サーバが複数の分散サーバから構成される場合、処理端末装置は、ブロードキャスト通信等により複数の分散サーバ全体に対して並列処理への参加応募を行うことができる。この場合、個々の処理端末装置の状態管理を行う必要がなく、また、サーバ（分散サーバ）、処理端末装置の双方共、相手を意識することなく指示、応答等を行うことが可能である
【００１６】
第２の発明は、複数の処理端末装置にネットワークを介して接続され、入力された依頼処理を並列処理により処理する１又は複数のサーバであって、前記依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、前記処理端末装置に当該割付処理を割り付け送信し実行させる処理割付手段と、前記処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する粒度制御手段と、を具備することを特徴とするサーバである。
【００１７】
第２の発明は、第１の発明の並列処理システムで用いられるサーバに関する発明である。
【００１８】
第３の発明は、複数の処理端末装置にネットワークを介して接続され、入力された依頼処理を並列処理により処理する１又は複数のサーバが、実行する並列処理方法であって、前記依頼処理から、必要に応じて当該依頼処理を分割して、割付処理を生成し、前記処理端末装置に当該割付処理を割り付け送信し実行させる処理割付工程と、前記処理端末装置毎の処理能力に基づいて、一度に割り付ける割付処理量である処理粒度を制御する粒度制御工程と、を具備することを特徴とする並列処理方法である。
【００１９】
第３の発明は、第２の発明のサーバにより実行される並列処理方法に関する発明である。
【００２０】
第４の発明は、コンピュータを第２の発明のサーバとして機能させるプログラムである。
第５の発明は、コンピュータを第２の発明のサーバとして機能させるプログラムを記録した記録媒体である。
【００２１】
上述のプログラムをＣＤ−ＲＯＭ等の記録媒体に保持させて流通させてもよいし、このプログラムを通信回線を介して送受することもできる。
【００２２】
【発明の実施の形態】
以下に、添付図面を参照しながら、本発明に係る並列処理システム等の好適な実施形態について詳細に説明する。なお、以下の説明及び添付図面において、略同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略することにする。
【００２３】
図１は、本発明の第１の実施の形態に係る並列処理システム１００の概略構成を示す図である。
【００２４】
図１に示すように、並列処理システム１００は、管理者１のマスタ２、複数の依頼者４−１、４−２、…の端末装置５−１、５−２、…、スレーブ群６等が、ネットワーク９を介して接続されて構成される。
【００２５】
ネットワーク９は、インターネット、ローカルエリアネットワーク（ＬＡＮ）、社内ＬＡＮ等のネットワークであり、有線、無線を問わない。
【００２６】
管理者１は、並列処理システム１００を管理する管理者であり、マスタ２を有する。マスタ２は、「サーバ」としてのサーバコンピュータ等であり、処理受付機能１３、参加募集機能１４、処理割付機能１５、実行結果取得機能１６、処理履歴管理機能１８、通信負荷機能１９等を有する。マスタ２は、複数の分散マスタ３−１、３−２、…により構成することもできる。
【００２７】
処理受付機能１３は、依頼者４−１、４−２、…の端末装置５−１、５−２、…から処理の依頼を受付ける。例えば、処理受付機能１３は、ＷＥＢ（Ｗｏｒｌｄ　Ｗｉｄｅ　Ｗｅｂ）サーバとしての機能を有し、端末装置５からＷＥＢページに入力された処理を依頼処理として受け付けることができる。また、処理受付機能１３は、端末装置５からＷＥＢページ等によりネットワーク９を介して依頼処理を受付けるだけでなく、マスタ２に直接入力された処理を依頼処理として受け付けることができる。
【００２８】
参加募集機能１４は、スレーブ群６の各スレーブ７−１、７−２、…に対して、並列処理への参加を募集する。処理割付機能１５は、依頼された処理（依頼処理）から、割付処理を生成して、スレーブ７−１、７−２、…に、処理能力に基づいた処理量（粒度）に応じた、１又は複数の割付処理を割付ける。実行結果取得機能１６は、スレーブ７−１、７−２、…から割付処理の実行結果を取得する。処理履歴管理機能１８は、処理割付の履歴、スレーブ群６の各スレーブ７−１、７−２、…における処理履歴（割付処理の種類、処理開始日時、処理終了日時等）及び当該処理履歴から導出される情報等（処理実績、処理時間、平均処理時間等）を有する処理履歴テーブルを保持する。通信負荷監視機能１９は、ネットワーク９上の通信負荷率を測定し、通信負荷を監視し、割付処理の処理量を制御する。
【００２９】
依頼者４−１、４−２、…は、処理を依頼する依頼者であり、それぞれ、端末装置５−１、５−２、…を有する。端末装置５−１、５−２…は、ネットワーク９を介して、マスタ２に処理を依頼し、スレーブ群６から処理の実行結果を受信し取得する実行結果取得機能１７を有する。尚、端末装置５−１、５−２、…は、パーソナルコンピュータ、携帯情報端末（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ
Ａｓｓｉｓｔａｎｔ）等である。
【００３０】
スレーブ群６は、複数の「処理端末装置」としてのスレーブ７−１、７−２…を有する。スレーブ７−１、７−２、…は、並列処理専用のコンピュータ等の端末装置、あるいは、未使用時間等に係る空き資源、リソースを有する場合に並列処理に参加するパーソナルコンピュータ等のボランティア端末装置である。スレーブ７−１、７−２、…は、パーソナルコンピュータ、携帯情報端末（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ　Ａｓｓｉｓｔａｎｔ）、携帯電話機、演算装置を有する機器等である。
【００３１】
スレーブ７−１、７−２、…は、それぞれ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）メモリ・キー等の外部メモリ８−１、８−２、…を有するようにしてもよい。スレーブ７−１、７−２、…（又は、外部メモリ）は、参加応募機能１１、処理実行機能１２等を有する。
尚、スレーブ７には、参加応募機能１１、処理実行機能１２等を有する外部メモリを設けてもよいし、外部メモリを設けずスレーブ７内に参加応募機能１１、処理実行機能１２等を設けるようにしてもよい。
【００３２】
参加応募機能１１は、マスタ２から並列処理への参加募集が行われると、自身の稼働状況等から並列処理へ参加できるだけの空き資源、リソースが残存しているかどうかを判断し、参加する場合は、マスタ２に対して参加応募の旨を応答する。尚、スレーブ７は、自身の稼働状況、利用状況等を常時監視することもできる。
処理実行機能１２は、マスタ２等から受け取った処理プログラムにより所定の処理を実行する。
【００３３】
スレーブ７として、例えば、情報家電、携帯電話等を用いる場合、ＣＰＵの処理体系の相違により、受け取った処理プログラム等をそのままスレーブ上では実行できないことがある。この場合、スレーブ上で実行可能な処理体系に演算コード等を変換する機能（ＣＰＵ命令変換機能）をスレーブ７側またはマスタ２側に設けることにより、スレーブ上での当該処理プログラム等の実行を可能とすることができる。
【００３４】
次に、図２乃至図５を参照しながら、並列処理システム１００の処理手順について説明する。
【００３５】
まず、図２及び図４を参照しながら、マスタ２が有する処理受付機能１３、参加募集機能１４、処理割付機能１５、処理履歴管理機能１８、通信負荷監視機能１９及び、スレーブ７−１、７−２、…が有する参加応募機能１１等による処理について説明する。
【００３６】
尚、「処理」の区別のため必要に応じて、端末装置５−１、５−２、…から依頼された処理を「依頼処理」と呼び、スレーブ７−１、７−２、…に分配、割り付けられた処理を「割付処理」と呼ぶ。
【００３７】
図２は、処理受付機能１３、参加募集機能１４、処理割付機能１５、処理履歴管理機能１８、通信負荷監視機能１９、参加応募機能１１等に係る処理の概略を示す図である。
図４は、処理受付機能１３、参加募集機能１４、処理割付機能１５、処理履歴管理機能１８、通信負荷監視機能１９、参加応募機能１１等に係る処理の手順を示すフローチャートである。
【００３８】
依頼者４−１、４−２、…の端末装置５−１、５−２、…は、依頼処理（依頼処理Ａ、…）の処理依頼をマスタ２に行い、当該依頼処理の処理プログラム及び処理データをマスタ２に送信する（ステップ４０１）。
【００３９】
尚、スレーブ７（又はその外部メモリ）には、予め、参加応募機能１１等と共に、処理実行機能１２に係る処理プログラム及び処理データを記憶させ、端末装置５−１、５−２、…は、処理プロクラム及び処理データを送ることなく、マスタ２に処理Ａ、…の処理依頼のみ行ってもよい。あるいは、スレーブ７（又はその外部メモリ）に、予め、参加応募機能１１等と共に、処理実行機能１２に係る処理プログラム及び処理データの一部を記憶させ、残りの処理プログラム及び処理データに関しては、端末装置５−１、５−２、…が依頼処理Ａ、…の処理依頼を行う際にマスタ２に送信するようにしてもよい。
【００４０】
マスタ２は、各依頼者４−１、４−２、…の端末装置５−１、５−２、…からの依頼処理を受信し、受付ける（ステップ４０２）。
図２に示すように、例えば、マスタ２は、依頼者４−１の端末装置５−１から依頼処理Ａを受付け（ステップ４１−１）、処理受付テーブル３１を作成する。処理受付テーブル３１は、端末装置と依頼処理とを対応付ける。
【００４１】
ここで、処理受付機能１３にＷＥＢサーバとしての機能を設けることにより、マスタ２は、端末装置５からＷＥＢページに入力された処理を依頼処理として受け付けることができる。
尚、ステップ４０１〜ステップ４０２の処理を随時行うようにすることができる。
【００４２】
マスタ２は、ブロードキャスト通信で、スレーブ群６の全てのスレーブ７−１、７−２、…に対して並列処理への参加を募集する（ステップ４０３）。
スレーブ７−１、７−２、…は、自身の稼働状況から並列処理へ参加できるだけの空き資源、リソースが残存しているかどうかを判断し、参加する場合は、マスタ２に対して参加応募の旨を応答する（ステップ４０４）。
図２に示すように、例えば、マスタ２からの参加募集の打診があると（ステップ４２）、スレーブ７−１、７−２、７−４（スレーブ７−３は、参加応募せず）は、それぞれ、参加応募を行う（ステップ４３−１、４３−２、４３−４）。
【００４３】
マスタ２は、参加募集したスレーブ７毎に、処理能力（ＣＰＵ能力）を設定する（ステップ４０５）。
図２に示すように、例えば、マスタ２は、処理履歴テーブル３３（スレーブ７毎の処理実績、処理時間、平均処理時間等）を参照して、あるいは、事前調査により入力されたスレーブ７毎のＣＰＵ能力、メモリ量等に基づいて、処理能力を定め、処理割付テーブル３２に対応付けて記録する（ステップ４４ａ）。
【００４４】
マスタ２は、スレーブ毎に処理能力に基づいて、一度に割り付ける処理量（処理粒度）を制御し、設定する（ステップ４０６）。
例えば、マスタ２は、処理能力が「１００」であるスレーブ７−１に対して処理粒度を「１」（１つの割付処理）とし、処理能力が「２００」であるスレーブ７−２に対して処理粒度を「２」（２つの割付処理）とし、処理能力が「３００」であるスレーブ７−４に対して処理粒度を「３」（３つの割付処理）とする。
【００４５】
マスタ２は、常時、ネットワーク９上の通信負荷を監視し、通信負荷率を通信負荷３４に設定する（ステップ４０７）。マスタ２は、測定器を使ってネットワーク９上を流れるデータのトラフィック測定を行い、通信負荷率を測定、算出する。
図２に示すように、例えば、マスタ２は、測定、算出した現在の通信負荷率“６０％”を通信負荷３４に設定する（ステップ４４ｂ）。
【００４６】
マスタ２は、現在の通信負荷率が所定値以上であるかどうか判定し（ステップ４０８）、通信負荷率が所定値以上でない場合（ステップ４０８のＮｏの場合）、マスタ２は、端末装置５−１、５−２、…から送られた依頼処理から割付処理を生成し、各スレーブ毎に処理能力に基づいて設定した処理粒度（ステップ４０６）に従って、参加応募の旨の応答があったスレーブ７−１、７−２、…に割り付ける（ステップ４１２）。すなわち、マスタ２は、各スレーブ毎に処理能力に基づいて設定した処理粒度（ステップ４０６）に従って、スレーブに割付処理を割り付ける。尚、マスタ２は、必要に応じて依頼処理を分割して割付処理を生成する。
【００４７】
図２に示すように、例えば、通信負荷３４の通信負荷率が３０％であり、所定の基準（例えば、５０％）より小さい場合、マスタ２は、各スレーブ毎に処理能力に基づいて設定した処理粒度（ステップ４０６）に従って、スレーブ７−１に１つの割付処理（割付処理Ａ１）を割り付け、スレーブ７−２に２つの割付処理（割付処理Ａ２、Ａ３）を割り付け、スレーブ７−４に３つの割付処理（割付処理Ａ４、Ａ５、Ａ６）を割り付け、これらの割付処理とスレーブとを対応付けて処理割付テーブル３２を作成する（ステップ４１２）。
【００４８】
マスタ２は、現在の通信負荷率が所定値以上であるかどうか判定し（ステップ４０８）、通信負荷率が所定値以上であり（ステップ４０８のＹｅｓ）、ステップ４０６において設定した処理粒度を増加させていない場合（ステップ４０９のＮｏ）、端末装置５−１、５−２、…から送られた依頼処理から割付処理を生成し、各スレーブ毎に処理能力に基づいて設定した処理粒度（ステップ４０６）を増加させて設定変更し、この増加後の処理粒度に基づいて、参加応募したスレーブに割付処理を割り付ける（ステップ４１０）。すなわち、マスタ２は、ステップ４０６において設定した処理粒度を増加させた上で、割付処理をスレーブ７に割り付ける。尚、マスタ２は、必要に応じて依頼処理を分割して割付処理を生成する。
【００４９】
図２に示すように、例えば、通信負荷３４の通信負荷率が６０％であり、所定の基準（例えば、５０％）以上の場合、マスタ２は、各スレーブ毎に処理能力に基づいて設定した処理粒度（ステップ４０６）を増加させ、例えば、スレーブ７−１の処理粒度を「１」から「２」（２つの割付処理）へ増加させ、スレーブ７−２の処理粒度を「２」から「３」（３つの割付処理）へ増加させ、スレーブ７−４の処理粒度を「３」から「５」（５つの割付処理）へ増加させる。この場合、マスタ２は、スレーブ７−１に２つの割付処理を割り付け、スレーブ７−２に３つの割付処理を割り付け、スレーブ７−４に５つの割付処理を割り付け、これらの割付処理とスレーブとを対応付けて処理割付テーブル３２を作成する（ステップ４１０）。すなわち、マスタ２は、増加させて設定した新たな処理粒度に基づいて、スレーブに割付処理を割り付け、処理割付テーブル３２を作成する。
【００５０】
また、通信負荷率が所定値以上であり（ステップ４０８のＹｅｓ）、すでに処理粒度を上げて割付処理を依頼した場合（ステップ４０９のＹｅｓ）、通信負荷率が下がるまで、一時的に処理を停止し（ステップ４１１）、ステップ４０３に移行する。
【００５１】
マスタ２は、割付処理を割り付けた各スレーブ７−１、７−２、…に、割付処理に係る処理プログラム、処理データ等を送信し、処理を分配する（ステップ４１３）。
図２に示すように、例えば、スレーブ７−１に割付処理Ａ１を割り付け、スレーブ７−２に割付処理Ａ２、Ａ３を割り付け、スレーブ７−４に割付処理Ａ４、Ａ５、Ａ６を割り付けた場合、マスタ２は、スレーブ７−１に割付処理Ａ１に係る処理プログラム、処理データ等を送信し、スレーブ７−２に割付処理Ａ２、Ａ３に係る処理プログラム、処理データ等を送信し、スレーブ７−４に割付処理Ａ４、Ａ５、Ａ６に係る処理プログラム、処理データ等を送信する（ステップ４６−１、４６−２、４６−４）。
【００５２】
尚、端末装置５−１、５−２、…からの処理受付の状況に応じて、ステップ４０３〜ステップ４１３の処理を随時行うようにすることができる。
【００５３】
尚、ブロードキャスト通信では、同一データリンク内の全ノード（ネットワークに接続されているコンピュータ等の機器）に対して情報を送信することができるので、マスタ２は、ブロードキャスト通信により同一データリンク内のスレーブ群６全体に対して、並列処理への参加募集を行い、スレーブ７は、ブロードキャスト通信により同一データリンク内のマスタ２（分散マスタ３）全体に対して、参加応募を行うことができる。
【００５４】
次に、図３及び図５を参照しながら、スレーブ７−１、７−２、…が有する処理実行機能１２、マスタ２が有する実行結果取得機能１６、処理履歴管理機能１８、端末装置５−１、５−２、…が有する実行結果取得機能１７等による処理について説明する。
図３は、処理実行機能１２、実行結果取得機能１６、実行結果取得機能１７、処理履歴管理機能１８等に係る処理の概略を示す図である。
図５は、処理実行機能１２、実行結果取得機能１６、実行結果取得機能１７、処理履歴管理機能１８等に係る処理の手順を示すフローチャートである。
【００５５】
スレーブ７−１、７−２…は、マスタ２から割付処理に係る処理プログラム、処理データを受け取る（ステップ５０１）。
図２に示すように、例えば、スレーブ７−１は割付処理Ａ１、スレーブ７−２は割付処理Ａ２、Ａ３、スレーブ７−４は割付処理Ａ４、Ａ５、Ａ６に係る処理プログラム、処理データ等を受け取る（ステップ４６−１、４６−２、４６−４）。
尚、予め、処理プログラムや処理データがスレーブ７−１、７−２、…内や外部メモリ等に記憶されている場合には、スレーブ７−１、７−２、…は、マスタ２から処理実行依頼のみを受信する。
【００５６】
スレーブ７−１、７−２…は、受け取った１、又は複数の処理プログラムを起動し、１、又は複数の割付処理を実行する（ステップ５０２）。
図３に示すように、例えば、スレーブ７−１は、割付処理に係る処理プログラムＡ１を起動し、割付処理Ａ１を実行する（ステップ４７−１）。スレーブ７−２は、割付処理に係る処理プログラムＡ２、Ａ３を起動し、割付処理Ａ２、Ａ３を実行する（ステップ４７−２、４７−２´）。スレーブ７−４は、割付処理に係る処理プログラムＡ４、Ａ５、Ａ６を起動し、割付処理Ａ４、Ａ５、Ａ６を実行する（ステップ４７−３、４７−３´、４７−３´´）。
スレーブ７（処理端末装置）は、マスタ２が定めた当該スレーブ７自身の処理能力（ＣＰＵ能力）に応じて、１又は複数の割付処理を同時に並行に実行する。
【００５７】
スレーブ７−１、７−２…は、処理プログラム終了後、処理プログラムの実行結果（割付処理の実行結果）をマスタ２に送信する（ステップ５０３）。
図３に示すように、例えば、スレーブ７−１、７−２、７−４は、それぞれ、実行結果ａ１、ａ２、ａ３、ａ４、ａ５、ａ６（割付処理の実行結果）をマスタ２に送信する（ステップ４８−１、４８−２、４８−２´、４８−４、４８−４´、４８−４´´）。
【００５８】
マスタ２は、スレーブ７−１、７−２…から割付処理の実行結果を受信し、処理割付テーブル３１に対応付けて記録する（ステップ５０４）。
マスタ２は、割付処理の実行結果を依頼処理毎に集約し、処理受付テーブル２１に対応付けて記録する（ステップ５０５）。
図３に示すように、例えば、マスタ２は、割付処理毎の実行結果ａ１、ａ２、ａ３、ａ４、ａ５、ａ６を依頼処理毎の実行結果Ａに集約する（ステップ４９）。
【００５９】
マスタ２は、依頼処理毎に取得した実行結果を対応する依頼者４−１、４−２、…の端末装置５−１、５−２、…に送信し（ステップ５０６）、端末装置５−１、５−２、…は、依頼した処理の実行結果を受け取る（ステップ５０７）。
図３に示すように、例えば、マスタ２は、依頼処理Ａの実行結果Ａを端末装置５−１に送信する（ステップ５０−１）。
【００６０】
また、図３に示すように、スレーブ７−１、７−２、…は、マスタ２に実行結果を送信せずに、直接、依頼者４−１、４−２、…の端末装置５−１、５−２、…に実行結果を送信してもよい（ステップ５１）。さらに、スレーブ７−１、７−２、…は、ブロードキャスト通信により、ネットワーク９に実行結果を送出し、マスタ２（分散マスタ３）もしくは端末装置５が必要に応じて当該実行結果を受信するようにしてもよい。
【００６１】
マスタ２は、処理割付の履歴、スレーブ群６の各スレーブ７−１、７−２、…における処理履歴（割付処理の種類、処理開始日時、処理終了日時等）及び当該処理履歴から導出される情報等（処理実績、処理時間、平均処理時間等）を有する処理履歴テーブル３３を更新する（ステップ５０８）
例えば、図３に示すように、マスタ２は、スレーブ７−１、７−２、７−４から実行結果を受信した場合、処理履歴テーブル３３の当該スレーブに対応する処理履歴を更新する（ステップ５２）。
【００６２】
マスタ２は、並列処理を終了する時は、参加応募したスレーブ７−１、７−２、…に対して、終了指示を送り、当該終了指示を受けたスレーブ７−１、７−２、…は、参加応募、割付処理の実行等を終了する。
【００６３】
以上説明したように、本発明の第１の実施の形態によれば、マスタ２は、各依頼者４の端末装置５から処理の依頼（依頼処理）を受付け、ブロードキャスト通信によりスレーブ群６全体に対して並列処理への参加募集を行う。スレーブ７は、自身の稼働状況から並列処理へ参加できるだけの空き資源、リソースが残存しているかどうかを判断し、並列処理へ参加する場合は、マスタ２に対して参加応募の旨を応答する。マスタ２は、参加応募したスレーブ７に処理を割振り、割振った処理（割付処理）を送信する。スレーブ７は、マスタ２から受け取った割付処理を実行し、処理終了後、実行結果をマスタ２又は依頼者４側の端末装置５に送信し、マスタ２あるいは端末装置５は、実行結果を受け取る。
【００６４】
このように、マスタ２（サーバ）は、必要に応じて随時並列処理への参加を募集し、スレーブ７（処理端末装置）は、稼働状況等に応じて並列処理に参加するので、マスタ２は、スレーブ７の稼働状況等を管理する必要がなく、参加応募したスレーブ７に割付処理を割り当てることにより、効率的かつ高速な並列処理を実現することができる。従って、スレーブ７は、並列処理への途中参加が可能である。
【００６５】
マスタ２は、スレーブ７毎に処理能力を設定し、この処理能力に基づいて一度に割り付ける割付処理の処理量（処理粒度）を設定し、この処理粒度に従って、スレーブ７に１又は複数の割付処理を割り付け実行させる。尚、マスタ２は、スレーブ７毎の処理履歴等を保持し、この処理履歴等を参照して、あるいは、事前に入力されたスレーブ７毎のＣＰＵ能力、メモリ量等に応じて、スレーブ７毎に処理能力を設定する。
従って、一律の割付処理量を設定する場合と比較して、ＣＰＵ使用率を向上させると共に、通信回数を減少させ、通信負荷の低減、通信環境の安定を図ることができ、並列処理全体として処理の高速性、安定性を向上させることができる。
【００６６】
また、マスタ２は、ネットワーク９上の通信負荷を監視し、通信負荷率が所定値以上になった場合、処理粒度を強制的に増加させた上でスレーブ７に割付処理を割り付けて通信回数を減少させ、あるいは、処理を一時的に制限することにより、ネットワーク９上の通信負荷を低減させる。従って、通信環境の安定を図ることができ、並列処理全体として処理の高速性、安定性を向上させることができる。
【００６７】
また、処理端末装置として、ボランティア端末装置、すなわち、一般ＯＡ用途に用いられているパーソナルコンピュータ等の未使用時間等に係る空き資源を利用可能であり、膨大な計算量を要する処理等に係る並列処理を実現することができる。この場合、企業等のパーソナルコンピュータを多数抱えているサイトでは、安価に高速計算機環境を取得できると共に、ボランティア端末装置（スレーブ）の更新毎に計算機環境も自動更新されるため、新たに計算環境を構築することなく高速化が図られる。
【００６８】
尚、本実施の形態では、マスタ２は、通信負荷を監視し、所定の基準以上である場合、各スレーブ７に、処理粒度を上げ、処理能力に基づいた処理量に応じた１又は複数の割付処理を割り付け、実行させたが、通信負荷状況に関係なく、スレーブ７毎に処理能力に基づいた処理量に応じた１又は複数の割付処理を割り付け、実行させてもよい。
【００６９】
また、図４、図５等に示す処理を行うプログラムはＣＤ−ＲＯＭ等の記録媒体に保持させて流通させてもよいし、このプログラムを通信回線を介して送受することもできる。
【００７０】
次に、本発明の第２の実施の形態について説明する。
図６は、本発明の第２の実施の形態に係る並列処理システム２００の概略構成を示す図である。
【００７１】
前述の第１の実施の形態では、マスタ２は、端末装置５からネットワーク９を介して処理の依頼（依頼処理）を受付け、当該依頼処理を並列処理により処理するが、第２の実施の形態では、依頼処理は、直接マスタ２に入力される。すなわち、マスタ２の処理受付機能１３は、ＷＥＢページ等によりネットワーク９を介して依頼処理を受付けるだけでなく、マスタ２に直接入力された処理を依頼処理として受け付けることができる。
【００７２】
第１の実施の形態では、端末装置５からネットワーク９を介してマスタ２に並列処理を依頼することができるので、リモートからの並列処理の依頼、処理実行結果の取得が可能となる。例えば、多数の並列処理専用コンピュータをセンタ内に構築し、リモートからの運用が可能となる。
一方、第２の実施の形態では、割付処理及び割付処理毎の実行結果は、ネットワーク９上を流れるが、依頼処理全体及び依頼処理毎の実行結果は、ネットワーク９上を流れることがないので、安全性、機密性を向上することができる。
【００７３】
次に、並列処理システムにおける、ブロードキャスト通信による通信処理の詳細を説明する。
上記の第１の実施の形態及び第２の実施の形態に示した並列処理システムでは、マスタとスレーブとの間の通信に関しては、ブロードキャスト通信を用いて、通信データ、情報の授受（参加募集、参加応募、処理割付、実行結果の送信、実行結果の取得等）が行われる。
【００７４】
図７は、上述のマスタ２及びスレーブ７におけるブロードキャスト通信による通信処理の概略を示す図である。
尚、所定の通信処理に関する送信元と送信先のポート番号は、異なる場合があるが、説明の容易のため、所定の通信処理の種類毎にポート番号が設定され、送信元と送信先のポート番号は、同一であるものとして説明する。
【００７５】
図７に示すように、マスタ２には、２０００番ポート、２００１番ポート、２００２番ポート、２００３番ポート、２００４番ポート、…が設定され、スレーブ７−１には、２０００番ポート、２００１番ポート、スレーブ７−２には、２０００番ポート、２００２番ポート、スレーブ７−３には、２０００番ポート、２００３番ポート、スレーブ７−４には、２０００番ポート、２００４番ポート、…が設定される。
【００７６】
２０００番ポートは、マスタ２及び全てのスレーブ７の間の通信（例えば、参加募集）に関する通信ポートである。
２００１番ポートは、マスタ２とスレーブ７−１との間の通信（例えば、参加応募）に関する通信ポートである。
２００２番ポートは、マスタ２とスレーブ７−２との間の通信（例えば、参加応募）に関する通信ポートである。
２００３番ポートは、マスタ２とスレーブ７−３との間の通信（例えば、参加応募）に関する通信ポートである。
２００４番ポートは、マスタ２とスレーブ７−４との間の通信（例えば、参加応募）に関する通信ポートである。
【００７７】
マスタ２は、全てのスレーブ７に対して通信データを送信する場合（例えば、並列処理への参加募集を行う場合）、送信先ポート番号２０００を通信データに付加して、当該通信データをブロードキャスト通信によりネットワーク９に送出する。スレーブ７−１、７−２、７−３、７−４、…は、ポート番号２０００が設定されているので、当該通信データ（送信先ポート番号２０００）を受信する（ステップ１００１）。
【００７８】
スレーブ７−１は、マスタ２に対して通信データを送信する場合（例えば、並列処理への参加応募を行う場合）、送信先ポート番号２００１を通信データに付加して、当該通信データをブロードキャスト通信によりネットワーク９に送出する。マスタ２は、ポート番号２００１が設定されているので、当該通信データ（送信先ポート番号２００１）を受信する（ステップ１００２）。
【００７９】
同様にして、スレーブ７−２、７−４は、マスタ２に対して通信データを送信する場合、それぞれ、送信先ポート番号２００２、２００４を通信データに付加して、当該通信データをブロードキャスト通信によりネットワーク９に送出し、マスタ２は、ポート番号２００２、２００４が設定されているので、当該通信データ（送信先ポート番号２００２、２００４）を受信する（ステップ１００３、ステップ１００４）。
【００８０】
上記の説明では、参加募集、参加応募に関する通信処理を例としてあげたが、その他、割付処理の送受信、割付処理の実行結果の送受信等に関する通信処理に関しても、当該通信処理の種類毎に、必要に応じて、マスタ２、スレーブ７にポート番号を設定し、ポート番号を付加した通信データをブロードキャスト通信でネットワーク９に送出することにより、マスタ２及びスレーブ７の間で通信データの授受を行い、並列処理を実現することができる。
尚、マスタ２が分散化、多重化されている場合は、同一の指示、同一の応答であっても、早着優先で処理するようにすればよい。
【００８１】
以上、添付図面を参照しながら、本発明に係る並列処理システム等の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００８２】
【発明の効果】
以上、詳細に説明したように本発明によれば、処理端末装置に稼働状況、処理能力等に応じて並列処理に係る処理を実行させ、並列処理の効率性及び高速性を向上させることができる並列処理システム等を提供することができる。
【図面の簡単な説明】
【図１】第１の形態に係る並列処理システム１００の概略構成を示す図
【図２】処理受付、参加募集、参加応募、処理割付、処理履歴管理、通信負荷監視等に係る処理の概略を示す図
【図３】処理実行、実行結果取得、処理履歴管理等に係る処理の概略を示す図
【図４】処理受付、参加募集、参加応募、処理割付、処理履歴管理、通信負荷監視等に係る処理の手順を示すフローチャート
【図５】処理実行、実行結果取得、処理履歴管理等に係る処理の手順を示すフローチャート
【図６】第２の実施の形態に係る並列処理システム２００の概略構成を示す図
【図７】ブロードキャスト通信による通信処理の概略を示す図
【符号の説明】
１００………並列処理システム
２００………並列処理システム
１………管理者
２………マスタ
３（３−１、３−２、…）………分散マスタ
４（４−１、４−２、…）………依頼者
５（５−１、５−２、…）………端末装置
６………スレーブ群
７（７−１、７−２、…）………スレーブ
９………ネットワーク
１１………参加応募機能
１２………処理実行機能
１３………処理受付機能
１４………参加募集機能
１５………処理割付機能
１６………実行結果取得機能
１７………実行結果取得機能
１８………処理履歴管理機能
１９………通信負荷監視機能
３１………処理受付テーブル
３２………処理割付テーブル
３３………処理履歴テーブル
３４………通信負荷
【図１】
2004062686.tif 000003
【図２】
2004062686.tif 000004
【図３】
2004062686.tif 000005
【図４】
2004062686.tif 000006
【図５】
2004062686.tif 000007
【図６】
2004062686.tif 000008
【図７】
2004062686.tif 000009