JP7307011B2 - モデル並列化装置および方法 - Google Patents

モデル並列化装置および方法 Download PDF

Info

Publication number
JP7307011B2
JP7307011B2 JP2020038215A JP2020038215A JP7307011B2 JP 7307011 B2 JP7307011 B2 JP 7307011B2 JP 2020038215 A JP2020038215 A JP 2020038215A JP 2020038215 A JP2020038215 A JP 2020038215A JP 7307011 B2 JP7307011 B2 JP 7307011B2
Authority
JP
Japan
Prior art keywords
parallelization
model
unit
plan
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020038215A
Other languages
English (en)
Other versions
JP2021140501A (ja
Inventor
勇気 田中
健志 瀬田
祐 石郷岡
一 芹沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Priority to JP2020038215A priority Critical patent/JP7307011B2/ja
Publication of JP2021140501A publication Critical patent/JP2021140501A/ja
Application granted granted Critical
Publication of JP7307011B2 publication Critical patent/JP7307011B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、モデル並列化装置および方法に関する。
近年、産業用電子制御装置(ECU: Electronic Control Unit)を支える組込みシステムの開発においては、制御性能の向上要求、厳格化する環境規制等への対応要求、また装置の自律化に伴う新たな制御演算処理の追加などにより、アプリケーションの高負荷化が進んでいる。これらの状況に対応する形で、ECUにおいてもマルチスレッドの性能向上などを目的として、複数のコアを同一ECU上に搭載するマルチコアが登場している。
一方で組込み分野においては、制御演算結果をアクチュエータへ規定のタイミングで伝達する必要があるため、規定時間内にコントローラにおける制御演算結果をアクチュエータなど後段のコントローラへ伝達する必要があり、リアルタイム性が求められる。搭載するアプリケーションの負荷上昇によるCPU使用可能時間の圧迫、実行完了までの制約時間に対応するため、マルチコアを用いたアプリケーションの並列化が必要となっている。
また、自動運転向けのアプリケーション開発では、アプリケーションの動作をブロックモデルで表現・設計するモデルベース開発が行われている。このモデルを解析することで、アプリケーションの並列化を行う検討が進められている。モデルはソースコードからなるブロックとそれ自体が動作を示すブロックから構成されており、並列化のための解析にはモデルをベースとして生成されたソースコードにおける解析を行う。実機側の構成を意識せずに並列化開発を行うため、並列化の内容をモデルに反映して開発を進めていく。並列化案をモデルへ適用するためには、各案ごとにモデル変更の方法をひとつずつ試行し、最適な適用方法を模索するため、時間を要する。並列化開発に要する工数を削減するため、並列化案のモデルへの反映の容易化が求められる。
特開2019-91144号(特許文献1)では、モデルのシミュレート結果から依存関係の有無を確認し、依存関係の無い部分を並列化可能部分として抽出および分割し、複数サイクル精度のシミュレータで整合性の確認を行う。これにより大きな機能ごとにタスクを生成し、生成したタスクを並列に実行するタスク単位での並列化を可能とする方法が開示されている。
特開2019-91144号公報
上記背景技術でモデルへ並列化案を適用する際に、各機能群から依存関係ない箇所を発見し、タスクとして並列化を行うタスクレベル並列化(TLP: Task Lebel Parallelization)を行う方法について記載されている。
しかしながら、更に実行時間短縮効果を行うためには、実行時間の多くを占めるデータストリーム処理を並列化するデータレベル並列化(DLP: Data Level Parallelization)やパイプラインレベル並列化(PLP: Pipeline Level Parallelization)などの命令単位での並列化に対応する必要がある。
本発明は、上記課題を鑑みて為されたものであり、アプリケーションモデルへの並列化適用を容易化させるモデル並列化装置等を提供することを目的とする。
上記目的を達成するために、本発明の一例であるモデル並列化装置は、モデルから生成されるソースコードを対象とするマルチコア向け並列化案から並列化種類を解釈する種類解釈部と、前記並列化案から並列化候補の分割数を解釈する分割数解釈部と、前記並列化種類および前記分割数から並列化パターンを生成するパターン生成部と、前記並列化候補のブロックを識別する情報を示す対象ブロック情報前記ソースコードから抽出する対象抽出部と、前記対象ブロック情報によって識別されるブロックを前記並列化パターンに従って変換し、並列化モデルを出力するモデル変換部と、を備える。

本発明によれば、アプリケーションモデルへの並列化適用を容易化させることができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本発明の第1の実施例における、電子制御装置とモデル並列化装置の構成を示す図である。 本発明の第1の実施例における、モデル並列化装置のシステム構成を示す図である。 本発明の第1の実施例における、種類解釈部の動作フロー図である。 本発明の第1の実施例における、分割数解釈部の動作フロー図である。 本発明の第1の実施例における、パターン生成部のデータレベル並列化パターンの生成イメージを示す図である。 本発明の第1の実施例における、パターン生成部のタスクレベル並列化パターンの生成イメージを示す図である。 本発明の第1の実施例における、パターン生成部のパイプラインレベル並列化パターンの生成イメージを示す図である。 本発明の第1の実施例における、並列化の対象となるモデルの例を示す図である。 本発明の第1の実施例における、対象抽出部の動作フロー図である。 本発明の第1の実施例における、モデル変換部の例を示す図である。 本発明の第1の実施例における、モデル統合部の例を示す図である。 本発明の第1の実施例における、並列化開発プロセスの例を示す図である。 本発明の第2の実施例における、モデル並列化装置のシステム構成を示す図である。 本発明の第2の実施例における、効果予測部の構成を示す図である。 本発明の第2の実施例における、依存関係の例を示す図である。 本発明の第2の実施例における、依存関係の例を示す図である。 本発明の第2の実施例における、依存関係の例を示す図である。 本発明の第2の実施例における、依存関係確認部の動作例を示す図である。
(第1の実施例)
以下、本発明の第1の実施例について、図面を用いて説明する。
図1に、本実施例が対象とする電子制御装置とモデル並列化装置の構成イメージを示す。モデル並列化装置101はモデル109のモデル情報および並列化候補提案ツール111の結果を入力として、モデルへの並列化を施してモデル109へ更新したモデルを返す。並列化候補提案ツール111はモデル109をもとにオートコーダ110を介して生成されたソースコードを入力として、並列化の可能性がある箇所の情報および並列化形式を出力する。
モデル109をもとに生成されたアプリケーションは電子制御装置102へ入力される。電子制御装置102はN個のコア103~105を搭載しており、これらを用いてタスクの実行を行う。タスクの命令情報や実行結果はメモリ106へ蓄えられ、スケジューリング部107によって実行するタスクを切り替えながら実行を行う。そのほか、周辺装置108を用いて外部の電子制御装置との通信などを行う。
図2はモデル並列化装置101のシステム構成を示すものである。本実施例では並列化候補提案ツール111の出力情報(詳細には、後述する並列化提案情報)を用いる。並列化候補提案ツール111はアプリケーションのソースコードを入力として解析を行い、並列化の可能性がある箇所(例えば、ソースコードにおける行範囲)とその並列化種類(例えば、DLP、TLP、PLP等)等を出力する。また、モデル並列化装置101は、使用予定のECU情報(詳細には、後述するコア情報)を入力として、分割数を決定・出力する。
並列化提案情報に含まれる並列化候補の提案はひと塊の文章や表として出力される場合があり、この場合に提案の中から情報を抽出する必要がある。種類解釈部201は並列化候補提案ツール111が出力した並列化提案情報を取得し、どういった並列化(例えば、DLP、TLP、PLP等)を行うのか意味解釈を行う。
分割数解釈部202は並列化提案情報から分割数を取得、使用ECUのコア情報(例えば、コア数、各コアの動作周波数等)と照らし合わせて効果の高い分割数を決定する。パターン生成部203は種類解釈部201と分割数解釈部202の結果を入力として、モデルの並列化パターンを生成する。対象抽出部204は並列化候補情報(並列化提案情報)とモデルを照らし合わせ、対象となるモデルの箇所を特定・出力する。モデル変換部205は対象抽出部204によって取得した並列化対象モデルにパターン生成部203で生成したモデル並列化パターンを適用することでモデルの変換を行う。変換されたモデルはモデル統合部206にて元のモデル109の該当箇所と入れ替えが行われる。
換言すれば、モデル並列化装置101は、少なくとも、種類解釈部201、分割数解釈部202、パターン生成部203、対象抽出部204、モデル変換部205を備える。種類解釈部201は、ソースコードを対象とするマルチコア向け並列化案から並列化種類を解釈する。分割数解釈部202は、並列化案から対象の分割数を解釈する。パターン生成部203は、並列化種類および分割数から並列化パターンを生成する。対象抽出部204は、並列化案の対象をモデルから抽出する。モデル変換部205は、モデルから抽出された対象を並列化パターンに従って変換する。
これにより、タスクレベル並列化(TLP)のみならず、データレベル並列化(DLP)とパイプラインレベル並列化(PLP)において並列化を容易に行うことができる。つまり、アプリケーションモデルへの並列化適用を容易化させることができる。
詳細には、並列化案は、並列化候補提案ツール111(外部)から入力される並列化提案情報によって示される。並列化提案情報は、並列化種類、対象の分割数、および並列化の範囲を示す情報を含む。並列化種類は、種類解釈部201へ入力され、対象の分割数は、分割数解釈部202へ入力され、並列化の範囲は、対象抽出部204へ入力される。これにより、例えば、種類解釈部201、分割数解釈部202、対象抽出部204は、並列処理を行うことができる。
図3は種類解釈部201の動作フローである。種類解釈部201は並列化候補提案ツール111の出力を取得し、これを参照する(S301)。種類解釈部201は、並列化提案情報から並列化種類情報を抽出し、これがDLP、TLP、PLPのどれに該当するかを判断する(S302)。種類解釈部201は、抽出した並列化種類情報に提案番号を付与し(S303)、並列化種類情報と提案番号を出力する(S304)。これを全ての提案を処理するまで繰り返す(S305)。
図4は分割数解釈部202の動作フローである。分割数解釈部202は並列化候補提案ツール111の出力を取得し、これを参照する(S401)。
分割数解釈部202は、並列化提案情報から分割数情報を取得する(S402)。分割数情報はworker数(DLPの分割数)、task数(TLPの分割数)、stage数(PLPの分割数)のいずれかによって示される。分割数解釈部202は、取得した分割数と使用予定のECU情報を比較し、搭載されている中で使用可能なコア数以内になるよう分割数を調整する(S403)。
ヘテロジニアスな複数種類のコアが搭載されたECUの場合、各コアの動作周波数が一定以上離れていない場合には全コアを使用し、一定以上離れている場合には使用可能な速度の速いコアの数に調整する。ここでの基準は、例えばコア間の速度差が1.5倍以上の場合などを指す。コアの割当は速度の速いコアを優先的に使用し、溢れた場合に遅いコアを使用する。
分割数解釈部202は、決定した分割数に提案番号を付与し(S404)、分割数情報と提案番号を出力する(S405)。これを全ての提案を処理するまで繰り返す(S406)。
図5はパターン生成部203のデータレベル並列化パターンの生成イメージである。データレベル並列化はある処理を大量のデータに対して行う場合に効果を発揮する並列化方法である。対象の処理を複製してタスクにすることで、各タスクがデータを分担して処理する。タスクの数は分割数情報に沿って決定する。分割数がデータ量より多い場合はデータ量に分割数を併せる(一致させる)。
また、動作を示すブロック群として並列化を行わず、ソースコードによって構成されるブロック(例えばSimulinkのS-Function)として生成する場合、次のようになる。
parent_task(){
sem_post(sem_task_1);
sem_post(sem_task_2);

sem_post(sem_task_N);
sem_wait(sem_parent_1);
sem_wait(sem_parent_2);

sem_wait(sem_parent_N);
}
task_n(){
sem_wait(sem_task_n);
for( i=n*Range; i<(n+1)*Range; i++){
func();
}
sem_post(sem_parent_n);
}
上記はN個のタスクに分けられる場合を想定したソースコード例となっている。nはタスクの番号を表しており、Rangeは各タスクが担当するデータ量を表す。親タスクはセマフォなどを用いて子タスクを起動し、全ての子タスクの終了を待つ。子タスクは割当てられたデータを処理し、処理が完了したら親タスクに通知する。
図6はパターン生成部203のタスクレベル並列化パターンの生成イメージである。タスクレベル並列化は依存関係の無い複数の処理を分割することで並列化効果を発揮する。各処理を別のタスクとして割り当てることで、並列に処理できるようにする。タスクの数は分割数情報に沿って決定する。分割可能な処理の数が分割数より少ない場合は、分割可能な処理の数に分割数を併せる(一致させる)。
なお、例えば、5個のタスクに分割可能であっても、1番目のタスクを処理する時間が全タスクを処理するのに要する時間の8割である場合、5個のタスクに分割するのではなく、1番目のタスクと、2~5番目のタスクをまとめたタスクの2つのタスクに分割する方がよい。
また、動作を示すブロック群として並列化を行わず、ソースコードによって構成されるブロック(例えばSimulinkのS-Function)として生成する場合、次のようになる。
parent_task(){
sem_post(sem_task_1);
sem_post(sem_task_2);

sem_post(sem_task_N);
sem_wait(sem_parent_1);
sem_wait(sem_parent_2);

sem_wait(sem_parent_N);
}
task_n(){
sem_wait(sem_task_n);
func_n();
sem_post(sem_parent_n);
}
上記はN個のタスクに分けられる場合を想定したソースコード例となっている。親タスクはセマフォなどを用いて子タスクを起動し、全ての子タスクの終了を待つ。子タスクは割当てられた処理を実行し、処理が完了したら親タスクに通知する。
図7はパターン生成部203のパイプラインレベル並列化パターンの生成イメージである。パイプラインレベル並列化は依存関係のある処理群を大量のデータに対して行う場合に効果を発揮する並列化方法である。処理群を複数のステージに分割し、分割したステージをタスクに割り当てる。各タスクはそれぞれ別のコアに割当てられ、処理したデータは次のステージを担うタスクに渡していく。
また、動作を示すブロック群として並列化を行わず、ソースコードによって構成されるブロック(例えばSimulinkのS-Function)として生成する場合、次のようになる。
parent_task(){
sem_post(sem_task_1_1);
sem_post(sem_task_2_1);
sem_wait(sem_parent_S_LP);
}
task_1_lp(){
sem_wait(sem_task_s1_lp_f1);
func_1();
sem_post(sem_task_s2_lp_f1);
sem_post(sem_task_s1_(lp+1)_f1);
}
task_2_lp(){
sem_wait(sem_task_s1_lp_f1);
sem_wait(sem_task_s2_lp_f2);
func_2();
sem_post(sem_task_s2_(lp+1)_f2);
}

task_s_lp(){
sem_wait(sem_task_(s-1)_lp_f(n-1));
sem_wait(sem_task_s_lp_fs);
func_s();
sem_post(sem_task_s_(lp+1)_fs);
}
上記はS個のステージに分割された場合のソースコード例となっており、LP回ループを処理している。sはステージ番号、lpはループ番号、fは何ステージ目の排他かを表す。親タスクが1ステージ目の子タスクを起動し、子タスクが処理を行う。1ステージ目の子タスクは2ステージ目の子タスクおよび2ループ目の1ステージ目子タスクを起動する。2ステージ目の子タスクは同ループの1ステージ目子タスクおよび1つ前のループの2ステージ目子タスクが実行完了したのを確認して、処理を行う。最後のループの最後のステージを担う子タスクは、次の子タスクへ通知する代わりに親タスクへ通知を行う。
また、ソースコードによって構成されるブロックとして生成する場合のもうひとつの例を示す。
parent_task(){
sem_post(sem_task_1);
sem_wait(sem_parent_1);
sem_wait(sem_parent_2);

sem_wait(sem_parent_S);
}
task_1(){
sem_wait(sem_task_1);
for(i=0; i<LP; i++){
func_1();
sem_post(sem_task_2);
}
sem_post(sem_parent_1);
}
task_2(){
for(i=0; i<LP; i++){
sem_wait(sem_task_2);
func_2();
sem_post(sem_task_3);
}
sem_post(sem_parent_2);
}

task_s(){
for(i=0; i<LP; i++){
sem_wait(sem_task_s);
func_s();
sem_post(sem_task_(s+1));
}
sem_post(sem_parent_s);
}
上記はS個のステージに分割された場合のソースコード例となっており、LP回ループを処理している。親タスクが1ステージ目の子タスクを起動し、起動された子タスクが処理を行う。1ステージ目の子タスクは処理が完了したら2ステージ目の子タスクへ通知を送る。2ステージ目の子タスクは1ステージ目の子タスクから通知を受け取ると、割り当てられた処理を行い次のステージの子タスクへ通知を行ったうえで、再度通知を待つ。各ステージの子タスクはこれをLP回行い、最後に各子タスクが親タスクへ通知を送る。
図8は並列化の対象となるモデル109の例である。モデル109は複数のサブシステムブロック(801~804)から構成されており、サブシステムブロックの中にさらに細かいブロック805やソースコードを格納したブロック806がある。各ブロックには識別名称が設定されており、これを用いて後述の対象抽出が可能となる。
図9は対象抽出部204の動作フローである。対象抽出部204は並列化候補提案ツール111の出力を取得し、これを参照する(S901)。対象抽出部204は、並列化候補提案ツール111が指定している候補箇所がソースコードにおいてループ処理である場合(S902のYes)かつブロックに関するコメントが記載されている場合(S903のYes)、候補箇所はモデルのループブロックによって生成されたループと判断し、コメントからブロック情報を取得する(S904)。
対象抽出部204は、ブロックに関するコメントが無い場合(S903のNo)、候補箇所はソースコードにて構成されるブロックの一部と判断し、候補箇所が属する関数の名前からブロック情報を取得する(S905)。対象抽出部204は、候補箇所がループ処理でない場合(S902のNo)、候補箇所はTLPで並列に実行可能な複数のブロックと判断し、候補箇所に含まれる関数群の名前からブロック情報を取得する(S906)。対象抽出部204は、取得したブロック情報に提案番号を付与し(S907)、ブロック情報と提案番号を出力する(S908)。これを全ての提案を処理するまで繰り返す(S909)。
換言すれば、対象抽出部204は、並列化の範囲がループ処理であり(S902:Yes)、かつ並列化の範囲にモデルを構成するブロックのコメントが記載されている場合(S903:Yes)、コメントでブロックを識別し、(b)並列化の範囲がループ処理であり(S902:Yes)、かつ並列化の範囲にブロックのコメントが記載されていない場合(S903:No)、並列化の範囲が所属する関数の名前でブロックを識別し、(c)並列化の範囲がループ処理でない場合(S902:No)、並列化の範囲に含まれる関数群の名前でブロックを識別する。対象抽出部204は、(a)-(c)のいずれかを実行した後、ブロックを識別する情報を示す対象ブロック情報を出力する(S904、S905、S906)。モデル変換部205は、対象ブロック情報によって識別されるブロックを並列化パターンに従って変換する。
これにより、並列化する対象となるブロックを自動的に識別(検出)し、識別されたブロックを容易に並列化することができる。
図10はモデル変換部205の構成例である。モデル変換部205はパターン生成部203が生成した並列化パターン1001および対象抽出部204が生成した対象ブロック情報1002を入力とする。対象ブロック情報1002を並列化パターン1001に沿って変換し、並列化モデル1003を作成・出力する。
図11はモデル統合部206の構成例である。モデル統合部206は並列化対象を全体モデル109から対象ブロック情報1101を用いて確認し、対象ブロックと並列化モデル1003を入れ替える。これにより、モデルの並列化適用が完了する。
以上説明した実施例によれば、タスク単位の並列化および命令単位の並列化において、並列化候補のモデルへの適用容易化を可能とし、適用に要する工数削減が可能となる。図12は並列化開発プロセスの一例である。アプリケーションを開発する際、まず基本設計結果をもとに大きな機能単位でタスクを生成し、これを用いてタスク間の並列化を行う。
タスク間の並列化は各機能の依存関係を確認し、依存関係の無いタスクを並列に実行するようコアに配置する。基本設計結果とタスク間並列化結果をもとにモデルを開発する。その後、開発されたモデルをもとにソースコードが生成される。生成されたソースコードはタスク内並列化のために並列性の検証が行われ、抽出された並列性をもとにタスク内の並列化が行われる。その後、BSWとの結合およびテストのうえで製品として完成する。
これらのプロセスは一度行って終了するものではなく、並列化結果やテスト結果のフィードバックをもとに改良を行い、プロセスを繰り返すことで開発を進めていく。本実施例はタスク内並列化からモデル開発へフィードバックする際の工数を削減可能とする。繰り返し行われるプロセスの一部工数を削減することで、並列化開発全体の工数削減に貢献可能となる。
(第2の実施例)
本発明の第2の実施例について説明する。本実施例では、並列化候補の適用が適切か評価し、適用可否を決定する。図13は本実施例におけるモデル並列化装置101の構成イメージである。並列化候補提案ツール111の出力情報を効果予測部1301、排他検出部1302および依存関係確認部1303が取得する。効果予測部1301は並列化提案情報(並列化情報)をもとにシミュレートを行い、並列化候補適用による効果の予測を行う。排他検出部1302は並列化候補箇所の排他制御使用有無を検出する。依存関係確認部1303は並列化候補箇所に依存関係が無い確認を行う。これらの結果をもとに適用可否評価部1304が並列化候補の適用をすべきか判断する。
換言すれば、モデル並列化装置101は、効果予測部1301、依存関係確認部1303、排他検出部1302、適用可否評価部1304を備える。効果予測部1301は、並列化案による効果を予測する。依存関係確認部1303は、並列化案によって分割されるタスク間の依存関係有無を確認する。排他検出部1302は、並列化案の対象のソースコード内において排他制御有無を確認する。適用可否評価部1304は、効果予測部1301、依存関係確認部1303および排他検出部1302の結果から並列化案の適用可否を評価する。これにより、例えば、並列化適用の試行回数を減らすことができる。
本実施例では、マルチコア向け並列化案はモデル109をもとにオートコーダ110を介して生成されたソースコードを対象とするが、モデル109を対象としてもよい。これにより、例えば、並列化の対象を拡張することができる。
図14は効果予測部1301の構成例である。シミュレータ1401を用いてアプリケーションの実行時間を測定し、並列化シミュレータ1402を用いて並列化候補を適用した場合の実行時間を予測する。実行時間比較部1403が並列化候補適用前後の実行時間を比較し、高速化効果を算出する。効果評価部1404は高速化効果が一定値以上であるかを評価し、一定値以上であれば適用フラグを出力する。
排他検出部1302(図13)は並列化候補の示す箇所に排他制御が使われているか否かを確認する。並列化候補箇所の内部で他タスクとの排他制御が使われている場合、分割の結果として設計意図と異なる実行順序となり、アプリケーションの動作不具合を引き起こす可能性がある。そのため、並列化候補箇所に排他制御が検出された場合は適用フラグを出力せず、排他制御が検出されなかった場合に適用フラグを出力する。
図15、図16、図17に並列化候補の依存関係例を示す。依存関係確認部1303は並列化候補を適用した際に分割されるタスク間に依存関係があるかを確認する。
図15はタスク間に依存関係が無い場合を示している。各タスクの入力および出力がお互いに別のデータを扱う場合、依存関係は存在しない。図16は片方向の依存関係がある場合を示している。片方のタスクの出力をもう片方のタスクが入力として使用する場合、片方向の依存関係が存在する。図17は共依存の関係を示している。各タスクがお互いにお互いの出力を使用する場合、共依存の関係にある。3つ以上のタスクが存在する場合、依存される側のタスクが依存する側のタスクでもあるとき、共依存の関係にある。
図18に依存関係確認部1303が並列化候補の適用可否を判定する際に使用する対応表を示す。並列化候補に依存関係が存在しない場合、DLP、TLP、PLPともに適用フラグを出力する。片方向の依存関係が存在する場合、PLPの場合のみ適用フラグを出力する。共依存が存在する場合は、いずれの並列化種類においても適用フラグを出力しない。
適用可否評価部1304は並列化候補を適用すべきか否かを判断する。効果予測部1301、排他検出部1302および依存関係確認部1303の全てから適用フラグが出力された場合のみ、並列化候補を適用可能と判断する。ひとつでも適用フラグが出力されなかった場合、適用不可と判断し、NGフラグを出力、適用不可と判断された並列化候補の適用を中止する。
以上説明した実施例によれば、並列化適候補の適用による減速化を防止可能となる。並列化候補ツールの出力が全て効果のある提案とは限らず、適用の結果として減速を招く提案、効果があまり期待できない割に工数やリソース負荷だけ上がる提案なども存在する。これらの適用を防止することで、より効率的な並列化開発が可能となる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
なお、本発明の実施例は、以下の態様であってもよい。
(1).ソースコードを対象としたマルチコア向け並列化案の種類を判断する並列化種類解釈部と、前記並列化案から対象の分割数を解釈する分割数解釈部と、前記並列化案の種類および分割数からモデル変更のパターンを作成するパターン生成部、前記並列化案の対象を前記モデルから抽出する対象抽出部と、前記モデル変更のパターンを対象モデルへ適用するモデル変換部を有することを特徴とするモデル並列化装置。
(2).(1)において、並列化種類、対象の分割数、並列化対象の範囲情報を含む並列化情報を入力とすることを特徴とするモデル並列化装置。
(3).(2)において、並列化種類をタイプ解釈部へ入力、対象の分割数を分割数解釈部へ入力、並列化対象の範囲情報を対象抽出部へ入力することを特徴とするモデル並列化装置。
(4).(1)から(3)のいずれかにおいて、前記並列化案による効果を予測する効果予測部と、前記並列化案によって分割したタスク間の依存関係有無を確認する依存関係確認部と、前記並列化案の対象コード内において排他制御有無を確認する排他制御検出部と、前記効果予測部と依存関係確認部と排他制御検出部の結果から並列化案の適用可否を判定する適用可否判定部を有することを特徴とするモデル並列化装置。
(5).ソースコードを対象としたマルチコア向け並列化案の種類を判断する並列化種類解釈ステップと、前記並列化案から対象の分割数を解釈する分割数解釈ステップと、前記並列化案の種類および分割数からモデル変更のパターンを作成するパターン生成ステップ、前記並列化案の対象を前記モデルから抽出する対象抽出ステップと、前記モデル変更のパターンを対象モデルへ適用するモデル変換ステップを有することを特徴とするモデル並列化方法。
(6).モデルを対象としたマルチコア向け並列化案による効果を予測する効果予測部と、前記並列化案によって分割したタスク間の依存関係有無を確認する依存関係確認部と、前記並列化案の対象コード内において排他制御有無を確認する排他制御検出部と、前記効果予測部と依存関係確認部と排他制御検出部の結果から並列化案の適用可否を判定する適用可否判定部を有することを特徴とするモデル並列化装置。
具体的には、ループを用いたストリーム処理や並列化可能性のある候補を解析するツールの出力を取得し、これをもとにモデルの変更パターンを生成する。候補からモデルの該当部分を特定し、生成した変更パターンを適用する。
上記(1)~(6)によれば、マルチコアを活用したアプリケーション開発において、モデルへの並列化適用を容易化し、試行回数を減らすことで並列化開発の工数を削減可能となる
101 モデル並列化装置
102 電子制御装置
103 コア1
104 コア2
105 コアN
106 メモリ
107 スケジューリング部
108 周辺装置
109 モデル
110 オートコーダ
111 並列化候補提案ツール
201 種類解釈部
202 分割数解釈部
203 パターン生成部
204 対象抽出部
205 モデル変換部
206 モデル統合部
801 Subsystem_1
802 Subsystem_2
803 Subsystem_3
804 Subsystem_4
805 Function
806 S-Function
1001 並列化パターン
1002 対象ブロック情報
1003 並列化モデル
1101 対象ブロック情報
1301 効果予測部
1302 排他検出部
1303 依存関係確認部
1304 適用可否評価部
1401 シミュレータ
1402 並列化シミュレータ
1403 実行時間比較部
1404 効果評価部

Claims (7)

  1. モデルから生成されるソースコードを対象とするマルチコア向け並列化案から並列化種類を解釈する種類解釈部と、
    前記並列化案から並列化候補の分割数を解釈する分割数解釈部と、
    前記並列化種類および前記分割数から並列化パターンを生成するパターン生成部と、
    前記並列化候補のブロックを識別する情報を示す対象ブロック情報前記ソースコードから抽出する対象抽出部と、
    前記対象ブロック情報によって識別されるブロックを前記並列化パターンに従って変換し、並列化モデルを出力するモデル変換部と、
    を備えることを特徴とするモデル並列化装置。
  2. 請求項1に記載のモデル並列化装置であって、
    前記並列化案は、
    外部から入力される並列化提案情報によって示され、
    前記並列化提案情報は、
    前記並列化種類、前記並列化候補の分割数、および並列化の範囲を示す情報を含む
    ことを特徴とするモデル並列化装置。
  3. 請求項に記載のモデル並列化装置であって、
    前記並列化種類は、
    前記種類解釈部へ入力され、
    前記並列化候補の分割数は、
    前記分割数解釈部へ入力され、
    前記並列化の範囲は、
    前記対象抽出部へ入力される
    ことを特徴とするモデル並列化装置。
  4. 請求項1に記載のモデル並列化装置であって、
    前記並列化案による効果を予測する効果予測部と、
    前記並列化案によって分割されるタスク間の依存関係有無を確認する依存関係確認部と、
    前記並列化案の前記並列化候補のソースコード内において排他制御有無を確認する排他検出部と、
    前記効果予測部、前記依存関係確認部および前記排他検出部の結果から前記並列化案の適用可否を評価する適用可否評価部と、
    を備えることを特徴とするモデル並列化装置。
  5. 請求項2に記載のモデル並列化装置であって、
    前記対象抽出部は、
    (a)前記並列化の範囲がループ処理であり、かつ前記並列化の範囲に前記モデルを構成するブロックのコメントが記載されている場合、前記コメントで前記ブロックを識別し、
    (b)前記並列化の範囲がループ処理であり、かつ前記並列化の範囲に前記ブロックのコメントが記載されていない場合、前記並列化の範囲が所属する関数の名前で前記ブロックを識別し、
    (c)前記並列化の範囲がループ処理でない場合、前記並列化の範囲に含まれる関数群の名前で前記ブロックを識別し、
    前記(a)-(c)のいずれかを実行した後、前記ブロックを識別する情報を示す対象ブロック情報を出力す
    ことを特徴とするモデル並列化装置。
  6. モデルを対象とするマルチコア向け並列化案による効果を予測する効果予測部と、
    前記並列化案によって分割されるタスク間の依存関係有無を確認する依存関係確認部と、
    前記並列化案の前記対象のソースコード内において排他制御有無を確認する排他検出部と、
    前記効果予測部、前記依存関係確認部および前記排他検出部の結果から前記並列化案の適用可否を評価する適用可否評価部と、
    を備えることを特徴とするモデル並列化装置。
  7. モデルから生成されるソースコードを対象とするマルチコア向け並列化案から並列化種類を解釈する種類解釈ステップと、
    前記並列化案から並列化候補の分割数を解釈する分割数解釈ステップと、
    前記並列化種類および前記分割数から並列化パターンを生成するパターン生成ステップと、
    前記並列化候補のブロックを識別する情報を示す対象ブロック情報前記ソースコードから抽出する対象抽出ステップと、
    前記対象ブロック情報によって識別されるブロックを前記並列化パターンに従って変換し、並列化モデルを出力するモデル変換ステップと、
    を有することを特徴とするモデル並列化方法。
JP2020038215A 2020-03-05 2020-03-05 モデル並列化装置および方法 Active JP7307011B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020038215A JP7307011B2 (ja) 2020-03-05 2020-03-05 モデル並列化装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020038215A JP7307011B2 (ja) 2020-03-05 2020-03-05 モデル並列化装置および方法

Publications (2)

Publication Number Publication Date
JP2021140501A JP2021140501A (ja) 2021-09-16
JP7307011B2 true JP7307011B2 (ja) 2023-07-11

Family

ID=77668731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020038215A Active JP7307011B2 (ja) 2020-03-05 2020-03-05 モデル並列化装置および方法

Country Status (1)

Country Link
JP (1) JP7307011B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009181446A (ja) 2008-01-31 2009-08-13 Toshiba Corp プログラム生成装置およびブロック線図生成装置
JP2017068825A (ja) 2015-09-29 2017-04-06 パナソニックIpマネジメント株式会社 ソフトウェア開発システムおよびプログラム
WO2020121686A1 (ja) 2018-12-12 2020-06-18 ソニー株式会社 プログラムの製造方法、およびプログラムの表示方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2526713B2 (ja) * 1990-05-28 1996-08-21 日本電気株式会社 原始プログラム解析装置
JPH06161773A (ja) * 1992-11-20 1994-06-10 Sanyo Electric Co Ltd 並列処理プログラムの作成装置
JPH0736680A (ja) * 1993-07-23 1995-02-07 Omron Corp 並列化プログラム開発支援装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009181446A (ja) 2008-01-31 2009-08-13 Toshiba Corp プログラム生成装置およびブロック線図生成装置
JP2017068825A (ja) 2015-09-29 2017-04-06 パナソニックIpマネジメント株式会社 ソフトウェア開発システムおよびプログラム
WO2020121686A1 (ja) 2018-12-12 2020-06-18 ソニー株式会社 プログラムの製造方法、およびプログラムの表示方法

Also Published As

Publication number Publication date
JP2021140501A (ja) 2021-09-16

Similar Documents

Publication Publication Date Title
JP4629768B2 (ja) 並列化処理方法、システム、及びプログラム
JP4931978B2 (ja) 並列化処理方法、システム、及びプログラム
EP3285170A1 (en) Application profiling job management system, program, and method
JP5209059B2 (ja) ソース・コード処理方法、システム、及びプログラム
US9152389B2 (en) Trace generating unit, system, and program of the same
US7721250B2 (en) System and method for interactive and integrated software development process and phases
US9396095B2 (en) Software verification
US10884714B2 (en) Method for modifying models for generating source code
JP5479942B2 (ja) 並列化方法、システム、及びプログラム
US11126408B2 (en) Incremental code generation method
WO2024006036A1 (en) Syntax subtree code strengthening
Chi et al. Rapid cycle-accurate simulator for high-level synthesis
CN115935631A (zh) 用于车机设备的测试系统和方法、存储介质
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
Kamkin et al. Extensible environment for test program generation for microprocessors
JP7307011B2 (ja) モデル並列化装置および方法
US9841954B1 (en) Method and system for automatic code generation
CN117271328A (zh) 基于Event-B形式化的实时调度算法可调度性建模和验证方法、系统及应用
CN112114817A (zh) 基于cobol语言的数据字典字段信息获取方法及装置
Diaz et al. VIPPE, parallel simulation and performance analysis of multi-core embedded systems on multi-core platforms
JP2013020580A (ja) 並列化方法、システム、及びプログラム
Schneider et al. Software Parallelization in Automotive Multi-Core Systems
JP6933001B2 (ja) 並列化方法、並列化ツール
Malyshkin et al. Automated Debugging of Fragmented Programs in LuNA System
CN114041116A (zh) 数据移动任务优化的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230629

R150 Certificate of patent or registration of utility model

Ref document number: 7307011

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150