IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタテクニカルディベロップメント株式会社の特許一覧

特許7418368シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム
<>
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図1
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図2
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図3
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図4
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図5
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図6
  • 特許-シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-11
(45)【発行日】2024-01-19
(54)【発明の名称】シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム
(51)【国際特許分類】
   G06F 9/52 20060101AFI20240112BHJP
【FI】
G06F9/52 150A
【請求項の数】 5
(21)【出願番号】P 2021026794
(22)【出願日】2021-02-22
(65)【公開番号】P2022128331
(43)【公開日】2022-09-01
【審査請求日】2023-03-02
(73)【特許権者】
【識別番号】306020818
【氏名又は名称】トヨタテクニカルディベロップメント株式会社
(74)【代理人】
【識別番号】110002516
【氏名又は名称】弁理士法人白坂
(72)【発明者】
【氏名】仙田 康浩
(72)【発明者】
【氏名】上坂 周平
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2008-009880(JP,A)
【文献】特開2018-005318(JP,A)
【文献】特開2004-038785(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
シミュレーションの対象システムを表現した演算モデルを実行するシミュレーションシステムであって、
第1演算モデルと、第3演算モデルとを順番に実行する第1計算装置と、
第2演算モデルを実行する第2計算装置と、
を備え、前記第1演算モデル、前記第2演算モデル、及び前記第3演算モデルは前記演算モデルのうち並列演算を実行する演算モデルを割り振ったものであり、
前記第1計算装置は、ステップtの開始時に、前記第1演算モデルを実行し、
前記第2計算装置は、前記第1計算装置がステップtの前記第3演算モデルを実行するタイミングより前にステップtの前記第2演算モデルを実行し、
前記第1演算モデルと前記第2演算モデルの演算がいずれも終了した時点で前記第1計算装置は前記第2計算装置へ、前記第2計算装置は前記第1計算装置へ、計算結果を送信し、
前記第1計算装置は、前記第2計算装置から受信した計算結果を使用して、ステップtの前記第3演算モデルを実行し、
前記第2計算装置は、前記第1計算装置から受信した計算結果を使用して、ステップ(t+1)の前記第2演算モデルを実行し、
前記第1計算装置と前記第2計算装置は並列に演算を実行し、
前記第1演算モデルと、前記第3演算モデルの計算の刻み幅は、前記第2演算モデルの計算の刻み幅の整数倍であることを特徴とするシミュレーションシステム。
【請求項2】
前記第1演算モデルと、前記第3演算モデルの計算の刻み幅は、前記第2演算モデルの計算の刻み幅の2以上の整数倍であることを特徴とする請求項1に記載のシミュレーションシステム。
【請求項3】
前記第1計算装置はCPUであり、前記第2計算装置はFPGAであることを特徴とする請求項1又は2に記載のシミュレーションシステム。
【請求項4】
シミュレーションの対象システムを表現した演算モデルを実行するシミュレーション方法であって、
第1演算モデルと、第3演算モデルとを順番に実行する第1計算装置が、ステップtの開始時に、前記第1演算モデルを実行するステップと、
第2演算モデルを実行する第2計算装置が、前記第1計算装置がステップtの前記第3演算モデルを実行するタイミングの前にステップtの前記第2演算モデルを実行するステップと、
前記第1演算モデルと前記第2演算モデルの演算がいずれも終了した時点で前記第1計算装置が前記第2計算装置へ、前記第2計算装置が前記第1計算装置へ、計算結果を送信するステップと、
前記第1計算装置が、前記第2計算装置から受信した計算結果を使用して、ステップtの前記第3演算モデルを実行するステップと、
前記第2計算装置が、前記第1計算装置から受信した計算結果を使用して、ステップ(t+1)の前記第2演算モデルを実行するステップと、
を備え、前記第1演算モデル、前記第2演算モデル、及び前記第3演算モデルは前記演算モデルのうち並列演算を実行する演算モデルを割り振ったものであり、
前記第1計算装置と前記第2計算装置は並列に演算を実行し、
前記第1演算モデルと、前記第3演算モデルの計算の刻み幅は、前記第2演算モデルの計算の刻み幅の整数倍であることを特徴とするシミュレーション方法。
【請求項5】
コンピュータに、
第1演算モデルと、第3演算モデルとを順番に実行する第1計算装置に、ステップtの開始時に、前記第1演算モデルを実行させる機能と、
第2演算モデルを実行する第2計算装置に、前記第1計算装置にステップtの前記第3演算モデルを実行するタイミングの前にステップtの前記第2演算モデルを実行させる機能と、
前記第1演算モデルと前記第2演算モデルの演算がいずれも終了した時点で前記第1計算装置が前記第2計算装置へ、前記第2計算装置が前記第1計算装置へ、計算結果を送信させる機能と、
前記第1計算装置が、前記第2計算装置から受信した計算結果を使用して、ステップtの前記第3演算モデルを実行させる機能と、
前記第2計算装置が、前記第1計算装置から受信した計算結果を使用して、ステップ(t+1)の前記第2演算モデルを実行させる機能と、
を備え、前記第1演算モデル、前記第2演算モデル、及び前記第3演算モデルは前記演算モデルのうち並列演算を実行する演算モデルを割り振ったものであり、
前記第1計算装置と前記第2計算装置は並列に演算を実行し、
前記第1演算モデルと、前記第3演算モデルの計算の刻み幅は、前記第2演算モデルの計算の刻み幅の整数倍であることを実現させるシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーションシステム、シミュレーション方法及びシミュレーションプログラムに関し、特に、並列演算を実施するシミュレーションシステム、シミュレーション方法及びシミュレーションプログラムに関する。
【背景技術】
【0002】
近年、車両シミュレーションは大規模化、高精度化しており、シミュレーションの高速化に対するニーズが高まっている。高い高速効率で並列演算を行うために、方程式をメモリ相当のブロックで区切り、並列演算を行う方法がある(特許文献1及び特許文献2参照)。特許文献1及び特許文献2に開示の方法は、各ノードの計算が同じ刻み幅で行われる場合、及び互いに異なる刻み幅で行われる場合のいずれにも対応している。また、通信遅延による並列誤差を解消するため、物理的構造に含まれる積分演算を活用して、通信遅延による並列化誤差のない高い高速効率の並列演算を行う方法がある(特許文献3参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第4681513号
【文献】特許第5162531号
【文献】特許第6600280号
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1及び特許文献2には、車両シミュレーションを、複数のノードを用いて並列計算を行う並列シミュレーションにおいて、所定時間ごとに各ノードが相互に通信し、計算結果を授受する方法が開示されている。特許文献1及び特許文献2に開示されている方法によれば、各ノードが互いに計算結果を授受する際、遅延が生じ、遅延に起因する並列化誤差が発生する。
【0005】
特許文献3に開示されている方法は、並列シミュレーションにおいて、各ノードの計算が互いに異なる刻み幅で行われる場合には対応していない。
【0006】
上記問題点を鑑み、本発明は、同じ刻み幅、異なる刻み幅のいずれの場合で行われる並列演算であっても、通信遅延が低減された高速演算を行うことが出来るシミュレーションシステム、シミュレーション方法及びシミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第1の態様は、シミュレーションの対象システムを表現した演算モデルを実行するシミュレーションシステムであって、第1演算モデルと、第3演算モデルとを順番に実行する第1計算装置と、第2演算モデルを実行する第2計算装置と、を備え、第1演算モデル、第2演算モデル、及び第3演算モデルは演算モデルのうち並列演算を実行する演算モデルを割り振ったものであり、第1計算装置は、ステップtの開始時に、第1演算モデルを実行し、第2計算装置は、第1計算装置がステップtの第3演算モデルを実行するタイミングの前にステップtの第2演算モデルを実行し、第1演算モデルと第2演算モデルの演算がいずれも終了した時点で第1計算装置は第2計算装置へ、第2計算装置は第1計算装置へ、計算結果を送信し、第1計算装置は、第2計算装置から受信した計算結果を使用して、ステップtの第3演算モデルを実行し、第2計算装置は、第1計算装置から受信した計算結果を使用して、ステップ(t+1)の第2演算モデルを実行し、第1計算装置と第2計算装置は並列に演算を実行し、第1演算モデルと、第3演算モデルの計算の刻み幅は、第2演算モデルの計算の刻み幅の整数倍であることを備えたことを要旨とする。
【0008】
本発明の第1の態様において、第1演算モデルと、第3演算モデルの計算の刻み幅は、第2演算モデルの計算の刻み幅の2以上の整数倍であってよい。
【0009】
本発明の第1の態様において、第1計算装置はCPUであり、第2計算装置はFPGAであってよい。
【0010】
本発明の第2の態様は、シミュレーションの対象システムを表現した演算モデルを実行するシミュレーション方法であって、第1演算モデルと、第3演算モデルとを順番に実行する第1計算装置が、ステップtの開始時に、第1演算モデルを実行するステップと、第2演算モデルを実行する第2計算装置が、第1計算装置がステップtの第3演算モデルを実行するタイミングの前にステップtの第2演算モデルを実行するステップと、第1演算モデルと第2演算モデルの演算がいずれも終了した時点で第1計算装置が第2計算装置へ、第2計算装置が第1計算装置へ、計算結果を送信するステップと、第1計算装置が、第2計算装置から受信した計算結果を使用して、ステップtの第3演算モデルを実行するステップと、第2計算装置が、第1計算装置から受信した計算結果を使用して、ステップ(t+1)の第2演算モデルを実行するステップと、を備え、第1演算モデル、第2演算モデル、及び第3演算モデルは演算モデルのうち並列演算を実行する演算モデルを割り振ったものであり、第1計算装置と第2計算装置は並列に演算を実行し、第1演算モデルと、第3演算モデルの計算の刻み幅は、第2演算モデルの計算の刻み幅の整数倍であることを備えたことを要旨とする。
【0011】
本発明の第3の態様は、コンピュータに、以下の機能を実現させるシミュレーションプログラムであって、第1演算モデルと、第3演算モデルとを順番に実行する第1計算装置に、ステップtの開始時に、第1演算モデルを実行させる機能と、第2演算モデルを実行する第2計算装置に、第1計算装置にステップtの第3演算モデルを実行するタイミングの前にステップtの第2演算モデルを実行させる機能と、第1演算モデルと第2演算モデルの演算がいずれも終了した時点で第1計算装置が第2計算装置へ、第2計算装置が第1計算装置へ、計算結果を送信させる機能と、第1計算装置が、第2計算装置から受信した計算結果を使用して、ステップtの第3演算モデルを実行させる機能と、第2計算装置が、第1計算装置から受信した計算結果を使用して、ステップ(t+1)の第2演算モデルを実行させる機能と、を備え、第1演算モデル、第2演算モデル、及び第3演算モデルは演算モデルのうち並列演算を実行する演算モデルを割り振ったものであり、第1計算装置と第2計算装置は並列に演算を実行し、第1演算モデルと、第3演算モデルの計算の刻み幅は、第2演算モデルの計算の刻み幅の整数倍であることを実現させることを要旨とする。
【0012】
本発明によれば、並列演算におけるデータ受け渡しのタイミングを調整することにより、同じ刻み幅、異なる刻み幅のいずれの場合で行われる並列演算であっても、通信遅延が低減された高速演算を行うことが出来るシミュレーションシステム、シミュレーション方法及びシミュレーションプログラムを提供できる。
【図面の簡単な説明】
【0013】
図1】本発明の第1の実施形態に係るシミュレーションシステムの構成の一例を示すブロック図である。
図2】第1の実施形態に係るシミュレーションシステムの並列演算モデルの一例を示すブロック図である。
図3】第1の実施形態に係るシミュレーションシステムの並列演算モデルの具体例を示すブロック図である。
図4】第1の実施形態に係るシミュレーションシステムによる並列演算の処理タイミングを説明するタイミングチャートである。
図5】第2の実施形態に係るシミュレーションシステムによる並列演算の処理タイミングを説明するタイミングチャートである。
図6】従来のシミュレーションシステムによる並列演算の処理タイミングを説明するタイミングチャートである。
図7】従来のシミュレーションシステムの並列演算モデルの一例を示すブロック図である。
【発明を実施するための形態】
【0014】
次に、図面を参照して、本発明の実施形態を説明する。実施形態に係る図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。但し、図面は模式的なものであり、平面寸法との関係等は現実のものとは異なることに留意すべきである。したがって、具体的な寸法は以下の説明を参酌して判断すべきものである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【0015】
又、実施形態は、本発明の技術的思想を具体化するための装置や方法を例示するものであって、本発明の技術的思想は、各構成要素の構成や配置、レイアウト等を下記のものに特定するものでない。本発明の技術的思想は、特許請求の範囲に記載された請求項が規定する技術的範囲内において、種々の変更を加えることができる。
【0016】
(第1の実施形態)
本発明の第1の実施形態に係るシミュレーションシステムの構成の一例を図1に示す。図1に示すシミュレーションシステム10は、メイン計算装置101、記憶部102、入力手段103、出力手段104、システムバス105、第1計算装置111、第1記憶部121、第2計算装置112、第2記憶部122、…、第n計算装置11n、第n記憶部12nから構成されており、各構成要素はシステムバス105を介して互いに接続されている。ここで、nは2以上の整数である。
【0017】
メイン計算装置101は、シミュレーションシステム10の各構成要素を制御する。メイン計算装置101は、記憶部102に記憶されているプログラムを実行する。メイン計算装置101は、シミュレーションの対象となるシステムを表現する演算モデルを実行するが、それに際し、演算モデルに含まれる演算の構成要素のうち、並列演算を実行可能な要素を第1計算装置111、第2計算装置112、…、第n計算装置11nに割り振り、並列演算を実行させる。入力手段103は、例えば、キーボード、マウス等である。出力手段104への出力は、例えばディスプレイ等への表示、紙媒体等への印刷、又は音声による出力等であってよい。
【0018】
第1計算装置111、第2計算装置112、…、第n計算装置11nは、メイン計算装置101から割り振られた並列演算を実行する。第1計算装置111、第2計算装置112、…、第n計算装置11nは、並列演算の実行の際、第1記憶部121、第2記憶部122、…、第n記憶部12nに、演算処理のためのデータを一時的に記憶させる。
【0019】
第1計算装置111、第2計算装置112、…、第n計算装置11nは、CPU、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等の演算を実行可能なハードウェア回路である。第1計算装置111、第2計算装置112、…、第n計算装置11nの全てが、例えば、CPU、又はFPGA等であってもよく、又は、上記の各種ハードウェア回路の任意の組み合わせであってもよい。
【0020】
第1計算装置111、第2計算装置112、…、第n計算装置11nが演算を実行する際の、計算の刻み幅は、全て同じであってもよく、又は、互いに異なっていてもよい。演算実行の際の計算の刻み幅は、第1計算装置111、第2計算装置112、…、第n計算装置11nのそれぞれに割り振られた演算モデルに応じて決定されてもよい。以下では、n=2、即ち、シミュレーションシステム10は2つの並列演算のための回路である第1計算装置111、及び第2計算装置112を備え、第1計算装置111はCPU、第2計算装置112はFPGAであるとする。
【0021】
図2を参照しながら、本発明の第1の実施形態に係るシミュレーションシステムに適用される並列演算モデルを説明する。図2に示す並列演算モデルは、本実施形態に係るシミュレーションシステムに適用可能な並列演算モデルの一例である。図2に示す並列演算モデル20は、CPUモデル201と、FPGAモデル202とから構成される。CPUモデル201は、図1に示す第1計算装置111、FPGAモデル202は第2計算装置112に相当する。
【0022】
図2に示すように、CPUモデル201は、部分モデルA203、部分モデルB204、積分演算器205、メモリブロック206とから構成される。並列演算モデル20を構成する積分演算器205、メモリブロック206は、いずれも遅延要素である。部分モデルA203は、第1、2処理207、208から構成され、部分モデルB204は、第3~5処理209~211から構成されるとする。FPGAモデル202は、第6、7処理212、213から構成されるとする。
【0023】
部分モデルA203は、遅延要素である積分演算器205、及びメモリブロック206からの入力を受け取り、第1、2処理207、208を実行したのち、出力をFPGAモデル202に渡すが、直接FPGAモデル202からの入力を受け取ることはない。部分モデルB204は、FPGAモデル202からの入力を受け取り、第3~5処理209~211を実行したのち、出力を積分演算器205、及びメモリブロック206に渡すが、直接出力をFPGAモデル202に渡すことはない。
【0024】
図2に示した並列演算モデルに代表されるように、並列演算モデルは、CPUモデル201が積分演算器、メモリブロック等の遅延要素を含み、かつCPUモデル201が、遅延要素を境界として、以下の2つの条件C、及び条件Dを満たす2つのモデルに分割できる場合に、本実施形態に係るシミュレーションシステムに適用可能である。条件Cとは、2つのモデルのうち、一方のモデル(図2において、部分モデルA203に相当する)が、遅延要素(積分演算器205、及びメモリブロック206に相当する)からの入力を受け取り、出力をFPGAモデル(FPGAモデル202に相当する)に渡すが、直接FPGAモデルからの入力を受け取らないことである。条件Dとは、2つのモデルのうち、他方のモデル(部分モデルB204に相当する)が、FPGAモデルからの入力を受け取り、出力を遅延要素に渡すが、出力を直接FPGAモデルへ渡さないことである。
【0025】
部分モデルA203及び部分モデルB204は、積分演算器、メモリブロック等の遅延要素を含んでいてもよく、遅延要素を含んでいなくてもよい。また、部分モデルA203、又は部分モデルB204のいずれか一方が、実行する処理を含まない構成であってもよい。
【0026】
以下では、本実施形態に係るシミュレーションシステムの並列演算モデルのうち、部分モデルA203に相当する、条件Cを満たす部分モデルを第1演算モデルとする。また、部分モデルB204に相当する、条件Dを満たす部分モデルを第2演算モデルとする。
【0027】
図3及び図4を参照しながら、本実施形態に係るシミュレーションシステムを説明する。図3及び図4に示す並列演算モデルは、本実施形態に係るシミュレーションシステムの並列演算モデルの具体例であり、図2を参照しながら説明した本実施形態に係るシミュレーションシステムに適用可能な並列演算モデルの条件を満たすモデルである。また、図4に本実施形態に係るシミュレーションシステムによる並列演算の処理タイミングを説明するタイミングチャートを示す。図3及び図4に示す並列演算モデルは、例えば、ハイブリッド自動車の駆動モータの制御をシミュレーションの対象とした、FPGAに駆動モータモデルを実装し、CPUに車両/モータ制御モデルを実装したモデルを示している。
【0028】
図3に示すように、CPU320に実装した車両/モータ制御モデルは、第1シャフト301、第2シャフト302、デファレンシャルギア303、タイヤ304、積分演算器305、第1モータ制御装置306、メモリブロック307、第2モータ制御装置308から構成される。図4に示すように、CPU320の計算の刻み幅Δtを1[μs]とする。
【0029】
図3に示すように、FPGA330に実装した駆動モータモデルは、駆動モータ309から構成される。駆動モータは、制御周期が短く、駆動モータの制御装置とのデータの送受信等は高速で行われる。従って、図4に示すように、FPGA330の計算の刻み幅Δtは、CPU320の計算の刻み幅Δtよりも小さく、10[ns]とする。FPGA330の計算の刻み幅Δtは、CPU320の計算の刻み幅Δtの整数倍である必要がある。
【0030】
CPU320とFPGA330は、PCI Express等のシステムバス310、311によって互いに接続されている。
【0031】
第1モータ制御装置306と第2モータ制御装置308は同一の構成要素であるが、演算を実行するタイミングが互いに異なっており、動作を説明するために異なる構成要素として図2に示されている。第1シャフト301と第2シャフト302についても同様である。また、システムバス310とシステムバス311は、互いに同一であっても構わない。
【0032】
本実施形態においては、CPU320に振り分けられた演算モデルを、図4に示すように、演算の1ステップの前半に実行される演算モデルと、後半に実行される演算モデルとに分ける。前半に実行されるモデルは第1演算モデルであり、図2における部分モデルA203に相当する。また、後半に実行されるモデルは第3演算モデルであり、図2における部分モデルB204に相当する。第1演算モデルの演算実行終了後、第3演算モデルの演算実行前までの間に、CPU320とFPGA330とのデータの送受信を行う。図3において、第1演算モデル340は、破線で囲まれた、第1シャフト301、積分演算器305、及び第1モータ制御装置306の演算モデルに相当する。第3演算モデル350は、破線で囲まれた、第2シャフト302、デファレンシャルギア303、タイヤ304、及び第2モータ制御装置308の演算モデルに相当する。また、FPGA330に振り分けられた演算モデルを、第2演算モデルとする。
【0033】
第1計算装置の「ステップ」は、第1計算モデルの計算開始時に始まり、第3演算モデルの計算を行う期間を含み、次の第1演算モデルの計算開始直前までの期間である。第2計算装置の「ステップ」は、第2演算モデルの計算開始時から次の第2演算モデルの計算開始直前に終わる期間である。
【0034】
第2演算モデルは、自身のステップtにおける演算において、第1演算モデルのステップ(t-1)時点の計算結果、又は初期値を必要とする演算であり、第3演算モデルは、自身のステップtにおける演算において、第2演算モデルのステップt時点の計算結果を必要とする演算である。また、CPU320に振り分けられた演算モデルを第1演算モデルと第3演算モデルに分ける演算のタイミングは、ステップtの時点のCPU320に振り分けられた演算モデルの、ステップ(t+1)時点のFPGA330の第2演算モデルが演算を実行するために必要とする結果が得られるタイミング以降、次のステップが始まる前までである。
【0035】
以下に、図3及び図4を参照しながら、本実施形態に係るシミュレーションシステムの並列演算の流れについて説明する。最初に、図4におけるステップ(t-1)での、CPU320の第1演算モデル340の演算の実行について説明する。時刻tn-1[s]時点で、第1モータ制御装置306がメモリブロック307に記憶された3相電圧指令値Vuvw(tn-1)[V]を読み出す(第1演算モデル340)。同様に、時刻tn-1[s]時点で、積分演算器305が、ステップ(t-2)での第2演算モデルの演算の終了後に第2シャフト302から受信したシャフトトルクτ(tn-2)[Nm]を使用して、機械角速度ω(tn-1)[rad/s]を算出して第1シャフト301に送信してステップ(t-1)での、CPU320の第1演算モデル340の演算が終了する。
【0036】
図4におけるステップ(t-1)での、CPU320の第1演算モデル340の演算が実行されるのと同時に、FPGA330の第2演算モデルの演算が実行される。駆動モータ309は、時刻tn-1[s]時点の3相電圧指令値Vuvw(tn-1)及び機械角速度ω(tn-1)を受信すると、tまでモータトルクτ、及びロータ角速度ωの演算を実行して、FPGA330の第2演算モデルの演算が終了する。
【0037】
次に、CPU320とFPGA330とのデータの送受信を行う。第1モータ制御装置306が、3相電圧指令値Vuvw(tn-1)を駆動モータ309へ、システムバス310を介して送信する。同時に、第1シャフト301が算出された機械角速度ω(tn-1)[rad/s]を駆動モータ309へ、システムバス310を介して送信する。ここで、駆動モータ309は、時刻tn-1[s]時点の3相電圧指令値Vuvw(tn-1)[V]及び機械角速度ω(tn-1)を受信し、ステップtにおいて時刻t[s]時点のモータトルクτ(t)及びロータ角速度ω(t)を算出するため、この時点で計算の刻み幅Δtに等しい遅延が生じている。FPGA330の計算の刻み幅Δtは10[ns]であるので、Δt=10[ns]の遅延が生じており、従って誤差が生じる。
【0038】
一方、第2シャフト302は、時刻t[s]時点のモータトルクτ(t)を受信し、時刻t[s]時点のシャフトトルクτ[Nm]を算出しているため、遅延は生じない。
【0039】
次に、図4におけるステップ(t-1)での、CPU320の第3演算モデル350の実行について説明する。第2シャフト302は、時刻t[s]時点のモータトルクτ(t)を受信すると、時刻t[s]時点のシャフトトルクτを演算し、算出したシャフトトルクτ(t)[Nm]を、デファレンシャルギア303、及びタイヤ304へ送信する。タイヤ304は、時刻t時点の負荷トルクτを演算し、算出した負荷トルクτ[Nm]を、デファレンシャルギア303と、第2シャフト302へ送信する。
【0040】
第2モータ制御装置308は、時刻t[s]時点のロータ角速度ω(t)を受信すると、時刻t[s]時点の3相電圧指令値Vuvwを演算し、算出した3相電圧指令値Vuvw(t)[V]をメモリブロック307に記憶して図4におけるステップ(t-1)での、CPU320の第3演算モデル350の演算は終了する。
【0041】
ステップ(t-1)での、CPU320の第3演算モデル350の演算が終了すると、ステップtでの、CPU320の第1演算モデル340の演算が開始される。時刻t[s]時点で、第1モータ制御装置306は、メモリブロック307に記憶された3相電圧指令値Vuvw(t)[V]を読み出し、積分演算器305は、ステップ(t-1)での第3演算モデルの演算の終了後に第2シャフト302から受信したモータトルクτ(tn-1)[Nm]及びシャフトトルクτ(tn-1)[Nm]を使用し機械角速度ω(t)[rad/s]を算出して、CPU320の第1演算モデル340の演算は終了する。
【0042】
ステップtでの、FPGA330の第2演算モデルの演算は、駆動モータ309が3相電圧指令値Vuvw(tn-1)及び機械角速度ω(tn-1)[rad/s]を受信したのちに開始される。駆動モータ309は、時刻tn-1[s]時点の3相電圧指令値Vuvw(tn-1)及び機械角速度ω(tn-1)を受信すると、モータトルクτ、及びロータ角速度ωの演算を実行する。
【0043】
なお、第3演算モデルに対して第2演算モデルの計算結果が入力される場合であって、ステップt(t>1)における計算結果が入力される場合は遅延が発生しないが、第2演算モデルの計算結果が初期値に基づく計算結果である場合(ステップt(t=1)の計算結果)には、遅延が発生する。換言すると、ステップt(t>1)においては、CPU側は既に計算が終了しているFPGA側の計算結果を受領するだけで待機する必要がないため、同期に要する時間を短縮することが出来、その結果として1サイクルの計算に要する時間を短縮することが出来る。
【0044】
以上述べたように、本実施形態においては、CPUに振り分けられた演算モデルを、演算の1ステップの前半に実行される演算モデルと、後半に実行される演算モデルとに分け、前半に実行される演算の実行終了後、後半に実行される演算の実行前までの間に、CPUとFPGAとのデータの送受信を行う。後述する参考例において述べるように、従来のシミュレーションシステムでは、1ステップの演算の終了後にCPUとFPGAとのデータの送受信を行うため、CPUからFPGAへのデータ送信、及びFPGAからCPUへのデータ送信のいずれのタイミングにおいても遅延に起因する誤差が生じていた。本実施形態に係るシミュレーションシステムによれば、FPGAからCPUへのデータ送信の際、FPGAにおいて実行された演算のデータは、同ステップの後半にCPUにおいて実行される演算に受け渡されるため、遅延が生じず、従って通信遅延を抑制することが可能となる。第1計算装置から第2計算装置へのデータ送信の際に生じる遅延は、第2計算装置の刻み幅に等しい。よって、第2計算装置の刻み幅が小さいほど遅延が小さくなる。ゆえに、より刻み幅が短い計算装置(本実施形態においてはFPGA)を第2計算装置とすることで、後述する第2実施形態と比較して一層遅延を低減することができる。
【0045】
(参考例)
図6に、特許文献1、及び特許文献2に開示されているような、従来のシミュレーションシステムによる並列演算の処理タイミングを説明するタイミングシーケンスチャートを示す。また、図7に、従来のシミュレーションシステムの並列演算モデルの一例を示す。図7に示す演算モデルの構成要素は、図3に示す構成要素と同様であるが、図6に示すように、CPU320とFPGA330とのデータの送受信のタイミングが、第1の実施形態に係るシミュレーションシステムによるデータの送受信のタイミングと異なる。
【0046】
図6では、CPU320では1μs、FPGA330では10nsの刻み幅で演算を行う。CPU及びFPGAは、各ステップ(1μs)ごとに相互に通信し、計算結果を授受する。ステップ1の計算を開始する際、CPU及びFPGAは初期値を受け取り、計算を開始する。CPUがステップ1の演算を1回行う間、FPGAは10ns刻みで演算を行う。ステップ1の計算が終了したのち、ステップ2の演算を開始するまでに、CPUはFPGAが0.99~1μsの間、即ち10ns前に行った演算による計算結果を受け取り、FPGAはCPUが0~1μsの間、即ち1μs前に行った演算による計算結果を受け取る。従って、CPUがFPGAから計算結果を受け取る際に発生する1μsの遅延、及びFPGAがCPUから計算結果を受け取る際に発生する10nsの遅延に起因する並列化誤差が発生する。
【0047】
(第2の実施形態)
第1の実施形態に係るシミュレーションシステム10では、第1計算装置111はCPU、第2計算装置112はFPGAであった。本実施形態においては、第1計算装置、及び第2計算装置のいずれもCPUであり、いずれのCPUも1μsの刻み幅で演算を行うとする。図5に、本実施形態に係るシミュレーションシステムによる並列演算の処理タイミングを説明するタイミングチャートを示す。本実施形態のように、第1計算装置と第2計算装置との計算の刻み幅が同一の場合でも、第1の実施形態と同様、第2計算装置から第1計算装置へ計算結果を渡す際の遅延が生じないようにすることができる。なお、本実施形態では、第1計算装置から第2計算装置へ計算結果を渡す際、1μsの遅延が生じる。
【0048】
以上述べたように、本発明の第1、第2の実施形態にかかるシミュレーションシステム、シミュレーション方法及びプログラムによって、並列演算におけるデータ受け渡しのタイミングを調整することにより、同じ刻み幅、異なる刻み幅のいずれの場合で行われる並列演算であっても、通信遅延が低減された高速演算を行うことが可能となった。
【0049】
以上、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【0050】
10 シミュレーションシステム
101 メイン計算装置
102 記憶部
103 入力手段
104 出力手段
105 システムバス
111 第1計算装置
121 第1記憶部
112 第2計算装置
122 第2記憶部
11n 第n計算装置
12n 第n記憶部
20 並列演算モデル
201 CPUモデル
202 FPGAモデル
203 部分モデルA
204 部分モデルB
205 積分演算器
206 メモリブロック
207~213 第1~7処理
320 CPU
301 第1シャフト
302 第2シャフト
303 デファレンシャルギア
304 タイヤ
305 積分演算器
306 第1モータ制御装置
307 メモリブロック
308 第2モータ制御装置
309 駆動モータ
310、211 システムバス
320 CPU
330 FPGA
340 第1演算モデル
350 第3演算モデル
図1
図2
図3
図4
図5
図6
図7