(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-13
(45)【発行日】2024-08-21
(54)【発明の名称】産業システムをシミュレーションするコンピューティングプラットフォームとそのシミュレーションを管理する方法
(51)【国際特許分類】
G06F 15/177 20060101AFI20240814BHJP
G06F 9/455 20180101ALI20240814BHJP
G06F 9/445 20180101ALI20240814BHJP
【FI】
G06F15/177 A
G06F9/455
G06F9/445 150
(21)【出願番号】P 2023513863
(86)(22)【出願日】2021-08-25
(86)【国際出願番号】 EP2021073441
(87)【国際公開番号】W WO2022043352
(87)【国際公開日】2022-03-03
【審査請求日】2023-05-08
(32)【優先日】2020-08-27
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】520467176
【氏名又は名称】シーメンス インダストリー ソフトウェア エヌヴェ
【氏名又は名称原語表記】SIEMENS INDUSTRY SOFTWARE NV
(74)【代理人】
【識別番号】110003317
【氏名又は名称】弁理士法人山口・竹本知的財産事務所
(74)【代理人】
【識別番号】100075166
【氏名又は名称】山口 巖
(74)【代理人】
【識別番号】100133167
【氏名又は名称】山本 浩
(74)【代理人】
【識別番号】100169627
【氏名又は名称】竹本 美奈
(72)【発明者】
【氏名】ビルギリ,アフメト
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2009-211167(JP,A)
【文献】特開2007-188384(JP,A)
【文献】米国特許出願公開第2019/0005606(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/177
G06F 9/455
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
異種プロセッサ(242,262)を使用して産業システムのシミュレーションを管理する方法であって、
前記産業システムのシミュレーションモデルの少なくとも1つのインスタンスを生成することを含み、
前記異種プロセッサ(242,262)のうちの第1のプロセッサ(242)に関連付けられた第1のメモリ(250)において動的メモリ領域(252)を割り当てる連続メモリアロケータを生成し、前記シミュレーションモデルが前記第1のメモリ(250)の前記動的メモリ領域(252)に格納され、
前記異種プロセッサ(242,262)の前記第1のプロセッサ(242)に関連付けられた前記動的メモリ領域(252)の前記連続メモリアロケータを使用してインスタンス(342)を生成し、このインスタンス(342)の生成は、前記インスタンス(342)による要求に応答して前記連続メモリアロケータにより動的割り当て(346,348)を提供することを含み、これら動的割り当て(346,348)は、前記動的メモリ領域(252)に提供され、
前記インスタンス(342)のコピー(362)のアドレスに関連付けられたメモリポインタに基づいて前記動的メモリ領域(252)の前記インスタンス(342)を使用することを、前記異種プロセッサ(242,262)のうちの第2のプロセッサ(262)に対して可能にし、
前記動的メモリ領域(252)に記憶された前記シミュレーションモデルによる前記第1のメモリ(250)の消費に基づいて、前記第2のプロセッサ(262)に関連付けられた第2のメモリ(270)を前記第1のメモリ(250)のサイズに割り当て、
該割り当てに基づいて前記第1のメモリ(250)を前記第2のメモリ(270)にコピーし、スペシャルメモリポインタインスタンス(364)が前記第2のメモリ(270)の動的割り当て(366,368)を指し、これによって前記シミュレーションモデルが実行にあたり前記第2のプロセッサ(262)からアクセス可能であり、
前記第2のメモリ(270)にコピーされた前記シミュレーションモデルを実行することによって前記第2のプロセッサ(262)で前記産業システムをシミュレーションし、
前記動的割り当て(346,348)が、スペシャルメモリポインタインスタンス(344)によって相対的に参照され、前記スペシャルメモリポインタインスタンス(344,364)は、前記動的割り当て(346,348)に対するその相対的距離を決定するように構成され、前記メモリポインタが、前記スペシャルメモリポインタインスタンス(344,364)を使用して生成される、ことを特徴とする方法。
【請求項2】
前記異種プロセッサ(242,262)によってアクセス可能な前記動的メモリ領域(252)を割り当て、
前記動的メモリ領域(252)に関する前記インスタンスの前記スペシャルメモリポインタインスタンス(344)を作成し、
前記異種プロセッサ(242,262)の間で前記インスタンス(342)及び前記インスタンスのコピー(362)を共有し、前記動的メモリ領域(272)の前記インスタンス(342)のアドレスが、前記スペシャルメモリポインタインスタンス(344,364)を使用して決定される、ことをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のプロセッサ(242)で前記インスタンス(342)を初期化し、該インスタンス(342)は少なくとも1つの関数を実行するように初期化され、
前記メモリポインタ及び前記インスタンスのコピー(362)を使用して、当該初期化されたインスタンス(342)を前記第2のプロセッサ(262)で参照する、ことをさらに含む、請求項1又は2に記載の方法。
【請求項4】
前記第1のプロセッサ(242)によって実行される第1のシミュレーションアプリケーション(256)に前記動的メモリ領域(252)を割り当て、該第1のシミュレーションアプリケーション(256)は前記初期化されたインスタンスを生成し、
前記第2のプロセッサ(262)によって実行される第2のシミュレーションアプリケーション(274)に関連付けられた前記第2のメモリ(270)に前記動的メモリ領域(252)をコピーすることによって、前記初期化されたインスタンスにアクセスし、該初期化されたインスタンスが、前記第2のシミュレーションアプリケーション(274)によって、前記産業システムをシミュレートするために使用される、ことをさらに含む、請求項3に記載の方法。
【請求項5】
前記異種プロセッサ(242,262)が、少なくともCPU(Central Processing Unit)とGPU(Graphics Processing Unit)とを含み、前記第1のプロセッサ(242)が前記CPUであり且つ前記第2のプロセッサ(262)が前記GPUであるか、又はその逆である、請求項1に記載の方法。
【請求項6】
前記産業システムが自律走行車であり、前記シミュレーションモデルが、前記自律走行車の周囲の環境の環境モデル、物理ベースのモデル、及び前記自律走行車の動作パラメータの予測モデルを含む、請求項1に記載の方法。
【請求項7】
前記産業システムが自律走行車であり、前記シミュレーションモデルが、前記自律走行車の周囲の環境の環境モデル、物理ベースのモデル、及び前記自律走行車の動作パラメータの予測モデルを含む、請求項4に記載の方法。
【請求項8】
前記自律走行車の複数の構成と、車両環境の複数のオブジェクト及びオブジェクトパラメータとに基づいて、前記シミュレーションモデルの複数のインスタンスを生成し、該複数のインスタンスは前記第1のシミュレーションアプリケーション(256)によって生成され、前記複数の構成及び前記複数のオブジェクト及びオブジェクトパラメータが前記第1のシミュレーションアプリケーション(256)によって読み出されるソフトウェアライブラリであり、
前記動的メモリ領域(252)において前記複数のインスタンスを動的に割り当て、
前記第2のシミュレーションアプリケーション(274)によってアクセスされる前記第2のメモリ(270)に前記動的メモリ領域(252)をコピーし、
前記第2のシミュレーションアプリケーション(274) によって、前記初期化されたインスタンス
をコシミュレーションし、
このコシミュレーションに基づいて、前記自律走行車の最適構成を決定する、ことをさらに含む、
請求項7に記載の方法。
【請求項9】
前記産業システムが産業プラントのタービンであり、前記シミュレーションモデルは、前記タービンの動作をシミュレーションするための物理ベースの関数及び予測関数を含む、請求項1に記載の方法。
【請求項10】
産業システムをシミュレーションするコンピューティングプラットフォームであって、
(1) 第1のプロセッサ(242)及び第2のプロセッサ(262)を含む2つ以上の異種プロセッサ(242,262)と、
(2) 前記第1のプロセッサ(242)に関連付けられた第1のメモリ(250)及び前記第2のプロセッサ(262)に関連付けられた第2のメモリ(270)と、
(3) メモリアロケーションモジュールと、を備え、
前記メモリアロケーションモジュールは、
(a) 前記第1のメモリ(250)において動的メモリ領域(252)を割り当てるための連続メモリアロケータを生成し、シミュレーションモデルが前記第1のメモリ(250)の前記動的メモリ領域(252)に記憶され、前記連続メモリアロケータは、前記シミュレーションモデルのインスタンス(342)による要求に応答して動的割り当て(346,348)を提供するためにあり、前記動的メモリ領域(252)に前記動的割り当て(346,348)が提供され、
(b) 前記インスタンス(342)のコピー(362)のアドレスに関連付けられたメモリポインタに基づいて前記異種プロセッサ(242,262)の前記第2のプロセッサ(262)が前記動的メモリ領域(252)の前記インスタンス(342)を使用することを、可能にし、
(c) 前記動的メモリ領域(252)に記憶された前記シミュレーションモデルによる前記第1のメモリ(250)の消費に基づいて、前記第2のプロセッサ(262)に関連付けられた前記第2のメモリ(270)を前記第1のメモリ(250)のサイズに割り当て、
(d) 該割り当てに基づいて前記第1のメモリ(250)を前記第2のメモリ(270)にコピーし、スペシャルメモリポインタインスタンス(364)が前記第2のメモリ(270)の動的割り当て(366,368)を指し、これによって前記シミュレーションモデルが実行にあたり前記第2のプロセッサ(262)からアクセス可能である、ように構成され、
(e) 前記動的割り当て(346,348)がスペシャルメモリポインタインスタンス(344)によって相対的に参照され、該スペシャルメモリポインタインスタンス(344,364)は、前記動的割り当て(346,348)に対するその相対的距離を決定するように構成され、前記メモリポインタが前記スペシャルメモリポインタインスタンス(344,364)を使用して生成され、前記第2のプロセッサ(262)は、前記第2のメモリ(270)にコピーされた前記シミュレーションモデルを実行することによって該第2のプロセッサ(262)で前記産業システムをシミュレーションすることができる、コンピューティングプラットフォーム。
【請求項11】
前記異種プロセッサ(242,262)は、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)の少なくとも1つを含み、前記第1のプロセッサ(242)が前記CPUであり且つ前記第2のプロセッサ(262)が前記GPUである、
請求項10に記載のコンピューティングプラットフォーム。
【請求項12】
コンピュータプログラムを記録した製品であって、機械可読命令を記録してあり、該機械可読命令を実行する
請求項10に記載のコンピューティングプラットフォームが、請求項1に記載の方法ステップを実行する、コンピュータプログラムを記録した製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、産業システムのシミュレーションに関する。より具体的には、本発明は、産業システムのシミュレーションに異種プロセッサを使用することに関する。
【背景技術】
【0002】
産業システムのシミュレーションにおいて、産業システムの状態変数をシミュレーションするシミュレーションプログラムは、1つ以上の種類のプロセッサを使用して実行され得る。例えば、自律走行車の場合では、シミュレーションプログラムを使用して、自律走行車のボディに適した材料をシミュレーションすることができる。このシミュレーションプログラムでは、複数の材料種類のプロパティをもつライブラリであるクラスインスタンスを使用できる。クラスインスタンスは、CPU(Central Processing Unit)セントリックであることから、GPU(Graphics Processing Unit)では実行できない。
【0003】
別の例では、産業システムがタービンである。シミュレーションプログラムは、タービンからの窒素酸化物(NOx)排気をシミュレーションするために使用することができる。C++クラスが、タービン内のNOxセンサからの測定値を含むセンサデータファイルの読み取りに使用できる。さらに、C++クラスは、シミュレーションプログラムに基づいてセンサデータに演算を実行するために使用される。センサデータは、CPUを使用して読み出すことができる。データのサイズは事前に分からないので、動的割り当て(ダイナミックアロケーション)が発生することがあり、センサデータは、CPUによってアクセス可能なメモリロケーション(CPUメモリ)に読み出される。そして、シミュレーションプログラムの関数を使用して、演算がメモリロケーションで実行される。
【0004】
これらの例において、GPUで同じコードを使用する必要がある場合、GPUコード用にクラスインスタンスをコンパイルする必要がある。しかしながら、CPUにおいてデータを読み出すインスタンスが直接共有されない。データを読み取るインスタンスを共有するには、クラスインスタンスのコピー/再構成を明示的(explicit)に実行しなければならない。さらに、動的に割り当てられたメモリをGPUメモリにコピーする必要もある。
【0005】
図1は、従来技術に係るCPUメモリ/第1のメモリ110とGPUメモリ/第2のメモリ120の明示的な管理を説明している。クラスインスタンス112は、オペレーション「コピー」132を使用して、CPUメモリ110からGPUメモリ120へコピーされる。コピーオペレーション132に従って、クラスインスタンス122がGPUメモリ120に記憶される。クラスインスタンス112は、動的割り当て114及び動的割り当て116などの複数の動的割り当てを要求することができる。動的割り当ては、GPUメモリ120において明示的にコピー/再構成される必要がある。例えば、動的割り当て114は、コピーオペレーション134を使用してコピーされる。その結果、動的割り当て114は動的割り当て126としてGPUメモリに記憶される。さらに、動的割り当て116は、コピーオペレーション136を使用してコピーされ、動的割り当て124としてGPUメモリ120に記憶される。
【0006】
動的割り当て数が増加すると、既存の技法はますます複雑になる。多数の動的割り当てがある場合、動的割り当てのそれぞれを追跡し、明示的なコードでコピーする必要がある。このことが、GPU又はCPUコードの場合に、追跡していくにあたってソースコードに非常に干渉することがある。
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述のとおり、異種プロセッサを使用する可能性のあるシミュレーションプログラムの管理を改善する必要がある。本発明は、シミュレーションに異種プロセッサを使用して産業システムのシミュレーションを管理するシステム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
一例として、異種プロセッサを使用して産業システムのシミュレーションを管理する方法によって、本発明の目的は達成される。この方法は、産業システムのシミュレーションモデルの少なくとも1つのインスタンスを生成することを含む。この方法は、異種プロセッサのうちの第1のプロセッサに関連付けられた動的メモリ領域に連続メモリアロケータ(CMA)を使用してインスタンスを生成し、そのインスタンスのコピーのアドレスに関連付けられたメモリポインタに基づいて第2のプロセッサが動的メモリ領域のインスタンスを使用できるようにし、インスタンスのコピーをアクセスすることによって第2のプロセッサにより産業システムをシミュレーションする、ことを特徴とする。
【0009】
別の例として、上記目的を達成するために、産業システムをシミュレーションするコンピューティングプラットフォームが開示される。このコンピューティングプラットフォームは異種プロセッサを含む。このコンピューティングプラットフォームは、第1のプロセッサからアクセス可能な第1のメモリと、第2のプロセッサにおける第1のメモリの使用に基づいて割り当てられる第2のメモリと、産業システムのシミュレーションモデルの少なくとも1つのインスタンスに対して少なくとも1つのメモリポインタを生成するように構成されたメモリアロケーションモジュールとを含む。該インスタンスは第1のプロセッサによって初期化され、該インスタンスのコピーが第2のプロセッサによって使用される。
【0010】
別の例としてコンピュータプログラムを記録した製品も含まれ、このコンピュータプログラムを記録した製品には機械可読命令が記録されている。機械可読命令は、ここに開示するコンピューティングプラットフォームで実行されると、該コンピューティングプラットフォームに、ここに開示する方法ステップを実行させる。
【0011】
連続メモリアロケータ、割り当てられた動的メモリ領域、及びメモリポインタの技術的効果は、異種プロセッサ間でコードを明示的に共有するエフォートの減少である。その結果、明示的メモリ管理に起因するエラーを回避できる。本発明は、異種プロセッサの少なくとも1つによって使用されるメモリを暗黙的に管理する技術を提案する。特に、異種プロセッサ間で産業システムのシミュレーションモデルのインスタンスを共有する暗黙的方法を提供する。これにより、本発明は、異種プロセッサを使用しながら、クラスの複雑な初期化(例えば、ディスクからデータを読み出す、データを処理するなど)を可能にする。さらに、本発明は、実行に際し異種プロセッサを使用するハイブリッドシミュレーションプログラムを開発するときに同じコードを維持できるようにする利点がある。さらに言えば、同じシミュレーションプログラムが異なるアーキテクチャで実行されるので、本発明は、シミュレーションモデルのより容易で効果的な試験を可能にする。これらのことより、本発明は、産業システムのシミュレーションモデル及びシミュレーションの開発時間を低減することができる。
【0012】
提案概念をより詳細に説明する前に、特定の語句及び表現の様々な定義が本書の全体を通して提供されていることが理解されるべきであり、当分野で通常の知識をもつ者であれば、当該定義は、その定義された語句及び表現のこれまでとこれからの使用に、ほぼ全てとまでいかずとも多くの事例において、当てはまることを理解できる。いくつかの用語は広範囲の形態を含むが、特許請求の範囲は、これらの用語を具体的な形態に特別に限定することもある。また、提案する方法の関係で説明される特徴は、システムを適切に構成し適合させることによって、提案するシステムにも含まれるし、この逆もまた同様であることも理解されるべきである。
【0013】
ここで使用する「産業システム」は、生産、製造に使用されるシステム/設備を指し、半自動又は全自動とされ得る。産業システムは、自動化環境の一部である場合もある。例えば、産業自動化環境、パワープラント自動化環境、自律走行車自動化環境、ラボラトリ自動化環境、建築自動化環境などである。さらに、本発明によれば、自動化環境は、産業自動化環境、ラボラトリ自動化環境、建築自動化環境の1つ以上の組み合わせを含むこともある。
【0014】
産業システムは、物理装置、及び物理装置を構成し制御するために使用され得るデジタルモデルを含む、制御装置、センサ、アクチュエータにも関連し得る。例えば、コンピュータ数値制御(CNC)機械、産業生産設備における自動化システム、モータ、発電機などである。産業システムは、互いに相互作用する制御装置、アクチュエータ、及びセンサの1つ以上を使用する複雑なシステムにも関連し得る。本発明の目的で、産業システムは、異種プロセッサを使用して動作及び機能をシミュレーションすることができるあらゆるシステムである。当分野で通常の知識を有する者であれば、産業システムは特定の業種に限定されず、シミュレーションアプリケーションは産業全体に広く使用されていることを理解している。
【0015】
ここで使用する「センサデータ」は、産業システムの動作及び動作条件に関連するデータである。センサデータは、各種のソース(例えば、センサ、ユーザ装置など)から受信される。センサは、システムに関連する動作パラメータを測定する。例えば、センサは、熱撮像装置、振動センサ、電流及び電圧センサなどを含む。用語「動作パラメータ」は、システムの1つ以上の特性を意味する。すなわち、センサデータは、システムの動作に関連する動作パラメータの測定値である。例えば、センサデータは、振動、温度、電流、磁束、速度、モータなどの産業システムに関連する動力、又は産業環境におけるロータを表すデータポイントを、含む。センサデータは、シミュレーションモデルの少なくとも1つのインスタンスを生成するために、シミュレーションモデルによって使用される。
【0016】
ここで使用する「異種プロセッサ」は、複数の種類のプロセッサ又はコアを指す。異種プロセッサを有するコンピューティングプラットフォームは、異種プロセッサを考慮した特別な処理能力を有する。一つの例では、コンピューティングプラットフォームは、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)といった異種プロセッサを含む。例えば、異種プロセッサは、少なくともCPUとGPUとを含み、第1のプロセッサがCPU、第2のプロセッサがGPUであり、その逆もあり得る。
【0017】
異種プロセッサは、特にコシミュレーション(co-simulation)の場合に、産業環境をシミュレーションするために使用されることが多い。一つの例において、産業モデルのシミュレーションモデルを実行するインスタンス及びライブラリは、第1のプロセッサに関連付けられた第1のメモリにおいて利用可能である。第2のプロセッサを使用してシミュレーションモデルをコシミュレーションするときに、インスタンスは、本発明を利用して第2のプロセッサで利用可能となる。すなわち、本発明は、シミュレーションインスタンス又はオブジェクトが第1のメモリにおいて複数の動的アドレス空間に記憶され且つ関連付られた仮想関数/動的割り当てと共に第2のプロセッサによって起動可能である、状況に対処する。
【0018】
一つの例において、産業システムは自律走行車であり、この場合のシミュレーションモデルは、自律走行車の周囲環境の環境モデル、物理ベースのモデル、及び自律走行車の動作パラメータの予測モデルを含む。自律走行車に関するシミュレーションモデルは、初期仮想試験を提供する利点があり、この試験は、道路上での潜在的にコストのかかる衝突及び事故から自律走行車の製造者を保護することができる。シミュレーションモデルは、環境モデルのインスタンスを実行して、環境モデルによってシミュレーションされた様々な交通シナリオに自律走行車のコントローラが反応することを可能とするように、構成される。一例として、交通シナリオは、第1のプロセッサに関連付けられた第1のメモリにライブラリとして記憶される。初期化されると各トラフィックシナリオは、第1のメモリにおいて動的割り当てを要求するように設定される。さらに、第2のプロセッサは、初期化されたトラフィックシナリオに基づいて自律走行車のコントローラの出力信号(速度低下など)をシミュレーションするために使用される。すなわち、本発明は、トラフィックシナリオのコピーのアドレスに関連付けられたメモリポインタに基づいて第2のプロセッサが初期化されたトラフィックシナリオにアクセスすることを可能にする。
【0019】
例えば、本方法は、自律走行車に関する複数の構成と車両環境内の複数のオブジェクト及びオブジェクトパラメータとに基づいて、シミュレーションモデルの複数のインスタンスを生成することを含む。この複数のインスタンスは、第1のシミュレーションアプリケーションによって生成される。さらに、これら複数の構成及び複数のオブジェクト及びオブジェクトパラメータは、第1のシミュレーションアプリケーションによって読み出されるソフトウェアライブラリである。本方法は、動的メモリ領域において複数のインスタンスを動的に割り当て、第2のシミュレーションアプリケーションによってアクセスされる第2のメモリに動的メモリ領域をコピーすることも含む。さらに、本方法は、初期化されたインスタンスを第2のシミュレーションアプリケーションによってコシミュレーションし、コシミュレーションに基づいて自律走行車の最適構成を決定することを含む。これにより、本発明は、自律走行車をシミュレーションし構成するために、異種プロセッサを効果的に使用することを可能にするという利点をもつ。
【0020】
当分野で通常の知識をもつ者であれば、自律走行車の例が限定されることは全くないということを理解できる。本発明の技術的効果は、異種プロセッサで実行されるシミュレーションモデルを使用してシミュレーションされるあらゆる産業システムにおいて達成される。
【0021】
一つの例において、産業システムは産業プラントのタービンであり、この場合のシミュレーションモデルは、タービンの動作をシミュレーションするための物理ベースの関数及び予測関数を含む。タービンのシミュレーションモデルは、応力とひずみを決定するタービンブレードの詳細な構造モデルを含むタービンのあらゆる態様をシミュレーションするように構成されている。例えば、風力タービンの場合、シミュレーションモデルは、風力シナリオに対する風力タービンの動作をシミュレーションするロータの空力モデルを含む。この例において、風力シナリオは、気象条件の履歴測定値に基づいて、又は、機械学習モデルに基づいて気象条件に適用される予測関数を通して、生成される。第1のプロセッサは、風力シナリオを生成し、それらをライブラリとして第1のメモリに記憶するように構成される。空力モデルは、風力シナリオのコピーのアドレスに関連付けられたメモリポインタに基づいて第1メモリの風力シナリオにアクセスすることによって、第2プロセッサにより実行される。
【0022】
一つの例において、本方法は、第1のプロセッサの第1のメモリにおいて動的メモリ領域を割り当てるために、連続メモリアロケータを生成することを含む。この場合、シミュレーションモデルは、第1のメモリの動的メモリ領域に記憶される。連続メモリアロケータは、インスタンスを個別に割り当てることができる第1のメモリのアリーナ/領域を画定することによって、動的メモリ領域を割り当てるように設定される。動的メモリ領域は、低いオーバヘッドの柔軟な方法でメモリの割り当て及び割り当て解除を容易にする利点をもつ。
【0023】
本方法は、インスタンスによる要求に応答して連続メモリアロケータによる動的割り当てを提供することをさらに含む。この場合の動的割り当ては、動的メモリ領域において提供され、各動的割り当ては、スペシャル(専用の)メモリポインタインスタンスによって相対的に参照され、このスペシャルメモリポインタインスタンスは、動的割り当てに対するその相対的距離を決定するように構成される。メモリポインタは、スペシャルメモリポインタインスタンスを使用して生成される。すなわち、本方法では、シミュレーションインスタンスに関連付けられた追加の割り当てが動的メモリ領域において行われることが保証される。さらに、後続の動的割り当ては、スペシャルメモリポインタインスタンスからの相対的距離に基づいて簡単にマッピングされる。相対的距離は、メモリポインタによって動的割り当てを参照するために使用され、これによって第2のプロセッサが動的割り当てにアクセスできる。このように、産業システムのシミュレーションモデルは、第1のプロセッサと第2のプロセッサとの間の明示的なメモリ管理の懸念なしで、第1のプロセッサによる複雑な初期化をもって初期化される。
【0024】
一つの例において、本方法は、動的メモリ領域に記憶されたシミュレーションモデルによる第1のメモリの消費に基づいて、第2のプロセッサに関連付けられた第2のメモリを第1のメモリのサイズに対し割り当てることを含む。第2のメモリは、シミュレーションモデル、シミュレーションインスタンス、及びその後の動的割り当てを記憶するのに十分なメモリとして用意される。本方法はさらに、割り当てに基づいて第1のメモリを第2のメモリにコピーすることを含み、この場合、スペシャルメモリポインタインスタンスが第2のメモリにおける動的割り当てを指し、これによってシミュレーションモデルは実行にあたり第2のプロセッサにアクセス可能である。第1のメモリのコンテンツを第2のメモリにコピーすることで、動的割り当てとスペシャルメモリポインタインスタンスを伴う動的メモリ領域が第2のメモリにコピーされる。コピーされたスペシャルメモリポインタインスタンスは、相対的距離に基づいて動的割り当てをマッピングするメモリポインタを生成するように構成されている。
【0025】
本方法は、第1のプロセッサでインスタンスを初期化することを含み、このインスタンスは、少なくとも1つの関数を実行するために初期化される。そして本方法は、メモリポインタ及びインスタンスコピーを使用して、第2のプロセッサにより、初期化されたインスタンスを参照することを含む。すなわち本発明は、クラス(シミュレーションモデル)がインスタンス化されると、通常のメモリコピーを使用してインスタンスを簡単にコピーすることができる、ということを提案する。インスタンスコピーは、メモリポインタを使用して第2のプロセッサで使用できる。さらに、本方法は、第1のプロセッサによって実行される第1のシミュレーションアプリケーションに動的メモリ領域を割り当てることを含み、その第1のシミュレーションアプリケーションは、初期化されたインスタンスを生成する。そして本方法は、第2のプロセッサによって実行される第2のシミュレーションアプリケーションに関連付けられた第2のメモリに動的メモリ領域をコピーすることによって、初期化されたインスタンスにアクセスすることを含み、この初期化されたインスタンスが、第2のシミュレーションアプリケーションによって、産業システムをシミュレーションするために使用される。
【0026】
したがって、本方法は、第2のメモリにコピーされたシミュレーションモデルを実行することによって、第2のプロセッサにより産業システムをシミュレーションすることも含む。本方法は、特に、CPU及びGPUに係るハイブリッドソリューションを開発する場合に有用である。明示的メモリ管理に起因するエラーが少なくなることで、開発時間の大幅な短縮が実現され得る。さらに、シミュレーションモデルのテストが、異なるアーキテクチャの使用により、より容易に、効果的に、正確に行われる。
【0027】
一つの例において、本方法は、動的メモリ領域のアドレスを一連のメモリポインタにマッピングすることを含み、この一連のメモリポインタは、動的メモリ領域におけるインスタンスのアドレスに対するメモリポインタを含む。本方法は、スペシャルメモリポインタインスタンスのアドレスと動的メモリ領域のインスタンスのアドレスとの間の相対的距離に基づいて、スペシャルメモリポインタインスタンスを生成することを含む。
【0028】
一つの例において、本方法は、異種プロセッサからアクセス可能な動的メモリ領域を割り当て、動的メモリ領域に関してインスタンスのスペシャルメモリポインタを定義し、そのインスタンスが第1のプロセッサ及び第2のプロセッサのどちらに固有であるか識別し、識別結果に基づいて異種プロセッサ間でインスタンス及びインスタンスコピーを共有することを含む。この場合、動的メモリ領域におけるインスタンスのアドレスは、スペシャルメモリポインタを使用して決定される。本方法は、どの関数がCPU及び/又はGPUに固有であるかを識別する方法を提供する。
【図面の簡単な説明】
【0029】
以下、次の図に示された実施例を参照して本発明を説明する。
【0030】
【
図1】従来技術に係る図で、よる異種プロセッサ間の明示的な管理を示す。
【
図2】本発明の一実施例に係る図で、産業システムをシミュレーションするコンピューティングプラットフォームのブロック図を示す。
【
図3】本発明の一実施例に係る図で、異種プロセッサを使用して産業システムのシミュレーションを管理する方法のフロー図を示す。
【
図4】本発明の一実施例に係る図で、異種プロセッサを使用して産業システムのシミュレーションを管理する方法の方法ステップを示す。
【発明を実施するための形態】
【0031】
以下、本発明を実施する実施例を詳細に説明する。様々な実施例が図面を参照して開示されるが、全体を通して、同様の要素を参照するために同様の参照符号が使用される。以下の説明では、解説を目的として、1つ以上の実施例の十分な理解を提供するために多くの具体的詳細が説明される。これら実施例がその具体的詳細でなくとも実施できることは明らかである。
【0032】
本発明の一実施例に係る
図2は、異種プロセッサ242,262を使用して1つ以上の自律走行車をシミュレーションするコンピューティングプラットフォーム200のブロック図を示す。
【0033】
コンピューティングプラットフォーム200は、自律走行車の周囲の環境を反映する環境モデルを生成するように構成された環境モジュール210を含む。環境モデルはセンサデータ212及び214から生成される。センサデータ212は、自律走行車の加速度、減速度、ホイールスリップ角、及び車両ロールを示すセンサ値を含む。さらにセンサデータ214は、LiDAR、カメラ及びレーダーのセンサデータを含む。自律走行車のシミュレーションは、センサデータ212及び214の再構成を通じて環境モデルを生成することによって実行することができる。したがって、環境モデルは、自律走行車と関連環境のデジタル表現として作用する。
【0034】
コンピューティングプラットフォーム200は、シナリオデータベース220も含む。自律走行車のシミュレーションは、1つ以上の交通条件を示す複数のシナリオに対して実行される。自律走行車のコントローラは、多数の複雑なシナリオを認識し反応することが求められる。シナリオはシナリオデータベース220に記憶される。
【0035】
コンピューティングプラットフォーム200は、シミュレーションモデルを生成するように構成されたシミュレーションモジュール230を含む。シミュレーションモデルは、自律走行車と環境モデルの物理ベースのモデルである。シミュレーションモデルは、自律走行車の複数の挙動インスタンスを含むことができる。シミュレーションモジュール230は、シミュレーションインスタンスを生成するためのインスタンス生成器232を含む。シミュレーションインスタンスはシミュレーションモデルから生成され、異種プロセッサ242,262によって実行可能である。シミュレーションインスタンスは、シミュレーションモジュールから作成されるオブジェクトとして生成できる。シミュレーションモジュールは、オブジェクト、つまりシミュレーションインスタンスを作成するクラスとして機能する。
【0036】
コンピューティングプラットフォーム200は、異種プロセッサ242,262を含めたコンピューティングユニット240を有する。
図2において、異種プロセッサは、CPU242とGPU262である。コンピューティングユニット240はさらに、CPU242に関連付けられた第1のメモリ250と、GPU262に関連付けられた第2のメモリ270とを含む。また、コンピューティングユニット240は、グラフィカルユーザインタフェース244,264を表示するように構成されたディスプレイ280を含む。一実施例において、コンピューティングユニット240が、シミュレーションモジュール230、シナリオデータベース220、及び環境モジュール210を含む例も可能である。
【0037】
CPU242及びGPU262は、それぞれ、メモリ250,270に記憶されたシミュレーションアプリケーション256,274(Sim app 1, 2)を実行して、自律走行車の挙動をシミュレーションする。シミュレーションの結果は、それぞれGUI244とGUI264を介してディスプレイ280に表示される。
【0038】
第1のメモリ250は、動的メモリ領域252とメモリアロケータモジュール254とを含む。作動中、メモリアロケータモジュール254は、動的メモリ領域252を割り当てる連続メモリアロケータを生成するように構成される。さらに、メモリアロケータモジュール254は、スペシャルメモリポインタインスタンスを使用してGPU262によって使われるメモリポインタを生成するように構成されている。オペレーションの詳細を
図3に示す。
【0039】
シミュレーションインスタンスのインスタンシエート(インスタンス作成)には連続メモリアロケータを使用できる。インスタンシエートされると、シミュレーションインスタンスがシミュレーションモデルの固有表現を生成する。さらに、シミュレーションインスタンスによって要求される動的割り当てが、動的メモリ領域において連続メモリアロケータにより提供される。第2のメモリ270は、動的メモリ領域272のコピーを含む。GPU262は、動的メモリ領域272に記憶されたインスタンスコピーを介して、動的メモリ領域252においてインスタンシエートされたシミュレーションインスタンスにアクセスすることができる。動的メモリ領域252はスペシャルメモリポインタインスタンスを含み、スペシャルメモリポインタインスタンスは、自身との相対的距離に基づいて、インスタンシエートされたインスタンスを参照する。コンピューティングユニット240のオペレーションを
図3に説明してある。
【0040】
本発明の一実施例に係る
図3は、異種プロセッサ242,262を使用した自律走行車のシミュレーションを管理する方法のフロー図を示す。ステップ302において、コンピューティングユニット240は、関数1(Function 1)、関数2(Function 2)、及びスペシャルポインタP(SpecialPointer P)を用いたシミュレーションモデルの記述を受信する。関数1及び関数2は、シミュレーションアプリケーション256,274を使用して実行されるシミュレーションオペレーションに基づく。
【0041】
ステップ304で、連続メモリアロケータが、シミュレーションモデルのシミュレーションインスタンスのためのインスタンスメモリを割り当てる。ステップ306で、シミュレーションインスタンス342及びスペシャルメモリポインタインスタンス344が、動的メモリ領域252においてCPUメモリ250に作成される。シミュレーションインスタンス342は、スペシャルメモリポインタインスタンス344を含む。
【0042】
ステップ308で、動的メモリ領域がスペシャルメモリポインタインスタンス344に割り当てられる。ステップ310で、連続メモリアロケータによる動的割り当てが、シミュレーションインスタンス342による要求に応答する。動的割り当て346及び348が動的メモリ領域において提供される。図示のように、動的割り当てA(Dynamic allocation A)346及び動的割り当てB(Dynamic allocation B)348はランダムに提供され、したがって、従来技術では、動的割り当て346及び348を参照することは(
図1に示すように)困難であった。動的割り当て346及び348のそれぞれは、スペシャルメモリポインタインスタンス344によって、動的割り当て346及び348に対するその相対的距離350に基づいて、相対的に参照される。
【0043】
ステップ312で、CPUメモリ250がGPUメモリ270にコピーされる。その結果、シミュレーションインスタンス342のインスタンスコピー362とスペシャルメモリポインタインスタンス344のポインタコピー364とが、動的メモリ領域272のコピーにおいて作成される。動的割り当て346及び348も動的割り当て366及び368にコピーされる。ポインタコピー364は、スペシャルメモリポインタインスタンス344と異なるものであり得る。それでもポインタコピー364は、相対的距離350に基づいて動的割り当て366及び368を参照するように構成される。
【0044】
ステップ314で、GPU262を使用してシミュレーションモデルがコンパイルされる。さらに、ステップ316で、GPU262は、ポインタコピー364を使用して、動的割り当て366及び368にアクセスすることができる。ポインタコピー364は、相対的距離350に基づいて動的割り当て366及び368を特定することができる。以上のとおり、本発明は、CPU242とGPU262との間でメモリを明示的に管理するという課題を克服する。
【0045】
一例において、シミュレーションアプリケーション256は、自律走行セダン車で使用される材料をシミュレーションすることに関連する。材料をシミュレーションすることにより、自律走行セダン車の強度、剛性、及び衝突応答の判定が可能になる。このシミュレーションにあたり、シミュレーションアプリケーション256は、CPU242によってのみ読み出される、材料特性に関するC++ライブラリを初期化する。材料特性の例としては、波長、弾性、難燃性、導電率及び熱伝導率などが挙げられる。シミュレーションアプリケーション274は、自律走行ハッチバック車の損傷及び疲労をシミュレーションすることに関連する。シミュレーションアプリケーション256によって初期化された材料ライブラリが、上述の方法に基づいてシミュレーションアプリケーション274によってアクセスされる。
【0046】
当分野で通常の知識をもつ者であれば、自律走行車の例は、異種プロセッサを使用してシミュレーションされるあらゆる産業システムに拡張可能であることを理解できる。本発明の一実施例に係る
図4は、異種プロセッサを使用した産業システムのシミュレーションを管理する方法の各方法ステップを示す。
【0047】
この方法は、産業システムのシミュレーションモデルの少なくとも1つのインスタンスを生成することを含む。シミュレーションモデルは、産業システムの物理ベースのモデルと、機械学習に基づく予測モデルである。シミュレーションモデルは、物理ベースモデル及び予測モデルに基づいて、産業システムの複数の挙動インスタンスをシミュレーションすることができる。シミュレーションインスタンスは、シミュレーションモデルから生成され、異種プロセッサによって実行可能であるから、ハイブリッドシミュレーションモデルとも言える。シミュレーションインスタンスは、シミュレーションモジュールから作成されたオブジェクトとして生成できる。シミュレーションモジュールは、オブジェクト(シミュレーションインスタンス)を作成するクラスとして機能する。
【0048】
ここで使用する「物理ベースのモデル」は、システム識別、産業システムに関連する関連アセンブリ、産業システムに関連する動作条件、システムパラメータ、及びシステムパラメータと予測性能指標との間の関係、を含み得る。例えば、物理ベースのモデルは、産業システムに関連する、一次元表現、三次元表現、プロセス及び計装表現を含む。物理ベースのモデルは、さらに、産業システムのダイナミクス、エレクトロニクス及びコントロールを用いた機械的機能の表現、材料及び製造方法を含み得る。また、産業システムの挙動を予測するために、物理ベースのモデルをシミュレーションしてもよい。
【0049】
ここで使用する「予測モデル」は、産業システムのデータベース化したモデルを含む。例えば、予測モデルは、パターン認識アルゴリズムなどの1つ以上の機械学習アルゴリズムを使用して、産業システムに関連付けられたセンサデータ、履歴動作データ、及び合成データのうちの少なくとも1つを分析することによって生成される。センサデータは、機械学習アルゴリズムを使用してリアルタイムで分析され得る。また、履歴動作データは、経過時間の瞬間のセンサデータを参照している。さらに、合成データは、統計的予測アルゴリズムを使用してセンサデータ又は履歴動作データに基づき生成されるデータを含む。
【0050】
ステップ410で、少なくとも1つのシミュレーションインスタンス(以下、インスタンスと呼ぶ)が、異種プロセッサの第1のプロセッサに関連付けられた動的メモリ領域に対する連続メモリアロケータを使用して作成される。例えば、ステップ306に示すように、連続メモリアロケータは、第1のプロセッサによって生成され、第1のプロセッサに関連付けられた第1のメモリに動的メモリ領域を割り当てる。したがって、ステップ420で、動的メモリ領域を割り当てるために連続メモリアロケータが生成される。
【0051】
動的メモリ領域に作成されたインスタンスは、動的割り当てを要求する。したがって、ステップ430で、動的メモリ領域において動的割り当てが提供される。その結果、インスタンスがインスタンシエートされるときに初期化される追加関数のインスタンスに、メモリが割り当てられる。ステップ430は、スペシャルメモリポインタインスタンスによって相対的に動的割り当てを参照することも含む。例えば、ステップ310に示すように、スペシャルメモリポインタインスタンスは、動的割り当てに対する相対的距離を決定するように設定される。
【0052】
ステップ440で、異種プロセッサの第2のプロセッサは、インスタンスのコピーのアドレスに関連付けられたメモリポインタに基づいて、インスタンスを使用することが可能とされる。メモリポインタは、スペシャルメモリポインタインスタンスを使用して、インスタンスコピーのアドレスを決定する。一つの実施例において、インスタンスコピーは、動的メモリ領域に作成されたインスタンスによる第1のメモリの消費に基づいて、第2のプロセッサに関連付けられた第2のメモリを第1のメモリのサイズに割り当てることによって生成される。また、インスタンスコピーは、割り当てに基づいて第1のメモリを第2のメモリにコピーすることで生成され、この場合に、例えばステップ312及び316に示されるように、スペシャルメモリポインタが第2のメモリのインスタンスコピーを指し、それによって、インスタンスは、実行にあたり第2のプロセッサからアクセス可能である。
【0053】
ステップ450で、産業システムは、動的メモリ領域のインスタンスにアクセスすることによって、第2のプロセッサによりシミュレーションされる。例えば、シミュレーションモデルは、インスタンスコピーを使用する第2のプロセッサを使用してコンパイルされる。一つの実施例において、ステップ450は、スペシャルメモリポインタインスタンスを使用して第2のプロセッサで実行されるシミュレーションアプリケーションによりインスタンスコピーを参照することを含む。
【0054】
本発明は、1つ以上のコンピュータ、プロセッサ、又は命令実行システムによって又はこれらに関連して使用されるプログラムコードを記録する、コンピュータで使用可能な又はコンピュータプログラムを記録した製品/コンピュータ読み取り可能媒体からアクセス可能なプログラムモジュールを含む、コンピュータプログラム記録製品の形態をとることができる。説明のために言えば、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって又はこれらに関連して使用するために、プログラムを含み、記録し、通信し、伝搬し、又は転送することのできるあらゆる装置とすることができる。媒体は、電子、磁気、光学、電気磁気、赤外線、又は半導体のシステム(又は装置又はデバイス)、あるいは、物理的コンピュータ可読媒体の定義に含まれない信号担体であるそれらの中の又はそれらの伝搬媒体であったり、半導体又はソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、コンパクトディスクリードオンリメモリ(CD-ROM)、コンパクトディスクリード/ライト、及びDVDを含む。当該技術の各態様を実現するためのプロセッサ及びプログラムコードの両方は、当分野で通常の知識を有する者には知られているように、集中又は分散(又はそれらの組み合わせ)させることができる。
【0055】
本発明について特定の実施例を参照して詳細に説明したが、本発明がそれら実施例に限定されないことは当然である。ここに開示の内容に基づいて、ここに説明した本発明の様々な実施例の範囲から逸脱することなく、当分野で通常の知識をもつ者であれば、多くの変更及び派生が存在することを理解し得る。したがって、本発明の範囲は、以上の説明によってではなくて、特許請求の範囲によって示される。特許請求の範囲と等価の意味と範囲内にある全ての変更、変形、及び派生は、その範囲内にあると見なされるべきである。方法の請求項に係る全ての有益な形態は、システム/装置/デバイスの請求項にも当てはまる。