以下に、本発明にかかる統合シミュレーション装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明にかかる統合シミュレーション装置の実施の形態1の構成例を示す図である。図1の統合シミュレーション装置は、同期整合制御部1と、複数のシミュレーション演算部(第1シミュレーション演算部10−1〜第Nシミュレーション演算部10−N(N=1,2,…))とを備えている。
同期整合制御部1は、シミュレーション演算部間での時間的な同期を制御する。また、この制御を実現するための構成として、データ入力部2と、パラメータ情報処理部3と、時刻監視部4と、時刻記録部5と、時刻同期部6と、メッセージ生成部7と、データ出力部8とを備える。なお、時刻監視部4、時刻記録部5および時刻同期部6が分割サイズ決定手段を構成し、メッセージ生成部7が分割サイズ通知手段を構成する。
同期整合制御部1において、データ入力部2は、各シミュレーション演算部から送信されるメッセージを受信する。パラメータ情報処理部3は、データ入力部2が受信したメッセージからその送信元のシミュレーション演算部の識別情報(以下、この識別情報を「送信元演算部情報」と記載する)、宛先のシミュレーション演算部の識別情報(以下、この識別情報を「宛先演算部情報」と記載する)、および送信元のシミュレーション演算部が算出したパラメータデータ(以下、単に「パラメータ」と記載する)を抽出してこれらをメッセージ生成部7に渡す。ここで、パラメータとは、各シミュレーション演算部の間で共有することが必要な情報である。
時刻監視部4は、データ入力部2が各シミュレーション演算部から受信したメッセージに含まれている、当該メッセージの送信元のシミュレーション演算部についてのシミュレーション時刻の情報(シミュレーション演算部における演算処理の進行度を示す情報)を取得し、各シミュレーション演算部の演算処理(シミュレーション)の進行度を監視する。進行度の監視動作を具体的に示すと、まず、受信メッセージからシミュレーション時刻情報を抽出する。そして、当該抽出したシミュレーション時刻情報を、当該受信メッセージの送信元シミュレーション演算部とは異なるシミュレーション演算部から取得し、時刻記録部5に保持させておいたシミュレーション時刻情報と比較することにより進行度を監視する。なお、比較結果は時刻同期部6に渡される。また、時刻監視部4は、上記受信メッセージから上記シミュレーション時刻の情報とともに送信元演算部情報を抽出し、抽出した情報(シミュレーション時刻情報,送信元演算部情報)を時刻記録部5に記憶させる。
時刻記録部5は、シミュレーション時刻情報および送信元演算部情報を時刻監視部4から受け取った場合、これらを関連付けて保持しておく。
時刻同期部6は、各シミュレーション演算部の処理の進行度にあわせて、シミュレーションモデル座標(空間)における分割領域のサイズ(以下、分割サイズと記載する)を設定する。具体的には、時刻監視部4から受け取った比較結果に基づいて各シミュレーション演算部での演算負荷に差があるかどうかを判断し、判断結果に基づいて、各シミュレーション演算部におけるシミュレーションが同期を維持しつつ実行されるように(各シミュレーションの進行度が同等となるように)シミュレーションモデル座標の分割サイズを決定する。なお、決定結果はメッセージ生成部7に渡される。
ここで、分割領域とは、シミュレーション演算部の演算対象であるシミュレーションモデル座標を分割して得られる単位領域であり、本実施の形態の各シミュレーション演算部は、同一単位領域内では、演算に用いる値は同一とみなして処理を実行する。
メッセージ生成部7は、パラメータ情報処理部3から受け取った宛先演算部情報および送信元演算部情報をそれぞれ宛先アドレスおよび送信元アドレスに設定し、パラメータ情報処理部3から受け取ったパラメータおよび時刻同期部6から受け取った分割サイズ情報を含んだメッセージを生成する。データ出力部8は、メッセージ生成部7にて生成されたメッセージをその宛先のシミュレーション演算部に向けて送信する。
一方、第1シミュレーション演算部10−1〜第Nシミュレーション演算部10−Nは、分散処理を行うシミュレータである。各シミュレーション演算部は、同一の構成をとり、データ入力部11、時刻制御部12、モデル計算部13、パラメータ生成部14およびデータ出力部15を備える。また、各シミュレーション演算部の動作は同じである。そのため、以下の説明において、各シミュレーション演算部で共通の部分についてはシミュレーション演算部を特定せずに説明を行う。なお、時刻制御部12がシミュレーション時刻通知手段を構成する。
各シミュレーション演算部において、データ入力部11は、他のシミュレーション演算部から送信されたメッセージを同期整合制御部1経由で受信する。時刻制御部12は、モデル計算部13によるモデル計算(シミュレーション)の進捗を監視し、予め設定されていた条件を満たした場合に、当該シミュレーションの進捗(進行度)を示すシミュレーション時刻を同期整合制御部1経由で他のシミュレーション演算部へ通知する。また、同期整合制御部1からシミュレーションモデル座標の分割サイズを通知された場合、通知された分割サイズでシミュレーションモデル座標モデルを分割した上でモデル計算を行うように、モデル計算部13に対して指示を出す。
モデル計算部13は、他のシミュレーション演算部から通知されるメッセージ中のパラメータを利用し、位置座標を考慮したモデル計算(シミュレーション)を行う。このとき、時刻制御部12経由で同期整合制御部1から通知された分割サイズに従ってシミュレーションモデル座標を分割した上でモデル計算を行う。なお、位置座標を考慮したモデル計算では、シミュレーションモデル座標の分割サイズに応じてシミュレーション精度と計算量(シミュレーション速度)が変動し、このサイズが大きいほど、シミュレーション精度は低くなるが、計算量が少なくなりシミュレーション速度は速くなる。また、予め設定されていた条件を満たした場合(たとえば、指定されていた処理が完了した場合)、その旨を時刻制御部12へ通知する。
パラメータ生成部14は、他のシミュレーション演算部に通知するパラメータを生成する。データ出力部15は、シミュレーション時刻,分割領域,パラメータなどの情報を含んだメッセージを生成し、他のシミュレーション演算部へ同期整合制御部1経由で送信する。
図2−1および図2−2は、シミュレーションモデル座標における分割領域概念を示す図であり、3次元のシミュレーションモデル座標を均等な領域に分割する場合の例を示している。図2−1に示すように、X−Y平面で見るとX軸方向は分割サイズΔX,Y軸方向は分割サイズΔYに分割され、図2−2に示すように、X−Z平面で見るとZ軸方向は分割サイズΔZに分割される。本実施の形態では、分割領域(分割サイズ)は、X軸方向分割サイズ,Y軸方向分割サイズ,Z軸方向分割サイズによって規定する。
つづいて、以上のように構成された統合シミュレーション装置の動作について説明する。この統合シミュレーション装置において、各シミュレーション演算部は、位置座標を考慮してモデル計算(シミュレーション)を行うものであり、シミュレーション時刻を個別に管理し、その進行に合わせて、各シミュレーションモデルのシミュレーションを個別に行う。なお、モデル計算部13は、同期整合制御部1から指定された分割サイズでシミュレーションモデル座標(空間)を分割し、得られた各単位領域(分割領域)内では計算に用いる値がすべて同一とみなした上でシミュレーションを行う。また、モデル計算部13は、図示していない記憶部に予め格納されたシナリオに従ってシミュレーションを行う。このとき、モデル計算部13は、他のシミュレーション演算部から通知されるパラメータを利用しながらシミュレーションを行う。すなわち、各シミュレーション演算部におけるシミュレーションの進行度が大きく異なる場合には、シミュレーションに必要なパラメータがすべて揃うまでの時間が長くなり、全体のシミュレーション進行速度が低下してしまう。そのため、各シミュレーション演算部が同期を維持しながら(進行度の差が大きくなるのを回避しながら)シミュレーションを行うことにより、所要時間が短縮化された効率的なシミュレーションが実現される。
また、各シミュレーション演算部の時刻制御部12は、予め指定された条件を満たすまでの処理をモデル計算部13が完了したかどうかを監視し、完了した場合には、その時点のシミュレーション時刻を同期整合制御部1へ通知する。なお、各シミュレーション演算部から同期整合制御部1へ通知されるシミュレーション時刻の差(ずれ量)が少ない場合(すれ量が一定量以内の場合)、「同期がとれている」といえる。シミュレーション時刻とは仮想的な時刻情報であり、たとえば、実行すべき処理全体に対して現在どの程度まで処理が完了しているかを示す情報である。各シミュレーション演算部が、処理全体に対してm%の処理を完了するごとに、完了した処理の割合(またはこれに相当する情報)をシミュレーション時刻として通知するように設定しておけば、同期整合制御部1は、各シミュレーションの同期状態(各シミュレーションの進行度に大きな差があるかどうか)を判定できる。また、一定周期ごとにシミュレーション時刻を通知するようにしておけば、各シミュレーション演算部から通知されたシミュレーション時刻同士を比較することにより、どのシミュレーション演算部におけるシミュレーションの進行度が大きいのかが分かる。
同期整合制御部1は、各シミュレーション演算部から通知されてくるシミュレーション時刻に基づいて、各シミュレーション演算部におけるシミュレーションの同期がとれているかどうか、すなわち、他のシミュレーション演算部と比較してシミュレーションの進行度が異なるシミュレーション演算部が存在するかどうかを判定し、各シミュレーション演算部がそれぞれのシミュレーションモデル座標を分割する際の分割サイズを当該判定結果に基づいて決定する。たとえば、他と比較してシミュレーションの進行度が遅れている(シミュレーション速度が遅い)シミュレーション演算部が存在する場合、その進行度が他と比較して早く進むように考慮して分割サイズを決定する。具体的には、シミュレーション速度が遅いシミュレーション演算部の分割サイズがそれまで使用していた分割サイズよりも大きくなるようにする。決定した分割サイズは、該当するシミュレーション演算部(シミュレーション速度が遅いシミュレーション演算部)へ通知する。ここでは他と比較してシミュレーション速度の遅いシミュレーション演算部が存在する場合の例について示したが、他と比較してシミュレーション速度の速いシミュレーション演算部が存在する場合には、逆の制御(分割サイズが他のシミュレーション演算部の分割サイズよりも小さくなるようにする制御)を行う。同期整合制御部1は、このような制御を行うことにより、各シミュレーション演算部におけるシミュレーションの進行度が同じとなるようにする(シミュレーション演算部間の時間的な同期が維持されるようにする)。
以下、本実施の形態の統合シミュレーション装置における各シミュレーション演算部の同期制御動作について、図1を参照しつつ図3を用いて説明する。なお、説明を簡単化するため、シミュレーション演算部が2つの場合の同期制御動作について示す。図3は、実施の形態1の同期整合制御部1による各シミュレーション演算部の同期制御動作の一例を示すシーケンス図である。
ここで、同期整合制御部1が各シミュレーション演算部の同期がとれているかどうかを判定する方法について示す。各シミュレーション演算部は、シミュレーションを行う際に使用するシナリオに従い、所定の処理(シナリオ内で予め指定された処理)が完了すると、その時点のシミュレーション時刻を他のシミュレーション演算部に対して通知する。このシナリオ内の予め指定しておく処理は、各シミュレーション演算部におけるシミュレーションの進行度を同期整合制御部1が認識するために利用するものであり、各シミュレーション演算部における進行度が同じ場合には同じシミュレーション時刻が通知されるように考慮して指定されるものである。
そして、同期整合制御部1は、シミュレーション時刻を通知された場合、このシミュレーション時刻を、その通知元のシミュレーション演算部とは異なるシミュレーション演算部から以前(前回)に通知され、記憶しておいたシミュレーション時刻(比較対象時刻と呼ぶ)と比較し、通知されたシミュレーション時刻が比較対象時刻よりも進んでいた場合、同期が維持されていると判定する。一方、比較対象時刻よりも遅れている場合には同期が維持されていない(シミュレーション速度が遅く、シミュレーションの進行度に大幅な遅れが生じている)と判定する。
このような判定方法を利用した制御動作である図3に示した制御動作について説明する。図3の例では、第1シミュレーション演算部10−1でのシミュレーション時刻が時刻T101になったときに、当該第1シミュレーション演算部10−1がシミュレーション時刻T101の情報とパラメータとを含んだメッセージを生成し、第2シミュレーション演算部10−2宛に送信する。なお、このメッセージは、同期整合制御部1により一旦受信され、必要に応じて制御情報などが追加された後、宛先である第2シミュレーション演算部10−2へ転送される。ただし、第1シミュレーション演算部10−1(モデル計算部13)は、この時点でモデル計算を一旦停止することなく、または、所定の短い期間だけモデル計算を停止した後、後続のモデル計算を実施する。これは、他のシミュレーション演算部(第2シミュレーション演算部10−2)においても同様である。すなわち、各シミュレーション演算部は、他のシミュレーション演算部におけるシミュレーション(モデル演算)の進行度を考慮することなく、シミュレーションを行う。
図3においては、第1シミュレーション演算部10−1から送信され同期整合制御部1に到達する前のメッセージを「データ送信」と表記し、同期整合制御部1により転送された後のメッセージを「データメッセージ通知」と表記している。同様に、第2シミュレーション演算部10−2から送信され同期整合制御部1に到達する前のメッセージおよび同期整合制御部1から第1シミュレーション演算部10−1へ転送されたメッセージもそれぞれ、「データ送信」および「データメッセージ通知」と表記している。
シミュレーション時刻T101の情報(以下、「シミュレーション時刻T○○○の情報」を単に「時刻T○○○情報」と記載する)を含んだデータ送信を受信した同期整合制御部1では、時刻監視部4が、メッセージ中の時刻T101情報をその送信元の識別情報(第1シミュレーション演算部10−1の識別情報)と関連付けて時刻記録部5(図1参照)に保存する。また、時刻監視部4は、それ以前に第2シミュレーション演算部10−2から取得したシミュレーション時刻の情報を時刻記録部5が保持している場合、その情報と今回取得した時刻T101情報を比較し、比較結果を時刻同期部6へ通知する。ただし、図3の例ではこの時点で第2シミュレーション演算部10−2から取得したシミュレーション時刻を保持していないため、その旨を時刻同期部6へ通知する。時刻同期部6は、通知された比較結果(または比較対象が存在しないことを示す情報)に基づいて、第1シミュレーション演算部10−1の演算負荷と第2シミュレーション演算部10−2の演算負荷との間に差があるかどうか(すなわち同期がとれた状態かどうか)を判定し、さらに、判定結果に基づいて上記第1シミュレーション演算部10−1へ次回通知する分割サイズ(シミュレーションモデル座標における分割領域のサイズ)を決定する。なお、比較対象が存在しない旨が通知されたため、時刻同期部6は、各シミュレーション演算部の演算負荷の間に差があるかどうか判定できないが、この場合は差がないとみなして処理を継続する。各演算負荷に差がない場合、時刻同期部6は、分割サイズを変更しない(それまでと同じ分割サイズを継続して使用させる)ことに決定する。時刻同期部6は、この決定結果(第1シミュレーション演算部10−1の分割サイズ)を記憶しつつ、その時点で保持している第2シミュレーション演算部10−2の分割サイズ情報をメッセージ生成部7に渡す。
また、パラメータ情報処理部3は、上記受信メッセージに設定された送信元および宛先のシミュレーション演算部の識別情報と当該受信メッセージに含まれるパラメータを抽出し、抽出した各識別情報とパラメータをメッセージ生成部7に渡す。メッセージ生成部7は、パラメータ情報処理部3から受け取った各識別情報およびパラメータと、時刻同期部6から受け取った分割サイズ情報と、を利用してメッセージを生成し、データ出力部8は、当該生成されたメッセージをデータメッセージ通知として第2シミュレーション演算部10−2へ送信する。このデータメッセージ通知を受信した第2シミュレーション演算部10−2は、以降、受信した分割サイズ情報が示す分割サイズでシミュレーションモデル座標を分割してシミュレーションを行う。
一方、第2シミュレーション演算部10−2においても、上述した第1シミュレーション演算部10−1と同様の処理が並行して実行され、その結果、時刻T201情報を含んだデータ送信が行われる。
ここで、図3で示したシミュレーション時刻T10X(X:1,2,3,…)とT20Y(Y:1,2,3,…)の関係について説明する。図3で示したシミュレーション時刻において、XおよびYは対応するシミュレーション演算部のシミュレーションの進行度を示し、以下の関係が成り立つものとする。
X>Yの場合、T10Xの進行度の方が大きい(T10X>T20Y)
X<Yの場合、T20Yの進行度の方が大きい(T10X<T20Y)
X=Yの場合、T20Yの進行度の方が大きい(T10X<T20Y)
時刻T201情報を含んだデータ送信を受信した同期整合制御部1は、受信した時刻T201情報、および既に受信し保持しておいた時刻T101情報に基づいて、第1シミュレーション演算部10−1の演算負荷と第2シミュレーション演算部10−2の演算負荷との間に差があるかどうかを判定し、さらに、判定結果に基づいて、上記時刻T201情報を含んだデータ送信の送信元である第2シミュレーション演算部10−2へ次回通知する分割サイズを決定する。具体的には、まず時刻監視部4が、各シミュレーション時刻(T101およびT201)を比較し、つぎに時刻同期部6が当該比較結果から各シミュレーション演算部の演算負荷に差があるかどうかを判定し、判定結果に基づいて分割サイズを決定する。ここでは、時刻T201>時刻T101であるため各シミュレーション演算部の演算負荷には差がないと判定する。そしてこの場合、分割サイズを変更しないことに決定する。なお、決定結果(分割サイズの情報)は、時刻同期部6で保持しておく。また、メッセージ生成部7で生成され、データメッセージ通知として送信されるメッセージには、それ以前に決定し保持しておいた第1シミュレーション演算部10−1の分割サイズ情報を含める。このデータメッセージ通知を受信した第1シミュレーション演算部10−1は、以降、受信した分割サイズ情報が示す分割サイズでシミュレーションモデル座標を分割してシミュレーションを行う。
以後、第1シミュレーション演算部10−1および第2シミュレーション演算部10−2は、自身が管理するシミュレーション時刻を進めながら上述した処理を継続して行い、対向するシミュレーション演算部に向けて所定のタイミングで、シミュレーション時刻情報を含んだデータ送信を行う。また同期整合制御部1は、データ送信を受信すると、上述した処理を実行し、各シミュレーション演算部に通知する分割サイズを決定する。
図3に示した例では、第1シミュレーション演算部10−1から時刻T102情報を受け取ると、同期整合制御部1は、それ以前に第2シミュレーション演算部10−2から通知されたシミュレーション時刻の中の最新のものである時刻T201と時刻T102を比較する。そして、時刻T102>時刻T201、すなわち今回受け取った時刻T102の方が大きいため、各シミュレーション演算部の演算負荷には差がないと判定し、分割サイズの変更は行わない。
その後、さらに第1シミュレーション演算部10−1から時刻T103情報を受け取ると、同期整合制御部1は、それ以前に第2シミュレーション演算部10−2から通知されたシミュレーション時刻の中の最新のものである時刻T201と時刻T103を比較する。そして、時刻T103>時刻T201、すなわち今回受け取った時刻T103の方が大きいため、各シミュレーション演算部の演算負荷には差がないと判定し、分割サイズの変更は行わない。
その後、第2シミュレーション演算部10−2から時刻T202情報を受け取ると、同期整合制御部1は、それ以前に第1シミュレーション演算部10−1から通知されたシミュレーション時刻の中の最新のものである時刻T103と時刻T202を比較する。そして、時刻T103>時刻T202、すなわち今回受け取った時刻T202の方が小さいため、第2シミュレーション演算部10−2の演算負荷の方が高い状態になっていると判定する。この結果、第2シミュレーション演算部10−2に通知する分割サイズをそれ以前に通知したサイズよりも大きくする。また、サイズ変更を行ったことと変更後の分割サイズを記憶する。ただし、この時点では、この変更結果は第2シミュレーショ演算部10−2へ通知されないため、第2シミュレーション演算部10−2はそれまでと同じシミュレーション速度で処理を継続することとなる。
その後、第1シミュレーション演算部10−1から時刻T104情報を受け取ると、同期整合制御部1は、それ以前に第2シミュレーション演算部10−2から通知されたシミュレーション時刻の中の最新のものである時刻T202と時刻T104を比較する。そして、時刻T104>時刻T202、すなわち今回受け取った時刻T104の方が大きいため、各シミュレーション演算部の演算負荷には差がないと判定する。ただし、前回の判定処理において演算負荷に差があると判定し、分割サイズを変更していたため、前回決定した分割サイズ(以前よりも大きな分割サイズ)で処理を行うように指示する情報を含んだメッセージを生成し、データメッセージ通知として第2シミュレーション演算部10−2へ送信する。分割サイズの変更指示は、たとえば、予め定義しておいた拡大フラグを利用して行う。
上記分割サイズの変更指示を受けた第2シミュレーション演算部10−2は、指示内容に従い、それまで使用していたX方向分割サイズΔx,Y方向分割サイズΔy,Z方向分割サイズΔzをそれぞれ拡大し、ΔX,ΔY,ΔZへと変更する。この結果、第2シミュレーション演算部10−2におけるシミュレーション速度が上がり、時刻T203情報の送信処理および時刻T204情報の送信処理を短期間で実施することとなる。
なお、第2シミュレーション演算部10−2から送信された時刻T203情報を受信した場合、同期整合制御部1は、各シミュレーション演算部の演算負荷に差があるかどうかの判定処理で、T104>T203であることから第2シミュレーション演算部10−2の演算負荷の方が高い状態になっていると判定するが、前回第2シミュレーション演算部10−2からシミュレーション時刻情報(時刻T202情報)を受け取った際にも同じ判定結果を得ているため、ここでは、第2シミュレーション演算部10−2に通知する分割サイズを変更しない。ただし、これはあくまで一例であり、この時点でさらに分割サイズを変更(大きくする)ようにしても構わない。この場合、時間的な同期のずれを短時間で解消させることが可能となる。また、分割サイズをさらに大きくする場合、直前(前回)と同程度の変更量にするのではなく変更量を抑えるようにしてもよい。変更量を抑えることにより、時間的な同期のずれが解消されるまでの所要時間は長くなるがシミュレーション速度を必要以上に上げてしまい、逆方向のずれが生じてしまう(速度を上げた側のシミュレーションの進行度が他方と比較して大幅に進行してしまう)のを防止できる。
図3に示した例では、その後、第2シミュレーション演算部10−2から時刻T204情報を受け取ると、同期整合制御部1は、それ以前に第1シミュレーション演算部10−1から通知されたシミュレーション時刻の中の最新のものである時刻T104と時刻T204を比較する。そして、時刻T204>時刻T104、すなわち今回受け取った時刻T204の方が大きいため、各シミュレーション演算部の演算負荷には差がない(演算負荷の差が解消され、同期状態に復帰した)と判定する。そして、第2シミュレーション演算部10−2は、現在シミュレーション速度が上がった状態であるから、これを元のシミュレーション速度で動作させるように制御を行う。すなわち、一旦変更した分割サイズを元の分割サイズに再変更する。ただし、この時点では次の分割サイズ指示タイミングにおいて通知する分割サイズの決定のみを行い、サイズ変更を行ったことと変更後の分割サイズを記憶する。
その後、第1シミュレーション演算部10−1から時刻T105情報を受け取ると、同期整合制御部1は、それ以前に第2シミュレーション演算部10−2から通知されたシミュレーション時刻の中の最新のものである時刻T204と時刻T105を比較する。そして、時刻T105>時刻T204、すなわち今回受け取った時刻T105の方が大きいため、各シミュレーション演算部の演算負荷には差がないと判定する。ただし、前回の判定処理において、分割サイズを変更していたため、前回決定した分割サイズで処理を行うように指示する情報を含んだメッセージを生成し、データメッセージ通知として第2シミュレーション演算部10−2へ送信する。分割サイズの変更指示は、たとえば、予め定義しておいた縮小フラグを利用して行う。
上記分割サイズの変更指示を受けた第2シミュレーション演算部10−2は、指示内容に従い、それまで使用していたX方向分割サイズΔX,Y方向分割サイズΔY,Z方向分割サイズΔZをそれぞれΔz,Δy,Δz(元々使用していたサイズ)に縮小する。この結果、第2シミュレーション演算部10−2におけるシミュレーションの進行度が他と比較して進み過ぎないようにする。
本実施の形態では、説明を簡単化するため、同期制御対象のシミュレーション演算部が2つの場合について説明したが、同期制御対象のシミュレーション演算部が3つ以上の場合でも同様の制御が可能である。また、同期整合制御部1が分割サイズを指示することによりシミュレーション速度を制御する場合について示したが、分割サイズに代えて分割数を指示するようにしても同様の制御が可能である。各方向を同じ分割数で分割する場合には、単一の分割数のみを通知すればよいので通知する情報量を低く抑えることができる。
なお、同期整合制御部1によるシミュレーション時刻を利用して負荷の大小関係を判定する方法は一例であり、他の方法を用いてもよい。たとえば、各シミュレーション演算部から通知されるシミュレーション時刻の差を求め、その変化量(過去に求めた差と今回求めた差の比較結果)から負荷の大小関係を判定するようにしてもよい。この場合、同期のずれ量が比較的小さい段階でシミュレーション速度を制御して同期を維持させるようにすることが可能である。
また、上述した制御では、パラメータを送信するためのメッセージを利用して分割サイズを通知するようにしているが、たとえば分割サイズを通知するためのメッセージを新たに定義し、それを使用して通知してもよい。この場合、演算負荷に差がある(または差がなくなった)と判定後、それに応じた分割サイズに変更するまでの遅延時間を少なくすることができる。
また、説明したとおり、各シミュレーション演算部は、他のシミュレーション演算部におけるシミュレーションの進行度を考慮することなく、同期整合制御部1から指示された分割サイズに応じたシミュレーション速度でシミュレーションを進める。そのため、同期整合制御部1は、各シミュレーション演算部からデータ送信にて受信したシミュレーション時刻の情報をデータメッセージ通知に含めないようにしてもよい(受信したシミュレーション時刻の情報を他のシミュレーション演算部へ転送しなくてもよい)。このようにすることで、同期整合制御部1が各シミュレーション演算部へ送信するデータ量を少なくできる。
このように、本実施の形態の統合シミュレーション装置では、同期整合制御部が、位置座標を考慮したモデル計算を行う各シミュレーション演算部からそれぞれ通知されたシミュレーション時刻を比較することにより各シミュレーション演算部の演算負荷に差があるかどうかを判定し、判定結果に基づいて、各シミュレーション演算部がシミュレーションモデル座標を分割する際の分割サイズを決定するようにした。これにより、各シミュレーション演算部の演算負荷に差がある場合には、高負荷状態となっているシミュレーション演算部の負荷が軽減されるように分割サイズを決定することができる。すなわち、高負荷状態のシミュレーション演算部におけるシミュレーション速度を高めることができ、その結果、シミュレーションの所要時間が短縮される。
実施の形態2.
つづいて、実施の形態2の統合シミュレーション装置について説明する。上述した実施の形態1の統合シミュレーション装置では、同期整合制御部は、各シミュレーション演算部に対して分割サイズの拡大指示情報または縮小指示情報のみを送信し、分割サイズを具体的に指示する情報については送信していなかったため、シミュレーション速度を高精度に制御することが難しかった。そのため、本実施の形態では、シミュレーション速度をより高精度に制御する統合シミュレーション装置について説明する。なお、本実施の形態の統合シミュレーション装置の構成は、実施の形態1の統合シミュレーション装置(図1参照)と同様であり、同期整合制御部1が各シミュレーション演算部におけるシミュレーションモデル座標の分割サイズを指示する際の動作のみが異なる。そのため、本実施の形態では、実施の形態1と異なる部分についてのみ説明する。
図4は、実施の形態2の同期整合制御部1による各シミュレーション演算部の同期制御動作の一例を示すシーケンス図である。この図4と実施の形態1の同期制御処理を示した図3とを比較するとわかるように、本実施の形態の各シミュレーション演算部は、シミュレーション時刻を通知する際にその時点の分割サイズ(図示したΔx,Δy,Δzなど)を併せて通知する。この動作を実現するために、たとえば、各シミュレーション演算部の時刻制御部12は、同期整合制御部1から分割サイズ情報を取得した場合、この情報が示す分割サイズをモデル計算部13へ通知するとともに記憶しておき、シミュレーション時刻を他のシミュレーション演算部へ通知する場合には、その時点で記憶している分割サイズを併せて通知する。また、同期整合制御部1は、各シミュレーション演算部からシミュレーション時刻および分割サイズを通知された場合、実施の形態1と同じ方法で、各シミュレーション演算部の演算負荷に差があるかどうかを判定し、差があると判定した場合には、それ以前に各シミュレーション演算部から通知され、保持しておいた分割サイズを考慮して、新たな分割サイズを決定する。
以下、本実施の形態の統合シミュレーション装置において、同期整合制御部1が各シミュレーション演算部を同期制御する動作について、図1を参照しつつ図4を用いて説明する。なお、説明を簡単化するため、上述した実施の形態1と同様にシミュレーション演算部が2つの場合の同期制御動作について示す。
図4に示した例では、第1シミュレーション演算部10−1でのシミュレーション時刻が時刻T101になったときに、当該第1シミュレーション演算部10−1がシミュレーション時刻の情報である時刻T101情報、その時点で使用している分割サイズの情報(X方向分割サイズΔx,Y方向分割サイズΔy,Z方向分割サイズΔz)およびパラメータを含んだメッセージを生成し、第2シミュレーション演算部10−2宛に送信する。
時刻T101情報および分割サイズ情報を含んだ上記メッセージであるデータ送信を受信した同期整合制御部1では、時刻監視部4が、メッセージ中の時刻T101情報および分割サイズ情報をその送信元の識別情報(第1シミュレーション演算部10−1の識別情報)と関連付けて時刻記録部5に保存する。また、時刻監視部4は、それ以前に第2シミュレーション演算部10−2から取得し時刻記録部5に記憶させておいたシミュレーション時刻の情報と今回取得した時刻T101情報を比較し、比較結果を時刻同期部6へ通知する。ただし、図4の例ではこの時点で第2シミュレーション演算部10−2から取得したシミュレーション時刻を保持していないため、その旨を時刻同期部6へ通知する。時刻同期部6は、通知された比較結果(または比較対象が存在しない旨を示す情報)に基づいて、第1シミュレーション演算部10−1の演算負荷と第2シミュレーション演算部10−2の演算負荷との間に差があるかどうか(すなわち同期がとれた状態かどうか)を判定し、さらに、判定結果および時刻記録部5が保持している第2シミュレーション演算部10−2の分割サイズ情報に基づいて上記受信メッセージの転送先である第2シミュレーション演算部10−2へ通知する分割サイズを決定する。
ただし、図4の例ではこの時点で第2シミュレーション演算部10−2の分割サイズ情報を保持しておらず分割サイズを決定できない。そのため、第2シミュレーション演算部10−2に対して分割サイズを通知しない。すなわち、メッセージ生成部7は、分割サイズ情報を含んでいないメッセージを生成し、それをデータメッセージ通知として第2シミュレーション演算部10−2へ送信する。なお、第2シミュレーション演算部10−2は分割サイズを通知されなかった場合、それまで使用していた分割サイズを引き続き使用することとする。第1シミュレーション演算部10−1も同様に、同期整合制御部1から分割サイズを通知されない場合には、それまで使用していた分割サイズを引き続き使用する。
一方、第2シミュレーション演算部10−2においても、上述した第1シミュレーション演算部10−1と同様の処理が並行して実行され、時刻T201情報および使用している分割サイズ情報を含んだデータ送信を行う。ただし、ここでは、図示したように、時刻T101情報等を含んだデータ送信が、時刻T201情報等を含んだデータ送信よりも先行して行われるものとする。
時刻T201情報および分割サイズ情報を含んだデータ送信を受信した同期整合制御部1は、受信した時刻T201情報、および既に受信し保持しておいた時刻T101情報に基づいて、第1シミュレーション演算部10−1の演算負荷と第2シミュレーション演算部10−2の演算負荷との間に差があるかどうかを判定し、さらに、判定結果に基づいて、上記時刻T201情報を含んだデータ送信の送信元である第2シミュレーション演算部10−2へ次回通知する分割サイズを決定する。具体的には、まず時刻監視部4が、各シミュレーション時刻(T101およびT201)を比較し、つぎに時刻同期部6が当該比較結果から各シミュレーション演算部の演算負荷に差があるかどうかを判定し、さらに、判定結果および上記通知された分割サイズ情報に基づいて、前記時刻T201情報等の送信元シミュレーション演算部に対して通知する分割サイズを決定する。ここでは、時刻T201>時刻T101であるため各シミュレーション演算部の演算負荷には差がないと判定する。そしてこの場合、分割サイズを変更しないことに決定し、それ以前に第1シミュレーション演算部10−1から取得し保持しておいた分割サイズ(分割サイズを複数保持している場合には最新のもの)の情報を含んだメッセージを生成し、データメッセージ通知として送信する。このデータメッセージ通知を受信した受信した第1シミュレーション演算部10−1は、以降、受信した分割サイズ情報が示す分割サイズでシミュレーションモデル座標を分割してシミュレーションを行う。
以後、第1シミュレーション演算部10−1および第2シミュレーション演算部10−2は、自身が管理するシミュレーション時刻を進めながら上述した処理を継続して行い、対向するシミュレーション演算部に向けて所定のタイミングで、シミュレーション時刻情報および分割サイズ情報を含んだデータ送信を行う。また同期整合制御部1は、データ送信を受信すると、上述した処理を実行し、各シミュレーション演算部に通知する分割サイズを決定する。
図4に示した例では、第2シミュレーション演算部10−2から送信された、時刻T202情報および分割サイズ情報(Δx,Δy,Δz)を含んだデータ送信を受信した場合に、同期整合制御部1が特徴的な動作を行う。以下、この動作を具体的に示す。
第2シミュレーション演算部10−2から時刻T202情報および分割サイズ情報を受け取ると、同期整合制御部1は、それ以前に第1シミュレーション演算部10−1から通知されたシミュレーション時刻の中の最新のものである時刻T103と時刻T202を比較し、第2シミュレーション演算部10−2の演算負荷の方が高い状態になっていると判定する。そのため、同期整合制御部1では、第2シミュレーション演算部10−2から取得した分割サイズ情報(Δx,Δy,Δz)が示すサイズよりも大きくなるように、分割サイズを決定し、当該決定した分割サイズ(ΔX,ΔY,ΔZとする)を記憶しておく。また、同期整合制御部1の時刻監視部4では、第2シミュレーション演算部の遅延(演算負荷が高い状態)の継続を測るタイマーをスタートする。
その後、第1シミュレーション演算部10−1から時刻T104情報および分割サイズ情報を受け取ると、同期整合制御部1は、所定の処理(各シミュレーション演算部の演算負荷の差を判定する処理や分割サイズを決定する処理など)を実行後、今回受け取った時刻T104情報とともに、上記記憶しておいた分割サイズ情報(ΔX,ΔY,ΔZ)を第2シミュレーション演算部10−2へ送信する。
上記分割サイズ(ΔX,ΔY,ΔZ)を通知された第2シミュレーション演算部10−2は、通知内容に従い、それまで使用していた分割サイズ(Δx,Δy,Δz)を今回通知された分割サイズ(ΔX,ΔY,ΔZ)に更新する。この結果、第2シミュレーション演算部10−2におけるシミュレーション速度が上がり、時刻T203情報の送信処理および時刻T204情報の送信処理を短期間で実施することとなる。
その後、第2シミュレーション演算部10−2から時刻T204情報を受け取ると、同期整合制御部1は、各シミュレーション演算部の演算負荷には差がない(演算負荷の差が解消され、同期状態に復帰した)と判定する。そして、第2シミュレーション演算部10−2の分割サイズを小さな分割サイズに再変更する。ただし、この時点では次の分割サイズ指示タイミングにおいて通知する分割サイズの決定のみを行い、サイズ変更を行ったことと変更後の分割サイズを記憶する。小さなサイズに変更した後の分割サイズは、上記大きなサイズに変更する前の分割サイズと同じサイズとしてもよいし、異なるサイズとしてもよい。また、第2シミュレーション演算部10−2の遅延継続を測るタイマーを停止する。その後、同期整合制御部1は、第1シミュレーション演算部10−1から時刻T105情報等を含んだデータ送信を受信すると、上記記憶しておいた小さなサイズに変更した後の分割サイズを第2シミュレーション演算部10−2へ通知し、第2シミュレーション演算部10−2は、以降、通知された分割サイズ(それまで使用していたものよりも小さい値の分割サイズ)に従いシミュレーションを行う。
なお、図4に示した例では、各シミュレーション演算部の演算負荷の差が比較的小さく、演算負荷の異なる状態が速やかに回復するシーケンスを示しているが、演算負荷の差が大きい場合には、以下のような制御を行う。
同期整合制御部1は、たとえば第2シミュレーション演算部10−2の演算負荷が大きい状態であることを検出後、第2シミュレーション演算部10−2から受信したシミュレーション時刻が引き続き第1シミュレーション演算部10−1から受信したシミュレーション時刻より遅れている(演算負荷の大きい状態が継続している)場合、第2シミュレーション演算部10−2の遅延の継続を測るタイマーを加算し、このタイマー値に比例させて分割サイズ(ΔX,ΔY,ΔZ)を徐々に大きくする。この制御をタイマーがストップするまで繰り返す。すなわち、同期整合制御部1は、演算負荷の大きい状態が解消するまで、第2シミュレーション演算部10−2のシミュレーション速度を段階的に上げていく。
この場合、同期整合制御部1が演算負荷の高くなったシミュレーション演算部の負荷の差の度合いを監視しながら分割サイズを拡大していくので、演算負荷の高くなったシミュレーション演算部のシミュレーション進行速度を速やかに上げることができる。
なお、実施の形態1で示した統合シミュレーション装置の同期整合制御部1に対して同様の制御を適用することも可能である。すなわち、演算負荷の大きい状態(高負荷状態)が解消するまでの時間を監視し、高負荷状態の継続時間に応じて分割サイズを決定するようにしてもよい。
このように、本実施の形態の統合シミュレーション装置では、同期整合制御部が、各シミュレーション演算部からシミュレーション時刻およびその時点で使用している分割サイズの通知を受け、通知された各シミュレーション時刻を比較することにより各シミュレーション演算部の演算負荷に差があるかどうかを判定し、判定結果に基づいて、各シミュレーション演算部がシミュレーションモデル座標を分割する際の分割サイズを決定するようにした。これにより、各シミュレーション演算部の演算負荷に差がある場合には、各シミュレーション演算部から通知された分割サイズを考慮した上で高負荷状態となっているシミュレーション演算部の負荷が軽減されるように分割サイズを決定することができる。すなわち、高負荷状態のシミュレーション演算部におけるシミュレーション速度の増加量を柔軟に制御し、時間的な同期を維持しつつ装置全体の処理速度を高めることができる。
また、高負荷状態の継続時間に応じて分割サイズを決定するようにしたので、高負荷状態のシミュレーション演算部は状況に応じたシミュレーション速度でシミュレーションを実行することができる。
なお、上記説明ではX方向,Y方向,Z方向のすべてのサイズを変更することにより分割サイズを調整することとしたが、これらのうちの任意の1つまたは2つを変更して分割サイズを調整するようにしてもよい。