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