(57)【要約】【課題】演算処理の破綻の発生を防止することができるシミュレーション装置およびシミュレーション方法を提供する。【解決手段】実施形態に係るシミュレーション装置は、複数のプロセッサコアと、計測部と、割当部とを備える。複数のプロセッサコアは、シミュレーションモデルの演算処理を並行して行う。計測部は、プロセッサコアによって演算処理されるシミュレーションモデルの演算時間を計測する。割当部は、シミュレーションモデル毎に設定された演算周期および計測部によって計測される演算時間に基づいて複数のプロセッサコアに演算処理を行わせるシミュレーションモデルを割当てる。【選択図】図１
2019160159.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションモデルの演算処理を並行して行う複数のプロセッサコアと、
前記プロセッサコアによって演算処理される前記シミュレーションモデルの演算時間を計測する計測部と、
前記シミュレーションモデル毎に設定された演算周期および前記計測部によって計測される前記演算時間に基づいて前記複数のプロセッサコアに演算処理を行わせる前記シミュレーションモデルを割当てる割当部と
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記割当部は、
前記演算周期で演算処理が可能な複数の前記シミュレーションモデルを１の前記プロセッサコアに割当てる
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記割当部は、
前記演算周期が同一のシミュレーションモデルであり、且つ各前記シミュレーションモデルの前記演算周期に対する前記演算時間の割合を合計した値が１００％を超えない前記複数のシミュレーションモデルを１の前記プロセッサコアに割当てる
ことを特徴とする請求項２に記載のシミュレーション装置。
【請求項４】
前記割当部は、
前記割合を合計した値が１００％を超えない最大数の前記シミュレーションモデルを１の前記プロセッサコアに割当てる
ことを特徴とする請求項３に記載のシミュレーション装置。
【請求項５】
前記割当部は、
前記演算周期が異なる前記シミュレーションモデルであり、且つ前記割合を合計した値が１００％よりも低い所定の閾値を超えない最大数の前記シミュレーションモデルを１の前記プロセッサコアに割当てる
ことを特徴とする請求項３または請求項４に記載のシミュレーション装置。
【請求項６】
前記割当部は、
前記演算周期が同一のシミュレーションモデルがない１の前記シミュレーションモデルを１の前記プロセッサコアへ割当てる
ことを特徴とする請求項３〜５のいずれか一つに記載のシミュレーション装置。
【請求項７】
前記割当部は、
前記演算周期が同一のシミュレーションモデルがない１の前記シミュレーションモデルを割当てる前記プロセッサコアが不足する場合には、当該シミュレーションモデルを演算処理対象から除外する
ことを特徴とする請求項６に記載のシミュレーション装置。
【請求項８】
前記割当部によって前記演算処理対象から除外される前記シミュレーションモデルを報知する報知部
をさらに備えることを特徴とする請求項７に記載のシミュレーション装置。
【請求項９】
複数のプロセッサコアによってシミュレーションモデルの演算処理を並行して行う演算処理工程と、
前記プロセッサコアによって演算処理される前記シミュレーションモデルの演算時間を計測する計測工程と、
前記シミュレーションモデル毎に設定された演算周期および前記計測工程によって計測される前記演算時間に基づいて前記複数のプロセッサコアに演算処理を行わせる前記シミュレーションモデルを割当てる割当工程と
を含むことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実施形態は、シミュレーション装置およびシミュレーション方法に関する。
【背景技術】
【０００２】
車両には、エンジンやトランスミッション等の制御対象を制御するＥＣＵ（Electronic  Control  Unit）が搭載されている。また、ＥＣＵの動作を検証するシミュレーション装置がある（例えば、特許文献１参照）。
【０００３】
シミュレーション装置は、エンジンや車両の挙動等を数式モデル化したシミュレーションモデルを演算処理することによって、車両の動作状態を再現する機能を備える。かかるシミュレーション装置は、車両のＥＣＵに接続され、仮想的に車両を走行させる指令を車両のＥＣＵへ出力し、ＥＣＵから制御対象へ出力される制御信号を取得する。
【０００４】
そして、シミュレーション装置は、制御信号に基づいて動作する制御対象の動作状態を再現する。シミュレーション装置のユーザは、シミュレーション装置によって再現された動作状態を確認することによって、ＥＣＵの動作を検証することができる。
【０００５】
近年のシミュレーション装置は、複数のプロセッサコアを備えるマルチコアプロセッサが搭載され、各プロセッサコアによって異なる制御対象のシミュレーションモデルを並行して演算処理することにより、リアルタイムのシミュレーションが可能となっている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２３７９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、マルチコアプロセッサを備えるシミュレーション装置は、各プロセッサコアに割当てるシミュレーションモデルが適切でない場合、シミュレーションモデルに設定された演算周期での演算ができずに演算処理が破綻することがある。
【０００８】
実施形態の一態様は、上記に鑑みてなされたものであって、演算処理の破綻の発生を防止することができるシミュレーション装置およびシミュレーション方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態の一態様に係るシミュレーション装置は、複数のプロセッサコアと、計測部と、割当部とを備える。複数のプロセッサコアは、シミュレーションモデルの演算処理を並行して行う。計測部は、前記プロセッサコアによって演算処理される前記シミュレーションモデルの演算時間を計測する。割当部は、前記シミュレーションモデル毎に設定された演算周期および前記計測部によって計測される前記演算時間に基づいて前記複数のプロセッサコアに前記演算処理を行わせる前記シミュレーションモデルを割当てる。
【発明の効果】
【００１０】
実施形態の一態様に係るシミュレーション装置およびシミュレーション方法は、演算処理の破綻の発生を防止することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は実施形態に係るシミュレーションシステムの構成を示す説明図である。
【図２】図２は、実施形態に係るシミュレーション装置の構成の一例を示す説明図である。
【図３】図３は、実施形態に係るモデルに設定される演算周期の一例を示す説明図である。
【図４】図４は、実施形態に係るテストシミュレーションの説明図である。
【図５】図５は、実施形態に係るモデルの割当方法の説明図である。
【図６】図６は、実施形態に係るシミュレーションの説明図である。
【図７】図７は、実施形態に係る制御部が実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、シミュレーション装置およびシミュレーション方法の実施形態を詳細に説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。図１は実施形態に係るシミュレーションシステム１００の構成を示す説明図である。
【００１３】
図１に示すように、実施形態に係るシミュレーションシステム１００は、シミュレーション装置１と、パーソナルコンピュータ（以下、「ＰＣ１０」と記載する）とを備える。シミュレーション装置１とＰＣ１０とは通信ケーブル１１によって接続される。
【００１４】
シミュレーション装置１は、通信ケーブル１３によって接続される車両のＥＣＵ（Electronic  Control  Unit）１２の動作検証に使用される。なお、シミュレーション装置１は、車両のＥＣＵ１２に限定されず、例えば、航空機、船舶、およびロボット等の任意の制御対象を制御するＥＣＵの動作検証に使用することができる。
【００１５】
ＰＣ１０には、シミュレーション装置１を動作させるためのプログラムがインストールされている。シミュレーションシステム１００のユーザは、ＰＣ１０のタッチパッドやキーボード等の入力装置を使用して、所望するシミュレーションの内容を入力してシミュレーション装置１に車両のシミュレーションを実行させることができる。
【００１６】
ＰＣ１０は、例えば、ユーザによって入力される内容に応じた車両の走行環境や走行状態を示す情報と、その走行環境や走行状態におけるエンジンや車両の挙動等を数式モデル化した複数種類のシミュレーションモデルをシミュレーション装置１へ出力する。
【００１７】
シミュレーションモデル（以下、「モデル」と記載する）は、エンジンやトランスミッション、ハイブリッドシステム等といったＥＣＵの制御対象毎に設けられ、それぞれ演算周期が設定される。
【００１８】
シミュレーション装置１は、ユーザによって入力される内容に応じた車両の走行環境や走行状態で仮想的に車両を走行させる指令をＥＣＵ１２へ出力し、ＥＣＵ１２から制御対象へ出力される制御信号を取得する。
【００１９】
そして、シミュレーション装置１は、各モデルを演算することにより、制御信号に従って動作する制御対象の動作および車両の動作状態を再現し、再現した制御対象の状態を示す情報をシミュレーション結果としてＰＣ１０へ出力する。
【００２０】
ＰＣ１０は、シミュレーション装置１から入力されるシミュレーション結果をディスプレイに表示させる。ＰＣ１０のユーザは、ディスプレイに表示されるシミュレーション結果を確認することによって、ＥＣＵ１２の動作を検証することができる。
【００２１】
次に、図２を参照し、実施形態に係るシミュレーション装置１の構成の一例について説明する。図２は、実施形態に係るシミュレーション装置１の構成の一例を示す説明図である。図２に示すように、シミュレーション装置１は、通信ケーブル１１によってＰＣ１０と接続され、通信ケーブル１３によってＥＣＵ１２と接続される。
【００２２】
シミュレーション装置１は、第１入出力部２と、制御部３と、演算部４と、第２入出力部５とを備える。第１入出力部２は、一端がＰＣ１０に接続された通信ケーブル１１の他端が接続される入出力ポートである。また、第２入出力部５は、一端がＥＣＵ１２に接続された通信ケーブル１３の他端が接続される入出力ポートである。
【００２３】
制御部３は、ＣＰＵ（Central  Processing  Unit）、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）などを有するマイクロコンピュータや各種の回路を含む。かかる制御部３は、ＣＰＵがＲＯＭに記憶されたプログラムを、ＲＡＭを作業領域として使用して実行することにより機能する割当部３１、計測部３２、および報知部３３を備える。
【００２４】
制御部３が備える割当部３１、計測部３２、および報知部３３は、それぞれの一部または全部がＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等のハードウェアで構成されてもよい。
【００２５】
演算部４は、複数のプロセッサコア（以下、「コア」と記載する）を備えるマルチコアプロセッサであり、例えば、第１コア４１、第２コア４２、第３コア４３、および第４コア４４という４つのコアを備える。第１コア４１、第２コア４２、第３コア４３、および第４コア４４は、それぞれＣＰＵ、ＲＯＭ、ＲＡＭなどを有するマイクロコンピュータや各種の回路を含む。
【００２６】
第１コア４１、第２コア４２、第３コア４３、および第４コア４４は、ＣＰＵがＲＯＭに記憶されたプログラムを、ＲＡＭを作業領域として使用して実行することによりモデルの演算処理等を行う。なお、演算部４が備えるコアの個数は、４個に限定されるものではなく、２個以上であれば任意の個数であってもよい。
【００２７】
これら第１コア４１、第２コア４２、第３コア４３、および第４コア４４は、それぞれ並行してモデルの演算処理を行うことができる。これにより、シミュレーション装置１は、例えば、エンジンやトランスミッションのシミュレーション等といった複数の制御対象のシミュレーションを同時に行うことによって、リアルタイムで車両の走行状態を模擬したシミュレーションを行うことができる。
【００２８】
かかるシミュレーション装置１には、ＰＣ１０からユーザによって入力された内容に応じた車両の走行環境や走行状態を示す情報と、その走行環境や走行状態におけるエンジンや車両の挙動等を再現するための複数種類のモデルが入力される。
【００２９】
第１入出力部２は、ＰＣ１０から入力される車両の走行環境や走行状態を示す情報およびモデルを制御部３へ出力する。制御部３は、ユーザによって入力された車両の走行環境や走行状態で仮想的に車両を走行させる指令を、演算部４および第２入出力部５を介してＥＣＵ１２へ出力する。また、制御部３は、複数種類のモデルを演算部４へ出力する。
【００３０】
演算部４は、ユーザによって入力された走行環境や走行状態で車両が走行する場合に、ＥＣＵ１２から制御対象（例えば、エンジンやトランスミッション等）へ出力される制御信号を、第２入出力部５を介して取得する。
【００３１】
そして、演算部４は、各モデルを演算することにより、制御信号に従って動作する制御対象の動作および車両の動作状態を再現し、再現した制御対象の状態を示す情報をシミュレーション結果として第１入出力部２からＰＣ１０へ出力する。
【００３２】
ＰＣ１０は、シミュレーション装置１から入力されるシミュレーション結果をディスプレイに表示させる。これにより、ＰＣ１０のユーザは、ディスプレイに表示されるシミュレーション結果を確認することによって、ＥＣＵ１２の動作を検証することができる。
【００３３】
ここで、各モデルには、それぞれ予め定められた演算周期が設定されている。このため、演算部４は、例えば、あるモデルＡに０．５ｍｓｅｃという演算周期が設定されている場合、０．５ｍｓｅｃおきにモデルＡの演算処理を実行する必要がある。
【００３４】
このとき、演算部４は、ＰＣ１０から入力されるモデルの数がコアの個数以下であれば、１個のコアで１つのモデルを演算処理すればよいため、全てのモデルを同時に予め設定された演算周期で演算処理することができる。ただし、演算部４は、ＰＣ１０から入力されるモデルの数がコアの個数よりも多い場合、１個のコアで複数のモデルを演算処理しなければならなくなる。
【００３５】
かかる場合、複数のモデルを演算処理するコアは、演算処理するモデルの演算周期と、演算処理に要する時間（以下、「実演算時間」と記載する）とによっては、設定された演算周期でモデルの演算を行うことができずに演算処理が破綻することがある。そこで、シミュレーション装置１では、制御部３によって第１コア４１、第２コア４２、第３コア４３、および第４コア４４に対し、演算処理が破綻しないモデルの割当てを行う。
【００３６】
具体的は、割当部３１は、例えば、５つ以上のモデルが第１入出力部２を介して入力される場合、まず、第１コア４１、第２コア４２、第３コア４３、および第４コア４４へ任意の順番にモデルを分配して割当て、テストシミュレーションを実行させる。
【００３７】
計測部３２は、演算部４から第１コア４１、第２コア４２、第３コア４３、および第４コア４４の演算処理状態を示す情報を取得し、各モデルの実演算時間を計測し、計測結果を割当部３１へ出力する。このとき、計測部３２は、演算処理の破綻が発生した場合には、破綻が発生したモデルと、そのモデルが割当てられたコアを割当部３１へ出力する。
【００３８】
割当部３１は、演算処理の破綻が発生しない場合、当初のモデルの割当てのまま演算部４によってシミュレーションを実行させる。また、割当部３１は、演算処理の破綻が発生した場合、各モデルの演算周期および計測部３２によって計測される実演算時間に基づいて、演算処理の破綻が発生しない分担となるように、各コアへ演算処理させるモデルを割当てる。これにより、シミュレーション装置１は、演算処理の破綻の発生を防止することができる。
【００３９】
また、割当部３１は、入力されるモデルの数がさらに増加すると、演算周期および実演算時間に基づく割当てによっても、演算処理の破綻を防止することができず、コアへ割当てることができないモデルが生じる。
【００４０】
かかる場合、割当部３１は、コアへ割当てることができないモデルを演算処理対象から除外する。これにより、シミュレーション装置１は、演算処理の破綻の発生を防止することができる。
【００４１】
そして、割当部３１は、演算処理対象から除外したモデルを示す情報を報知部３３へ出力する。報知部３３は、割当部３１から入力される情報を、第１入出力部２を介してＰＣ１０へ出力し、ＰＣ１０のディスプレイに表示させることによって、演算処理対象から除外されたモデルを報知する。これにより、ＰＣ１０のユーザは、演算処理対象から除外されたモデルを確認することができる。
【００４２】
次に、図３〜図６を参照し、上述した制御部３の動作の一例について説明する。図３は、実施形態に係るモデルに設定される演算周期の一例を示す説明図である。図４は、実施形態に係るテストシミュレーションの説明図である。図５は、実施形態に係るモデルの割当方法の説明図である。図６は、実施形態に係るシミュレーションの説明図である。
【００４３】
図３に示すように、制御部３には、例えば、モデルＡ、モデルＢ、モデルＣ、モデルＤ、モデルＥ、およびモデルＦという６つのモデルが入力される場合がある。このように、制御部３には、演算部４が備えるコアの数（ここでは、４つ）を超える数のモデルが入力される場合がある。
【００４４】
ここでは、モデルＡに、０．５ｍｓｅｃの演算周期が設定され、モデルＢに、０．４ｍｓｅｃの演算周期が設定され、モデルＣに、０．９ｍｓｅｃの演算周期が設定されている。また、ここでは、モデルＤに、０．５ｍｓｅｃの演算周期が設定され、モデルＥに０．４ｍｓｅｃの演算周期が設定され、モデルＦに０．５ｍｓｅｃの演算周期が設定されている。
【００４５】
かかる場合、割当部３１は、モデルＡ、モデルＢ、モデルＣ、モデルＤ、モデルＥ、およびモデルＦを第１コア４１、第２コア４２、第３コア４３、および第４コア４４へ任意の順番に分配して割当て、テストシミュレーションを実行させる。
【００４６】
例えば、図４に示すように、割当部３１は、第１コア４１へモデルＡおよびモデルＢを割当て、第２コア４２へモデルＣおよびモデルＤを割当て、第３コア４３へモデルＥを割当て、第４コア４４へモデルＦを割当てる。
【００４７】
そして、割当部３１は、演算部４によって、テストシミュレーションを実行させる。そして、計測部３２は、各モデルの実演算時間を計測し、演算処理の破綻が発生した場合には、各実演算時間と演算処理が破綻したモデルを示す情報を割当部３１へ出力する。
【００４８】
図４に示す例では、モデルＡの実演算時間が０．４ｍｓｅｃ、モデルＢの実演算時間が０．２ｍｓｅｃ、モデルＣの実演算時間が０．６ｍｓｅｃとなっている。また、図４に示す例では、モデルＤの実演算時間が０．３ｍｓｅｃ、モデルＥの実演算時間が０．２ｍｓｅｃ、モデルＦの実演算時間が０．２ｍｓｅｃとなっている。なお、各モデルの実演算時間は、複数回実行される各モデルの演算処理時間の最大値とする。
【００４９】
図４に示すテストシミュレーションでは、第３コア４３は、モデルＥの演算周期である０．４ｍｓｅｃ毎にモデルＥの演算処理を行っている。また、第４コア４４は、モデルＦの演算周期である０．５ｍｓｅｃ毎にモデルＦの演算処理を行っている。このため、第３コア４３および第４コア４４では、演算処理の破綻は発生していない。
【００５０】
一方、第１コア４１および第２コア４２では、演算処理の破綻が発生している。具体的には、第１コア４１は、テストシミュレーションの開始からモデルＢの演算周期である０．４ｍｓｅｃが経過する前までの期間にモデルＢの初回の演算処理を行っていない。
【００５１】
このため、モデルＢの演算処理は、テストシミュレーションの開始から０．４ｍｓｅｃが経過した時点で破綻する。なお、テストシミュレーションでは、第１コア４１は、モデルＡの演算処理が終了した場合に、モデルＢの演算処理を開始する。これにより、計測部３２は、モデルＢの実演算時間を計測することができる。
【００５２】
しかし、第１コア４１は、モデルＡの演算処理終了後にモデルＢの演算処理を実行する場合、モデルＡの演算周期が０．５ｍｓｅｃであるが、テストシミュレーションの開始から０．５ｍｓｅｃが経過した時点で、モデルＡの演算処理を開始することができない。このため、モデルＡの演算処理は、テストシミュレーションの開始から０．５ｍｓｅｃが経過した時点で破綻する。
【００５３】
また、第２コア４２は、テストシミュレーションの開始からモデルＤの演算周期である０．５ｍｓｅｃが経過するまでの期間にモデルＤの演算処理を行っていない。このため、モデルＤの演算処理は、テストシミュレーションの開始から０．５ｍｓｅｃが経過した時点で破綻する。
【００５４】
なお、テストシミュレーションでは、第２コア４２は、モデルＣの演算処理が終了した場合に、モデルＤの演算処理を開始する。これにより、計測部３２は、モデルＤの実演算時間を計測することができる。
【００５５】
このように、演算処理の破綻が発生する場合、割当部３１は、各モデルの演算周期および計測部３２によって計測される実演算時間に基づいて、各コアへ演算処理させるモデルを割当てる。
【００５６】
具体的には、図５の上図に示すように、演算周期が同一のモデルをグルーピングする。図５の上図では、モデルＡ、モデルＤ、およびモデルＦの演算周期が０．５ｍｓｅｃで同一であるため、演算周期を実線楕円で囲んでいる。
【００５７】
また、図５の上図では、モデルＢおよびモデルＥの演算周期が０．４ｍｓｅｃで同一であるため、演算周期を点線楕円で囲んでいる。なお、図５の上図では、モデルＣと演算周期が同一のモデルがないため、モデルＣの演算周期については実線四角で囲んでいる。
【００５８】
続いて、割当部３１は、各演算周期に対する実演算時間の占める割合（以下、「実時間／周期率」と記載する）を算出する。そして、割当部３１は、演算周期が同一のモデルの実時間／周期率を合計した値が１００％を超えない複数のモデルを１個のコアに割り当てる。
【００５９】
ここで、モデルＡの実時間／周期率は、８０％であり、演算周期が０．５ｍｓｅｃで同一のモデルＤの実時間／周期率６０％や、モデルＦの実時間／周期率４０％と合計すると１００％を超えてしまう。このため、モデルＡは、モデルＤやモデルＦと同一のコアへ割当てることができない。
【００６０】
このため、割当部３１は、モデルＡを１個のコアへ割当てる。また、割当部３１は、演算周期が同一のモデルがないモデルＣについても、１つのコアへ割当てる。なお、図５の上図では、１つのコアに割り当てるモデルＡおよびモデルＣを実線四角で囲んでいる。
【００６１】
一方、演算周期が０．５ｍｓｅｃで同一のモデルＤとモデルＦとは、実時間／周期率の合計が１００％である。このため、割当部３１は、モデルＤとモデルＦとを同じ１個のコアに割り当てる。なお、図５の上図では、同じコアに割り当てるモデルＤとモデルＦとを実線円で囲んでいる。
【００６２】
また、演算周期が０．４ｍｓｅｃで同一のモデルＢとモデルＥとは、実時間／周期率の合計が１００％である。このため、割当部３１は、モデルＢとモデルＥとを同じ１個のコアに割り当てる。なお、図５の上図では、同じコアに割り当てるモデルＢとモデルＥとを点線円で囲んでいる。
【００６３】
そして、割当部３１は、図５の下図に示すように、例えば、モデルＡを第１コア４１に、モデルＣを第２コア４２に、モデルＢおよびモデルＥを第３コア４３に、モデルＦおよびモデルＤを第４コア４４にそれぞれ割当ててシミュレーションを実行させる。
【００６４】
これにより、図６に示すように、第１コア４１は、モデルＡの演算周期である０．５ｍｓｅｃおきにモデルＡの演算処理を破綻させることなく行うことができる。また、第２コア４２は、モデルＣの演算周期である０．９ｍｓｅｃおきにモデルＣの演算処理を破綻させることなく行うことができる。
【００６５】
また、第３コア４３は、モデルＢおよびモデルＥの演算周期である０．４ｍｓｅｃおきに、モデルＢおよびモデルＥの演算処理を破綻させることなく行うことができる。また、第４コア４４は、モデルＦおよびモデルＤの演算周期である０．５ｍｓｅｃおきに、モデルＦおよびモデルＤの演算処理を破綻させることなく行うことができる。
【００６６】
このように、シミュレーション装置１は、割当部３１によって各モデルの演算周期および実演算時間に基づいて複数のコアに演算処理を行わせるモデルを割当てることにより、演算処理の破綻の発生を防止することができる。
【００６７】
また、割当部３１は、モデル毎に設定される演算周期で演算処理が可能な複数のモデルを１個のコアに割当てる。これにより、シミュレーション装置１は、演算部４が備えるコアの数よりも多い数のモデルの演算処理を破綻させることなく行うことができる。
【００６８】
また、割当部３１は、演算周期が同一のモデルであり、且つ各モデルの実時間／周期率を合計した値が１００％を超えない複数のモデルを１のコアに割当てる。これにより、シミュレーション装置１は、演算処理の破綻を確実に防止することができる。
【００６９】
また、割当部３１は、演算周期が同一のモデルであり、且つ各モデルの実時間／周期率を合計した値が１００％を超えない最大数のモデルを１のコアに割当てる。これにより、シミュレーション装置１は、各コアの能力を最大限に有効活用することができる。
【００７０】
また、割当部３１は、演算周期が同一のモデルが１つもないモデルについては、１個のコアに割当てる。これにより、シミュレーション装置１は、演算周期が同一のモデルがないモデルについても、演算処理の破綻の発生を防止することができる。
【００７１】
なお、ここでは、シミュレーション装置１に入力される全てのモデルを演算処理が破綻しないように各コアへ割当てることができる場合について説明した。しかし、シミュレーション装置１は、入力されるモデルの数が多くなると全てのモデルを演算処理が破綻しないように各コアへ割当てることができなくなる場合がある。
【００７２】
例えば、シミュレーション装置１は、演算周期が同一のモデルが１つもないモデルを割当てるコアが不足する場合、全てのモデルを演算処理が破綻しないように各コアへ割当てることができないことがある。
【００７３】
かかる場合、割当部３１は、コアに割当てることができないモデルを演算処理対象から除外する。これにより、シミュレーション装置１は、演算処理するモデルの数が若干少なくなるが、演算処理を実行する他のモデルについては、演算処理の破綻の発生を防止することができる。
【００７４】
また、シミュレーション装置１は、割当部３１によって演算処理対象から除外されたモデルを報知部３３がＰＣ１０へ出力して報知する。これにより、ＰＣ１０のユーザは、演算処理対象から除外されたモデルを確認することができる。
【００７５】
次に、図７を参照し、実施形態に係る制御部３が実行する処理について説明する。図７は、実施形態に係る制御部３が実行する処理を示すフローチャートである。制御部３は、モデルが入力される場合に、図７に示す処理を実行する。
【００７６】
具体的には、図７に示すように、制御部３は、まず、入力されるモデルを任意の順番に各コアへ割当て、演算部４によって、テストシミュレーションを実行させ（ステップＳ１０１）、各モデルの実演算時間を計測する（ステップＳ１０２）。
【００７７】
続いて、制御部３は、各モデルの実時間／周期率を算出し（ステップＳ１０３）、演算処理の破綻が発生したか否かを判定する（ステップＳ１０４）。そして、制御部３は、破綻が発生していないと判定した場合（ステップＳ１０４，Ｎｏ）、処理をステップＳ１１３へ移す。
【００７８】
また、制御部３は、破綻が発生したと判定した場合（ステップＳ１０４，Ｙｅｓ）、同一演算周期のモデルがあるか否かを判定する（ステップＳ１０５）。そして、制御部３は、同一演算周期のモデルがないと判定した場合（ステップＳ１０５、Ｎｏ）、同一演算周期のモデルがない１つのモデルを１個のコアに割当て（ステップＳ１０７）、処理をステップＳ１１０へ移す。
【００７９】
また、制御部３は、同一演算周期のモデルがあると判定した場合（ステップＳ１０５，Ｙｅｓ）、同一演算周期のモデルの実時間／周期率の合計が１００％以下か否かを判定する（ステップＳ１０６）。
【００８０】
そして、制御部３は、実時間／周期率の合計が１００％以下でないと判定した場合（ステップＳ１０６，Ｎｏ）、実時間／周期率が高い方の１つのモデルを１個のコアに割当て（ステップＳ１０９）、処理をステップＳ１１０へ移す。
【００８１】
また、制御部３は、実時間／周期率の合計が１００％以下であると判定した場合（ステップＳ１０６，Ｙｅｓ）、演算周期が同一であり、且つ実時間／周期率の合計が１００％以下となる複数のモデルを１個のコアに割り当てる（ステップＳ１０８）。
【００８２】
続いて、制御部３は、未割当のモデルがあるか否かを判定する（ステップＳ１１０）。そして、制御部３は、未割当のモデルがあると判定した場合（ステップＳ１１０，Ｙｅｓ）、割当可能なコアがあるか否かを判定する（ステップＳ１１１）。
【００８３】
そして、制御部３は、割当可能なコアがないと判定した場合（ステップＳ１１１，Ｎｏ）、未割当のモデルを演算処理対象から除外し、未割当の演算処理対象から除外したモデルを報知し（ステップＳ１１２）、処理をステップＳ１１３へ移す。
【００８４】
また、制御部３は、割当可能なコアがあると判定した場合（ステップＳ１１１，Ｙｅｓ）、処理をステップＳ１０５へ移す。また、制御部３は、未割当のモデルがないと判定した場合（ステップＳ１１０，Ｎｏ）、演算部４によってシミュレーションを実行させ（ステップＳ１１３）、処理を終了する。
【００８５】
なお、上述した実施形態では、シミュレーション装置１は、ＰＣ１０から入力されるモデルのうち、演算周期が同一のモデルがないモデルについては、１個のコアに割当て、割当てるコアが不足する場合には、演算処理対象から除外したが、これは一例である。割当部３１が行うモデルの割当て方法は種々の変形が可能である。
【００８６】
シミュレーション装置１は、各コアに演算処理を実行していない期間があり、処理能力に余力がある場合には、演算周期が異なる複数のモデルを１個のコアに割当てる構成であってもよい。
【００８７】
かかる構成の場合、割当部３１は、まずは上述した割当方法によってモデルをコアへ割当てる。そして、割当部３１は、未割当てのモデルがあり、処理能力に余力のあるコアがある場合には、演算周期が同一でないモデルの実時間／周期率を合計した値が１００％より低い所定の閾値（例えば、８０％）となる複数のモデルを１個のコアに割当てる。
【００８８】
このように、割当部３１は、演算周期が同一でない複数のモデルを１個のコアに割当てる場合には、実時間／周期率の合計値と比較する閾値を１００％よりも低くする。これにより、シミュレーション装置１は、演算周期が同一でない複数のモデルを１個のコアによって演算処理する場合に、演算処理の破綻の発生を抑制しつつ、より多くのモデルを演算処理することができる。
【００８９】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【００９０】
１００  シミュレーションシステム
１  シミュレーション装置
２  第１入出力部
３  制御部
４  演算部
５  第２入出力部
１１，１３  通信ケーブル
１２  ＥＣＵ
３１  割当部
３２  計測部
３３  報知部
４１  第１コア
４２  第２コア
４３  第３コア
４４  第４コア
Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ  モデル
【図１】
2019160159.tif 000003
【図２】
2019160159.tif 000004
【図３】
2019160159.tif 000005
【図４】
2019160159.tif 000006
【図５】
2019160159.tif 000007
【図６】
2019160159.tif 000008
【図７】
2019160159.tif 000009