(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022152388
(43)【公開日】2022-10-12
(54)【発明の名称】情報処理装置、情報処理方法及び情報処理プログラム
(51)【国際特許分類】
G06F 9/52 20060101AFI20221004BHJP
G06F 9/54 20060101ALI20221004BHJP
【FI】
G06F9/52 150A
G06F9/54 Z
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021055145
(22)【出願日】2021-03-29
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.MATLAB
(71)【出願人】
【識別番号】306020818
【氏名又は名称】トヨタテクニカルディベロップメント株式会社
(74)【代理人】
【識別番号】110002516
【氏名又は名称】特許業務法人白坂
(72)【発明者】
【氏名】中塚 裕司
(72)【発明者】
【氏名】杉本 彩香
(72)【発明者】
【氏名】鈴木 紀康
(72)【発明者】
【氏名】川口 晃
(57)【要約】
【課題】効率的な演算処理を行うことができる情報処理装置、情報処理方法及び情報処理プログラムを提供する。
【解決手段】情報処理装置は、計算モデルを取得する取得部と、取得部によって取得した計算モデルを、その計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割部と、分割部によって複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、分割部によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定部と、推定部によって推定される第1指数及び第2指数に基づいて算出される第3指数が予め設定される閾値未満であるかを判定する判定部と、判定部による判定結果を出力するよう制御する出力制御部と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
計算モデルを取得する取得部と、
前記取得部によって取得した計算モデルを、当該計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割部と、
前記分割部によって複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、前記分割部によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定部と、
前記推定部によって推定される第1指数及び第2指数に基づいて算出される第3指数が予め設定される閾値未満であるかを判定する判定部と、
前記判定部による判定結果を出力するよう制御する出力制御部と、
を備える情報処理装置。
【請求項2】
前記判定部は、第1指数を分子とし、第2指数を分母として除算を行い、当該除算を行った結果の数値としての第3指数が閾値未満と判定されるコンポーネントを特定し、
前記出力制御部は、前記判定部によって特定されるコンポーネントに関する情報を出力するよう制御する
請求項1に記載の情報処理装置。
【請求項3】
前記分割部は、前記判定部によって判定される第3指数が閾値以上の場合、前記判定部における当該計算が行われるコンポーネントを構成する要素においてさらに分割して、複数のコンポーネントを生成する
請求項1又は2に記載の情報処理装置。
【請求項4】
前記分割部は、複数のコンポーネントを、前段のコンポーネントにおける計算結果を後段のコンポーネントにおいて利用するように積分通信が可能に分割する
請求項1~3のいずれか1項に記載の情報処理装置。
【請求項5】
前記分割部は、前記前段のコンポーネントと前記後段のコンポーネントとの間に要素を配し、当該要素において積分演算を行う
請求項4に記載の情報処理装置。
【請求項6】
前記出力制御部によって出力される判定結果としての複数のコンポーネントに基づいて回路に実装させる実装部と、
前記実装部に実装される回路に基づいて演算処理を行う演算部と、
を備える請求項1~5のいずれか1項に記載の情報処理装置。
【請求項7】
コンピュータが、
計算モデルを取得する取得ステップと、
前記取得ステップによって取得した計算モデルを、当該計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割ステップと、
前記分割ステップによって複数のコンポーネントに分割した場合の計算のリソースに関する第1指数と、前記分割ステップによって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定ステップと、
前記推定ステップによって推定される第1指数及び第2指数に基づいて算出される計算に必要なリソースに関する第3指数が予め設定される閾値未満であるかを判定する判定ステップと、
前記判定ステップによる判定結果を出力するよう制御する出力制御ステップと、
を実行する情報処理方法。
【請求項8】
コンピュータに、
計算モデルを取得する取得機能と、
前記取得機能によって取得した計算モデルを、当該計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割機能と、
前記分割機能によって複数のコンポーネントに分割した場合の計算のリソースに関する第1指数と、前記分割機能によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定機能と、
前記推定機能によって推定される第1指数及び第2指数に基づいて算出される計算に必要なリソースに関する第3指数が予め設定される閾値未満であるかを判定する判定機能と、
前記判定機能による判定結果を出力するよう制御する出力制御機能と、
を実現させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【0002】
従来から、対象のモデルについて演算を行うシミュレーションが行われている。ところで、対象のモデルの規模が大きくなった場合、演算処理に必要な時間が長くなる。そこで、特許文献1に記載された技術は、対象のモデルを複数のサブモデルに分割して並列的に演算処理を行い、演算処理の高速化を図っている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したようにモデルを分割する場合、例えば、演算効率が相対的に高くなるようにモデルを分割することが求められる。すなわち、モデルの演算規模が相対的に大きい場合に相対的に細かく分割を行うと、分割後のサブモデル間の並列的な演算処理に関する結合、すなわち分岐要素の組み合わせが膨大になる。このため、並列的な演算処理を行う場合でも、適切な演算を行うことが求められていた。
【0005】
本発明は、効率的な演算処理を行うことができる情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
一態様の情報処理装置は、計算モデルを取得する取得部と、取得部によって取得した計算モデルを、その計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割部と、分割部によって複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、分割部によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定部と、推定部によって推定される第1指数及び第2指数に基づいて算出される第3指数が予め設定される閾値未満であるかを判定する判定部と、判定部による判定結果を出力するよう制御する出力制御部と、を備える。
【0007】
一態様の情報処理装置では、判定部は、第1指数を分子とし、第2指数を分母として除算を行い、その除算を行った結果の数値としての第3指数が閾値未満と判定されるコンポーネントを特定し、出力制御部は、判定部によって特定されるコンポーネントに関する情報を出力するよう制御することとしてもよい。
【0008】
一態様の情報処理装置では、分割部は、判定部によって判定される第3指数が閾値以上の場合、判定部におけるその計算が行われるコンポーネントを構成する要素においてさらに分割して、複数のコンポーネントを生成することとしてもよい。
【0009】
一態様の情報処理装置では、分割部は、複数のコンポーネントを、前段のコンポーネントにおける計算結果を後段のコンポーネントにおいて利用するように積分通信が可能に分割することとしてもよい。
【0010】
一態様の情報処理装置は、分割部は、前記前段のコンポーネントと前記後段のコンポーネントとの間に要素を配し、その要素において積分演算を行うこととしてもよい。
【0011】
一態様の情報処理装置は、出力制御部によって出力される判定結果としての複数のコンポーネントに基づいて回路に実装させる実装部と、実装部に実装される回路に基づいて演算処理を行う演算部と、を備えることとしてもよい。
【0012】
一態様の情報処理方法では、コンピュータが、計算モデルを取得する取得ステップと、取得ステップによって取得した計算モデルを、その計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割ステップと、分割ステップによって複数のコンポーネントに分割した場合の計算のリソースに関する第1指数と、分割ステップによって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定ステップと、推定ステップによって推定される第1指数及び第2指数に基づいて算出される計算に必要なリソースに関する第3指数が予め設定される閾値未満であるかを判定する判定ステップと、判定ステップによる判定結果を出力するよう制御する出力制御ステップと、を実行する。
【0013】
一態様の情報処理プログラムは、コンピュータに、計算モデルを取得する取得機能と、取得機能によって取得した計算モデルを、その計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割機能と、分割機能によって複数のコンポーネントに分割した場合の計算のリソースに関する第1指数と、分割機能によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定機能と、推定機能によって推定される第1指数及び第2指数に基づいて算出される計算に必要なリソースに関する第3指数が予め設定される閾値未満であるかを判定する判定機能と、判定機能による判定結果を出力するよう制御する出力制御機能と、を実現させる。
【発明の効果】
【0014】
一態様の情報処理装置は、計算モデルを構成する要素において分割して複数のコンポーネントを生成し、複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、分割部によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定し、第1指数及び第2指数に基づいて算出される第3指数が予め設定される閾値未満であるかを判定する判定し、その判定の結果を出力するよう制御するので、効率的な演算処理を行うことができる。
また、一態様の情報処理方法及び情報処理プログラムは、一態様の情報処理装置と同様の効果を奏することができる。
【図面の簡単な説明】
【0015】
【
図1】一実施形態に係る情報処理システムについて説明するための図である。
【
図2】一実施形態に係る情報処理装置について説明するためのブロック図である。
【
図3】取得部によって取得する計算モデルの一例について説明するための図である。
【
図4】分割部によって分割される結果の一例について説明するための図である。
【
図5】分割部によって分割される複数のコンポーネントそれぞれの変数の一例について説明するための図である。
【
図6】実装部によって回路に実装する場合の一例について説明するための第1の図である。
【
図7】実装部によって回路に実装する場合の一例について説明するための第2の図である。
【
図8】演算部によって行われた演算の結果の一例について説明するための図である。
【
図9】本実施例の処理の流れについて説明するための図である。
【
図10】積分演算(積分通信)を行う場合の一例について説明するための図である。
【
図11】一実施形態に係る情報処理方法について説明するためのフローチャートである。
【発明を実施するための形態】
【0016】
本明細書では、「情報」の文言を使用しているが、「情報」の文言は「データ」と言い換えることができ、「データ」の文言は「情報」と言い換えることができる。
【0017】
まず、一実施形態に係る情報処理装置200の概要について説明する。
図1は、一実施形態に係る情報処理システム1について説明するための図である。
【0018】
情報処理システム1は、情報処理装置200を備える。情報処理装置200は、例えば、サーバ100との間で通信が可能である。サーバ100には、例えば、情報処理装置200においてシミュレーションの対象となる計算モデルに関する情報が記憶される。情報処理装置200は、例えば、計算モデルに関する情報をサーバ100から取得する。
又は、情報処理装置200は、自機内で計算モデルが生成され記憶部222等に記憶してもよい。
情報処理装置200は、自機内で生成される計算モデル、及び、記憶部222に記憶される計算モデルを取得する。
【0019】
情報処理装置200は、計算モデルを複数のコンポーネントに分割する。情報処理装置200は、例えば、複数のコンポーネントに分割する場合、各コンポーネントにおける演算の効率が高くなるように分割する。この場合、情報処理装置200は、分割した複数のコンポーネント間で積分通信が可能なように、各コンポーネント(一例として、前段のコンポーネントと後段のコンポーネントと)を接続する。ここで一般的に、積分演算は、初期値を備え、その初期値と現在の値とを利用して積分を行い、その積分の結果を次のステップで利用する。積分通信は、積分演算の中の途中に通信処理を入れることにより、積分した値を通信して次のステップで利用することを可能にする。積分通信は、演算の精度が劣化するのを抑制し、また遅延が生じるのを抑制して、積分演算を活用した通信を行うものである。すなわち、積分通信は、例えば、前段のコンポーネントと後段のコンポーネントとの間に積分器を介在させ、前段のコンポーネントにおける計算結果を積分器が取得して積分演算を行い、その演算結果を前段のコンポーネント及び後段のコンポーネントの両方に出力するような通信であってもよい。情報処理装置200は、そのように積分通信を行うことにより、複数のコンポーネントそれぞれにおいて並列処理を可能にすることが可能になる。
【0020】
情報処理装置200は、例えば、上述したように生成される積分通信が可能な複数のコンポーネントを回路300に実装できるようにし(コンポーネントを回路の論理回路で変換し、及び、公知のパイプライン処理を行い)、回路300の一例としてのFPGA(Field Programmable Gate Array)に実装する。情報処理装置200は、例えば、計算モデルをFPGAに実装することにより、1クロックで複数の演算(並列処理)を行うことが可能にすることができる。すなわち、情報処理装置200は、回路300(一例として、FPGA等)を利用して、複数のコンポーネントの並列演算を行い、計算モデルのシミュレーションを行う。
【0021】
次に、情報処理装置200の詳細について説明する。
図2は、一実施形態に係る情報処理装置200について説明するためのブロック図である。
【0022】
情報処理装置200は、通信部221、記憶部222、表示部223、実装部215及び制御部210、を備える。通信部221、記憶部222及び表示部223は、「出力部」の一実施形態であってもよい。制御部210は、例えば、情報処理装置200の演算処理装置等の機能として実現されてもよい。制御部210は、取得部211、分割部212、推定部213、出力制御部214、実装部215及び演算部216として機能してもよい。
【0023】
通信部221は、例えば、情報処理装置200の外部にある装置(外部装置)(一例として、サーバ100、デスクトップ、ラップトップ、タブレット及びスマートフォン等)との間で通信が可能である。通信部221は、例えば、制御部210の制御に基づいて、サーバ100から計算モデルに関する情報を受け付けてもよい。
【0024】
記憶部222は、例えば、種々の情報及びプログラムを記憶する。記憶部222は、例えば、制御部210の制御に基づいて情報処理装置200において生成される計算モデルに関する情報を記憶してもよい。又は、記憶部222は、例えば、制御部210の制御に基づいて、通信部221を介してサーバ100から取得される計算モデルに関する情報を記憶してもよい。
【0025】
表示部223は、例えば、種々の文字、記号及び画像等を表示する。表示部223は、例えば、計算モデルを表示してもよい。
【0026】
取得部211は、計算モデルを取得する。取得部211は、例えば、通信部221を介してサーバ100等から計算モデルを取得する。又は、取得部211は、例えば、情報処理装置200において生成される計算モデルを取得する。又は、取得部211は、例えば、記憶部222に記憶される計算モデルを取得する。
一例として、取得部211は、MATLAB Simscape等による物理方程式ベースの物理コンポーネントを利用した非因果モデルを取得してもよい。非因果モデルは、例えば、入出力の因果関係を明確に示す必要がないモデルであってもよい。すなわち、非因果モデルは、例えば、計算の順番が決まっていないモデルであってもよい。情報処理装置200は、例えば、システム及びコンポーネントのふるまいを保存則で記述することにより非因果のモデル化を行うことが可能である。計算モデルは、物理コンポーネントを接続することに基づく物理ネットワークとして生成される。
【0027】
分割部212は、取得部211によって取得した計算モデルを、その計算モデルを構成する要素において分割して複数のコンポーネントを生成する。分割部212は、例えば、計算モデルを複数のコンポーネントに分割する場合、複数のコンポーネントを、前段のコンポーネントの出力値と後段のコンポーネントの出力値とに基づいて演算(例えば、積分演算を行うことが可能な要素としての積分器等において演算)を行い、その演算の結果を前段のコンポーネントと後段のコンポーネントとに出力する積分通信が可能に分割することとしてもよい。この場合、分割部212は、前段のコンポーネントと後段のコンポーネントとの間に要素(例えば、積分器等)を配し、その要素(積分器)において演算(積分演算)を行うこととしてもよい。すなわち、分割部212は、複数のコンポーネントを、前段(又は、後段)のコンポーネントにおける演算結果を後段(又は、前段)のコンポーネントにおいて利用するようにする通信(積分通信)が可能に分割することとしてもよい。
【0028】
分割部212は、例えば、計算モデルのうち積分通信ができる要素を把握し、その要素の位置で計算モデルを分割してコンポーネントを生成する。一例として、分割部212は、相対的にまとまった演算が可能な単位で計算モデルを分割し、その単位をコンポーネントとして生成する。
【0029】
上述したように、積分通信は、例えば、積分演算の中の途中に通信処理を入れることにより、積分した値を通信して次のステップで利用することを可能にする。すなわち、積分通信は、分割したコンポーネントの要素(例えば、積分器)の積分演算を利用して、分割したコンポーネント間の通信を行う。積分通信は、分割したコンポーネント(並列化対象のモデル)から信号を受信して合算・積分の演算処理を行い、その演算処理の結果の出力(出力変数)を共通信号としてコンポーネントに送る(戻す)、すなわち共通信号を並列化対象のモデルに送信する。積分通信は、共通信号を同じタイミングで前段及び後段のコンポーネントに送信することで、並列化による通信遅延誤差の発生を抑制することが可能になる。
【0030】
換言すると、積分通信は、例えば、前段のコンポーネントの出力と、後段のコンポーネントの出力とを要素(積分器)が入力して積分演算を行い、その積分演算の結果を前段のコンポーネント及び後段のコンポーネントの両方に出力するような通信モデルであってもよい。
【0031】
積分通信の具体的な一例は、次のようになる。前段のコンポーネントは、演算(例えば、積分演算)を行って演算結果(第1値)を後段のコンポーネントに出力する。同様に、後段のコンポーネントは、演算(例えば、積分演算)を行って演算結果(第2値)を前段のコンポーネントに出力する。前段のコンポーネントは、後段のコンポーネントと同期処理を行い、第1値及び第2値を利用して演算(例えば、積分演算)を繰り返す。同様に、後段のコンポーネントは、前段のコンポーネントと同期処理を行い、第1値及び第2値を利用して演算(例えば、積分演算)を繰り返す。このような演算処理(積分演算)に利用されるのが、積分通信である。
【0032】
すなわち、分割部212は、例えば、計算モデルの物理的構造から積分処理で通信ができ、共通の信号を受信する並列演算が可能な、積分器となる箇所(要素)を解析する。その箇所(要素に相当する実装品)の一例は、車両のエンジンと車輪とを接続するシャフト、電子回路に配されるコンデンサ、及び、気体の状態方程式等の各サブシステムからエネルギを取得して蓄積し、再度各サブシステムへ共通のエネルギをフィードバックする「エネルギを蓄える部品」等であってもよい。分割部212は、上述した箇所(要素)において分割を行うことにより、計算モデルから複数のコンポーネント(物理ネットワーク)を生成する。これにより、情報処理装置200は、コンポーネント単位での計算変数及びスイッチ分岐等の削減が可能になり、計算モデル全体の計算量を削減することが可能になる。なお、分割される計算モデル(複数のコンポーネント)は、初期値が設定されることにより、離散化が行われる。すなわち、数値シミュレーションでの積分器は初期値を持っており、その積分器の演算結果に基づく出力は次の時刻(ステップ)で利用される。
【0033】
分割部212は、後述する判定部によって判定される第3指数が閾値以上の場合、判定部におけるその計算が行われるコンポーネントを構成する要素においてさらに分割して、複数のコンポーネントを生成することとしてもよい。すなわち、分割部212は、生成した少なくとも1つのコンポーネントについてさらに分割できる場合には、そのコンポーネント内でさらに要素を把握し、その要素の位置で計算モデルを分割して複数のコンポーネントを生成する。
【0034】
推定部213は、分割部212によって複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、分割部212によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する。第1の指数は、例えば、各コンポーネントにおいて計算が必要な量(例えば、変数等)を示す。一例として、変数は、計算モデルが電子回路の場合には、信号の分岐要素となるスイッチの数に基づく数値であってもよい。第2指数は、例えば、複数のコンポーネントで構成される計算モデルにおいて計算が必要な量(例えば、変数等)を示す。この場合においても、上述した場合と同様に、変数は、計算モデルが電子回路の場合には、信号の分岐要素となるスイッチの数に基づく数値であってもよい。
【0035】
判定部は、推定部213によって推定される第1指数及び第2指数に基づいて算出される第3指数が予め設定される閾値未満であるかを判定する。一例として、判定部は、第1指数を分子とし、第2指数を分母として除算を行い、その除算を行った結果の数値としての第3指数が閾値未満と判定されるコンポーネントを特定することとしてもよい。
【0036】
すなわち、判定部は、第1指数を分子とし、第2指数を分母として除算を行うことにより、第3指数を算出する。ここで、例えば、第1指数をAとし、第2指数をBとすると、第3指数Eは、概略の式として下式(1)で算出される。
E=A/B …(1)
なお、第3指数Eを算出する計算式については、後述する実施例において詳細に説明する。
【0037】
第3指数Eの値が相対的に小さい場合、例えば、計算の効率(複数のコンポーネントに分割する手間に対するリソースの削減効果)が相対的に高いと判定する。第3指数Eの値が相対的に高い場合、例えば、計算の効率が相対的に低いと判定する。判定部は、閾値を設定し、その閾値に基づいて計算の効率の高低を判定する。すなわち、判定部は、第3指数Eが閾値未満の場合、計算の効率が高いと判定する。一方、判定部は、第3指数Eが閾値以上の場合、計算の効率が相対的に低いと判定する。このように第3指数Eが閾値以上の場合、分割部212は、上述したように計算モデル(コンポーネント)をさらに分割して、新たな複数のコンポーネントを生成する。新たなコンポーネントを生成した場合も、推定部213及び判定部は、上述した処理を行う。
【0038】
出力制御部214は、判定部による判定結果を出力するよう出力部を制御する。すなわち、出力制御部214は、判定部によって特定されるコンポーネントに関する情報を出力するよう出力部を制御することとしてもよい。出力部は、上述したように通信部221、記憶部222及び表示部223であってよい。
出力制御部214は、判定部の判定結果(一例として、コンポーネント等)に関する情報を外部装置に送信するよう通信部221を制御する。
出力制御部214は、判定部の判定結果(一例として、コンポーネント等)に関する情報を記憶するよう記憶部222を制御する。
出力制御部214は、判定部の判定結果(一例として、コンポーネント等)を表示するよう表示部223を制御する。
【0039】
実装部215は、出力制御部214によって出力される判定結果としての複数のコンポーネントに基づいて回路300に実装させることとしてもよい。すなわち、実装部215は、判定部によって第3指数Eが閾値未満と判定される複数のコンポーネントに基づいて回路300(一例として、FPGA等)に実装する。
この場合、実装部215は、複数のコンポーネントに対応する物理方程式を状態空間方程式に変換する。また、実装部215は、状態空間方程式を離散化する。すなわち、実装部215は、入力から出力までの逐次式として変換を行う。実装部215は、離散化した状態空間方程式(状態空間モデル)と、積分通信(離散化した並列通信モデル)とを合わせて、回路300(例えば、FPGA)に実装するための処理を行う。
実装部215は、例えば、回路300に実装するための処理として、計算する数値のデータ型を設定する。この場合、実装部215は、例えば、固定小数点、又は、Single/Double型の浮動小数点型を設定してもよい。また、実装部215は、例えば、計算の周期を回路300(一例として、FPGA等)のクロックタイミングと揃えるために逐次計算式に遅延レジスタを挿入してもよい。
【0040】
演算部216は、実装部215に実装される回路300に基づいて演算処理を行うこととしてもよい。すなわち、演算部216は、回路300(例えば、FPGA等)に実装されたモデルのシミュレーション(演算処理)を行う。これにより、演算部216は、実装されたモデルの並列処理によるシミュレーションを行うことが可能になる。
【0041】
なお、上述した出力制御部214は、演算部216による演算結果及び回路300に実装したコンポーネント(演算結果等)を出力するよう出力部を制御してもよい。
出力制御部214は、演算部216による演算結果等に関する情報を外部装置に送信するよう通信部221を制御する。
出力制御部214は、演算部216による演算結果等に関する情報を記憶するよう記憶部222を制御する。
出力制御部214は、演算部216による演算結果等を表示するよう表示部223を制御する。
【0042】
[実施例]
次に、本実施形態の一実施例について説明する。
図3は、取得部211によって取得する計算モデルの一例について説明するための図である。
図4は、分割部212によって分割される結果の一例について説明するための図である。
図5は、分割部212によって分割される複数のコンポーネントそれぞれの変数の一例について説明するための図である。
図6は、実装部215によって回路300に実装する場合の一例について説明するための第1の図である。
図7は、実装部215によって回路300に実装する場合の一例について説明するための第2の図である。
図8は、演算部216によって行われた演算の結果の一例について説明するための図である。
図9は、本実施例の処理の流れについて説明するための図である。
【0043】
まず、取得部211は、
図3に一例(概略構成)を示す計算モデルを取得する。この場合の計算モデルは、例えば、複数のコンデンサを含むインバータ電子回路である。
図3に例示する電子回路には、3つのコンデンサが接続され、第1コンデンサC1、第2コンデンサC2及び第3コンデンサC3とする。
【0044】
次に、分割部212は、計算モデルを構成する要素において分割して、
図4に一例を示すように、複数のコンポーネント(Comp1~4)を生成する。ここで、要素は、例えば、コンデンサ(C1~3)であってもよい。
図4に示すように、第1コンポーネントComp1には分岐要素となるスイッチがゼロ個、第2コンポーネントComp2にはスイッチが1個、第3コンポーネントComp3にはスイッチが4個、第4コンポーネントComp4にはスイッチがゼロ個配される。なお、
図4は、
図3に例示する計算モデルを要素において分割し、分割後のそれぞれの分割モデルをコンポーネント(
図4は、コンポーネントの概略を記載)としている。
【0045】
上述したように分割部212によって複数のコンポーネントに分割された場合、例えば、計算モデルがコンデンサC1~C3のいずれかで分割された2つのコンポーネント(分割1,2)の分岐要素(例えば、スイッチ等)の変動に応じて取る変数と、分岐の組み合わせとは、
図5に示すようになる。
【0046】
次に、推定部213は、分割部212によって複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、分割部212によって複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する。推定部213は、例えば、第1指数Aを以下の式(2)を利用して推定する。
【0047】
【数1】
…(2)
ここで、nは分割により生成されるコンポーネントが含む分岐要素(例えば、スイッチ等)の数、Xiは分割したネットワークの変数の数を示す。推定部213は、分割部212によって計算モデルを第1コンデンサC1で分割した場合の2つのコンポーネント、分割部212によって計算モデルを第2コンデンサC2で分割した場合の2つのコンポーネント、及び、分割部212によって計算モデルを第3コンデンサC3で分割した場合の2つのコンポーネントそれぞれの第1指数Aを推定する。
【0048】
また、推定部213は、例えば、第2指数Bを以下の式(3)を利用して推定する。
【0049】
【数2】
…(3)
ここで、Xtotはモデル全体の変数の数、Nはモデル全体が含む分岐要素(例えば、スイッチ)の数である。
【0050】
次に、判定部は、第1指数A及び第2指数Bに基づいて、第3指数Eを以下の式(4)を利用して算出する。
E=A/B …(4)
【0051】
すなわち、第3指数Eは、式(2),(3)を式(4)に代入して下式(5)のようになる。
【0052】
【0053】
判定部は、算出した第3指数Eが閾値未満であるかを判定する。ここで、閾値の一例は、0.8であってもよい。なお、閾値は、前述したように0.8に限定されることはなく、他の数値であってもよい。判定部は、例えば、E≧0.8の場合、分割の手間に対するリソース削減効果が少ないと判定してもよい。一方、判定部は、例えば、E<0.8となる箇所が複数ある場合は最小のEとなる点で分割を実施する。判定部は、さらに分割が可能な場合、分割したモデルを基に式(2)~(4)を利用した計算を繰り返し、最適な個数のモデルに分割する。
【0054】
第1コンデンサC1で分割した2つのコンポーネント(分割1,2)、第2コンデンサC2で分割した2つのコンポーネント(分割1,2)、及び、第3コンデンサC3で分割した2つのコンポーネント(分割1,2)の、判定部で算出される変数及び分岐は、
図5に示すようになる。
図5に示すように、
図3に示す計算モデルを第1コンデンサC1で分割する場合の第3指数E(分岐)は、0.892となり、第2コンデンサC2で分割する場合の第3指数E(分岐)は、0.227となり、第2コンデンサC2で分割する場合の第3指数E(分岐)は、0.892となる。これにより、判定部は、第2コンデンサC2で分割する場合の第3指数Eが閾値(0.8)未満と判定する。
【0055】
実装部215は、判定部による判定結果、すなわち、第2コンデンサC2において計算モデルを2つのコンポーネントに分割するという結果に基づいて、2つのコンポーネントを回路300(一例として、FPGA等)に実装する。この場合、実装部215は、
図6に例示するように、2つのコンポーネント(モデル分割)の物理方程式を状態空間方程式(状態空間モデル)に変換し、2つの状態空間モデルを要素(例えば、積分器等)によって積分通信ができるように接続する。
【0056】
すなわち、実装部215は、
図7(A)に示すように第2コンデンサCを積分演算ができる要素(積分器)にし、
図7(B)に示すように積分演算式を離散形式に置換する。この場合、実装部215は、
図7(C)に示すように、初期条件を設定する。これにより、実装部215は、
図7(D)に示すように、第2コンデンサC2(積分器)で2つのコンポーネントを並列化したモデルを生成する。
実装部215は、このようなモデルを回路300(一例として、FPGA等)に実装する。
【0057】
次に、演算部216は、実装部215によって回路300に実装されたモデルの演算処理(シミュレーション)を行う。
出力制御部214は、演算部216の演算結果(シミュレーション結果)を出力するよう出力部を制御する。
なお、本実施例の場合では、回路300(例えば、FPGA等)の実装されるモデルは、計算モデルと比較して、例えば、LUTが36.6%削減され、レジスタが29.9%削減され、DSPが36.5%削減されている。
図8に一例を示すように、演算部216によって演算処理が行われた結果と、計算モデルを利用して計算が行われた結果とを比較すると両者は同等であり、本実施形態によって行われる処理の精度が維持されていることがわかる。
【0058】
なお、処理の全体の流れは
図9に示すようになり、特に、
図9に示すステップST1~ST5が本実施例の特徴部分になる。このため、ステップST1~ST5の部分について説明する。
ステップST1において、分割部212が分割処理を行う。
ステップST2からステップ3までに示す一連の処理において、実装部215は、状態空間モデルを作成して実装モデルを作成する。
ステップST4にいて、実装部215は、モデルを回路300(例えば、FPGA)に実装する。
ステップST5において、演算部216は、演算処理(シミュレーション処理)を行う。
【0059】
なお、上述した実施例では、電子回路の計算モデルにおいてコンデンサで分割する例について説明した。しかし、本発明は、上述した実施例に限定されることはない。
図10は、積分演算(積分通信)を行う場合の一例について説明するための図である。
【0060】
情報処理装置200は、例えば、電子回路のコイルで分割し、インダクタンスに基づいた積分演算(積分通信)を行ってもよい。また、情報処理装置200は、例えば、油圧流路(非圧縮性流体)における任意の箇所において分割し、流体イナーシャ又は流体圧縮係数に基づいた積分演算(積分通信)を行ってもよい。また、情報処理装置200は、例えば、機械回転モデルの任意の箇所において分割し、慣性モーメント又はバネ定数逆数に基づいた積分演算(積分通信)を行ってもよい。また、情報処理装置200は、例えば、機械並進運動モデルの任意の箇所において分割し、質量又はバネ定数逆数に基づいた積分演算(積分通信)を行ってもよい。また、情報処理装置200は、例えば、気体流路(圧縮性気体)における任意の箇所において分割し、気体の状態方程式に基づいた積分演算(積分通信)を行ってもよい。また、情報処理装置200は、例えば、熱流体の流路の任意の箇所において分割し、熱容量に基づいた積分演算(積分通信)を行ってもよい。
【0061】
次に、一実施形態に係る情報処理方法について説明する。
図11は、一実施形態に係る情報処理方法について説明するためのフローチャートである。
【0062】
ステップST101において、取得部211は、計算モデルを取得する。
【0063】
ステップST102において、分割部212は、ステップST101で取得した計算モデルを、その計算モデルを構成する要素において分割して複数のコンポーネントを生成する。この場合、分割部212は、例えば、複数のコンポーネントを、前段のコンポーネントの出力値と後段のコンポーネントの出力値とに基づいて演算(例えば、積分演算を行うことが可能な要素としての積分器等において演算を行い)を行い、その演算の結果を前段のコンポーネントと後段のコンポーネントとに出力する積分通信が可能に分割することとしてもよい。分割部212は、前段のコンポーネントと後段のコンポーネントとの間に要素(例えば、積分器等)を配し、その要素(積分器)において演算(積分演算)を行うこととしてもよい。
【0064】
ステップST103において、推定部213は、ステップST102で複数のコンポーネントに分割した場合の各コンポーネントそれぞれの計算のリソースに関する第1指数と、ステップST102で複数のコンポーネントに分割しない場合(ステップST101で取得した計算モデル)の計算のリソースに関する第2指数とを推定する。
【0065】
ステップST104において、判定部は、ステップST103で推定される第1指数及び第2指数に基づいて演算を行って、第3指数を取得する。判定部は、例えば、上述した式(2)~(4)を利用して、第3指数を算出する。
【0066】
ステップST105において、判定部は、ステップST104で取得される第3指数が予め設定される閾値未満であるかを判定する。第3指数が閾値未満の場合(Yes)には、処理は、ステップST106に進む。第3指数が閾値以上の場合(No)には、処理は、ステップST102に戻る。
【0067】
ステップST105において「Yes」と判定されることにより、処理がステップST102に戻った場合、分割部212は、判定部において計算が行われたコンポーネントを構成する要素においてさらに分割して、複数のコンポーネントを生成する。
【0068】
ステップST106において、実装部215は、ステップST105で第3指数が閾値未満と判定される複数のコンポーネントに基づいて回路300(一例として、FPGA等)に実装する。
【0069】
ステップST107において、演算部216は、ステップST106で実装される回路300に基づいて演算処理(シミュレーション処理)を行う。
【0070】
次に、本実施形態の効果について説明する。
情報処理装置200は、計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割部212と、複数のコンポーネントに分割した場合それぞれの計算のリソースに関する第1指数と、複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定部213と、第1指数及び第2指数に基づいて算出される第3指数が予め設定される閾値未満であるかを判定する判定部と、その判定の結果を出力するよう制御する出力制御部214と、を備える。
情報処理装置200は、効率的な演算処理を行うことができる。すなわち、情報処理装置200は、計算モデルを回路300(一例として、FPGA等)に実装する場合のリソースを最適化できる。よって、情報処理装置200は、計算モデルのシミュレーションを行う場合に、高速化を図ることができる。
【0071】
情報処理装置200では、判定部は、第1指数を分子とし、第2指数を分母として除算を行い、その除算を行った結果の数値としての第3指数が閾値未満と判定されるコンポーネントを特定してもよい。この場合、出力制御部214は、判定部によって特定されるコンポーネントに関する情報を出力するよう制御することとしてもよい。
これにより、情報処理装置200は、効率的な演算処理を行うことのできるコンポーネントを取得することができる。すなわち、情報処理装置200は、計算モデルを、その計算モデルのシミュレーションを行うときの演算量を相対的に少なくすることができる複数のコンポーネントに分割することができる。
【0072】
情報処理装置200では、分割部212は、判定部によって判定される第3指数が閾値以上の場合、判定部におけるその計算が行われるコンポーネントを構成する要素においてさらに分割して、複数のコンポーネントを生成することとしてもよい。
これにより、情報処理装置200は、生成したコンポーネントについてさらに分割が可能な場合には、そのコンポーネント内の要素において分割を行うので、効率的な演算処理を行うことができる。
【0073】
情報処理装置200では、分割部212は、複数のコンポーネントを、前段のコンポーネントにおける計算結果を後段のコンポーネントにおいて利用するように積分通信が可能に分割することとしてもよい。
これにより、情報処理装置200は、コンポーネントの演算結果を他のコンポーネントに利用させることができる。すなわち、情報処理装置200は、複数のコンポーネント間で積分通信が行われることにより、計算モデルのシミュレーションを行う場合に並列演算を行うことができ、演算の精度が劣化することを抑制することができる。
【0074】
情報処理装置200では、分割部212は、前段のコンポーネントと後段のコンポーネントとの間に要素(例えば、積分演算を行うことが可能な要素としての積分器等)を配し、その要素において積分演算を行うこととしてもよい。
これにより、情報処理装置200は、複数のコンポーネントを利用して並列演算を行う場合の、並列化による通信遅延誤差の発生を抑制することができる。
【0075】
情報処理装置200は、出力制御部214によって出力される判定結果としての複数のコンポーネントに基づいて回路300に実装させる実装部215と、実装部215に実装される回路300に基づいて演算処理を行う演算部216と、を備えることとしてもよい。
これにより、情報処理装置200は、コンポーネントから構成される非因果計算モデルを効率よく回路300(一例として、FPGA等)に実装することができる。また、情報処理装置200は、例えば、回路300としてFPGAに実装することにより並列演算処理を行うことができるため、高速なシミュレーションを行うことができる。すなわち、情報処理装置200は、計算モデルの精度を落とすことなく、演算処理(例えば、FPGAシミュレーション等)が可能にできる。
【0076】
また、従来の非因果計算モデルの変換において計算モデルの規模が大きい場合、その計算モデルはFPGAに実装されることができなかった。すなわち、その計算モデルの規模が大きくなると分岐要素(例えば、電子回路のスイッチ等)の数が多くなり、分岐要素の組み合わせの数が膨大になっていた。また、非因果計算モデルを状態空間方程式に変換して因果式として定式化した場合、状態空間方程式の状態が取るモード数が爆発的に増大して、FPGAに実装する時のリソースが指数関数的に増大し、FPGAへの実装可能なリソースを超過していた。
また、従来は、計算モデルを分割した場合でも、並列化するためのモデル間通信をFPGAに実装できないでいた。すなわち、従来のモデル間通信は、連続系の方程式で記述されており、離散化処理実装手順を追加しないと、FPGAに実装できないでいた。
これに対し、本実施形態の情報処理装置200は、計算モデルのうち計算のリソースが小さくなる位置(要素)であって、積分通信が可能な要素において計算モデルを分割するため、回路300(FPGA等)に実装する場合のリソースを最適化でき、計算モデルのシミュレーションを行う場合に高速化を図ることができる。また、本実施形態の情報処理装置200は、また積分通信によって通信遅延誤差の発生を抑制でき、シミュレーションの精度が悪化するのを抑制することができる。
【0077】
情報処理方法では、コンピュータが、計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割ステップと、複数のコンポーネントに分割した場合の計算のリソースに関する第1指数と、複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定ステップと、第1指数及び第2指数に基づいて算出される計算に必要なリソースに関する第3指数が予め設定される閾値未満であるかを判定する判定ステップと、その判定の結果を出力するよう制御する出力制御ステップと、を実行する。
情報処理方法は、効率的な演算処理を行うことができる。すなわち、情報処理方法は、計算モデルを回路300(一例として、FPGA等)に実装する場合のリソースを最適化できる。よって、情報処理方法は、計算モデルのシミュレーションを行う場合に、高速化を図ることができる。
【0078】
情報処理プログラムは、コンピュータに、計算モデルを構成する要素において分割して複数のコンポーネントを生成する分割機能と、複数のコンポーネントに分割した場合の計算のリソースに関する第1指数と、複数のコンポーネントに分割しない場合の計算のリソースに関する第2指数とを推定する推定機能と、第1指数及び第2指数に基づいて算出される計算に必要なリソースに関する第3指数が予め設定される閾値未満であるかを判定する判定機能と、その判定の結果を出力するよう制御する出力制御機能と、を実現させる。
情報処理プログラムは、効率的な演算処理を行うことができる。すなわち、情報処理プログラムは、計算モデルを回路300(一例として、FPGA等)に実装する場合のリソースを最適化できる。よって、情報処理プログラムは、計算モデルのシミュレーションを行う場合に、高速化を図ることができる。
【0079】
上述した情報処理装置200の各部は、コンピュータの演算処理装置等の機能として実現されてもよい。すなわち、情報処理装置200の取得部211、分割部212、推定部213、出力制御部214及び演算部216(制御部210)は、コンピュータの演算処理装置等による取得機能、分割機能、推定機能、出力制御機能及び演算機能(制御機能)としてそれぞれ実現されてもよい。
情報処理プログラムは、上述した各機能をコンピュータに実現させることができる。情報処理プログラムは、外部メモリ又は光ディスク等の、コンピュータで読み取り可能な非一時的な記録媒体に記録されていてもよい。
また、上述したように、情報処理装置200の各部は、コンピュータの演算処理装置等で実現されてもよい。その演算処理装置等は、例えば、集積回路等によって構成される。このため、情報処理装置200の各部は、演算処理装置等を構成する回路として実現されてもよい。すなわち、情報処理装置200の取得部211、分割部212、推定部213、出力制御部214及び演算部216(制御部210)は、コンピュータの演算処理装置等を構成する取得回路、分割回路、推定回路、出力制御回路及び演算回路(制御回路)として実現されてもよい。
また、情報処理装置200の通信部221、記憶部222及び表示部223(出力部)、並びに、実装部215は、例えば、演算処理装置等の機能を含む通信機能、記憶機能及び表示機能(出力機能)、並びに、実装機能として実現されもよい。また、情報処理装置200の通信部221、記憶部222及び表示部223(出力部)、並びに、実装部215は、例えば、集積回路等によって構成されることにより通信回路、記憶回路及び表示回路(出力回路)、並びに、実装回路として実現されてもよい。また、情報処理装置200の通信部221、記憶部222及び表示部223(出力部)、並びに、実装部215は、例えば、複数のデバイスによって構成されることにより通信装置、記憶装置及び表示装置(出力装置)、並びに、実装装置として構成されてもよい。
【符号の説明】
【0080】
1 情報処理システム
100 サーバ
200 情報処理装置
210 制御部
211 取得部
212 分割部
213 推定部
214 出力制御部
215 実装部
216 演算部
221 通信部
222 記憶部
223 表示部
300 回路