(57)【要約】【課題】逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させる技術を提供する。【解決手段】対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースを生成し、前記操作インタフェースを介して前記対象モデルから前記並列演算用モデルへの変換が指示されると、並列走行する前記プロセスの間で受け渡されるデータを複数の前記プロセスにおいて同期させるダミーブロックを前記対象モデルに挿入し、前記クラスタコンピュータにおいて並列走行する複数の前記プロセスを生成するための並列演算用シミュレーションプログラムを、前記並列演算用モデルに基づいて編集する、ことを含むことを含むシミュレーション支援方法。【選択図】図１４
2010033567.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションの対象システムを表現したブロック線図型モデルである対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースを生成し、
前記操作インタフェースを介して前記対象モデルから前記並列演算用モデルへの変換が指示されると、並列走行する前記プロセスの間で受け渡されるデータを複数の前記プロセスにおいて同期させるダミーブロックを前記対象モデルに挿入し、
前記クラスタコンピュータにおいて並列走行する複数の前記プロセスを生成するための並列演算用シミュレーションプログラムを、少なくとも前記ダミーブロックが挿入された前記対象モデルである前記並列演算用モデルに基づいて編集する、
ことを含むシミュレーション支援方法。
【請求項２】
前記ダミーブロックは、並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されるブロックである、
請求項１に記載のシミュレーション支援方法。
【請求項３】
ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合、ダミーブロックは並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用される、
請求項１に記載のシミュレーション支援方法。
【請求項４】
前記ダミーブロックは、入力された値と同一の値を出力する、
請求項１に記載のシミュレーション支援方法。
【請求項５】
前記ダミーブロックは、入力された値を記憶するメモリーブロックであって、
メモリブロックに記憶された値は、該メモリブロックが属するサブシステムモデルに対応するプロセスでメモリブロックが更新されるまで維持される、
請求項１に記載のシミュレーション支援方法。
【請求項６】
前記操作インタフェースにおいてそれぞれの前記サブシステムモデルに対応するプロセッサをそれぞれの前記サブシステムモデルにおいて設定する操作を受け付ける、
請求項１に記載のシミュレーション支援方法。
【請求項７】
前記対象モデルの応答を演算することにより、前記サブシステムモデルの入力の初期値を取得し、前記サブシステムモデルの入力の前記初期値を前記プロセスの入力の初期値となる前記ダミーブロックの初期値に設定する、
請求項１に記載のシミュレーション支援方法。
【請求項８】
１ステップ毎に、並列走行する複数の前記プロセスのそれぞれの演算が全て終了してからそれぞれの前記プロセスの内部データを更新するまでの期間に、並列走行する複数の前記プロセスの間でデータを受け渡しするための第１コード群を前記並列演算用シミュレーションプログラムに編入する、
請求項１に記載のシミュレーション支援方法。
【請求項９】
前記操作インタフェースを介して前記対象モデルから前記並列演算用モデルへの変換が指示されると、前記サブシステムモデルの区切りとなる信号線に、検索キーとなるコードに変換される属性を設定し、前記コードをキーとして前記サブシステムモデルの区切りとなる信号線に対応する第２コード群の位置を特定し、前記第２コード群から当該信号線に対応するデータの受け渡しを実行する前記プロセスの識別子を抽出し、並列走行する複数の前記プロセスの間でデータを受け渡しするための第１コード群に抽出した前記識別子を設定する、
請求項８に記載のシミュレーション支援方法。
【請求項１０】
シミュレーションの対象システムを表すブロック線図型モデルである対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースと、
前記操作インタフェースを介して前記対象モデルから前記並列演算用モデルへの変換がモデリング支援部に指示されると、並列走行する前記プロセスの間で受け渡されるデータを複数の前記プロセスにおいて同期させるダミーブロックを前記対象モデルに挿入するモデリング支援部と、
前記クラスタコンピュータにおいて並列走行する複数の前記プロセスを生成するための並列演算用シミュレーションプログラムを、少なくとも前記ダミーブロックが挿入された前記対象モデルである前記並列演算用モデルに基づいて編集するプログラム編集部として、
コンピュータを機能させるシミュレーション支援プログラムを記憶した記憶媒体。
【請求項１１】
前記ダミーブロックは、並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されるブロックである、
請求項１０に記載の記憶媒体。
【請求項１２】
前記ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合、ダミーブロックは並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用される、
請求項１０に記載の記憶媒体。
【請求項１３】
前記ダミーブロックは、入力された値と同一の値を出力する、
請求項１０に記載の記憶媒体。
【請求項１４】
前記ダミーブロックは、入力された値を記憶するメモリーブロックであって、
メモリブロックに記憶された値は、該メモリブロックが属するサブシステムモデルに対応するプロセスでメモリブロックが更新されるまで維持される、
請求項１０に記載の記憶媒体。
【請求項１５】
シミュレーションの対象システムを表すブロック線図型モデルである対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースと、
前記操作インタフェースを介して前記対象モデルから前記並列演算用モデルへの変換が指示されると、並列走行する前記プロセスの間で受け渡されるデータを複数の前記プロセスにおいて同期させるダミーブロックを前記対象モデルに挿入するモデリング支援部と、
前記クラスタコンピュータにおいて並列走行する複数の前記プロセスを生成するための並列演算用シミュレーションプログラムを、少なくとも前記ダミーブロックが挿入された前記対象モデルである前記並列演算用モデルに基づいて編集するプログラム編集部、
とを備えるシミュレーション支援装置。
【請求項１６】
前記ダミーブロックは、並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されるブロックである、
請求項１５に記載のシミュレーション支援装置。
【請求項１７】
ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合、ダミーブロックは並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用される、
請求項１５に記載のシミュレーション支援装置。
【請求項１８】
前記ダミーブロックは、入力された値と同一の値を出力する、
請求項１５に記載のシミュレーション支援装置。
【請求項１９】
前記ダミーブロックは、入力された値を記憶するメモリーブロックであって、
メモリブロックに記憶された値は、該メモリブロックが属するサブシステムモデルに対応するプロセスでメモリブロックが更新されるまで維持される、
請求項１５に記載のシミュレーション支援装置。
【請求項２０】
前記対象モデルの応答を演算するシミュレーション部と、
請求項１５に記載のシミュレーション支援装置と、
を備えるシミュレーション装置。
【請求項２１】
ホストコンピュータにおいて、シミュレーションの対象システムを表すブロック線図型モデルである対象モデルの応答を演算し、
前記ホストコンピュータにおいて、前記対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースを生成し、
前記ホストコンピュータにおいて、前記操作インタフェースを介して前記対象モデルから前記並列演算用モデルへの変換が指示されると、並列走行する前記プロセスの間で受け渡されるデータを複数の前記プロセスにおいて同期させるダミーブロックを前記対象モデルに挿入し、前記クラスタコンピュータにおいて並列走行する複数の前記プロセスを生成するための並列演算用シミュレーションプログラムを、少なくとも前記ダミーブロックが挿入された前記対象モデルである前記並列演算用モデルに基づいて編集し、
前記クラスタコンピュータにおいて、前記並列演算用シミュレーションプログラムを実行することにより前記並列演算用モデルの応答を演算する、
ことを含むシミュレーション方法。
【請求項２２】
前記ダミーブロックは、並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されるブロックである、
請求項２１に記載のシミュレーション方法。
【請求項２３】
前記ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合、ダミーブロックは並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用される、
請求項２１に記載のシミュレーション方法。
【請求項２４】
前記ダミーブロックは、入力された値と同一の値を出力する、
請求項２１に記載のシミュレーション方法。
【請求項２５】
前記ダミーブロックは、入力された値を記憶するメモリーブロックであって、
メモリブロックに記憶された値は、該メモリブロックが属するサブシステムモデルに対応するプロセスでメモリブロックが更新されるまで維持される、
請求項２１に記載のシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシミュレーション支援する方法、シミュレーション支援プログラムを記憶した記憶媒体およびシミュレーション支援装置に関し、特に複数のプロセッサを備えたクラスタコンピュータによる並列演算処理のためのシミュレーションプログラムを編集する技術に関する。
【背景技術】
【０００２】
Ｓｉｍｕｌｉｎｋ（登録商標）などのＭＡＴＬＡＢ（登録商標）ファミリーは実世界のダイナミックシステムのモデリングとシミュレーションと解析のためのシミュレーション・プロトタイピング環境を提供するツールとして広く知られている。コアモジュールであるＭＡＴＬＡＢはＧＵＩと数値演算機能を提供する。Ｓｉｍｕｌｉｎｋはブロック線図型モデルの作成支援機能を提供する。Ｒｅａｌ−ＴｉｍｅＷｏｒｋｓｈｏｐ（登録商標）はＳｉｍｕｌｉｎｋで作成しテストしたモデルからスタンドアロンのＣコードを編集する。編集されたＣコードはリアルタイムまたは非リアルタイムのアプリケーションとして使用することができるため、短時間でのプロトタイプ作成、ＨＩＬ（Hardware-In-the-Loop）テストを可能にする。
【０００３】
自動車制御システムなど、シミュレーションの対象システムの大規模化にともなってシミュレーションの処理時間は長くなる。特許文献１、２には、分散処理により大規模なモデルのシミュレーションを高速化するための技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２２２４２０
【特許文献２】特開２００７−１２２６０２
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、クラスタコンピュータにおいて複数のプロセスが並列して繰り返し走行することにより離散時間の応答が連続的に出力される。このような並列演算処理では、ｎ番目のステップでのプロセスが別のプロセスにデータを引き渡す場合、ｎ＋１番目のステップのプロセスで、そのデータを入力として演算を実行しなければならない。しかし、上記の技術では、このようなデータの同期性が保証されていないため、モデルが作成される一般的な環境における逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させることはできなかった。
【０００６】
本発明は逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させる技術を提供する。
【課題を解決するための手段】
【０００７】
（１）本発明の第１の態様は、シミュレーションの対象システムを表現したブロック線図型モデルである対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースを生成し、操作インタフェースを介して対象モデルから並列演算用モデルへの変換が指示されると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるために使用されるダミーブロックを対象モデルに挿入し、クラスタコンピュータにおいて並列走行する複数のプロセスを生成するための並列演算用シミュレーションプログラムを、少なくともダミーブロックが挿入された対象モデルである並列演算用モデルに基づいて編集する、ことを含むシミュレーション支援方法に関する。
【０００８】
本発明のシミュレーション支援方法において、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されてもよい。
【０００９】
本発明によると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるために使用されるダミーブロックを対象モデルに挿入する。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。そのため、逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００１０】
本発明のシミュレーション支援方法において、ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合に並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用されてもよい。このようにすれば、対象モデルを用いた逐次演算処理によるシミュレーションの実行結果と、並列演算用モデルを用いた並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００１１】
シミュレーション支援方法において、操作インタフェースにおいてそれぞれのサブシステムモデルに対応するプロセッサをそれぞれのサブシステムモデルに設定する操作を受け付けてもよい。
【００１２】
複数のプロセスの走行によって並列演算用モデルの応答を演算する場合、複数のプロセスが並列走行し始める１ステップ目においてそれぞれのプロセスが初期値を必要とする。この初期値は逐次処理において先に走行するプロセスの出力である。
【００１３】
そこで、シミュレーション支援方法において、対象モデルの応答を演算することにより、サブシステムモデルの入力の初期値を取得し、サブシステムモデルの入力の初期値をプロセスの入力の初期値となるダミーブロックの初期値に設定することが好ましい。これによりそれぞれのプロセスが必要とする初期値を自動で並列演算用シミュレーションプログラムに設定することができる。
【００１４】
シミュレーション支援方法において、１ステップ毎に、並列走行する複数のプロセスのそれぞれの演算が全て終了してからそれぞれのプロセスの内部データを更新するまでの期間に、並列走行する複数のプロセスの間でデータを受け渡しするための第１コード群を並列演算用シミュレーションプログラムに編入してもよい。
【００１５】
これにより逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００１６】
並列走行する複数のプロセスの間でデータを受け渡しするためのコード群には、データを送信するプロセッサと、データを受信するプロセッサとを識別するためのコードが必要である。並列演算モデルを使用して、並列演算用シミュレーションプログラムが編集されるとき、データを送信および受信するプロセッサを識別するコードは、サブシステムモデルの区切りとなる信号線に対応付けて記述される。
【００１７】
そこで、シミュレーション支援方法において、操作インタフェースを介して対象モデルから並列演算用モデルへの変換が指示されると、サブシステムモデルの区切りとなる信号線に、検索キーとなるコードに変換される属性を設定し、コードをキーとしてサブシステムモデルの区切りとなる信号線に対応する第１コード群の位置を特定し、第２コード群から当該信号線に対応するデータの受け渡しを実行するプロセスの識別子を抽出し、並列走行する複数のプロセスの間でデータを受け渡しするための第１コード群に抽出した識別子を設定することが好ましい。
【００１８】
これによりサブシステムモデルの区切りとなる信号線に対応付けて記述されたコードを高速に検索できるため、１ステップ毎に、並列走行する複数のプロセスのそれぞれの演算が全て終了してからそれぞれの内部データを更新するまでの期間に、並列走行する複数のプロセスの間でデータを受け渡しするためのコード群を並列演算用シミュレーションプログラムに編入する処理を高速化できる。
【００１９】
本発明の第２の態様は、シミュレーションの対象システムを表すブロック線図型モデルである対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースと、操作インタフェースを介して対象モデルから並列演算用モデルへの変換がモデリング支援部に指示されると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるために用いられるダミーブロックを対象モデルに挿入するモデリング支援部と、クラスタコンピュータにおいて並列走行する複数のプロセスを生成するための並列演算用シミュレーションプログラムを、少なくともダミーブロックが挿入された対象モデルである並列演算用モデルに基づいて編集するプログラム編集部として、コンピュータを機能させるシミュレーション支援プログラムを記憶する記憶媒体に関する。
【００２０】
本発明のシミュレーション支援プログラムを記憶する記憶媒体において、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されてもよい。
【００２１】
ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合に並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用されてもよい。このようにすれば、対象モデルを用いた逐次演算処理によるシミュレーションの実行結果と、並列演算用モデルを用いた並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００２２】
その記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体であってもよい。
【００２３】
本発明によると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入するシミュレーション装置としてコンピュータを機能させることができる。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。そのため、逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００２４】
本発明の第３の態様は、シミュレーションの対象システムを表すブロック線図型モデルである対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースと、操作インタフェースを介して対象モデルから並列演算用モデルへの変換がモデリング支援部に指示されると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入するモデリング支援部と、クラスタコンピュータにおいて並列走行する複数のプロセスを生成するための並列演算用シミュレーションプログラムを、少なくともダミーブロックが挿入された対象モデルである並列演算用モデルに基づいて編集するプログラム編集部と、を備えるシミュレーション支援装置に関する。
【００２５】
本発明のシミュレーション支援装置を記憶する記憶媒体において、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されてもよい。
【００２６】
本発明によると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入する。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。そのため、逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００２７】
ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合にダミーブロックは並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用されてもよい。このようにすれば、対象モデルを用いた逐次演算処理によるシミュレーションの実行結果と、並列演算用モデルを用いた並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００２８】
本発明の第４の態様は、第３の態様のシミュレーション支援装置と、対象モデルの応答を演算するシミュレーション部と、を備えるシミュレーション装置に関する。
【００２９】
本発明によると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入する。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。そのため、逐次演算処理によるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００３０】
本発明の第５の態様は、ホストコンピュータにおいて、シミュレーションの対象システムを表すブロック線図型モデルである対象モデルの応答を演算し、ホストコンピュータにおいて、対象モデルを、クラスタコンピュータにおいて並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースを生成し、ホストコンピュータにおいて、操作インタフェースを介して対象モデルから並列演算用モデルへの変換が指示されると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入し、クラスタコンピュータにおいて並列走行する複数のプロセスを生成するための並列演算用シミュレーションプログラムを、少なくともダミーブロックが挿入された対象モデルである並列演算用モデルに基づいて編集し、クラスタコンピュータにおいて、並列演算用シミュレーションプログラムを実行することにより並列演算用モデルの応答を演算する、ことを含むシミュレーション方法に関する。
【００３１】
本発明のシミュレーション支援方法において、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されてもよい。
【００３２】
ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合に並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用されてもよい。このようにすれば、対象モデルを用いた逐次演算処理によるシミュレーションの実行結果と、並列演算用モデルを用いた並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００３３】
本発明によると、並列走行するプロセスの間で受け渡されるデータについて複数のプロセスにおける同期させるために使用させる。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。そのため、ホストコンピュータによるシミュレーションの実行結果と、クラスタコンピュータによるシミュレーションの実行結果とを完全に一致させることができる。
【００３４】
ダミーブロックは、並列演算モデルの入力が対象モデルへの入力と同一であった場合に並列演算によって得られた並列演算用モデルの出力を逐次演算によって得られた対象モデルの出力と同一にするために使用されてもよい。このようにすれば、対象モデルを用いた逐次演算処理によるシミュレーションの実行結果と、並列演算用モデルを用いた並列演算処理によるシミュレーションの実行結果とを完全に一致させることができる。
【００３５】
尚、上記動作の順序は、技術的な阻害要因がない限りにおいて記載順に限定されず、同時に実行されても良いし、記載順の逆順に実行されても良いし、連続した順序で実行されなくても良い。また各部の機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら各部の機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施形態にかかる模式図。
【図２】本発明の実施形態にかかるブロック図。
【図３】本発明の実施形態にかかるブロック図。
【図４】本発明の実施形態にかかるブロック図。
【図５】本発明の実施形態にかかるソースコードを示す図。
【図６】本発明の実施形態にかかるシーケンスチャート。
【図７】本発明の実施形態にかかるブロック図。
【図８】本発明の実施形態にかかるブロック図。
【図９】本発明の実施形態にかかるフローチャート。
【図１０】本発明の実施形態にかかるブロック図。
【図１１】本発明の実施形態にかかるブロック図。
【図１２】本発明の実施形態にかかるフローチャート。
【図１３】本発明の実施形態にかかるシーケンスチャート。
【図１４】本発明の実施形態にかかるシーケンスチャート。
【図１５】本発明の実施形態にかかるシーケンスチャート。
【発明を実施するための形態】
【００３７】
以下、本発明の実施の形態を添付図面を参照しながら順に説明する。各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
【００３８】
１．概要
図１は、本発明の一実施形態であるシミュレーションシステム１の全体構成を示している。シミュレーションシステム１は、単一のプロセッサを備えるホストコンピュータ１０と、複数のプロセッサを備えるクラスタコンピュータ２０とを備えている。ホストコンピュータ１０では、自動車制御システムなどの大規模な対象システムを表す対象モデルの作成と、そのモデルの応答をクラスタコンピュータ２０において高速に演算するための並列演算用シミュレーションプログラム１０５の編集とを行う。クラスタコンピュータ２０では、並列演算用シミュレーションプログラム１０５の実行により対象モデルの応答を演算する。
【００３９】
２．ハードウェアの構成
２．１ホストコンピュータ
図２はホストコンピュータ１０のハードウェア構成を示すブロック図である。ストレージ１１３はハードディスクなどの不揮発性記憶媒体を備える。ストレージ１１３にはプロセッサ１１１で実行される各種のプログラムが格納される。主記憶装置であるメモリ１１２にはプロセッサ１１１で実行されるＯＳ（Operating System）、ＭＡＴＬＡＢ、Simulink、Real-Time Workshop、シミュレーション支援プログラムなどの各種のプログラムが一時的に記憶される。プロセッサ１１１はメモリ１１２に記憶されているプログラムを実行し、実行結果をメモリ１１２に格納する。表示部１１６はホストコンピュータ１０およびクラスタコンピュータ２０のＧＵＩ（Graphical User Interface）を構成する画面を表示するためのディスプレイ１１６ａとその制御回路とを備える。ＧＵＩを構成する画面データはメモリ１１２のビデオメモリ領域に格納される。操作部１１５はホストコンピュータ１０およびクラスタコンピュータ２０を操作するための図１に示すキーボード１１５ａ、マウス１１５ｂ等で構成される。通信部１１４はクラスタコンピュータ２０との通信を制御する。メモリ１１２、ストレージ１１３、表示部１１６、操作部１１５および通信部１１４はバスなどの信号線によって接続されている。
【００４０】
２．２クラスタコンピュータ
図３はクラスタコンピュータ２０のハードウェア構成を示すブロック図である。ストレージ２７はハードディスクなどの不揮発性記憶媒体を備える。ストレージ２７には第一プロセッサ２１および第二プロセッサ２３で実行される各種のプログラムが格納される。主記憶装置である第一メモリ２２および第二メモリ２４にはＯＳ（Operating System）、並列演算用シミュレーションプログラムなどの各種のプログラムが一時的に記憶される。第一プロセッサ２１および第二プロセッサ２３が実行する並列演算用シミュレーションプログラムは共通であるが、第一プロセッサ２１および第二プロセッサ２３はそれぞれに割り当てられた命令を実行し、異なる実行結果を第一メモリ２２および第二メモリ２４に格納する。通信部２８はホストコンピュータ１０との通信を制御する。第一メモリ２２、第二メモリ２４、ストレージ２７および通信部２８はバスなどの信号線によって接続されている。クラスタコンピュータ２０を通信ネットワークによってホストコンピュータ１０と接続することにより、ホストコンピュータ１０によるクラスタコンピュータ２０の操作が可能になる。
【００４１】
３．逐次演算用シミュレーションプログラムの構成
図４はホストコンピュータ１０で実行される逐次演算用シミュレーションプログラムの構成を示すブロック図である。逐次演算用シミュレーションプログラムは、アメリカ合衆国のＭａｔｈＷｏｒｋｓ社が開発するＭＡＴＬＡＢプロダクトファミリーと、これに連動する拡張ツールとしてのシミュレーション支援プログラムとによって構成される。
【００４２】
ＭＡＴＬＡＢ１００は数値演算機能を実現するコアモジュールである。Ｓｉｍｕｌｉｎｋ１０２はＧＵＩ環境においてブロック線図モデルの作成機能とテスト機能を実現するモジュールである。Ｒｅａｌ−ＴｉｍｅＷｏｒｋｓｈｏｐ（以下、ＲＴＷと略記する。）１０１はＳｉｍｕｌｉｎｋ１０２によって作成されたモデルから独立して実行可能なＣ言語のソースファイルを作成するモジュールである。シミュレーション支援プログラムはモデリング支援部１０３とプログラム編集部１０４とで構成されている。
【００４３】
モデリング支援部１０３は、対象モデルをクラスタコンピュータ２０において並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換するための操作インタフェースを生成するとともに、操作インタフェースを介して対象モデルを並列演算用モデルに変換する指示が受け付けられると、並列走行するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入するモジュールである。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。またモデリング支援部１０３は、ＭＡＴＬＡＢ１００に対象モデルの応答を演算させることにより、サブシステムモデルの入力の初期値を取得する。そしてモデリング支援部１０３はサブシステムモデルの入力の初期値をダミーブロックの初期値として設定する。またモデリング支援部１０３は、対象モデルが並列演算用モデルに変換されると、サブシステムモデルの区切りとなる信号線に、検索キーとなるコードに変換される属性を設定してもよい。
【００４４】
プログラム編集部１０４はクラスタコンピュータ２０において並列走行する複数のプロセスを生成するための並列演算用シミュレーションプログラム１０５を、ＲＴＷ１０１と協働することにより、並列演算用モデルに基づいて編集するモジュールである。またモデリング支援部１０３が設定したダミーブロックの初期値はＲＴＷ１０１によって並列演算用シミュレーションプログラム１０５に設定される。またプログラム編集部１０４は１ステップ毎に、並列走行する複数のプロセスのそれぞれの演算が全て終了してからそれぞれの内部データを更新するまでの期間に、並列走行する複数のプロセスの間でデータを受け渡しするためのコード群を並列演算用シミュレーションプログラム１０５に編入する。このときプログラム編集部１０４は、分割の区切りとなる信号線に関連づけてＲＴＷ１０１によって記述されるコードをキーとしてその信号線に対応するコード群（後述する演算セクション１０５１、更新セクション１０５２）の位置を特定し、そのコード群から当該信号線に対応するデータの受け渡しを実行するプロセスの識別子を抽出し、並列走行する複数のプロセスの間でデータを受け渡しするためのコード群（後述する通信セクション１０５３）に抽出した識別子であるプロセッサ指定コードを設定する。
【００４５】
４．並列演算用シミュレーションプログラムの構成
図５は並列演算用シミュレーションプログラム１０５のソースコードを示すブロック図である。並列演算用シミュレーションプログラム１０５はＣ言語が記述された１つのテキストファイルとして取り扱われる。並列演算用シミュレーションプログラム１０５は、入力に応じた出力を返すための演算をプロセッサに実行させるための演算セクション１０５１と、演算セクション１０５１に対応したプロセスの内部データを更新するための更新セクション１０５２と、並列走行するプロセス間の通信を制御するための通信セクション１０５３とを含む。演算セクション１０５１は演算関数を用いて記述され、更新セクション１０５２は更新関数を用いて記述され、通信セクション１０５３はＭＰＩ関数を用いて記述される。このような並列演算用シミュレーションプログラム１０５は通信セクション１０５３などの並列演算を実行可能にする部分を除いた部分がＲＴＷ１０１によって生成され、プログラム編集部１０４によって通信セクション１０５３やプロセッサ指定コードが追加されることによって完成し、コンパイルされるとクラスタコンピュータ２０において実行可能な１つの実行形式ファイルになる。プログラム編集部１０４によって追加される部分は図５において下線で示されている。プログラム編集部１０４によって追記される部分は、いずれのプロセッサによって走行するプロセスに対応するコードであるのかを示すプロセッサ指定コード"if(Rank==x)"の部分と、ＭＰＩ（Message Passing Interface）を用いた通信セクション１０５３である。その他の部分はＲＴＷ１０１によって記述される。
【００４６】
５．シミュレーション方法
図６は本発明のシミュレーション方法の一実施形態の全体の流れを示すシーケンスチャートである。はじめに、ホストコンピュータ１０において、シミュレーションの対象システムを表すブロック線図型モデルである対象モデルを作成する（ステップＳ１０）。このときユーザは対象モデルの応答をテストしながら対象モデルを作成することができる。対象モデルの作成環境はＭＡＴＬＡＢ１００およびＳｉｍｕｌｉｎｋ１０２によって提供される。本実施形態を説明するために対象モデルの一例を図７に、対象モデルの一部であるブロック３０を構成しているサブシステムモデル３０を図８に示す。図７、図８に示す対象モデル３はＳｉｍｕｌｉｎｋ１０２によって提供されるＧＵＩ環境においてディスプレイ１１６ａの特定領域に表示されるブロック線図型モデルである。対象モデル３およびサブシステムモデル３０はブロックを特定領域にドラッグアンドドロップし、各ブロックを信号線で接続し、それぞれのブロックと信号線に属性を設定することによって作成される。本実施形態ではサブシステムモデル３０を含む並列演算用モデルに対象モデル３を変換する例について説明する。
【００４７】
次にホストコンピュータ１０において、対象モデル３を、クラスタコンピュータ２０において並列して繰り返し走行する各１ステップ分の複数のプロセスに対応する複数のサブシステムモデルが接続された並列演算用モデルに変換する指示を受け付ける（ステップＳ２０）。この変換のための操作インタフェースはモデリング支援部１０３によって生成される。具体的には例えば、モデリング支援部１０３によってＳｉｍｕｌｉｎｋ１０２のＧＵＩ環境に追加された変換指示を受け付けるためのメニューやアイコンを介して、サブシステムモデル３０に対応するプロセッサをサブシステムモデル３０に設定する操作が受け付けられる。ユーザはサブシステムモデル３０となるブロックを選択し、プロセッサを指定する識別子を設定する操作を行う。キーボード１１５ａまたはマウス１１５ｂの操作に応じて変換指示が受け付けられると、選択されたブロックに対応するプロセス（プロセッサ）の識別子（例えば０、１、２など）がサブシステムモデル３０に設定されるとともに、選択されたブロックが１つのプロセッサで不可分連続的に実行されるアトミックなサブシステムモデル３０となる。プロセスの識別子（例えば０、１、２など）によって各サブシステムモデル３０の応答を演算するプロセッサが特定される。尚、この識別子はユーザに指定させても良いし、自動的にサブシステムモデルに割り振っても良い。
【００４８】
対象モデル３から並列演算用モデルへの変換が指示されると、ホストコンピュータ１０において、複数のサブシステムモデルに対応するプロセスの間で受け渡されるデータを複数のプロセスにおいて同期させるダミーブロックを対象モデルに挿入する（ステップＳ３０）。また、ダミーブロックは並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用される。図９は、モデリング支援部１０３によって行われるこの対象モデルを編集することにより、対象モデルを並列演算用モデルに変換する処理の流れを示すフローチャートである。
【００４９】
まず、対象モデル３に基づいて１ステップ分の演算をＭＡＴＬＡＢ１００に実行させることにより、モデリング支援部１０３が各サブシステムモデルの初期値を取得する（ステップＳ３１）。例えば、分割の区切りとなる信号線３１、３２、３３（図８参照）に出力ブロックを接続し、その状態で１ステップ分の演算を実行することにより初期値を取得できる。各サブシステムモデルの初期値を取得するこの処理は、この処理のために必要なユーザの操作に代わる制御信号をモデリング支援部１０３からＳｉｍｕｌｉｎｋ１０２へのメッセージとして伝達することによって、ユーザの介入なしに実行可能である。
【００５０】
続いてモデリング支援部１０３は、分割の区切りとなる信号線３１、３２、３３を分割し、ダミーブロックとしてのメモリブロックを対象モデルに挿入する（ステップＳ３２）。図１０はメモリブロック挿入後の対象モデル、つまり並列演算用モデル３Ａの状態を示し、図１１はメモリブロック挿入されたサブシステムモデル３０Ａの状態を示している。メモリブロック３４、３５、３６は信号線３１、３２、３３を通過する値を、明示的に更新されるまで各メモリブロックに対応する変数として記憶する処理を表すブロックである。つまり、メモリブロックは入力された値と同一の値を出力するブロックであり、前回のステップにおいてすべてのプロセッサの演算が終了後、前々回のステップで記憶した値が更新され、今回のステップのプロセッサの演算時、その更新値を出力するブロックである。メモリブロック３４、３５、３６の更新は図５に示した更新セクション１０５２に対応する命令がクラスタコンピュータ２０の各プロセッサで実行されるタイミングに起こる。後述するように、メモリブロック３４、３５、３６の挿入によって、ＲＴＷ１０１によるソースコードの生成時には、メモリブロック３４、３５、３６のそれぞれを更新する関数が更新セクション１０５２において１回ずつ記述される。そしてメモリブロック３４、３５、３６はそれらが属するサブシステムモデルの入力が、すなわちそれらが属するサブシステムモデルの直前に位置するサブシステムモデルの出力が、メモリブロックの入力と等しくなる位置に置かれる。入力とする位置に挿入される。したがってメモリブロック３６が属するサブシステムモデルに対応するプロセスのステップと無関係に、メモリブロック３６が属するサブシステムモデルの直前に位置するサブシステムモデル３０Ａに対応するプロセスから値が出力されるとしても、メモリブロック３６が属するサブシステムモデルに対応するプロセスにおいて明示的にメモリブロック３６の更新が行われるまでメモリブロック３６が保持する値は変わらない。すなわちメモリブロック３４、３５、３６はクラスタコンピュータ２０において並列して走行する異なるプロセスに属するブロック間の通信を実質的に遅延させる。
【００５１】
そしてモデリング支援部１０３は、挿入したメモリブロック３４，３５，３６のそれぞれの属性として初期値を設定する（Ｓ３３）。この初期値には、前述したステップＳ３１において各サブシステムモデルの初期値として取得した値が設定される。なおこのとき、メモリブロック３４、３５、３６の入力に接続される信号線であってサブシステムモデルの区切りとなっている信号線３１ａ、３２ａ、３３ａに、ソースコード内の検索キーとして用いることが可能なコードに変換される属性として特別な共通名称や"テストポイント"を設定するとよい。
【００５２】
図６に示すように、上述した対象モデルの編集によって対象モデルが並列演算用モデルに変換されると、並列演算用シミュレーションプログラム１０５の出力処理が実行される。すなわち、クラスタコンピュータ２０において並列走行する複数のプロセスを生成するための並列演算用シミュレーションプログラム１０５が、並列演算用モデルに基づいてホストコンピュータ１０において編集される（ステップＳ４０）。図１２はソースファイルとして出力される並列演算用シミュレーションプログラム１０５の出力処理の流れを示すフローチャートである。図１２に示す処理は対象モデル３の応答の演算をクラスタコンピュータ２０において実行するためのソースファイルの出力がユーザによって指示されると起動する。
【００５３】
図１２に示すように、まずＲＴＷ１０１によって並列演算用シミュレーションプログラムが生成される。上述した並列演算用モデルを構成する全てのブロックと全ての信号線はＲＴＷ１０１に適合しているため、並列演算用モデルと完全に対応する並列演算用シミュレーションプログラムが生成される。
【００５４】
続いてプログラム編集部１０４によって、並列演算用シミュレーションプログラム１０５を、並列演算用モデルに基づいて編集する。具体的には、各サブシステムモデルに対応する各プロセス（プロセッサ）を漏れなく設定するとともに、１ステップ毎に、並列走行する複数のプロセスのそれぞれの演算が全て終了してからそれぞれの内部データを更新するまでの期間に、並列走行する複数のプロセスの間でデータが受け渡しされるように、コード群としての通信セクション１０５３を並列演算用シミュレーションプログラム１０５に編入する。上述したように、モデリング支援部１０３が提供するＧＵＩを用いてサブシステムモデル３０Ａとして明示的に指定されたブロック３０Ａには対応するプロセスの識別子が設定されるが、Ｓｉｍｕｌｉｎｋ１０２自体のＧＵＩを用いて作成される対象モデル３の他のブロックにはブロックに対応するプロセスが設定されない。そこで各サブシステムに対応するプロセス（プロセッサ）をプログラム編集部１０４によって漏れなく設定するのである。また分散メモリ型のクラスタコンピュータ２０では、第一メモリ２２に記憶された変数は、第一メモリ２２に記憶された変数と同一である第二メモリ２４に記憶された変数とＭＰＩ関数を用いた通信によって設計通りのタイミングで同期する。第一メモリ２２と、第一メモリ２２は、異なるプロセッサの主記憶装置である。そこで各プロセッサにおいて演算セクション１０５１に対応する命令が実行されることにより演算が終了してから、更新セクション１０５２に対応する命令が実行されることによりメモリブロック３４、３５、３６が更新されるまでの期間に、メモリブロック３４、３５、３６の入力となる値がプロセス間で受け渡しされるように通信セクション１０５３が並列演算用シミュレーションプログラム１０５に編入される。
【００５５】
通信セクション１０５３では、どのプロセス（プロセッサ）がメッセージを送信し、どのプロセス（プロセッサ）がメッセージを受信するかが、サブシステムモデルの区切りとなる信号線毎に記述される。そこで前述したように、サブシステムモデルの区切りとなっている信号線３１ａ、３２ａ、３３ａの属性として特別な共通名称や"テストポイント"が設定されている場合には、これらを検索キーとしてサブシステムモデルの区切りとなる信号線に対応するコード群の位置を特定し、特定したコード群から当該信号線に対応するデータの受け渡しを実行するプロセスの識別子を抽出し、並列走行する複数のプロセスの間でデータを受け渡しするためのコード群としての通信セクション１０５３に抽出した識別子を設定できる。このようにしてデータの受け渡しを実行するプロセスの識別子を抽出することにより、並列演算用シミュレーションプログラム１０５の編集を高速化することができる。
【００５６】
このようにして並列演算用シミュレーションプログラム１０５のソースコードが編集された後、並列演算用シミュレーションプログラム１０５のソースコードは実行形式にコンパイルされる。コンパイルされた並列演算用シミュレーションプログラム１０５はホストコンピュータ１０とクラスタコンピュータ２０とを接続する通信ネットワークやＦＤ（Flexible Disk）やＣＤ（Compact Disk）といったリムーバブルメモリを介してクラスタコンピュータ２０に入力される（図６のステップＳ５０）。
【００５７】
次に、クラスタコンピュータ２０は並列演算用シミュレーションプログラム１０５を実行することにより、並列演算用モデルの応答を並列演算する（図６のステップＳ６０）。
【００５８】
図１３、図１４はクラスタコンピュータ２０において並列演算用シミュレーションプログラム１０５を実行することによってなされる並列演算処理の流れを示すシーケンスチャートである。以下、このシーケンスチャートを具体的に説明するため、ブロック３０Ａの処理に対応するプロセスは第二プロセッサ２３によって走行し、ブロック３０Ａ以外の処理に対応するプロセスは第一プロセッサ２１によって走行するものとする。すなわち、値ａ０，ａ１，ａ２・・・が代入される変数ａは対象モデル３の入力に対応し、値ｂ０，ｂ１，ｂ２・・・が代入される変数ｂはブロック３０Ａの２つの入力に対応し、値ｃ０，ｃ１，ｃ２・・・が代入される変数ｃはブロック３０Ａの出力を表し、値ｄ０，ｄ１，ｄ２・・・が代入される変数ｄは並列演算用モデル３Ａの応答を表すものとする。
【００５９】
各ステップにおいては、第一プロセッサ２１が第一プロセッサ２１に割り当てられている命令を一通り全て実行し、第二プロセッサ２３が第二プロセッサ２３に割り当てられている命令を一通り全て実行する。
【００６０】
そして各ステップにおいて、第一プロセッサ２１によって走行するプロセスは、並列演算用モデル３Ａの入力である変数ａの値を用いた演算により変数ｂの値を出力し、第二プロセッサ２３によって走行するプロセスの出力である変数ｃの値を用いた演算により並列演算用モデルの出力である変数ｄの値を出力する。ここで並列演算用モデルの応答を逐次演算によって演算するとき、第ｎステップにおいて得られる各変数の値を図１５に示すようにａｎ，ｂｎ，ｃｎ，ｄｎとする。このように定義すると、逐次演算によって得られる並列演算用モデルの応答と等しい結果を、クラスタコンピュータ２０を用いた並列演算によって得るためには、第一プロセッサ２１によって走行する第ｎステップ（ｎ＝３以上の整数）のプロセスにおいては、ａｎ−１を用いた演算によってｂｎ−１が出力され、ｃｎ−3を用いた演算によってｄｎ−1が出力されなければならない。一方、第二プロセッサ２３によって走行する第ｎステップのプロセスにおいては、ｂｎ−２を用いた演算によってｃｎ−2が出力されなければならない。すなわち、並列走行するプロセスの間で受け渡される変数ｂ、ｃがこのように遅延して遷移するときに、各プロセスにおけるデータの同期性が保証され、その結果、単一プロセッサによるシミュレーションの実行結果と、並列演算処理によるシミュレーションの実行結果とが完全に一致する。
【００６１】
本実施形態によると、更新セクション１０５２に対応する命令が実行されるまで値を保持するメモリブロック３４，３５，３６を対象モデルに挿入するため、並列走行するプロセスの間で受け渡される変数ｂ、ｃは上述したように遅延して遷移する。また第一プロセッサ２１によって走行するプロセスと第二プロセッサ２３によって走行するプロセスとの間の通信は、各ステップにおいて演算セクション１０５１に対応する命令が全て実行されてからメモリブロック３４，３５，３６の更新が実行されるまでの期間に実行される。具体的には更新セクション１０５２に対応する命令によって実行されるメモリボックスの更新は通信セクション１０５３に対応する命令が実行された後に実行される。すなわち、更新セクション１０５２が並列演算用シミュレーションプログラム１０５に編入されているため、各１ステップにおいて、演算セクション１０５１に対応する命令が第一プロセッサ２１と、第二プロセッサ２３によって一通り全て実行された後に通信セクション１０５３に対応する命令が第一プロセッサ２１と、第二プロセッサ２３によって一通り全て実行され、さらにその後に更新セクション１０５２に対応する命令が第一プロセッサ２１と、第二プロセッサ２３によって一通り全て実行される。したがって、本実施形態によるとホストコンピュータ１０における逐次演算によるシミュレーションの実行結果と、クラスタコンピュータ２０における並列演算処理によるシミュレーションの実行結果とが完全に一致する。
【００６２】
６．他の実施形態
発明の技術的範囲は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、クラスタコンピュータ２０のプロセッサの個数は３個以上であってもよいし、クラスタコンピュータ２０がシステム外部の通信回線で接続され互いに完全に独立した複数のコンピュータから構成されていても良い。またクラスタコンピュータ２０が共有メモリ型の構成を備えていても良い。クラスタコンピュータ２０が共有メモリ型の構成を備えている場合、通信セクション１０５３において全プロセッサ間の同期処理だけを実現すればよい。またクラスタコンピュータ２０の操作のためにクラスタコンピュータ２０にディスプレイ、マウス、キーボードなどを接続しても良い。また本発明はＳｉｍｕｌｉｎｋ以外のモデリングツールに適用することもできる。さらにメモリブロック以外であっても、並列走行するプロセスの間で受け渡されるデータを同期させるために使用できるブロックであればどのようなブロックをダミーブロックとしてもよい。メモリブロック以外の、並列演算モデルで並列演算した場合の出力を、並列演算モデルで逐次演算した場合の出力と同一とするために使用されるブロックを使用してもよい。また、メモリブロック以外の入出力を一致させるブロックを使用してもよい。また、メモリブロック以外の、並列演算用モデルと対象モデルの入力が一致する場合に並列演算により求められる並列演算用モデルの出力と逐次演算で求められる対象モデルの出力を一致させるために使用できるブロックを使用してもよい。
【００６３】
並列演算用モデルと対象モデルの入力が一致する場合に並列演算により求められる並列演算用モデルの出力と逐次演算で求められる対象モデルの出力を一致させるために使用できるメモリーブロックを使用すれば、例えば、上記実施形態おいて、メモリブロックが挿入される前の対象モデル、すなわち図７、図８に示す元の対象モデルで逐次演算した演算結果を、クラスタコンピュータ２０を用いた並列演算によって得ることができる。このように、演算処理時間を短縮化できる。
【符号の説明】
【００６４】
１：シミュレーションシステム、３：対象モデル、３Ａ：並列演算用モデル、１０：ホストコンピュータ、２０：クラスタコンピュータ、２１：第一プロセッサ、２２：第一メモリ、 ２３：第二プロセッサ、２４：第二メモリ、２７：ストレージ、２８：通信部、３０：サブシステムモデル、３０Ａ：サブシステムモデル、３１：信号線、３１ａ：信号線、３１ｂ：信号線、３２：信号線、３２ａ：信号線、３２ｂ：信号線、３３：信号線、３３ａ：信号線、３３ｂ：信号線、３４：メモリブロック、３５：メモリブロック、３６：メモリブロック、 １０３：モデリング支援部、１０４：プログラム編集部、１０５：並列演算用シミュレーションプログラム、１１１：プロセッサ、１１２：メモリ、１１３：ストレージ、１１４：通信部、１１５：操作部、１１５ａ：キーボード、１１５ｂ：マウス、１１６：表示部、１１６ａ：ディスプレイ、１０５１：演算セクション、１０５２：更新セクション、１０５３：通信セクション
【図１】
2010033567.tif 000003
【図２】
2010033567.tif 000004
【図３】
2010033567.tif 000005
【図４】
2010033567.tif 000006
【図５】
2010033567.tif 000007
【図６】
2010033567.tif 000008
【図７】
2010033567.tif 000009
【図８】
2010033567.tif 000010
【図９】
2010033567.tif 000011
【図１０】
2010033567.tif 000012
【図１１】
2010033567.tif 000013
【図１２】
2010033567.tif 000014
【図１３】
2010033567.tif 000015
【図１４】
2010033567.tif 000016
【図１５】
2010033567.tif 000017