(57)【要約】【課題】  ネットワークに接続されている計算機を並列処理の計算リソースとして活用できる並列処理システムを得る。【解決手段】  プライベートＩＰアドレスで定義されるネットワークをそれぞれ１つの並列計算機１、３、５、〜とし、並列計算機内の計算機１ａ、１ｂ、１ｃ、・・・、３ａ、３ｂ、３ｃ、・・・、５ａ、５ｂ、５ｃ、・・・、〜は、システムの構成に応じてサーバノードまたは計算ノードとして動作し、ネットワークを接続する接続計算機２、４、６、〜は、上位の並列計算機内では計算ノード２ａ、４ａ、６ａ、〜、下位の並列計算機内ではサーバノード２ｂ、４ｂ、６ｂ〜として動作し、並列計算機間の通信は接続計算機内部で計算ノード２ａ、４ａ、６ａ、〜とサーバノード２ｂ、４ｂ、６ｂ、〜の間でプロセス間通信する。【選択図】        図１
2005346563.tif 000002
【特許請求の範囲】
【請求項１】
第１の並列処理プログラムを実装した第１のネットワークに収容され、シミュレーション全体を管理する１つの計算機メインサーバと、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、第２の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第１のネットワークと第２のネットワーク双方に属する接続計算機クラスタクライアントを含む第１の並列計算機と、前記第２の並列処理プログラムを実装した前記第２のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第２の並列処理プログラムでサーバとして動作するとともに前記第１の並列処理プログラムとの間のデータ通信を実行するという機能をもつ接続計算機クラスタサーバを含む第２の並列計算機を備える並列処理システム。
【請求項２】
前記第１のネットワーク内ではクラスタクライアントとして位置付けされ、前記第２のネットワーク内ではクラスタサーバとして位置付けされた、前記第１のネットワークと前記第２のネットワークを接続する接続計算機は、クラスタクライアントとクラスタサーバが有する機能により、前記第１の並列処理プログラムと前記第２の並列処理プログラム間のプロセス間通信を行うことを特徴とする請求項１記載の並列処理システム。
【請求項３】
前記第１の並列計算機と前記第２の並列計算機は、それぞれプライベートＩＰアドレスで定義されるネットワークであることを特徴とする請求項１記載の並列処理システム。
【請求項４】
前記第１の並列計算機で動作する並列処理プログラムと前記第２の並列計算機で動作する並列処理プログラムは、それぞれ独立して実行し、それぞれの並列処理プログラムが処理したデータをデータ通信することで協調動作することを特徴とする請求項１記載の並列処理システム。
【請求項５】
前記並列処理システムは、前記並列計算機を構成する前記ネットワークの接続形態に基づく階層構造を有することを特徴とする請求項１記載の並列処理システム。
【請求項６】
第１の並列処理プログラムを実装した第１のネットワークに収容され、シミュレーション全体を管理する１つの計算機メインサーバと、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、第２の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第１のネットワークと第２のネットワーク双方に属する接続計算機クラスタクライアントを含む第１の並列計算機と、前記第２の並列処理プログラムを実装した前記第２のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第２の並列処理プログラムでサーバとして動作するとともに前記第１の並列処理プログラムとの間のデータ通信を実行するという機能をもつ接続計算機クラスタサーバと、第３の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第２のネットワークと第３のネットワーク双方に属する接続計算機クラスタクライアントを含む第２の並列計算機と、前記第３の並列処理プログラムを実装した第３のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第３の並列処理プログラムでサーバとして動作するとともに前記第２の並列処理プログラムとの間のデータ通信を実行するという機能をもつ接続計算機クラスタサーバを含む第３の並列計算機を備える並列処理システム。
【請求項７】
請求項６の並列処理システムにおいて、前記第１の並列計算機と、ネットワークの階層構造に基づいて設けられた複数の前記第２の並列計算機と、前記第２の並列計算機のいずれかに接続された複数の第３の並列計算機を備える並列処理システム。
【請求項８】
複数のネットワークが階層的に接続され、それぞれのネットワークが、メインサーバ、クラスタサーバ、クラスタクライアントまたはシングルクライアントとして動作する複数の計算機からなる並列計算機を構成し、ネットワークの階層構造に応じてこれら複数の並列計算機が任意の階層構造をもって接続されていることを特徴とする並列処理システム。
【請求項９】
第１のネットワークに収容される計算機に対しメインサーバまたはシングルクライアントまたはクラスタクライアントのいずれの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するメインサーバ実行手順と、シングルクライアント実行手順と、クラスタクライアント実行手順を有する第１の並列処理方法と、第２のネットワークに収容される計算機に対しシングルクライアントまたはクラスタサーバのいずれの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するシングルクライアント実行手順と、クラスタサーバ実行手順を有する第２の並列処理方法とを備え、前記第１の並列処理方法と前記第２の並列処理方法の間でプロセス間通信を行う並列処理方法。
【請求項１０】
前記初期化手順は、前記第１の並列処理方法と前記第２の並列処理方法の間でプロセス間通信を行うための通信ソケット生成する手順を含むことを特徴とする請求項７記載の並列処理方法。
【請求項１１】
第１のネットワークに収容される計算機に対しメインサーバまたはシングルクライアントまたはクラスタクライアントのいずれかの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するメインサーバ実行手順と、シングルクライアント実行手順と、クラスタクライアント実行手順を有する第１の処理方法と、第２のネットワークに収容される計算機に対しシングルクライアントまたはクラスタサーバまたはクラスタクライアントのいずれの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するシングルクライアント実行手順と、クラスタサーバ実行手順と、クラスタクライアント実行手順を有する第２の並列処理方法と、第３のネットワークに収容される計算機に対しシングルクライアントまたはクラスタサーバのいずれかの動作タイプであるかを判定し、判定結果に基づいて実行手順を決める実行タイプ判定手順と、前記実行手順を実行するために前記計算機間に必要な通信ソケットを生成する初期化手順と、前記各実行タイプを実行するシングルクライアント実行手順と、クラスタサーバ実行手順を有する第３の処理方法とを備え、第1の並列処理方法と第２の並列処理方法との間および第２の並列処理方法と第３の並列処理方法との間でプロセス間通信を行う並列処理方法。
【請求項１２】
請求項１１の並列処理方法において、前記第２の並列処理方法はネットワークの階層構造に対応して複数備えることを特徴とする並列処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、相互に接続された複数の計算機ネットワークに接続された計算機を計算リソースとして構成される並列処理システムと、この並列処理システムを用いて実行する並列シミュレーションに適用するための並列処理方法に関するものである。
【背景技術】
【０００２】
従来の並列シミュレーションを実行する並列計算機は、１つの計算機に複数のプロセッサを持つ共有メモリ型計算機、あるいは複数の計算機を並列計算機専用に使うネットワーク装置で接続した分散型並列計算機（例えば、ＰＣクラスタ）が用いられていた。
近年、これに加えてグリッドコンピューティングのように、計算機ネットワークに接続されたあらゆる計算機を計算リソースにして、並列シミュレーションを実行しようという試みが始まってきた。
並列処理プログラムを記述するプログラミング言語としては、世界標準の規格であるＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）通信ライブラリの実装の１つであるｍｐｉｃｈ（米国アルゴンヌ国立研究所開発のフリーソフトウェア）が最も広く使用されている。
上述のｍｐｉｃｈで記述された並列処理プログラムを実行するとき、並列化されたプロセスを実行する全計算機は、ＩＰアドレスにより相互に認識されていなければならない。すなわち、４台の計算機（これをＰＣ０、ＰＣ１、ＰＣ２、ＰＣ３とする）からなる並列計算機で並列処理プログラムを実行するとき、すべての計算機ＰＣ０、ＰＣ１、ＰＣ２、ＰＣ３は、自身を含めた全ての計算機ＰＣ０、ＰＣ１、ＰＣ２、ＰＣ３のＩＰアドレスを認識していなければならない。これは、ｍｐｉｃｈでは並列処理用関数の初期化の段階で、全計算機間の通信のために相互にソケットを張り合うという処理の実行が必要であるからである。
従来の並列計算機に関する先行技術としては、１台の計算機を複数のプロセッサで構成した並列計算機で、そのプロセッサ間通信のレイティング性能改善等で並列処理の向上を図る技術などがある（例えば、特許文献１参照）。
しかし、この発明が課題としている問題に対しては、これを解決する先行例は存在しない。
【０００３】
【特許文献１】特開平１１−６６０２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
今、図１７で示すような、プライベートＩＰアドレスで定義されたローカルな計算機ネットワーク１００、３００、５００、７００、９００が、ゲートウェイなどの接続計算機２００、４００、６００、８００を介して接続した計算機ネットワークを考える。以下では、これらローカルな計算機ネットワークをサブネットワークと記述する。このような一般的な計算機ネットワークでは、必ずしも全ての計算機が、他の全ての計算機のＩＰアドレスを認識しているとは限らない。
通常、計算機ネットワークは、複数のサブネットワークがゲートウェイを介して接続したシステムである。各サブネットワーク内部における計算機間の通信においては、通信相手の計算機をそのサブネットワーク内でのみ通用する各計算機固有のプライベートＩＰアドレスにより認識され、計算機間通信が行われる。あるサブネットワーク内の計算機から別のサブネットワーク内の計算機への通信は、ゲートウェイとなる計算機で適切なルーティング設定をするなど、ネットワーク設定をすることにより行うことができる。
例えば、２つのサブネットワーク１００、３００は、接続計算機２００を介して接続しているが、これら２つのサブネットワーク同士は接続計算機２００を除いて相互にＩＰアドレスによる認識ができない。ＰＣクラスタ（ＰＣによる分散並列計算機）も同様である。残りの計算ノードはＰＣクラスタ内部のプライベートＩＰアドレスしかもたない。すなわち、サブネットワーク３００上の計算機は、ＰＣクラスタのサーバノード６００についてはＩＰアドレスを認識しているが、計算ノードのＩＰアドレスは認識していない。
【０００５】
ＭＰＩによる並列シミュレーションは、一般的にいう並列計算機で実行するのが普通であるが、そうでなくても、計算機ネットワークに接続した計算機を計算リソースとして使用することができる。しかしながら、前述のように、全計算機がＩＰアドレスを相互に認識し合わなければならないという制約により、計算リソースとして使用できるのは、通常同一のサブネットワーク上の計算機に限定される。
もちろん、ネットワーク設定を適切に行ってＩＰアドレスを認識させることにより、他のサブネットワーク上の計算機も計算リソースとして使用可能である。
【０００６】
しかし、このようにして通信を可能にした場合でも、ＭＰＩでは、実際には決して使用することのないソケットを全ての計算機間ではろうとするため、セキュリティ上の問題が発生する。
例えば図１７で、サブネットワーク７００のある計算機とサブネットワーク９００のある計算機の間のソケットをはる場合、サブネットワーク３００、１００、５００を経由しているため、この間のネットワーク設定、例えばルーティング設定・セキュリティの問題などをクリアにしておかなければならない。ネットワークの観点からみた計算機同士の距離が離れれば離れるほど、上記ネットワーク設定が煩雑になる。現実問題として考えると、セキュリティ上の問題からこのような、あちこちに分散した計算機間の全ての通信は、許可されない場合が多い。
また、並列処理に使う計算機の数が増えれば増えるほどソケットの数も増加してしまう、という問題も発生する。
【０００７】
一方、並列シミュレーションの種類によっては、必ずしも他の全ての計算機とのデータ通信を必要としないものがある。すなわち、シミュレーション中に通信が行われる計算機の組が決まっていて、それ以外の計算機間でソケットをはる必要がない場合がある。
このようなシミュレーションの代表的な例として、モンテカルロシミュレーションがある。図１８に、モンテカルロシミュレーションを並列計算機で実行する場合の一般的な方法の概略を示す。モンテカルロシミュレーションでは、数多くのシミュレーションケースを完全に独立に実行できるので、ある１つの計算機ＰＣ０がサーバとなり、他の全ての計算機ＰＣ１、ＰＣ２、ＰＣ３にシミュレーションケースを与え、これら計算機ＰＣ１、ＰＣ２、ＰＣ３が与えられたケースを実行し、その結果を計算機ＰＣ０に返す。計算機ＰＣ０では、全ケースの結果をまとめて分析・評価する、ということができる。
このような場合、計算機ＰＣ０は他の全ての計算機ＰＣ１、ＰＣ２、ＰＣ３と通信が必要であるが、計算機ＰＣ１と計算機ＰＣ２の間、計算機ＰＣ２と計算機ＰＣ３の間、計算機ＰＣ３と計算機ＰＣ１の間には通信が発生しないので、ソケットをはる必要がない。
【０００８】
また、ＩＰアドレス重複の問題もある。サブネットワーク内の計算機のＩＰアドレスはプライベートに設定されるので、ある計算機のプライベートＩＰアドレスと同一のプライベートＩＰアドレスを、別のサブネットワーク内の計算機がもっている可能性がある。
図１７の例では、サブネットワーク１００、３００、５００、９００は、それぞれＩＰアドレス１９２．１６８．１０．ｘｘｘ／１９２．１６８．２０.ｘｘｘ／１９２．１６８．３０．ｘｘｘ／１９２．１６８．４０．ｘｘｘを持っているとしたが、例えばサブネットワーク３００、５００が同一のＩＰアドレス、例えば１９２．１６８．１００．ｘｘｘをもっている可能性もある。したがって、計算リソースの候補となる計算機のＩＰアドレスが、他の計算機のＩＰアドレスと重複していないかを必ず調査しなければならず、重複していた場合には、この計算機を計算リソースとして使用することはできないという問題がある。
【０００９】
この発明は、上述のような問題を解決するためになされたもので、計算機ネットワークに接続された全ての計算機を計算リソースとして利用することができる並列処理システムと並列処理方法を提供するものである。
【課題を解決するための手段】
【００１０】
この発明に係る並列処理システムにおいては、第１の並列処理プログラムを実装した第１のネットワークに収容され、シミュレーション全体を管理する１つの計算機メインサーバと、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、第２の並列処理プログラムとの間のデータ通信を実行するという機能をもち前記第１のネットワークと第２のネットワーク双方に属する接続計算機クラスタクライアントからなる第１の並列計算機と、前記第２の並列処理プログラムを実装した前記第２のネットワークに収容され、個々のシミュレーションケースを実行する複数の計算機シングルクライアントと、前記第２の並列処理プログラムでサーバとして動作するとともに前記第１の並列処理プログラムとの間のデータ通信を実行するという機能をもつ前記接続計算機クラスタサーバからなる第２の並列計算機を備える。
【発明の効果】
【００１１】
この発明は、複数のサブネットワークが階層的に接続した計算機ネットワークにおいて、各サブネットワークがそれぞれ個別の並列処理プログラムを実行し、サブネットワーク同士を接続している計算機において両サブネットワークで実行する並列処理プログラム間で適切な通信を行い、全並列処理プログラムを協調して実行できるようにすることで、ネットワーク全体を一つの並列処理システムとなるよう構成しているので、計算機ネットワークに接続されている全ての計算機を並列処理の計算リソースとして利用できるという効果がある。
【発明を実施するための最良の形態】
【００１２】
実施の形態１．
図１は、この発明を実施するための実施の形態１における並列処理システムのブロック図であり、図１７に示した一般的な計算機ネットワークと同一の構成をもつ。図１７の計算機ネットワーク全体は、サブネットワーク１００、３００、５００、７００、９００がゲートウェイ２００、４００、６００、８００を介して接続したネットワークである。この発明では、個々のサブネットワークを並列計算機として動作させるので、必要に応じて並列計算機と記述する。例えば、図１の並列処理システムでは、図１７のサブネットワーク１００、３００、５００、７００、９００に対応して、並列計算機１、３、５、７、９をもつ。
図１において、並列計算機１は、サーバノード１ａと、複数の計算ノード１ｂ、１ｃ、１ｄと、ネットワーク接続計算機２、４からなり、この接続計算機２、４で並列計算機３、５に接続されている。さらに、並列計算機３、５は、ネットワーク接続計算機６、８で並列計算機７、９に接続されている。接続計算機２、４、６、８は、それぞれ１つの計算機であり、その内部で、上位の並列計算機で実行する第１の並列処理プログラムと、下位の並列計算機で実行する第２の並列処理プログラムの２つの並列処理プログラムが実行される。そして、第１の並列処理プログラムでは計算ノードとして動作し、下位の並列計算機において実行する並列処理プログラムではサーバノードとして動作する。したがって、これら接続計算機２、４、６、８は、上位並列計算機から見たときには計算ノード２ａ、４ａ、６ａ、８ａ、下位並列計算機から見たときにはサーバノード２ｂ、４ｂ、６ｂ、８ｂのように必要に応じて表す。
このように、この発明の並列処理システムは、プライベートＩＰアドレスで定義され分割されるサブネットワークをそれぞれ１つの並列計算機とみなして、これら並列計算機を階層構造で接続した構成をとるシステムである。なお、ＰＣクラスタもプライベートＩＰアドレスで定義されるシステムであるので一つのサブネットワークとみなすことができる。
【００１３】
図２は、この発明の説明をするために、図１の並列処理システムから２階層のみを抽出したシステム構成図である。図において、並列計算機１には、サーバノードとなる計算機ＰＣ１ａと、計算ノードとなる計算機ＰＣ１ｂ、ＰＣ１ｃと、接続計算機ＰＣ２が収容されている。また、並列計算機３には、サーバとなる接続計算機ＰＣ２と計算ノードとなる計算機ＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃが収容されている。接続計算機ＰＣ２は、上位並列計算機１の計算ノードとしてクラスタクライアント２ａ、下位並列計算機３のサーバノードとしてクラスタサーバ２ｂとして動作する。そして、上位並列計算機１と下位並列計算機３の双方に属するので、図のように並列計算機１および並列計算機３とオーバーラップする位置付けで表す。
ここで、この発明の並列処理方法を適用する実際の並列処理プログラムでは、その計算機が並列処理システムのどの位置にあるかによって、４つの関数ｍａｉｎ＿ｓｅｒｖｅｒ（メインサーバ）／ｃｌｕｓｔｅｒ＿ｓｅｒｖｅｒ（クラスタサーバ）／ｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔ（クラスタクライアント）／ｓｉｎｇｌｅ＿ｃｌｉｅｎｔ（シングルクライアント）のいずれかを実行する。各並列計算機で実行する並列処理プログラムは、これら４つの関数を適切に組み合わせることにより、任意の階層構造をもつ並列処理システムに適用することができる。
図２における並列計算機１が実行するプログラムの例を図３に、並列計算機３が実行するプログラムの例を図４に示す。図３、４では、並列計算機１、３内の各計算機における実行命令を、その計算機のランク（ｍｙ＿ｒａｎｋ）と接続計算機であるのかの情報（ｃｌｕｓｔｅｒ＿ｆｌａｇ）にもとづいて示している。ここでランクとは、ＭＰＩ並列処理プログラムにおいて、並列計算機全体の中で自計算機が何番目の計算機であるかを識別する整数である。
図３では、並列計算機１の各計算機において、ランクが０（ゼロ）の計算機はｍａｉｎ＿ｓｅｒｖｅｒを実行し、ランクが０（ゼロ）でない計算機については、クラスタフラグが１の計算機はｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔを実行し、その他の計算機はｓｉｎｇｌｅ＿ｃｌｉｅｎｔを実行するということを表している（以降、この処理を並列処理プログラムＭＰＩ＃１という）。すなわち、並列計算機１では、計算機ＰＣ１ａがｍａｉｎ＿ｓｅｒｖｅｒを実行し、計算機ＰＣ２ａがｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔを実行し、計算機ＰＣ１ｂ、ＰＣ１ｃがｓｉｎｇｌｅ＿ｃｌｉｅｎｔを実行する。図４では、並列計算機１に対し下位にある並列計算機３の各計算機において、ランクが０（ゼロ）の計算機はｃｌｕｓｔｅｒ＿ｓｅｖｅｒを実行し、その他の計算機はｓｉｎｇｌｅ＿ｃｌｉｅｎｔを実行するということを表している（以降、この処理を並列処理プログラムＭＰＩ＃２という）。すなわち、並列計算機３では、計算機ＰＣ２ｂがｃｌｕｓｔｅｒ＿ｓｅｒｖｅｒを実行し、計算機ＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃがｓｉｎｇｌｅ＿ｃｌｉｅｎｔを実行する。
なお、計算機ＰＣ１ａにランク０、接続計算機ＰＣ２ａにクラスタフラグ１、接続計算機ＰＣ２ｂにランク０が予め付与されているものとする。実際には、ＭＰＩ＃１を起動する計算機が計算機ＰＣ１ａであり、起動時に自動的にＭＰＩ＃１におけるランク０となる。また、ＭＰＩ＃２に関しては、接続計算機ＰＣ２ｂがＭＰＩ＃２を起動することになるので、接続計算機ＰＣ２ｂが自動的にＭＰＩ＃２におけるランク０となる。クラスタフラグについては、上位の並列計算機における接続計算機がフラグ１、非接続計算機がフラグ０となるよう設定する。
【００１４】
以上説明したように、この発明の並列処理方法では、個々の計算機が並列処理システムのどの部分にあるかによって、メインサーバ、クラスタサーバ、クラスタクライアント、シングルクライアントのいずれかで動作する。ここで、それぞれの役割を説明する。
メインサーバ：この並列処理システムの最上位の並列計算機におけるサーバノードで実行する。並列シミュレーション全体を管理する。
クラスタサーバ：並列計算機を接続する計算機で実行する。下位の並列計算機における並列処理プログラム内で実行され、この並列処理プログラムでのシミュレーションを管理するとともに、上位の並列処理プログラムとデータ通信を行う。
クラスタクライアント：並列計算機を接続する計算機で実行する。上位の並列計算機における並列処理プログラム内で実行され、下位の並列処理プログラムとデータ通信を行う。
シングルクライアント：全並列計算機の末端ノードで実行する。シミュレーションケースを実行する。
【００１５】
これを、図２を例にして考えると以下のようになる。最上位の並列計算機１のサーバノードＰＣ１ａでｍａｉｎ＿ｓｅｒｖｅｒを実行し、全てのシミュレーションを管理する。各シミュレーションケースの実行は、全並列計算機１、３の末端ノードＰＣ１ｂ、ＰＣ１ｃ、ＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃでｓｉｎｇｌｅ＿ｃｌｉｅｎｔにより行う。並列計算機を接続する計算機ＰＣ２は、上位の並列処理プログラムＭＰＩ＃１内ではｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔを、下位の並列処理プログラムＭＰＩ＃２内ではｃｌｕｓｔｅｒ＿ｓｅｒｖｅｒを実行する。両プログラム間は、ＵＤＰ／ＩＰソケット通信により必要なデータを送受信する。例えば、ｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔからｃｌｕｓｔｅｒ＿ｓｅｒｖｅｒにシミュレーションケースを、ｃｌｕｓｔｅｒ＿ｓｅｒｖｅｒからｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔにシミュレーション結果を送信する（詳細については、後述する）。
ここで、「ＵＤＰ／ＩＰソケット通信」と記述したが、これはＭＰＩ＃１とＭＰＩ＃２の間のデータ通信方法の１例である。ＭＰＩ＃１とＭＰＩ＃２の通信方法はＵＤＰ／ＩＰに限定する必要はなく、例えばＴＣＰ／ＩＰ通信でもよい。以下では、ＵＤＰ／ＩＰ通信を使用していると仮定して記述する。
【００１６】
つぎに、各並列処理プログラムがもつ処理手順を図５に示す。並列計算機１で実行する並列処理プログラムＭＰＩ＃１は、図５（ａ）に示す実行タイプ判定手順、初期化手順、メインサーバ実行手順、クラスタクライアント実行手順およびシングルクライアント実行手順から成る。実行タイプ判定手順により、自計算機が階層構造のどの位置にいるかに応じて、どの実行手順（メインサーバ実行手順／クラスタクライアント実行手順／シングルクライアント実行手順）を実行するかを判定する。そして、初期化手順により、各種定数の初期化、必要に応じてＵＤＰ／ＩＰソケット通信用のソケットを生成し、実行タイプ判定手順の結果に従い、３つの実行手順のいずれかを実行する。
また、下位の並列計算機３で実行する並列処理プログラムＭＰＩ＃２は、図５（ｂ）に示す実行タイプ判定手順、初期化手順、クラスタサーバ実行手順およびシングルクライアント実行手順から成る。実行タイプ判定手順により、自計算機が階層構造のどの位置にいるかに応じて、どの実行手順（クラスタサーバ実行手順／シングルクライアント実行手順）を実行するかを判定する。そして、初期化手順により、各種定数の初期化、必要に応じてＵＤＰ／ＩＰソケット通信用のソケットを生成し、実行タイプ判定手順の結果に従い、２つの実行手順のいずれかを実行する。
並列処理システムが図２の２階層でなくさらに下位に並列計算機がある場合には、中位の並列計算機の並列処理プログラムＭＰＩ＃３は、図５（ｃ）に示すように図５（ｂ）の構成にクラスタクライアント実行手順を加えた構成となる。
上記４つの実行手順の詳細について、以下で説明する。
【００１７】
まず、図６にもとづきメインサーバの構成と動作について説明する。メインサーバは、上位の並列計算機１におけるサーバノードで実行する。図２の例では、計算機ＰＣ１ａである。図において、メインサーバは、シミュレーション条件データ生成手段１０、シミュレーション条件データ送信手段１１、制御信号送信手段１２、シミュレーション共通データ生成手段１３、シミュレーション共通データ送信手段１４、シミュレーションケース生成手段１５、シミュレーションケース送信手段１６、シミュレーション結果受信手段１７、ループ終了判定手段１８、シミュレーション終了判定手段１９、シミュレーション結果保存手段２０およびシミュレーション結果評価手段２１から構成される。
シミュレーション条件データ生成手段１０は、全シミュレーションで共通の条件データを生成する機能を持つ。ここで生成されたシミュレーション条件データはシミュレーション条件データ送信手段１１により、クラスタクライアントおよびシングルクライアントにブロードキャスト送信される。
制御信号送信手段１２は、シミュレーションの中断信号、終了信号などの実行制御するための信号を、クラスタクライアントおよびシングルクライアントに送信する機能をもつ。
シミュレーション共通データ生成手段１３は、ループごとに共通に使用する共通データを生成する機能をもつ。ここで生成されたシミュレーション共通データは、シミュレーション共通データ送信手段１４により、クラスタクライアントおよびシングルクライアントにブロードキャスト送信される。
ここで、上記「ループ」について簡単に説明する。全シミュレーションケースは複数の組に分割でき、その組ごとに共通のデータを持っている。「ループ」とはこの分割した組をさす。
シミュレーションケース生成手段１５は、ループごとにシングルクライアントに実行させる全シミュレーションケースを生成する機能を持つ。ここで生成されたシミュレーションケースは、シミュレーションケース送信手段１６により、クラスタクライアントおよびシングルクライアントに送信される。
シミュレーション結果受信手段１７は、クラスタクライアントおよびシングルクライアントから送信されたシミュレーション結果を受信する。
ループ終了判定手段１８は、シミュレーションケース生成手段１５が生成したそのループで実行する全ケースの結果が、シミュレーション結果受信手段１７により受信が完了したかを判定する。
シミュレーション終了判定手段１９は、全ループが完了し、全てのシミュレーションが終了したかを判定する。
シミュレーション結果保存手段２０は、シミュレーション結果受信手段１７が受信したシミュレーション結果を保存する。
シミュレーション結果評価手段２１は、シミュレーション結果保存手段２０に保存されたシミュレーション結果を評価する。
【００１８】
つぎに、図７にもとづきクラスタクライアントの構成と動作について説明する。クラスタクライアントは、上位の並列計算機１における接続計算機２で実行する。図２の例では、計算機ＰＣ２ａである。図において、クラスタクライアントは、シミュレーション条件データ受信手段２３、シミュレーション条件データ送信手段２４、メッセージ受信手段２５、メッセージタイプ判定手段２６、シミュレーションケース送信手段２７、制御信号送信手段２８、シミュレーション共通データ受信手段２９、シミュレーション共通データ送信手段３０、シミュレーション結果受信手段３１およびシミュレーション結果送信手段３２から構成される。
シミュレーション条件データ受信手段２３は、メインサーバ（ＰＣ１ａ）からブロードキャスト送信されたシミュレーション条件データを受信する。ここで受信したシミュレーション条件データは、シミュレーション条件データ送信手段２４により、ＵＤＰ／ＩＰ通信によりクラスタサーバ（ＰＣ２ｂ）に送信される。
メッセージ受信手段２５は、メインサーバ（ＰＣ１ａ）から送信されたメッセージを受信する。ここで受信したメッセージは、メッセージタイプ判定手段２６により、シミュレーションケース／終了／中断のいずれであるかが判定される。
シミュレーションケース送信手段２７は、メッセージタイプ判定手段２６で判定した結果がシミュレーションケースであるときに、メッセージ受信手段２５で受信したメッセージをＵＤＰ／ＩＰ通信によりクラスタサーバ（ＰＣ２ｂ）に送信する。制御信号送信手段２８は、メッセージタイプ判定手段２６で判定した結果が終了／中断であるときに、終了信号／中断信号をＵＤＰ／ＩＰ通信によりクラスタサーバ（ＰＣ２ｂ）に送信する。
シミュレーション共通データ受信手段２９は、メッセージタイプ判定手段２６で判定した結果が中断であるときに、制御信号送信手段２８が中断信号を送信終了後、メインサーバ（ＰＣ１ａ）からブロードキャスト送信されたシミュレーション共通データを受信する。ここで受信したシミュレーション共通データは、シミュレーション共通データ送信手段３０により、ＵＤＰ／ＩＰ通信によりクラスタサーバ（ＰＣ２ｂ）に送信される。
シミュレーション結果受信手段３１は、下位の並列計算機３で実行したシミュレーション結果を、ＵＤＰ／ＩＰ通信によりクラスタサーバ（ＰＣ２ｂ）から受信する。ここで受信したシミュレーション結果は、シミュレーション結果送信手段３２により、メインサーバ（ＰＣ１ａ）に送信される。
【００１９】
つぎに、図８にもとづきクラスタサーバの構成と動作について説明する。クラスタサーバは、下位の並列計算機３におけるサーバノードで実行する。下位の並列計算機のサーバノードは常に接続計算機であり、図２の例では、計算機ＰＣ２ｂである。図において、クラスタサーバは、シミュレーション条件データ受信手段３４、シミュレーション条件データ送信手段３５、メッセージ受信手段３６、メッセージタイプ判定手段３７、シミュレーションケース送信手段３８、制御信号送信手段３９、シミュレーション共通データ受信手段４０、シミュレーション共通データ送信手段４１、シミュレーション結果受信手段４２、シミュレーション結果保存手段４３、シミュレーション結果送信手段４４および全結果受信判定手段４５から構成される。
シミュレーション条件データ受信手段３４は、クラスタクライアント（ＰＣ２ａ）から送信されたシミュレーション条件データをＵＤＰ／ＩＰ通信により受信する。ここで受信したシミュレーション条件データは、シミュレーション条件データ送信手段３５により、シングルクライアントにブロードキャスト送信される。
メッセージ受信手段３６は、クラスタクライアント（ＰＣ２ａ）から送信されたメッセージをＵＤＰ／ＩＰ通信により受信する。ここで受信したメッセージは、メッセージタイプ判定手段３７により、シミュレーションケース／終了／中断のいずれであるかが判定される。
シミュレーションケース送信手段３８は、メッセージタイプ判定手段３７で判定した結果がシミュレーションケースであるときに、メッセージ受信手段３６で受信したメッセージをシングルクライアントに送信する。制御信号送信手段３９は、メッセージタイプ判定手段３７で判定した結果が終了／中断であるときに、終了信号／中断信号をシングルクライアントにブロードキャスト送信する。
シミュレーション共通データ受信手段４０は、メッセージタイプ判定手段３７で判定した結果が中断であるときに、制御信号送信手段３９が中断信号を送信終了後、クラスタクライアント（ＰＣ２ａ）から送信されたシミュレーション共通データをＵＤＰ／ＩＰ通信により受信する。ここで受信したシミュレーション共通データは、シミュレーション共通データ送信手段４１により、シングルクライアントにブロードキャスト送信される。
シミュレーション結果受信手段４２は、シングルクライアントで実行したシミュレーション結果を受信する。ここで受信したシミュレーション結果は、シミュレーション結果保存手段４３により保存される。
全結果受信判定手段４５は、メッセージ受信手段３６で受信した全シミュレーションケースの結果が、シミュレーション受信手段４２により受信が完了したかを判定する。
シミュレーション結果送信手段４４は、全結果受信判定手段４５で判定した結果が、全結果を受信済みであるときに、シミュレーション結果保存手段４３に保存されているシミュレーション結果をＵＤＰ／ＩＰ通信によりクラスタクライアント（ＰＣ２ａ）に送信する。
【００２０】
つぎに、図９にもとづきシングルクライアントの構成と動作について説明する。シングルクライアントは、各並列計算機の末端の計算機で実行する。図２の例では、計算機ＰＣ１ｂ、ＰＣ１ｃ、ＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃである。図において、シングルクライアントは、シミュレーション条件データ受信手段４７、メッセージ受信手段４８、メッセージタイプ判定手段４９、シミュレーション実行手段５０、シミュレーション結果送信手段５１およびシミュレーション共通データ受信手段５２から構成される。
シミュレーション条件データ受信手段４７は、メインサーバまたはクラスタサーバからブロードキャスト送信されたシミュレーション条件データを受信する。
メッセージ受信手段４８は、メインサーバまたはクラスタサーバから送信されたメッセージを受信する。ここで受信したメッセージは、メッセージタイプ判定手段４９により、シミュレーションケース／終了／中断のいずれであるかが判定される。
シミュレーション実行手段５０は、メッセージタイプ判定手段４９で判定した結果がシミュレーションケースであるときに、メッセージ受信手段４８で受信したシミュレーションケースを実行する。ここで実行したシミュレーション結果は、シミュレーション結果送信手段５１により、メインサーバまたはクラスタサーバに送信される。
シミュレーション共通データ受信手段５２は、メッセージタイプ判定手段４９で判定した結果が中断であるときに、メインサーバまたはクラスタサーバからブロードキャスト送信されたシミュレーション共通データを受信する。
【００２１】
つぎに、メインサーバ、クラスタクライアント、クラスタサーバおよびシングルクライアントの動作について、図１０、図１１、図１２、図１３のフローチャートを用いて説明する。ただし、以下の動作は図３、図４に示したプログラム内の関数ｍａｉｎ＿ｓｅｒｖｅｒ、ｃｌｕｓｔｅｒ＿ｃｌｉｅｎｔ、ｃｌｕｓｔｅｒ＿ｓｅｒｖｅｒおよびｓｉｎｇｌｅ＿ｃｌｉｅｎｔの動作であり、図５で示した「実行タイプ判定手順」と「初期化手順」のフローチャートは省略してある。ＵＤＰ／ＩＰ通信を行うクラスタサーバとクラスタクライアントでは、通信用のソケット生成を「初期化手順」で行う。
【００２２】
まず、図１０のフローチャートにもとづき、メインサーバの動作を説明する。
全シミュレーションで共通のシミュレーション条件データ（Ｃｏｎｄｉｔｉｏｎ＿ｄａｔａ）を生成し（ステップＳＴ１００）、生成したデータを並列計算機１でブロードキャスト送信する（ステップＳＴ１０１）。この後、並列計算機１で中断信号をブロードキャスト送信し（ステップＳＴ１０２）、シミュレーションループに入る。
ループの最初に、ループごとに共通に使用するシミュレーション共通データ（Ｂｃａｓｔ＿ｄａｔａ）を生成し（ステップＳＴ１０３）、生成したデータを並列計算機１でブロードキャスト送信する（ステップＳＴ１０４）。
つぎに、このループで実行するシミュレーションケースを生成する（ステップＳＴ１０５）。生成したシミュレーションケースのうち、計算ノード数に応じて数が決まる最初の複数のシミュレーションケースを全計算ノードに送信する（ステップＳＴ１０６）。送信するシミュレーションケースは計算機ごとに異なり、１つの計算ノードに複数まとめて送信してもよい。つぎに、計算ノードからシミュレーション結果が送信されてくるのを待ち、受信し（ステップＳＴ１０７）、受信したシミュレーション結果を保存する（ステップＳＴ１０８）。
このループでシミュレーションする全ケースのシミュレーション結果が受信済みかを判定し（ステップＳＴ１０９）、受信済みでなければ全ケースを送信済みかを判定する（ステップＳＴ１１０）。全ケース送信済みであれば、シミュレーション結果受信待ち（ステップＳＴ１０７）に戻る。全ケース送信済みでなければ、直前にシミュレーション結果を送信してきた計算ノードに次ケースを送信し（ステップＳＴ１１１）、シミュレーション結果受信待ち（ステップＳＴ１０７）に戻る。
また、このループでシミュレーションする全ケースのシミュレーション結果が受信済みかの判定（ステップＳＴ１０９）で、全ケース受信済みであれば、このループの全受信結果の評価を行い（ステップＳＴ１１２）、シミュレーションを終了するかを判定する（ステップＳＴ１１３）。判定した結果が終了であるときには、並列計算機１で終了信号をブロードキャスト送信し（ステップＳＴ１１４）、最終結果を評価し（ステップＳＴ１１５）、シミュレーションを終了する。
また、シミュレーション終了判定（ステップＳＴ１１３）で判定した結果が終了でないときには、並列計算機１で中断信号をブロードキャスト送信し（ステップＳＴ１１６）、シミュレーション共通データ生成（ステップＳＴ１０３）に戻る。
【００２３】
つぎに、図１１のフローチャートにもとづき、クラスタクライアントの動作を説明する。クラスタクライアントの動作説明においては、クラスタクライアントとクラスタサーバの間のデータ送受信は全てＵＤＰ／ＩＰ通信により行う。
まず、メインサーバからブロードキャスト送信されたシミュレーション条件データ（Ｃｏｎｄｉｔｉｏｎ＿ｄａｔａ）を受信し（ステップＳＴ２００）、受信したデータをクラスタサーバに送信する（ステップＳＴ２０１）。
つぎに、メインサーバからのメッセージを待ち、受信する（ステップＳＴ２０２）。受信したメッセージのメッセージタイプが、シミュレーションケース／終了／中断のいずれであるかを判定する（ステップＳＴ２０３）。メッセージタイプの判定結果が終了であるときには、終了信号をクラスタサーバに送信し（ステップＳＴ２０４）、終了する。
メッセージタイプの判定結果がシミュレーションケースであるときには、受信したシミュレーションケースをクラスタサーバに送信する（ステップＳＴ２０５）。送信後、クラスタサーバからシミュレーション結果が送信されてくるのを待ち、受信し（ステップＳＴ２０６）、受信したシミュレーション結果をメインサーバに送信する（ステップＳＴ２０７）。そして、つぎのメッセージ受信待ち（ステップＳＴ２０２）に戻る。
メッセージタイプの判定結果が中断であるときには、中断信号をクラスタサーバに送信する（ステップＳＴ２０８）。送信後、メインサーバからシミュレーション共通データ（Ｂｃａｓｔ＿ｄａｔａ）がブロードキャスト送信されてくるのを待ち、受信し（ステップＳＴ２０９）、受信したデータをクラスタサーバに送信する（ステップＳＴ２１０）。そして、つぎのメッセージ受信待ち（ステップＳＴ２０２）に戻る。
【００２４】
つぎに、図１２のフローチャートにもとづき、クラスタサーバの動作を説明する。クラスタサーバの動作説明においては、クラスタサーバとクラスタクライアントの間のデータ送受信は全てＵＤＰ／ＩＰ通信により行う。
まず、クラスタクライアントから送信されたシミュレーション条件データ（Ｃｏｎｄｉｔｉｏｎ＿ｄａｔａ）を受信し（ステップＳＴ３００）、受信したデータを並列計算機３でブロードキャスト送信する（ステップＳＴ３０１）。
つぎに、クラスタクライアントからのメッセージを待ち、受信する（ステップＳＴ３０２）。受信したメッセージのメッセージタイプが、シミュレーションケース／終了／中断のいずれであるかを判定する（ステップＳＴ３０３）。メッセージタイプの判定結果が終了であるときには、並列計算機３で終了信号をブロードキャスト送信し（ステップＳＴ３０４）、終了する。
メッセージタイプの判定結果がシミュレーションケースであるときには、受信したシミュレーションケースのうち、計算ノード数に応じて数が決まる最初の複数のシミュレーションケースを全計算ノードに送信する（ステップＳＴ３０５）。送信するシミュレーションケースは計算機ごとに異なり、１つの計算ノードに複数まとめて送信してもよい。つぎに、計算ノードからシミュレーション結果が送信されてくるのを待ち、受信し（ステップＳＴ３０６）、受信したシミュレーション結果を保存する（ステップＳＴ３０７）。
クラスタクライアントから受信した全ケースのシミュレーション結果が受信済みかを判定し（ステップＳＴ３０８）、受信済みでなければ全ケースを送信済かを判定する（ステップＳＴ３１０）。全ケース送信済みであれば、シミュレーション結果受信待ち（ステップＳＴ３０６）に戻る。全ケース送信済みでなければ、直前にシミュレーション結果を送信してきた計算ノードに次ケースを送信し（ステップＳＴ３１１）、シミュレーション結果受信待ち（ステップＳＴ３０６）に戻る。
また、クラスタクライアントから受信した全ケースのシミュレーション結果が受信済みかの判定（ステップＳＴ３０８）で、全ケース受信済みであれば、保存したシミュレーション結果をクラスタクライアントに送信する（ステップＳＴ３０９）。そして、つぎのメッセージ受信待ち（ステップＳＴ３０２）に戻る。
メッセージタイプの判定結果が中断であるときには、並列計算機３で中断信号をブロードキャスト送信する（ステップＳＴ３１２）。送信後、クラスタクライアントからシミュレーション共通データ（Ｂｃａｓｔ＿ｄａｔａ）が送信されてくるのを待ち、受信し（ステップＳＴ３１３）、受信したデータを並列計算機３でブロードキャスト送信する（ステップＳＴ３１４）。そして、つぎのメッセージ受信待ち（ステップＳＴ３０２）に戻る。
【００２５】
つぎに、図１３のフローチャートにもとづき、シングルクライアントの動作を説明する。
並列計算機１ではメインサーバから、並列計算機３ではクラスタサーバからブロードキャスト送信されたシミュレーション条件データ（Ｃｏｎｄｉｔｉｏｎ＿ｄａｔａ）を受信する（ステップＳＴ４００）。
つぎに、メッセージを待ち、受信する（ステップＳＴ４０１）。受信したメッセージのメッセージタイプがシミュレーションケース／終了／中断のいずれかであるかを判定する（ステップＳＴ４０２）。メッセージタイプの判定結果が終了であるときには、終了する。
メッセージタイプの判定結果がシミュレーションケースであるときには、シミュレーションを実行し（ステップＳＴ４０３）、シミュレーション結果を、並列計算機１のシングルクライアントであればメインサーバに、並列計算機３のシングルクライアントであればクラスタサーバに送信する（ステップＳＴ４０４）。そして、つぎのメッセージ受信待ち（ステップＳＴ４０１）に戻る。
メッセージタイプの判定結果が中断であるときには、シミュレーション共通データ（Ｂｃａｓｔ＿ｄａｔａ）がブロードキャスト送信されてくるのを待ち、受信する（ステップＳＴ４０５）。そして、つぎのメッセージ受信待ち（ステップＳＴ４０１）に戻る。
【００２６】
以上の説明では、メインサーバ、クラスタサーバ、クラスタクライアント、シングルクライアントの個々の構成と動作について説明してきたが、以降では、図２の２階層の並列処理システム全体の動作を、図１４と図１５のシーケンス図をもとに説明する。
図１４において、上位の並列計算機１で実行する並列処理プログラムをＭＰＩ＃１とし、下位の並列計算機３で実行する並列処理プログラムをＭＰＩ＃２とする。並列計算機１は、メインサーバＰＣ１ａ、末端の計算ノードとなるシングルクライアントＰＣ１ｂ、ＰＣ１ｃ、接続計算機２でクラスタクライアントとなるＰＣ２ａからなる。並列計算機３は、接続計算機２でクラスタサーバとなるＰＣ２ｂ、末端の計算ノードとなるシングルクライアントＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃからなる。
まず、シミュレーションのメイン部分を開始する前に、全シミュレーションで共通のシミュレーション条件データを並列計算機１と並列計算機３のすべての計算機に送信する。これは、つぎのようにして行う。並列処理プログラムＭＰＩ＃１で、メインサーバＰＣ１ａがシミュレーション条件データを生成し（図中のＡ）、ブロードキャストする（図中のＢ）。クラスタクライアントＰＣ２ａは、このシミュレーション条件データを並列処理プログラムＭＰＩ＃２にＵＤＰ／ＩＰ通信により送信する（図中のＣ）。並列処理プログラムＭＰＩ＃２では、クラスタサーバＰＣ２ｂがこのシミュレーション条件データをＵＤＰ／ＩＰ通信により受信し、受信したデータをブロードキャストする（図中のＤ）。これで、シミュレーション条件データは全シングルクライアントに送信されたことになる。シミュレーションのメイン部分終了後、上位の並列計算機１のメインサーバＰＣ１ａが全シミュレーション結果を評価し、終了する。メインサーバＰＣ１ａを除く全計算機は、シミュレーションのメイン部分終了後、終了する。
【００２７】
つぎに、図１５をもとにシミュレーションのメイン部分を説明する。
まず、各ループの最初に、ループごとに共通に使用するシミュレーション共通データを並列計算機１と並列計算機３の全ての計算機に送信する。並列処理プログラムＭＰＩ＃１で、メインサーバＰＣ１ａがシミュレーション共通データを生成し（図中のＥ）、ブロードキャストする（図中のＦ）。クラスタクライアントＰＣ２ａは、このシミュレーション共通データを並列処理プログラムＭＰＩ＃２にＵＤＰ／ＩＰ通信により送信する（図中のＧ）。並列処理プログラムＭＰＩ＃２では、クラスタサーバＰＣ２ｂがこのシミュレーション共通データをＵＤＰ／ＩＰ通信により受信し、受信したデータをブロードキャストする（図中のＨ）。これでシミュレーション共通データは、全シングルクライアントに送信されたことになる。そして、このループのシミュレーション実行に入る。
【００２８】
まず、並列処理プログラムＭＰＩ＃１の動作について説明する。
メインサーバＰＣ１ａは、このループで実行する全シミュレーションケースを生成し（図中のＩ）、最初のシミュレーションケースを各計算ノードＰＣ１ｂ、ＰＣ１ｃ、ＰＣ２ａに送信する（図中のＪ）。送信後、これらの結果が計算ノードから送信されてくるのを待つ。
シングルクライアントＰＣ１ｂ、ＰＣ１ｃは、シミュレーションケースを受信し、シミュレーションを実行し、シミュレーション結果をメインサーバＰＣ１ａに送信する（図中のＫ）。送信後、つぎのシミュレーションケースが送信されてくるのを待つ。
クラスタクライアントＰＣ２ａは、シミュレーションケースを受信し、これを並列処理プログラムＭＰＩ＃２にＵＤＰ／ＩＰ通信により送信する（図中のＬ）。送信後、これらのシミュレーション結果が並列処理プログラムＭＰＩ＃２からＵＤＰ／ＩＰ通信により送信されてくるのを待つ。シミュレーション結果を受信したら、これをメインサーバＰＣ１ａに送信する（図中のＮ）。
メインサーバＰＣ１ａは、シミュレーション結果を計算ノードから受信したら、もしこのループで実行する全シミュレーションケースを計算ノードに送信済みでなければ、シミュレーション結果を送信してきた計算ノードに、つぎのシミュレーションケースを送信する（図中のＯ）。
並列処理プログラムＭＰＩ＃１は、メインサーバＰＣ１ａがループの全シミュレーション結果を受信するまで前述の動作を繰り返す（図中のＰ）。そして、全シミュレーション結果受信後、次のループに入る。
【００２９】
つぎに、並列処理プログラムＭＰＩ＃２の動作について説明する。
クラスタサーバＰＣ２ｂは、シミュレーションケースを並列処理プログラムＭＰＩ＃１からＵＤＰ／ＩＰ通信により受信し、このうち最初のシミュレーションケースを各計算ノードＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃに送信する（図中のＱ）。
シングルクライアントＰＣ３ａ、ＰＣ３ｂ、ＰＣ３ｃは、シミュレーションケースを受信し、シミュレーションを実行し、シミュレーション結果をクラスタサーバＰＣ２ｂに送信する（図中のＲ）。送信後、つぎのシミュレーションケースが送信されてくるのを待つ。
クラスタサーバＰＣ２ｂは、シミュレーション結果を計算ノードから受信したら、もしＭＰＩ＃１からＵＤＰ／ＩＰ通信により送信されてきた全シミュレーションケースを計算ノードに送信済みでなければ、シミュレーション結果を送信してきた計算ノードに、つぎのシミュレーションケースを送信する（図中のＳ）。
並列処理プログラムＭＰＩ＃２は、ＭＰＩ＃１からＵＤＰ／ＩＰ通信により送信されてきた全シミュレーションケース終了まで上記を繰り返す（図中のＴ）。終了後、全シミュレーション結果をＵＤＰ／ＩＰ通信により並列処理プログラムＭＰＩ＃１に送信する（図中のＭ）。送信後、つぎのシミュレーションケースがＭＰＩ＃１から送信されてくるのを待つ。
並列処理プログラムＭＰＩ＃２は、並列処理プログラムＭＰＩ＃１から送信されてきたシミュレーションケースを実行し結果を返すだけである。したがって、並列処理プログラムＭＰＩ＃２は、並列処理プログラムＭＰＩ＃１のループとは関係なく動作する。
【００３０】
並列処理プログラムＭＰＩ＃１とＭＰＩ＃２は、全ループが終了するまで、すなわちメイン部分分が終了するまで前述の動作を繰り返す。
【００３１】
以上説明してきたとおり、計算機ネットワーク上の複数のサブネットワークをそれぞれ１つの並列計算機と定義し、それぞれで独立に実行する並列処理プログラムにおいて個々の計算機が他のサブネットワークとの接続位置にあるかを基準に、シングルクライアント、クラスタクライアントまたはクラスタサーバに分類し、それに応じた動作を実行させ、これによって複数の並列処理プログラムを協調動作させることにより、計算機ネットワーク全体に接続された全ての計算機を大規模な並列処理プログラムの計算リソースとして活用することができる。
【００３２】
また、２つのサブネットワークを接続する接続計算機を、それぞれのサブネットワークで実行する２つの並列処理プログラムにおいて、クラスタクライアントとクラスタサーバと位置付け、クラスタクライアントとクラスタサーバがもつ機能により並列処理プログラム間でプロセス間通信を行うので、サブネットワークを超えて実行する１つの並列処理プログラムを実装する必要がなく、両サブネットワーク上の計算機同士の通信で一般に発生するセキュリティ上の問題が解消される。
また、上記のプロセス間通信を行うようにしたことで、独立した２つの並列処理プログラムを協調させて実行することができる。
【００３３】
また、並列計算機は、プライベートＩＰアドレスで定義されるサブネットワークを単位としているので、サブネットワーク上の任意の計算機を計算リソースとする並列計算機を構成できる。
また、サブネットワーク同士を接続する計算機を、各サブネットワークで構成される２つの並列計算機双方に属するノードとして位置付けるようにしたので、２つの並列計算機の階層的構成が可能となる。
【００３４】
また、サブネットワークがさらに増えてネットワークが大きな階層構造となっている場合には、それに応じた並列計算機の階層構造が可能となり、ネットワーク全体を１つの並列処理システムと定義することができる。
【００３５】
実施の形態２．
実施の形態１では、独立に実行可能な複数のシミュレーションケースを扱うシミュレーションであり、各ケースを末端ノードの計算機が実行した。実施の形態２では、図１６に示すようなシミュレーション対象を複数の領域に分割して並列処理する熱、流体、電気などの時間とともに状態変化する現象解析を行う並列シミュレーションについて説明する。
図１６において、シミュレーション対象は、領域１１〜領域３３の９つの領域からなるものとして、それぞれ１つの領域を１つの計算ノードがシミュレーションを実行する。領域２３については、さらに詳細なシミュレーションが必要な領域で領域２３−１１〜２３−３３の９つの領域からなる。そして、図において隣接する各領域間の矢印は、領域間でデータの授受が必要なことを示している。
このようなシミュレーション対象では、領域２３以外の領域については、並列計算機１の各計算ノード（図１９のＰＣ１１、ＰＣ１２・・・、ＰＣ１９）は、担当する領域のある時間刻みのシミュレーションを実行し、隣接する領域を担当する計算ノードとの間でデータ授受し、次の時間刻みのシミュレーションに移る。時間刻みの管理など、シミュレーション全体の管理は、サーバノード（図１９のＰＣ１０）で行う。領域２３については、下位の並列計算機３が担当する。並列計算機３の各計算ノード（図１９のＰＣ３１、ＰＣ３２・・・、ＰＣ３９）は、細分化された領域２１−１１〜２１−３３のうち、担当する領域のある時間刻みのシミュレーションを実行し、隣接する領域を担当する計算ノードとの間でデータ授受し、次の時間刻みのシミュレーションに移る。
接続計算機（図１９のＰＣ１６＝ＰＣ３０）において、各時間刻みで以下の動作を行うことにより、並列計算機１と並列計算機３の協調動作を実現する。並列計算機１内では（図１９のＰＣ１６）、隣接する領域（図１６の領域１３、２２、３３）の結果をＵＤＰ／ＩＰ通信により並列計算機３に送信する。並列計算機３内では（図１９のＰＣ３０）、並列計算機３で実行した結果をＵＤＰ／ＩＰ通信により並列計算機１に送信する。これら送受信が完了後、次の時間刻みに移る。
【００３６】
以上のように、シミュレーション対象を適切に領域分割し、各領域を担当する計算機を指定し、これら計算機をグループ分けして構成される複数の並列計算機を指定することにより、通信が必要ないのにはらなければならないソケットの数を減らせることができる。そして、各並列計算機で自身が担当する領域をシミュレーションする並列処理プログラムを実行し、並列処理プログラム同士は接続計算機でデータ通信することで、複数の並列計算機を用いて全体のシミュレーションを実行できるという効果がある。
【図面の簡単な説明】
【００３７】
【図１】この発明の実施の形態１を示す並列処理システムのブロック図である。
【図２】この発明の実施の形態１の階層構造をもつ並列処理システムのブロック図である。
【図３】この発明の上位並列計算機の並列処理プログラムを表す図である。
【図４】この発明の下位並列計算機の並列処理プログラムを表す図である。
【図５】この発明の並列処理方法の構成を示す図である。
【図６】この発明の並列計算機のメインサーバの構成を示す図である。
【図７】この発明の並列計算機のクラスタクライアントの構成を示す図である。
【図８】この発明の並列計算機のクラスタサーバの構成を示す図である。
【図９】この発明の並列計算機のシングルクライアントの構成を示す図である。
【図１０】この発明のメインサーバの動作を示すフローチャート図である。
【図１１】この発明のクラスタクライアントの動作を示すフローチャート図である。
【図１２】この発明のクラスタサーバの動作を示すフローチャート図である。
【図１３】この発明のシングルクライアントの動作を示すフローチャート図である。
【図１４】この発明の並列処理システムの全体動作を示すシーケンス図である。
【図１５】図１４の内部の詳細を示すシーケンス図である。
【図１６】この発明の実施の形態２の並列処理を表す図である。
【図１７】計算機ネットワークを説明する図である。
【図１８】モンテカルロシミュレーションを説明する図である。
【図１９】この発明の実施の形態２を実現する並列処理システムのブロック図である。
【符号の説明】
【００３８】
１，３，５，７，９  並列計算機、２，４，６，８  接続計算機、１０  シミュレーション条件データ生成手段、１１，２４，３５  シミュレーション条件データ送信手段、１２，２８，３９  制御信号送信手段、１３  シミュレーション共通データ生成手段、１４，３０，４１  シミュレーション共通データ送信手段、１５  シミュレーションケース生成手段、１６，２７，３８  シミュレーションケース送信手段、１７，３１，４２  シミュレーション結果受信手段、１８  ループ終了判定手段、１９  シミュレーション終了判定手段、２０，４３  シミュレーション結果保存手段、２１  シミュレーション結果評価手段、２３，３４，４７  シミュレーション条件データ受信手段、２５，３６，４８  メッセージ受信手段、２６，３７，４９  メッセージタイプ判定手段、２９，４０，５２  シミュレーション共通データ受信手段、３２，４４，５１  シミュレーション結果送信手段、４５  全結果受信判定手段、５０  シミュレーション実行手段。
【図１】
2005346563.tif 000003
【図２】
2005346563.tif 000004
【図３】
2005346563.tif 000005
【図４】
2005346563.tif 000006
【図５】
2005346563.tif 000007
【図６】
2005346563.tif 000008
【図７】
2005346563.tif 000009
【図８】
2005346563.tif 000010
【図９】
2005346563.tif 000011
【図１０】
2005346563.tif 000012
【図１１】
2005346563.tif 000013
【図１２】
2005346563.tif 000014
【図１３】
2005346563.tif 000015
【図１４】
2005346563.tif 000016
【図１５】
2005346563.tif 000017
【図１６】
2005346563.tif 000018
【図１７】
2005346563.tif 000019
【図１８】
2005346563.tif 000020
【図１９】
2005346563.tif 000021