(57)【要約】【課題】演算部間に負荷の偏りが生じた場合に、システム全体の計算時間を短縮することができる統合シミュレーションシステムを得ること。【解決手段】シミュレーション演算部１−１〜１−Ｎが分散処理によるシミュレーション処理を実施する統合シミュレーションシステムであって、シミュレーション演算部１−１〜１−Ｎは、自身のシミュレーション処理の進行を示すシミュレーション時刻とシミュレーションサイクルとを他のシミュレーション演算部１−１〜１−Ｎに通知し、また、他のシミュレーション演算部１−１〜１−Ｎのシミュレーション時刻と自身のシミュレーション時刻に基づいて自身の処理が遅延していると判定した場合にはシミュレーションサイクルを増加させるよう変更する。【選択図】        図１
2010134722.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算手段を備え、前記演算手段が分散処理によるシミュレーション処理を実施する統合シミュレーションシステムであって、
前記演算手段は、
自身が実施するシミュレーション処理の進行を示すシミュレーション時刻と自身のシミュレーション時刻の進み方を示すシミュレーションサイクルとを他の演算手段に通知し、
また、他の演算手段のシミュレーション時刻と自身のシミュレーション時刻に基づいて自身の処理が遅延しているかを判定し、自身の処理が遅延していると判定した場合にはシミュレーションサイクルを増加させるよう変更することを特徴とする統合シミュレーションシステム。
【請求項２】
前記演算手段は、シミュレーション基準時刻と自身のシミュレーション時刻の差を求め、自身の処理が遅延しているかの判定を、前記差が所定の範囲を超えるか否かにより判定し、前記差が所定の範囲を超える場合に遅延していると判定することを特徴とする請求項１に記載の統合シミュレーションシステム。
【請求項３】
前記シミュレーションサイクルを増加させるよう変更した演算手段は、他の演算手段のシミュレーション時刻と自身のシミュレーション時刻に基づいて自身の処理遅延が回復したかを判定し、自身の処理遅延が回復したと判定した場合には、ミュレーションサイクルを減少させるよう変更することを特徴とする請求項１または２に記載の統合シミュレーションシステム。
【請求項４】
前記演算手段は、他の演算手段のシミュレーション時刻と自身のシミュレーション時刻の差を求め、自身の処理遅延が回復したかの判定を、前記差が所定の範囲以内か否かにより判定し、前記差が所定の範囲以内の場合に、自身の処理遅延が回復したと判定することを特徴とする請求項３に記載の統合シミュレーションシステム。
【請求項５】
前記演算手段の時刻同期を制御する同期制御手段、
を備え、
前記演算手段は、自身のシミュレーション時刻とシミュレーションサイクルとを前記同期制御手段経由で他の演算手段に通知し、また、自身の処理が遅延していると判定した場合に前記同期制御手段に遅延通知を送信し、
前記同期制御手段は、前記遅延通知を受信すると、その通知の送信元の演算手段のシミュレーションサイクルを増加させるよう変更し、シミュレーションサイクルの変更を指示する通知を前記遅延通知の送信元の演算手段へ送信し、
前記送信元の演算手段は、前記同期制御手段から送信される前記指示に基づいてシミュレーションサイクルを変更することを特徴とする請求項１または２に記載の統合シミュレーションシステム。
【請求項６】
前記同期制御手段は、前記遅延通知の送信元の演算手段から送信されたシミュレーション時刻と前記遅延通知の送信元の演算手段以外の演算手段から送信されたシミュレーション時刻とに基づいて、前記遅延通知の送信元の演算手段の処理遅延が回復したかを判定し、その処理遅延が回復したと判定した場合には、その演算手段のシミュレーションサイクルを減少させるよう変更し、シミュレーションサイクルの変更を指示する通知を前記遅延通知の送信元の演算手段へ送信することを特徴とする請求項５に記載の統合シミュレーションシステム。
【請求項７】
前記同期制御手段は、前記遅延通知の送信元の演算手段と前記遅延通知の送信元の演算手段以外の前記演算手段から送信されたシミュレーション時刻の差を求め、自身の処理遅延が回復したかの判定を、前記差が所定の範囲以内か否かにより判定し、前記差が所定の範囲以内の場合に、前記遅延通知の送信元の演算手段の処理遅延が回復したと判定することを特徴とする請求項６に記載の統合シミュレーションシステム。
【請求項８】
前記同期制御手段は、前記演算手段から通知されるシミュレーション時刻に基づいてシミュレーション基準時刻を求め、そのシミュレーション基準時刻を前記演算手段に通知し、
前記演算手段は、他の演算手段のシミュレーション時刻として前記シミュレーション基準時刻を用いて自身の処理が遅延しているかを判定することを特徴とする請求項５に記載の統合シミュレーションシステム。
【請求項９】
前記同期制御手段は、前記遅延通知の送信元の演算手段から送信されたシミュレーション時刻と前記シミュレーション基準時刻とに基づいて、前記遅延通知の送信元の演算手段の処理遅延が回復したかを判定し、自身の処理遅延が回復したと判定した場合には、シミュレーションサイクルを減少させるよう変更し、シミュレーションサイクルの変更を指示する通知を前記遅延通知の送信元の演算手段へ送信することを特徴とする請求項８に記載の統合シミュレーションシステム。
【請求項１０】
前記同期制御手段は、前記遅延通知の送信元の演算手段のシミュレーション時刻と前記シミュレーション基準時刻との差を求め、自身の処理遅延が回復したかの判定を、前記差が所定の範囲以内か否かにより判定し、前記差が所定の範囲以内の場合に、前記遅延通知の送信元の演算手段の処理遅延が回復したと判定することを特徴とする請求項９に記載の統合シミュレーションシステム。
【請求項１１】
複数の演算手段を備え、前記演算手段が分散処理によるシミュレーション処理を実施する統合シミュレーションシステムにおける同期制御方法であって、
前記演算手段が、自身が実施するシミュレーション処理の進行を示すシミュレーション時刻と自身が実施するシミュレーションの処理間隔であるシミュレーションサイクルとを他の演算手段に通知するシミュレーション時刻通知ステップと、
前記演算手段が、他の演算手段のシミュレーション時刻と自身のシミュレーション時刻に基づいて自身の処理が遅延しているかを判定し、自身の処理が遅延していると判定した場合にはシミュレーションサイクルを増加させるよう変更するシミュレーションサイクル変更ステップと、
を含むことを特徴とする同期制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のシミュレーション演算部を備える統合シミュレーションシステムに関する。
【背景技術】
【０００２】
従来の統合シミュレーションシステムは、システム内の複数のシミュレーション演算部が接続情報や時間情報を含むメッセージを交換しており、各シミュレーション演算部は自己の処理分を完了するとシミュレーション上の時間を進行させる要求を通知する。そして、その通知を受信した他のシミュレーション演算部は、通知に基づいて次の処理を進行することにより、シミュレーション実行上の時間的な同期をとっている（たとえば、下記特許文献１参照）。
【０００３】
【特許文献１】特開平８−１７１５５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術によれば、分散する各シミュレーション演算部の処理の時間的な同期をとる際に、各シミュレーション演算部の処理能力や処理量が異なる場合にも、各シミュレーション演算部の進行要求の範囲内で次の処理を進行する。そのため、処理のもっとも遅いシミュレーション演算部が処理を完了するまで、処理を終えた他のシミュレータが十分な処理能力を有していても、統合シミュレーションシステム全体のシミュレーション時間を進めることができず、処理全体の時間進行が遅くなる、という問題点があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、シミュレータ間に負荷の偏りが生じた場合に、システム全体の計算時間を短縮することができる統合シミュレーションシステムおよび同期制御方法を得ることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、複数の演算手段を備え、前記演算手段が分散処理によるシミュレーション処理を実施する統合シミュレーションシステムであって、前記演算手段は、自身が実施するシミュレーション処理の進行を示すシミュレーション時刻と自身のシミュレーション時刻の進み方を示すシミュレーションサイクルとを他の演算手段に通知し、また、他の演算手段のシミュレーション時刻と自身のシミュレーション時刻に基づいて自身の処理が遅延しているかを判定し、自身の処理が遅延していると判定した場合にはシミュレーションサイクルを増加させるよう変更することを特徴とする。
【発明の効果】
【０００７】
この発明によれば、複数のシミュレーション演算部がそれぞれ自身の演算の進行度合いを示すシミュレーション時刻を送信し、各シミュレーション演算部は、他のシミュレーション演算部のシミュレーション時刻と自身のシミュレーション時刻を比較し、比較により自身の処理が遅延していると判断した場合にシミュレーションサイクルを拡大するようにしたので、シミュレーション演算部間に負荷の偏りが生じた場合に、システム全体の計算時間を短縮することができる、という効果を奏する。
【発明を実施するための最良の形態】
【０００８】
以下に、本発明にかかる統合シミュレーションシステムおよび同期制御方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【０００９】
実施の形態１．
図１は、本発明にかかる統合シミュレーションシステムの実施の形態１の構成例を示す図である。図１に示すように、本実施の形態の統合シミュレーションシステムは、シミュレーション演算を行うシミュレーション演算部１−１〜１−Ｎ（Ｎは２以上の整数）と、シミュレーション演算部１−１〜１−Ｎの処理時間の監視をし、監視結果に基づいてシミュレーションサイクルを制御する同期整合制御部２と、で構成される。本実施の形態の統合シミュレーションシステムは、全体処理を分割してシミュレーション演算部１−１〜１−Ｎに割り当て、シミュレーション演算部１−１〜１−Ｎが割り当てられた処理を並行して処理を行う分散処理を行う。
【００１０】
シミュレーション演算部１−１〜１−Ｎは、それぞれ、シミュレーション演算を行うモデル計算部１１と、他のシミュレーション演算部と連携して統合シミュレーションを行なうためのシミュレーション時刻を制御する時刻制御部１２と、他のシミュレーション演算部に通知するためのパラメータデータを生成するパラメータ生成部１３と、同期整合制御部２からパラメータデータやメッセージを受け取るデータ入力部１４と、時刻情報やシミュレーション演算の計算ステップに相当するシミュレーションサイクルとパラメータデータなどのメッセージを他のシミュレーション演算部に通知するために同期整合制御部２へ送信するデータ出力部１５と、を備えている。
【００１１】
また、同期整合制御部２は、シミュレーション演算部１−１〜１−Ｎからメッセージを受け取るデータ入力部２１と、シミュレーション演算部１−１〜１−Ｎにメッセージを通知するデータ出力部２２と、受け取ったメッセージからパラメータデータを抽出するパラメータ情報処理部２３と、メッセージからシミュレーションの同期時刻情報を読み取り各シミュレーション演算部の進行度を監視する時刻監視部２４と、シミュレーション演算部１−１〜１−Ｎのシミュレーション時刻とシミュレーションサイクルを記録保存する時刻記録部２５と、シミュレーション演算部１−１〜１−Ｎの進行度にあわせて通知先のシミュレーションサイクルの増減を設定する時刻同期部２６と、必要に応じてメッセージの通知タイプを決定し時刻情報やパラメータデータからメッセージを生成するメッセージ生成部２７と、を備えている。
【００１２】
つづいて、本実施の形態の動作について説明する。まず、シミュレーション演算部１−１〜１−Ｎは、各々固有のシミュレーション上の時刻であるシミュレーション時刻を管理し、シミュレーション時刻の進行に合わせてモデル計算部１１が各シミュレーションを個別に行なう。また、シミュレーション演算は、シミュレーションサイクル刻みでシミュレーション時刻を進行させることとする。
【００１３】
また、シミュレーション演算部１−１〜１−Ｎの間で情報を共有するためのパラメータデータを定義しておき、シミュレーション演算部１−１〜１−Ｎは、自身以外のシミュレーション演算部から出力されたパラメータデータを用いて、分散シミュレーションを実行する。シミュレーション演算部１−１〜１−Ｎは、それぞれ、パラメータ生成部１３がモデル計算部１１の演算結果から適宜シミュレーション演算部１−１〜１−Ｎ間で共有する必要のあるパラメータデータを抽出する。また、パラメータ生成部１３は、パラメータデータにシミュレーションの進行を同期させるためのシミュレーション時刻およびシミュレーションサイクル等を制御情報として付加し、制御情報を付加したパラメータデータをデータ出力部１５から同期整合制御部２へ送信する。
【００１４】
同期整合制御部２のデータ入力部２１はシミュレーション演算部１−１〜１−Ｎから受信したデータ（制御情報を付加したパラメータデータ）からシミュレーション時刻とシミュレーションサイクルを抽出する。時刻監視部２４は、抽出されたシミュレーション時刻とシミュレーションサイクルに基づいてシミュレーション演算部１−１〜１−Ｎの進み具合を監視、シミュレーションサイクルに変更が必要な場合は変更を実施する。また、時刻監視部２４は、抽出されたシミュレーション時刻とシミュレーションサイクルをシミュレーション演算部１−１〜１−Ｎに対応づけて時刻記録部２５に記録するが、この際シミュレーションサイクルを変更した場合には変更後の値を記録する。また、パラメータ情報処理部２３は、受信したデータからパラメータデータを抽出する。
【００１５】
時刻同期部２６は、時刻記録部２５からシミュレーション時刻とシミュレーションサイクルを読み出し、通知先のシミュレーション演算部１−１〜１−Ｎの進行度にあわせてメッセージのヘッダ情報を生成する。たとえば、シミュレーションサイクルを変更したシミュレーション演算部１−１〜１−Ｎに対しては、シミュレーションサイクルの変更を示すヘッダ情報を生成する。メッセージ生成部２７は、時刻同期部２６が生成したヘッダ情報とパラメータ情報処理部２３が抽出したパラメータデータからメッセージを生成し、メッセージの通知タイプや情報元シミュレーション演算部１−１〜１−Ｎ（メッセージに含まれるパラメータデータの送信元）や宛先演算部１−１〜１−Ｎなどの情報を設定して、データ出力部から相手先となるシミュレーション演算部１−１〜１−Ｎに通知する。
【００１６】
つづいて、本実施の形態の時刻同期制御手順を具体例に基づいて説明する。図２は、シミュレーション演算部間で負荷に差が生じた場合の本実施の形態の時刻同期制御手順の一例を示すシーケンス図である。ここでは、２つのシミュレーション演算部を同期させる例について説明することとし、シミュレーション演算部１−１〜１−Ｎのいずれか１つである第１のシミュレーション演算部とシミュレーション演算部１−１〜１−Ｎのうち第１のシミュレーション演算部以外のいずれか１つである第２のシミュレーション演算部を同期させる例を説明する。
【００１７】
本実施の形態では、シミュレーション演算部１−１〜１−Ｎは、それぞれ個別に設定されたシミュレーションサイクルΔｔｉ（ｉは１〜４。それぞれ異なる時間間隔を意味する）ごとに、自身のシミュレーション演算に相当するモデル計算を実施することとする。そして、適宜パラメータデータの算出が終了すると演算結果に基づいてそのパラメータデータを出力する。なお、処理の開始時には、シミュレーション演算部１−１〜１−Ｎのそれぞれのシミュレーション時刻は、全て同一の初期値に設定されることとする。
【００１８】
まず、第１のシミュレーション演算部では、モデル計算部１１がシミュレーション演算を行い、シミュレーション時刻Ｔ１０１で、パラメータ生成部１３が、その時点のモデル計算部１１の演算結果からパラメータデータを抽出し、シミュレーション時刻Ｔ１０１の値とその時点でのシミュレーションサイクルΔｔ１の値とを含む制御情報を付加して、データ出力部１５から制御情報付加後のパラメータデータを同期整合制御部２へ送信する（ステップＳ１１）。以下では、シミュレーション時刻ＴｉＸＹ（ｉは、１または２、ＸＹは整数）は、第ｉのシミュレーション演算部が、パラメータデータを出力するシミュレーション時刻を示すこととする。本実施の形態では、各シミュレーション演算部は、パラメータデータを出力した時刻（送信するパラメータデータの抽出元の演算結果を算出した時刻）に基づいてシミュレーション演算の信号を管理することとし、直近のパラメータデータを出力したシミュレーション時刻（送信するパラメータデータの抽出元の演算結果を算出した時刻）を保持していることとする。
【００１９】
同期整合制御部２は、ステップＳ１１で送信されたパラメータデータに含まれるＴ１０１と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ２を含むデータメッセージを通知する（ステップＳ１２）。具体的には、同期整合制御部２では、データ入力部２１が、ステップＳ１１で送信されたパラメータデータからシミュレーション時刻Ｔ１０１とシミュレーションサイクルΔｔ１を抽出する。そして、時刻監視部２４が、それらを時刻記録部２５に記録するとともにヘッダ情報を生成し、メッセージ生成部２７が、時刻記録部２５に記録されているシミュレーション時刻Ｔ１０１と宛先（この場合は第２のシミュレーション演算部）のシミュレーションサイクルΔｔ２を読み出し、読みだしたＴ１０１とΔｔ２を含むデータメッセージを生成し、データ出力部２２がそのデータメッセージを第２のシミュレーション演算部に通知する（ステップＳ１２）。
【００２０】
第２のシミュレーション演算部は、ステップＳ１２で送信されたデータメッセージに含まれるシミュレーション時刻Ｔ１０１とその時点までに自身のシミュレーション進行が確認されている時刻であるシミュレーション時刻Ｔ２００とを比較し、Ｔ１０１とＴ２００の差が所定の範囲以内であった場合には、同期しているものとして、受信したパラメータデータに基づいてモデル計算部１１がシミュレーション演算を進める（ステップＳ１３）。
【００２１】
また、第２のシミュレーション演算部は、並行してモデル計算を行っていることとし、シミュレーション時刻Ｔ２０１に、自身の演算結果からパラメータデータを抽出し、シミュレーション時刻Ｔ２０１の値とその時点でのシミュレーションサイクルΔｔ２の値とを含む制御情報を付加して、データ出力部１５から制御情報付加後のパラメータデータを同期整合制御部２へ送信する（ステップＳ１４）。
【００２２】
同期整合制御部２は、ステップＳ１４で送信されたパラメータデータに含まれるＴ２０１と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ１を含むデータメッセージを通知する（ステップＳ１５）。そして、第１のシミュレーション演算部は、ステップＳ１５で送信されたデータメッセージに含まれるシミュレーション時刻Ｔ２０１とその時点までに自身のシミュレーション進行が確認されている時刻であるシミュレーション時刻Ｔ１０１とを比較し、Ｔ１０１とＴ２０１の差が所定の範囲以内であった場合には、同期しているものとして、受信したパラメータデータに基づいてシミュレーション演算を進める（ステップＳ１６）。
【００２３】
第１のシミュレーション演算部は、並行してシミュレーション演算を行っており、Ｔ１０２に、パラメータ生成部１３が、その時点のモデル計算部１１の演算結果からパラメータデータを抽出し、シミュレーション時刻Ｔ１０２の値とその時点でのシミュレーションサイクルΔｔ１の値とを含む制御情報を付加して、データ出力部１５から制御情報付加後のパラメータデータを同期整合制御部２へ送信する（ステップＳ１７）。
【００２４】
同期整合制御部２は、ステップＳ１７で送信されたパラメータデータに含まれるＴ１０２と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ２とを含むデータメッセージを第２のシミュレーション演算部に通知する（ステップＳ１８）。そして、第２のシミュレーション演算部は、ステップＳ１８で送信されたデータメッセージに含まれるシミュレーション時刻Ｔ１０２とその時点までに自身のシミュレーション進行が確認されている時刻であるシミュレーション時刻Ｔ２０１とを比較し、Ｔ１０２とＴ２０１の差が所定の範囲以内であった場合には、同期しているものとして、受信したパラメータデータに基づいてシミュレーション演算を進める（ステップＳ１９）。
【００２５】
一方、ここで、第１のシミュレーション演算部と第２のシミュレーション演算部との間にシミュレーション演算の負荷に差が生じ、第２のシミュレーション演算の負荷が上がり第２のシミュレーション演算部の演算に要する時間が長くなったとする。第１のシミュレーション演算部では、引き続き、演算を続けており、Ｔ１０３に、パラメータ生成部１３が、その時点のモデル計算部１１の演算結果からパラメータデータを抽出し、シミュレーション時刻Ｔ１０３の値とその時点でのシミュレーションサイクルΔｔ１の値とを含む制御情報を付加して、データ出力部１５から制御情報付加後のパラメータデータを同期整合制御部２へ送信する（ステップＳ２０）。
【００２６】
同期整合制御部２は、ステップＳ２０で送信されたパラメータデータを受信すると、そのメッセージに含まれるＴ１０３と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ２とを含むデータメッセージを第２のシミュレーション演算部に通知する（ステップＳ２１）。そして、第２のシミュレーション演算部は、ステップＳ２１で送信されたデータメッセージに含まれるシミュレーション時刻Ｔ１０３とその時点までに自身のシミュレーション進行が確認されている時刻であるシミュレーション時刻Ｔ２０１とを比較するが、上述のように負荷の上昇により、Ｔ１０３とＴ２０１の差が所定の範囲を超えるため、自身の処理が遅延していると判断する（ステップＳ２２）。そして、第２のシミュレーション演算部は、自身のシミュレーション進行が確認されている時刻Ｔ２０１とその時点のシミュレーションサイクルであるΔｔ２とを含む遅延を知らせるための遅延通知を同期整合制御部２へ送信する（ステップＳ２３）。
【００２７】
同期整合制御部２では、遅延通知を受信すると、後述のシミュレーションサイクル変更制御処理により、遅延通知の通知元である第２のシミュレーション演算部のシミュレーションサイクルを現在のΔｔ２からΔｔ３（Δｔ３＞Δｔ２）に変更し、変更後のΔｔ３を含むシミュレーションサイクルの変更を通知するためのシミュレーションサイクルメッセージを第２のシミュレーション演算部に通知する（ステップＳ２４）。
【００２８】
第２のシミュレーション演算部は、シミュレーションサイクルメッセージを受信するとそのメッセージに基づいてシミュレーションサイクルをΔｔ３に変更し、Δｔ３基づいてシミュレーション時刻を更新したシミュレーション時刻Ｔ２０２に、その時点の演算結果に基づいてパラメータデータを同期整合制御部２に送信する（ステップＳ２５）。このように、シミュレーションサイクルを拡大することにより、第２のシミュレーション演算部のシミュレーション進行速度を上げる。
【００２９】
同期整合制御部２は、ステップＳ２５で送信されたパラメータデータに含まれるＴ２０２と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ１とを含むデータメッセージを第１のシミュレーション演算部に通知する（ステップＳ２６）。
【００３０】
そして、第２のシミュレーション演算部は、シミュレーション時刻Ｔ２０３に、その時点の演算結果に基づいてパラメータデータを同期整合制御部２に送信する（ステップＳ２７）。
【００３１】
同期整合制御部２は、ステップＳ２７で送信されたパラメータデータに含まれるＴ２０３と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ１とを含むデータメッセージを第１のシミュレーション演算部に通知する（ステップＳ２８）。一方、同期整合制御部２では、時刻監視部２４が、時刻記録部２５に記録されている各シミュレーション演算部の時刻を監視しており、第１のシミュレーション演算部から送信された最新のシミュレーション時刻（この場合Ｔ１０３）が第２のシミュレーション演算部から送信された最新のシミュレーション時刻（この場合Ｔ２０３）がより小さくなった場合、両演算部の負荷の差が縮まり同期範囲内になったと判断する。そして、シミュレーションサイクルを拡大している第２のシミュレーション演算部の演算が進みすぎないよう、シミュレーションサイクルをΔｔ４（Δｔ４＜Δｔ３）に変更するよう決定し、Δｔ４へのシミュレーションサイクルの変更を指示するシミュレーションサイクルメッセージを第２のシミュレーション演算部に通知する（ステップＳ２９）。
【００３２】
一方、第１のシミュレーション演算部では演算を続けており、Ｔ１０４に、その時点の演算結果に基づいてパラメータデータを同期整合制御部２へ送信する（ステップＳ３０）。同期整合制御部２は、ステップＳ３０で送信されたパラメータデータに含まれるＴ１０４と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ４とを含むデータメッセージを第２のシミュレーション演算部に通知する（ステップＳ３１）。第２のシミュレーション演算部は、受信したデータメッセージに含まれるＴ１０４と、自身が進行を確認している時刻Ｔ２０３とを比較し、Ｔ１０４とＴ２０３との差が所定の範囲内であると判断して、シミュレーション演算を進める。
【００３３】
そして、第２のシミュレーション演算部は、Ｔ２０４に、その時点の演算結果に基づいてパラメータデータを同期整合制御部２へ送信する（ステップＳ３２）。同期整合制御部２は、ステップＳ３２で送信されたパラメータデータに含まれるＴ２０４と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ１とを含むデータメッセージを第１のシミュレーション演算部に通知する（ステップＳ３３）。
【００３４】
なお、ここでは、ステップＳ２６，Ｓ２８で同期整合制御部２から第１のシミュレーション演算部が受信した後に、メッセージに含まれる第２のシミュレーション演算部のシミュレーション時刻と自身のシミュレーション時刻との比較および判断処理の説明を省略したが、ステップＳ１６等と同様に、比較および判断処理を実施することとする。
【００３５】
なお、ここでは、第２のシミュレーション演算部が遅延する場合のシーケンスを説明するため、第２のシミュレーション演算部による遅延判断（通知されたデータメッセージに含まれるシミュレーション時刻と自身のシミュレーション時刻との差が所定の範囲内であるかの判断）と通知処理を行う場合について説明したが、第１のシミュレーション演算部でも同様の遅延判断を行なっており、自身の処理が遅延していると判断した場合には、上記と同様に同期整合制御部２に遅延通知を送信する。
【００３６】
また、３つ以上のシミュレーション演算部により分散処理を行っている場合も、同様である。この場合、同期整合制御部２は、パラメータデータを受信した場合に、そのパラメータデータの送信元以外のシミュレーション演算部にそれぞれ受信したパラメータデータと対応するシミュレーション時刻と、送信先のシミュレーションサイクルとを含めたデータメッセージ送信するようにする。または、同期整合制御部２は、後述のように基準とするシミュレーション演算部を定め、そのシミュレーション演算部のシミュレーション時刻を基準以外のシミュレーション演算部に送信するようにしてもよい。さらに、平均化などにより基準時刻を定め、基準のシミュレーション演算部のシミュレーション時刻を通知する代わりに、基準時刻を各シミュレーション演算部に通知し、各シミュレーション演算部は基準時刻と自身のシミュレーション時刻を比較することにより、遅延を判断するようにしてもよい。
【００３７】
つぎに、同期整合制御部２が実施するシミュレーションサイクルの変更制御処理について説明する。同期整合制御部２は、シミュレーション全体の進行の基準となるシミュレーション基準時刻を時刻管理部２４によって管理する。たとえば、第１のシミュレーション演算部が演算を行うシミュレーションモデルが、最も重要な演算を分担している場合（主要なシミュレーションモデルである場合）、第１のシミュレーション演算部から通知されるシミュレーション時刻Ｔ１０１，Ｔ１０２，…をシミュレーション基準時刻とする。また、主要なシミュレーション演算部が存在しない場合は、各シミュレーション演算部のシミュレーション時刻の平均値、または、大きくシミュレーション時刻（進行時間）が離れているシミュレーション演算部を除いた各シミュレーション時刻の平均値などをシミュレーション基準時刻として用いる。なお、図２の例のように、２つのシミュレーション演算部のみの場合は、お互いに同期を確認すればよいことから、シミュレーション基準時刻を固定して定義せずに、各々のシミュレーション時刻が他方のシミュレーション演算部のシミュレーション基準時刻と考えることができる。
【００３８】
図３は、シミュレーションサイクルの変更制御処理の手順の一例を示すシーケンス図である。図３を用いてシミュレーションサイクルの変更制御処理の具体例を説明する。ここでは、３つのシミュレーション演算部を同期させる例について説明することとし、シミュレーション演算部１−１〜１−Ｎのうちの３つである第１のシミュレーション演算部，第２のシミュレーション演算部，第３のシミュレーション演算部とを同期させる例を説明する。また、ここでは、シミュレーション基準時刻として第１のシミュレーション演算部のシミュレーション時刻を用いることとする。
【００３９】
まず、同期整合制御部２は、実時間Ｒ１１に、シミュレーション時刻Ｔ１０１とシミュレーションサイクルΔ１１を含むパラメータデータを第１のシミュレーション演算部から受信し、Ｔ１０１とΔ１１を時刻記録部２５に保持する。なお、Δ１１は、シミュレーション時刻Ｔ１０１での第１のシミュレーション演算部のシミュレーションサイクルとする。そして、同期整合制御部２は、シミュレーション時刻Ｔ１０１を含むデータメッセージ通知を第２のシミュレーション演算部と第３のシミュレーション演算部へ通知する（ステップＳ４１，Ｓ４２）。なお、データメッセージ通知には、上述のとおり宛先のシミュレーション演算部のシミュレーションサイクルを含むが、ここでは、説明を省略する。
【００４０】
第２のシミュレーション演算部は、シミュレーション時刻Ｔ２０１に、その時点の演算結果に基づいてＴ２０１とその時点のシミュレーションサイクルΔ２１を付加したパラメータデータを同期整合制御部２に通知する（ステップＳ４３）。また、第３のシミュレーション演算部は、シミュレーション時刻Ｔ３０１に、その時点の演算結果に基づいてＴ３０１とその時点のシミュレーションサイクルΔ３１を付加したパラメータデータを同期整合制御部２に通知する（ステップＳ４４）。なお、ここでは、各シミュレーション演算部は、図２で説明したように、データメッセージ通知を受信すると、遅延判定などの処理を実施することとする。その遅延判定により遅延していないと判定した場合は、図２の例と同様にそのままシミュレーション演算を続けるが、ここでは、これらの処理の説明を省略する。
【００４１】
同期整合制御部２は、実時間Ｒ１２に、シミュレーション時刻Ｔ１０２とシミュレーションサイクルΔ１１を含むパラメータデータを第１のシミュレーション演算部から受信し、Ｔ１０２とΔ１１を時刻記録部２５に保持する。そして、同期整合制御部２は、シミュレーション時刻Ｔ１０２を含むデータメッセージ通知を第２のシミュレーション演算部と第３のシミュレーション演算部へ通知する（ステップＳ４５，Ｓ４６）。第２のシミュレーション演算部は、シミュレーション時刻Ｔ２０２に、その時点の演算結果に基づいてＴ２０２とその時点のシミュレーションサイクルΔ２１を付加したパラメータデータを同期整合制御部２に通知する（ステップＳ４７）。
【００４２】
一方、ここで、第３のシミュレーション演算部の負荷が上昇したとする。第３のシミュレーション演算部は、シミュレーション時刻Ｔ１０２を含むデータメッセージ通知を受信すると、Ｔ１０２とＴ３０１の差が所定の範囲を超えているために自身の演算が遅延していると判断し、Ｔ３０１を含む遅延通知を同期整合制御部２に送信する（ステップＳ４８）。
【００４３】
同期整合制御部２は、実時間Ｒ３２に、第３のシミュレーション演算部からシミュレーション時刻Ｔ３０１を含む遅延通知を受信すると、時刻同期部２６が、第３のシミュレーション演算部の変更後のシミュレーションサイクルΔ３２を決定し、Δ３２をシミュレーションサイクルメッセージに含めて第３のシミュレーション演算部に通知する（ステップＳ４９）。第３のシミュレーション演算部は、ステップＳ４９で送信されたシミュレーションサイクルメッセージを受信するとシミュレーションサイクルをΔ３１からΔ３２に変更しシミュレーションを続ける。
【００４４】
同期整合制御部２は、具体的には、たとえば、以下の式（１）に従ってΔ３２を決定する。
Δ３２  ＝  Δ３１×（（Ｒ３２−Ｒ３１）÷（Ｔ３０２−Ｔ３０１））
÷（（Ｒ１２−Ｒ１１）÷（Ｔ１０２−Ｔ１０１））          …（１）
【００４５】
すなわち、ここでは、Ｔ１０１とＴ１０２の差と自身がそれらを受信した実時間であるＲ１１とＲ１２の差とに基づいて、第１のシミュレーション演算部のシミュレーション時刻のパラメータデータ送信間隔と実時間での第１のシミュレーション演算部のパラメータデータ送信間隔との比を求める。そして、第３のシミュレーション演算部が遅延と判断したときのシミュレーション時刻Ｔ３０２と第３のシミュレーション演算部が遅延通知を送信する前の直近のデータ送信に含まれるＴ３０１と、Ｔ３０２，Ｔ３０１をそれぞれ受信した実時間Ｒ３２と実時間Ｒ３１との差に基づいて、第３のシミュレーション演算部のシミュレーション時刻のパラメータデータ送信間隔と実時間での第３のシミュレーション演算部のパラメータデータ送信間隔との比の推定値を求める。さらに、このように求めたΔ３１に前者の比を乗じて後者の比で除することによるΔ３２をもとめる。
【００４６】
なお、第３のシミュレーション演算部の遅延を正しく反映するには、前者の比を求める際に、Ｔ３０２ではなく第３のシミュレーション演算部が次にパラメータを出力するＴ３０３を用いることが理想である。しかし、図３の例では、Ｔ１０２を含むデータメッセージ通知を受信し、遅延と判定して遅延通知を送信する時点で次のパラメータデータの出力が終了していないため、Ｔ３０３ではなく遅延を通知するために用いたＴ３０１を用いている。Ｔ１０２を含むデータメッセージ通知を受信してから、遅延通知を送信するまでに自身のパラメータデータの送信があった場合には、遅延通知にはＴ３０２ではなくＴ３０３を送信し、以下の式（２）に基づいてΔ３２を算出する。
Δ３２  ＝  Δ３１×（（Ｒ３２−Ｒ３１）÷（Ｔ３０３−Ｔ３０１））
÷（（Ｒ１２−Ｒ１１）÷（Ｔ１０２−Ｔ１０１））          …（２）
【００４７】
また、第３のシミュレーション演算部が、Ｔ１０２とＴ３０１に基づいて遅延と判断した後に、次の自身のパラメータデータの送信（Ｔ３０３）を待ってから、その送信時刻を含めて遅延通知を送信するようにしてもよい。その場合は、式（２）に従った算出を行えばよい。
【００４８】
図３の説明に戻ると、同期整合制御部２は、実時間Ｒ１３に、シミュレーション時刻Ｔ１０３とシミュレーションサイクルΔ１１を含むパラメータデータを第１のシミュレーション演算部から受信し、Ｔ１０３とΔ１１を時刻記録部２５に保持する。そして、同期整合制御部２は、シミュレーション時刻Ｔ１０３を含むデータメッセージ通知を第２のシミュレーション演算部と第３のシミュレーション演算部へ通知する（ステップＳ５０，Ｓ５１）。
【００４９】
ここで、第２のシミュレーション演算部の負荷が上昇したとする。第２のシミュレーション演算部は、シミュレーション時刻Ｔ１０３を含むデータメッセージ通知を受信すると、Ｔ１０３とＴ２０２の差が所定の範囲を超えているために自身の演算が遅延していると判断し、遅延と判断したときのシミュレーション時刻Ｔ２０３を含む遅延通知を同期整合制御部２に送信する（ステップＳ５２）。
【００５０】
同期整合制御部２は、実時間Ｒ２３に、第２のシミュレーション演算部からシミュレーション時刻Ｔ２０３を含む遅延通知を受信すると、時刻同期部２６が、第２のシミュレーション演算部の変更後のシミュレーションサイクルΔ２２を決定し、Δ２２をシミュレーションサイクルメッセージに含めて第２のシミュレーション演算部に通知する（ステップＳ５３）。第２のシミュレーション演算部は、ステップＳ５３で送信されたシミュレーションサイクルメッセージを受信するとシミュレーションサイクルをΔ２１からΔ２２に変更しシミュレーションを続ける。
【００５１】
Δ２２の決定方法は、上記のΔ３２の決定方法と同様であるが、たとえば、上記の（１）と同様に、第２のシミュレーション演算部が、次のパラメータデータの送信をまたずに遅延通知を送信する場合には、以下の式（３）に従って算出する。
Δ２２  ＝  Δ２１×（（Ｒ２３−Ｒ２２）÷（Ｔ２０３−Ｔ２０２））
÷（（Ｒ１３−Ｒ１２）÷（Ｔ１０３−Ｔ１０２））          …（３）
【００５２】
また、たとえば、上記の（２）の場合と同様に、次の自身のパラメータデータの送信（Ｔ２０４）を待ってから、その送信時刻を含めて遅延通知を送信する場合は、以下の式（４）に従った算出を行えばよい。
Δ２２  ＝  Δ２１×（（Ｒ２３−Ｒ２２）÷（Ｔ２０４−Ｔ２０２））
÷（（Ｒ１３−Ｒ１２）÷（Ｔ１０３−Ｔ１０２））          …（４）
【００５３】
一方、第３のシミュレーション演算部は、シミュレーションサイクルをΔ３２として演算を続けており、シミュレーション時刻Ｔ３０２に、その時点の演算結果に基づいてＴ３０３とその時点のシミュレーションサイクルΔ３２を付加したパラメータデータを同期整合制御部２に通知する（ステップＳ５４）。また、第２のシミュレーション演算部は、シミュレーションサイクルをΔ２２として演算を続けており、シミュレーション時刻Ｔ２０４に、その時点の演算結果に基づいてＴ２０４とその時点のシミュレーションサイクルΔ２２を付加したパラメータデータを同期整合制御部２に通知する（ステップＳ５５）。
【００５４】
なお、本実施の形態では、パラメータデータの送信時にシミュレーション時刻とシミュレーションサイクルを含む制御情報を付加して送信するようにしたが、これに限らず、各シミュレーション演算部は、パラメータデータの送信とは別に自身のシミュレーション時刻とシミュレーションサイクルを同期制御部に通知するようにしてもよい。また、同期制御部２は、シミュレーション演算に対して、パラメータデータの送信とは別に、送信先以外のシミュレーション演算部のシミュレーション時刻（またはシミュレーション基準時刻）と送信先のシミュレーション演算部のシミュレーションサイクルを通知するようにしてもよい。
【００５５】
なお、本実施の形態では、同期整合制御部２が、各シミュレーション演算部のシミュレーション時刻を管理するようにしたが、同期整合制御部２を経由せずに、シミュレーション演算部同士が自身のシミュレーション時刻を送受信することにより、他のシミュレーション演算部のシミュレーション時刻を知るようにしてもよい。この場合、他のシミュレーション演算部のシミュレーション時刻を受信した場合に、上述と同様に自身のシミュレーション時刻と比較することにより遅延を判定し、遅延している場合には、自身のシミュレーションサイクルを変更するようにすればよい。
【００５６】
以上のように、同期整合制御部２は、シミュレーションサイクルを変更する。また、変更により処理が遅れていたシミュレーション演算部の演算が進みすぎないよう、図２のステップＳ２９で述べたように、シミュレーションサイクルを縮小する。その際、たとえば、そのシミュレーション演算部のシミュレーション時刻（たとえば、Ｔ３０３）をシミュレーション基準時刻（Ｔ１０３）と比較し、シミュレーション時刻がシミュレーション基準時刻より進んだ場合（たとえば、Ｔ３０３＞Ｔ１０３）には、そのシミュレーション演算部のシミュレーションサイクルを縮小する。縮小したシミュレーションサイクルの方法としては、たとえば、拡大の方法と同様に、算出対象のシミュレーション演算部のパラメータデータの出力間隔と基準となる第１のシミュレーション演算部のパラメータデータの出力間隔などに基づいて算出する。
【００５７】
以上のように、本実施の形態では、シミュレーション演算部１−１〜１−Ｎがそれぞれ自身の演算の進行度合いを示すシミュレーション時刻を送信し、各シミュレーション演算部は、同期整合制御部２経由で、その時刻と自身のシミュレーション時刻を比較し、両時刻に所定の範囲以上の差がある場合には、遅延していると判断して同期整合制御部２に遅延通知を送信するようにした。そして、同期整合制御部２は、遅延通知を受信すると送信元のシミュレーション演算部のシミュレーションサイクルを拡大し、遅れていたシミュレーション演算部の処理が進みすぎた場合にはシミュレーションサイクルを縮小するようにした。このため、シミュレーション演算部間に負荷の偏りが生じた場合に、システム全体の計算時間を効率よく短縮することができる。
【００５８】
実施の形態２．
図４は、本発明かかる時刻同期制御方法の実施の形態２の処理手順の一例を示すシーケンス図である。本実施の形態の統合シミュレーションシステムの構成は実施の形態１と同様である。以下、実施の形態１と異なる部分について説明する。
【００５９】
図４は、実施の形態１の図２と同様の構成で、図２の例と同様に第２のシミュレーション演算部に遅延が生じる例のシーケンスを示している。図４のステップＳ１１〜ステップＳ２６は、実施の形態１と同様である。図４の例では、実施の形態１と異なり、シミュレーションＴ２０３で第２のシミュレーション演算部がパラメータデータを送信する前に、第１のシミュレーション演算部がシミュレーション時刻Ｔ１０４にパラメータデータを送信する。
【００６０】
ステップＳ１１〜ステップＳ２６の後、第１のシミュレーション演算部は、シミュレーション時刻Ｔ１０４に、Ｔ１０４とΔｔ１を含む制御情報を付加したパラメータデータを送信する（ステップＳ６１）。同期整合制御部２は、そのデータからパラメータデータを抽出し、抽出したパラメータデータにＴ１０４とΔｔ３を含むデータメッセージ通知を第２のシミュレーション演算部に通知する（ステップＳ６２）。
【００６１】
第２のシミュレーション演算部は、受信したデータメッセージに含まれるシミュレーション時刻Ｔ１０４と進行を確認している自身のシミュレーション時刻Ｔ２０２とを比較し、両者の差が所定の範囲以内であると判断した場合には、第２のシミュレーション演算部は自身の遅延が回復していると判断し、遅延回復通知を同期整合制御部２へ送信する（ステップＳ６３）。このとき、遅延回復通知には、Ｔ２０２とシミュレーションサイクルΔｔ３を含ませることとする。
【００６２】
同期整合制御部２は、遅延回復通知を受信すると、実施の形態１で第２のシミュレーション演算部からシミュレーション時刻Ｔ２０３のデータを受信したとき（ステップＳ２７）と同様に、第２のシミュレーション演算部が同期範囲内になったと判断し、時刻記録部２５が保持する第２のシミュレーション演算部のシミュレーションサイクルを、Δｔ３より小さな値のシミュレーションサイクルΔｔ４に変更し、変更を通知するシミュレーションサイクルメッセージを生成して、第２のシミュレーション演算部に通知する（ステップＳ６４）。Δｔ４の算出方法は、実施の形態１と同様である。また、このとき送信するシミュレーションサイクルメッセージは実施の形態１のステップＳ２９で送信するシミュレーションサイクルメッセージと同様である。
【００６３】
第２のシミュレーション演算部は、ステップＳ６４で送信されたシミュレーションサイクルメッセージ通知を受信すると、そのメッセージに基づいてシミュレーションサイクルをΔｔ３からΔｔ４に変更し、シミュレーション演算を続ける。そして、第２のシミュレーション演算部では、Ｔ２０３に、パラメータ生成部１３が、その時点のモデル計算部１１の演算結果からパラメータデータを抽出し、シミュレーション時刻Ｔ２０３値とその時点でのシミュレーションサイクルΔｔ４の値とを含む制御情報を付加して、データ出力部１５から制御情報付加後のパラメータデータを同期整合制御部２へ送信する（ステップＳ６５）。
【００６４】
同期整合制御部２は、ステップＳ６５で送信されたパラメータデータに含まれるＴ２０３と宛先のシミュレーション演算部のシミュレーションサイクルΔｔ１とを含むデータメッセージを第１のシミュレーション演算部に通知する（ステップＳ６６）。以上述べた以外の本実施の形態の動作は実施の形態１と同様である。
【００６５】
以上のように、本実施の形態では、処理の遅延によりシミュレーションサイクルを拡大したシミュレーション演算部が、同期整合制御部２から他のシミュレーション演算部のシミュレーション時刻を含むデータメッセージ通知を受信した場合に、そのメッセージに含まれるシミュレーション時刻と自身のシミュレーション時刻を比較し、その差が所定の範囲内になった場合には遅延回復通知を同期整合制御部２に送信するようにした。そして、同期整合制御部２は遅延回復通知を受信すると、その通知の送信元のシミュレーションサイクルを縮小するようにした。このため、実施の形態１と同様に、シミュレーション演算部間に負荷の偏りが生じた場合に、統合シミュレーションシステム全体の計算時間を効率よく加速することができる。
【産業上の利用可能性】
【００６６】
以上のように、本発明にかかる統合シミュレーションシステムおよび同期制御方法は、複数のシミュレーション演算部を備え分散処理を行うシステムに有用であり、特に、シミュレーション演算部間で負荷のばらつきが生じるシステムに適している。
【図面の簡単な説明】
【００６７】
【図１】本発明にかかる統合シミュレーションシステムの実施の形態１の構成例を示す図である。
【図２】実施の形態１の時刻同期制御手順の一例を示すシーケンス図である。
【図３】シミュレーションサイクルの変更制御処理の手順の一例を示すシーケンス図である。
【図４】実施の形態２の時刻同期制御方法の処理手順の一例を示すシーケンス図である。
【符号の説明】
【００６８】
１−１〜１−Ｎ  シミュレーション演算部
２  同期整合制御部
１１  モデル計算部
１２  時刻制御部
１３  パラメータ生成部
１４，２１  データ入力部
１５，２２  データ出力部
２３  パラメータ情報処理部
２４  時刻監視部
２５  時刻記録部
２６  時刻同期部
２７  メッセージ生成部
【図１】
2010134722.tif 000003
【図２】
2010134722.tif 000004
【図３】
2010134722.tif 000005
【図４】
2010134722.tif 000006