JP6427055B2 - 並列化コンパイル方法、及び並列化コンパイラ - Google Patents

並列化コンパイル方法、及び並列化コンパイラ Download PDF

Info

Publication number
JP6427055B2
JP6427055B2 JP2015072814A JP2015072814A JP6427055B2 JP 6427055 B2 JP6427055 B2 JP 6427055B2 JP 2015072814 A JP2015072814 A JP 2015072814A JP 2015072814 A JP2015072814 A JP 2015072814A JP 6427055 B2 JP6427055 B2 JP 6427055B2
Authority
JP
Japan
Prior art keywords
program
processing
compiler
processes
parallelization
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
JP2015072814A
Other languages
English (en)
Other versions
JP2016192154A (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.)
Waseda University
Denso Corp
Original Assignee
Waseda University
Denso Corp
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 Waseda University, Denso Corp filed Critical Waseda University
Priority to JP2015072814A priority Critical patent/JP6427055B2/ja
Priority to DE102016204970.4A priority patent/DE102016204970A1/de
Priority to US15/083,592 priority patent/US20160291949A1/en
Publication of JP2016192154A publication Critical patent/JP2016192154A/ja
Application granted granted Critical
Publication of JP6427055B2 publication Critical patent/JP6427055B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、並列化コンパイル方法、及び並列化コンパイラに関する。
車載装置にマルチコアプロセッサを搭載させることにより、プログラムを各コアに分散させることができるため、スループットを向上させることが可能である。マルチコアプロセッサが搭載された車載装置では、従来のシングルコアプロセッサ用のプログラムである逐次プログラムに代えて、マルチコアプロセッサにより並列処理可能な並列化プログラムが必要となる。従来、並列化プログラムの生成を容易にすべく、逐次プログラムから並列化プログラムを自動的に生成する並列化コンパイラが提案されている。この種の並列化コンパイラとしては、特許文献1に記載の並列化コンパイラがある。特許文献1に記載の並列化コンパイラは、逐次プログラムを構成する処理間のデータ依存性や制御依存性を解析し、その解析結果に基づいて逐次プログラムから並列化プログラムを自動的に生成する。
特開2015−1807号公報
ところで、例えばバージョンアップにより逐次プログラム中の一部の処理が変更されると、逐次プログラムを構成する処理間のデータ依存性や制御依存性が変化する可能性がある。そのため、何の対処も無しに変更後の逐次プログラムを並列化コンパイラによりコンパイルすると、変更箇所のみならず、それ以外の部分も含めて並列化プログラムの処理順序が大幅に入れ替わる可能性がある。すなわち、逐次プログラムの小規模な変更が並列化プログラム全体の変更へと波及するおそれがある。この場合、並列化プログラムが正常であるか否かの検証を並列化プログラム全体に対して再度行う必要があるため、検証コストが増大するおそれがある。
本発明は、こうした実情に鑑みてなされたものであり、その目的は、プログラムの変更時に並列化プログラムの検証を容易に行うことのできる並列化コンパイル方法、及び並列化コンパイラを提供することにある。
上記課題を解決するために、シングルコアプロセッサ用のプログラムである逐次プログラム(P1)を解析することにより当該プログラムを複数の処理に分割し、当該複数の処理から、マルチコアプロセッサにより並列化処理の可能な並列化プログラム(P2)を生成するコンピュータが実行する並列化コンパイル方法は、前記複数の処理のうちのいずれかの処理が変更された際に、予め定められたパラメータに基づき前記複数の処理の処理順序に制約を設けてコンパイルを行い、処理の変更の影響が処理順序の制約に応じた局所的な範囲に抑えられることにより前記逐次プログラムから前記並列化プログラムを生成するものであり、前記パラメータとして、前記逐次プログラムにおいて前後の処理の優先度を変更、又は前記前後の処理の依存関係を追加する指示子を用い、予め定められている優先度によらず、追加された前記依存関係に基づいて前記並列化プログラムを生成することを特徴とする。
また、シングルコアプロセッサ用のプログラムである逐次プログラム(P1)を解析することにより当該プログラムを複数の処理に分割し、当該複数の処理から、マルチコアプロセッサにより並列化処理の可能な並列化プログラム(P2)を生成するコンパイル処理をコンパイラ装置(2)に実行させる並列化コンパイラ(CP)は、前記複数の処理のうちのいずれかの処理が変更された際に、予め定められたパラメータに基づき前記複数の処理の処理順序に制約を設けて前記コンパイル処理を行い、処理の変更の影響が処理順序の制約に応じた局所的な範囲に抑えられるものであり、前記パラメータとして、前記逐次プログラムにおいて前後の処理の優先度を変更、又は前記前後の処理の依存関係を追加する指示子を用い、予め定められている優先度によらず、追加された前記依存関係に基づいて前記並列化プログラムを生成するコンパイル処理を前記コンパイラ装置に実行させることを特徴とする。
この構成によれば、複数の処理のうちのいずれかの処理が変更された際、複数の処理の処理順序に制約が設けられた状態でコンパイルが行われるため、処理の変更の影響が処理順序の制約に応じた局所的な範囲に抑えられる。すなわち、処理の変更は、並列化プログラム全体に影響を及ぼすことはなく、並列化プログラムの局所的な範囲に影響を及ぼすだけである。よって、並列化プログラムの局所的な範囲のみを検証すればよいため、プログラムの検証が容易となる。
本発明によれば、プログラムの変更時に並列化プログラムの検証を容易に行うことができる。
並列化コンパイラの第1実施形態がインストールされるコンパイラ装置の概略構成を示すブロック図である。 第1実施形態のコンパイラ装置及びECUの概略構成を示すブロック図である。 第1実施形態の並列化コンパイラの処理手順を示すブロック図である。 第1実施形態の並列化コンパイラについて逐次プログラムの分割方法の一例を模式的に示す図である。 第1実施形態の並列化コンパイラについて処理の依存関係を模式的に示す図である。 第1実施形態の並列化コンパイラについてそのスケジューリングの一例を模式的に示す図である。 並列化コンパイラの第2実施形態についてその処理手順を示すブロック図である。 第2実施形態の並列化コンパイラについて処理の依存関係を模式的に示す図である。 並列化コンパイラの第3実施形態についてその処理手順を示すブロック図である。 第3実施形態の並列化コンパイラについてその逐次プログラムの一例を模式的に示す図である。 第3実施形態の並列化コンパイラについてそのスケジューリングの一例を模式的に示す図である。 並列化コンパイラの第4実施形態についてその処理手順を示すブロック図である。 第4実施形態の並列化コンパイラについてその逐次プログラムの一例を模式的に示す図である。 並列化コンパイラの第5実施形態についてその処理手順を示すブロック図である。 第5実施形態の並列化コンパイラについてそのスケジューリングの一例を模式的に示す図である。 並列化コンパイラの第6実施形態についてその処理手順を示すブロック図である。 第6実施形態の並列化コンパイラについてそのスケジューリングの一例を模式的に示す図である。 並列化コンパイラの他の実施形態についてスケジューリングの一例を模式的に示す図である。
<第1実施形態>
以下、並列化コンパイル方法、並列化コンパイラ、及び車載装置の第1実施形態について説明する。
図1に示されるように、本実施形態の並列化コンパイラCPは、記憶媒体1に記憶された状態でユーザに提供される。
並列化コンパイラCPは、組込みシステム向けのシングルコアプロセッサ用のソースプログラムから、組込みシステム向けのマルチコアプロセッサ用のソースプログラムを生成する。以下、シングルコアプロセッサ用のプログラムを「逐次プログラム」と称する。また、マルチコアプロセッサ用のソースプログラムを「並列化プログラム」と称する。
記憶媒体1は、例えばDVDやCD−ROM、USBメモリ、メモリカード(登録商標)等の光ディスク、磁気ディスク、半導体メモリからなる。並列化コンパイラCPは記憶媒体1を介してコンパイラ装置2にインストールされる。
コンパイラ装置2は、例えば車載装置の組込みシステム向けの並列化プログラムの開発に用いられる。コンパイラ装置2は、ディスプレイ20と、ハードディスクドライブ(HDD)21と、CPU22と、ROM23と、RAM24と、入力装置25と、読み取り部26とを備えている。
ディスプレイ20は、CPU22から出力される映像信号に基づく映像を表示する。
入力装置25は、キーボードやマウス等により構成されている。入力装置25は、ユーザの操作に応じた信号をCPU22に出力する。
読み取り部26は、記憶媒体1から並列化コンパイラCPを読み取る部分である。
RAM24は、ROM23やHDD21に記憶されたプログラムをCPU22が実行する際に、そのプログラムを一時的に保存するための記憶領域や、演算処理用のデータを一時的に保存するための記憶領域として用いられる。
CPU22は、オペレーティングシステム(OS)をHDD21から読み込んで実行することにより、HDD21に記憶されている各種プログラムをOS上のプロセスとして実行する。CPU22は、このプロセスにおいて、入力装置25からの信号の入力の受け付け、ディスプレイ20への映像信号の出力、並びにRAM24及びHDD21に対するデータの読み出し/書き込みの制御等を行う。
コンパイラ装置2には、読み取り部26を介して記憶媒体1から読み取られる並列化コンパイラCPがインストールされている。インストールされた並列化コンパイラCPは、HDD21に保存されており、OS上のプロセスとして実行されるアプリケーションの一つとなっている。
コンパイラ装置2では、ユーザの指示に基づいて並列化コンパイラCPが並列化処理を実行する。図2に示されるように、並列化処理は、逐次プログラムP1から並列化プログラムP2を自動的に生成する処理である。コンパイラ装置2により生成される並列化プログラムP2はECU( Electrical Control Unit)3に記憶される。ECU3は、マルチコアプロセッサ30と、通信部31と、入出力ポート32とを備えている。本実施形態では、ECU3が車載装置に相当する。
入出力ポート32は、車両に搭載された各種センサ5の検出信号を取り込んだり、車載アクチュエータ等の制御対象4に制御信号を送信する部分である。ECU3から制御対象4に送信される制御信号により、制御対象4の駆動が制御される。
マルチコアプロセッサ30は、ROM301と、RAM302と、複数のコア303a,303b,…等を有している。ROM301には、コンパイラ装置2により生成される並列化プログラムP2のバイナリデータが記憶されている。マルチコアプロセッサ30は、ROM301に記憶された並列化プログラムP2に基づいて動作し、制御対象4の駆動を統括的に制御する。
通信部31は、CAN( Controller Area Network)等の車載ネットワークを介して接続された他の車載ECU( Electrical Control Unit)と通信を行う部分である。
次に、並列化コンパイラCPにより逐次プログラムP1から並列化プログラムP2を生成する処理について具体的に説明する。
図3に示されるように、並列化コンパイラCPは、まず、逐次プログラムP1のプログラム構造解析を行う(ステップS1)。具体的には、並列化コンパイラCPは、逐次プログラムP1の字句解析や構文・意味解析等を行う。
この際、並列化コンパイラCPは、逐次プログラムP1に対してインライン展開を行う。インライン展開とは、プログラム内のサブルーチンをコールする記述を、当該サブルーチンにて定義されている処理の記述に置き換える処理である。組込みシステム用のプログラムは一般的に処理が細かいため、粗い粒度での並列化が困難であるが、インライン展開を行うことで、サブルーチン内の並列性をも有効活用することが可能となる。
また、並列化コンパイラCPは、逐次プログラムP1の各関数内において、同一名称のローカル変数が用いられている複数の処理ブロックを特定すると共に、特定した各処理ブロックにおいて独自の名称のローカル変数が用いられるように逐次プログラムP1を改変する。処理ブロックは、例えばループ処理や、if文やswitch- case文等の分岐処理のステートメントと、これに付随する代入文等から構成される記述の集合体である。
並列化コンパイラCPは、ステップS1により解析された字句や構文・意味等に基づいて逐次プログラムP1を複数の処理(マクロタスク)A,B,…に分割する(ステップS2)。各処理A,B,…は、各種演算や代入、分岐処理、関数コール等からなる一連の処理である。例えば、図4に示されるように、並列化コンパイラCPは、逐次プログラムP1を処理A〜Hに分割する。
図3に示されるように、ステップS2に続いて、並列化コンパイラCPは、各処理A,B,…間の制御依存性及びデータ依存性を解析する(ステップS3,S4)。そして、並列化コンパイラCPは、各処理A,B,…間のデータ依存性及び制御依存性に基づいて処理グラフ(マクロタスクグラフ)MTGを生成する(ステップS5)。並列化コンパイラCPは、例えば以下の条件(a1),(a2)に基づいて処理グラフMTGを生成する。
(a1)処理xが処理yにデータ依存する場合には、処理xの実行が終了するまで処理yを実行できない。
(a2)処理yの条件分岐先が確定すれば、処理yの実行が終了していなくても、処理yに制御依存する処理xを実行できる。
処理グラフMTGでは、全処理A,B,…のデータ依存性が表現される。例えば、並列化コンパイラCPは、図4に示される処理A〜Hから、図5に示されるような処理グラフMTGを生成する。
ステップS5に続いて、並列化コンパイラCPは、予め定められた処理単位の優先度情報I1に基づいて各処理A,B,…の処理順序の制約を解析する(ステップS6)。優先度情報I1は、例えば図中に示されるような処理A,B,…単位の優先度を数字で表すものである。優先度情報I1は、優先度の数字が小さいほど、優先度の高い処理であることを示している。また、数字が同一の処理は、処理順序の優先度に差が無いことを示している。優先度情報I1は、例えば入力装置25から入力情報として入力されたり、記憶媒体1に予め記憶されている。本実施形態では、優先度情報I1が、予め定められたパラメータに相当する。
ステップS6の処理に続いて、並列化コンパイラCPは、ステップS5で生成される処理グラフMTG、及びステップS6により解析される各処理A,B,…の処理順序の制約に基づいて、各処理A,B,…を複数のプロセッサグループPG1,PG2,…に割り当てるスケジューリングを行う(ステップS7)。プロセッサグループPG1,PG2,…は、マルチコアプロセッサ30のコア303a,303b,…に対応した数だけ設けられている。例えばマルチコアプロセッサ30に設けられるコアの数が2つの場合には、プロセッサグループは2つ用意される。具体的には、並列化コンパイラCPは、以下の条件(b1),(b2)を満たしつつ、並列処理の実行可能な処理のうちの全部又は一部を異なるプロセッサグループPG1,PG2,…に割り当てる。
(b1)優先度の高い処理は、優先度の低い処理よりも先に実行される。
(b2)優先度の低い処理の開始時期は、優先度の高い処理の終了時期よりも遅い。
また、並列化コンパイラCPは、必要に応じてプロセッサグループPG1,PG2,…に待ち時間を挿入する。これにより、並列化コンパイラCPは、例えば図5に示される処理グラフMTGと、優先度情報I1とに基づいて、図6に示されるようなプロセッサグループPG1,PG2を生成する。
なお、並列化コンパイラCPは、プロセッサグループPG1,PG2,…の比較例を複数生成し、複数の比較例の中から最適なプロセッサグループPG1,PG2,…を選択してもよい。プロセッサグループPG1,PG2,…が最適であるか否かの判定は、例えばプロセッサグループPG1,PG2,…のそれぞれの実行時間の長さや、所定の評価関数に基づき演算される評価値等を用いて行われる。
並列化コンパイラCPは、プロセッサグループPG1,PG2,…の生成が完了した後、プロセッサグループPG1,PG2,…に基づいて並列化プログラムP2のバイナリデータを生成する。このようにして生成される並列化プログラムP2がマルチコアプロセッサ30のROM301に記憶される。
次に、本実施形態の並列化コンパイル方法、並列化コンパイラCP、及びECU3の作用及び効果について説明する。
図6に示されるように、バージョンアップ等に起因する逐次プログラムP1の変更により、例えば処理Eの内容に変更が生じたとする。この場合、並列化コンパイラCPが逐次プログラムP1から並列化プログラムP2を生成すると、処理Eを含め、それと同一の優先度の処理D及び処理FについてはプロセッサグループPG1,PG2への割り当てが変更される可能性がある。しかしながら、処理D〜Fを除く処理A〜C,G,Hについては、プロセッサグループPG1,PG2への割り当てが維持される。すなわち、処理Eの変更は、並列化プログラムP2全体に影響を及ぼすことはなく、図中に二点鎖線で示される並列化プログラムの局所的な範囲に影響を及ぼすだけである。よって、並列化プログラムP2の局所的な範囲、具体的には処理D〜Fの範囲だけを検証すればよいため、並列化プログラムP2の検証を容易に行うことができる。
一方、プログラム仕様書には、関数単位で処理順序の規定が存在する場合があるため、処理グラフMTGのデータ依存関係だけを考慮してプロセッサグループPG1,PG2,…への割り当てを行と、プロセッサグループPG1,PG2,…に割り当てられる処理が仕様不一致になるおそれがある。すなわち、並列化プログラムP2が仕様不一致になる可能性がある。この点、本実施形態の並列化コンパイラCPによれば、仕様に沿うように優先度情報I1を設定することにより、例えば処理Eが変更された際に並列化プログラムP2が仕様不一致になることを回避できる。
<第2実施形態>
次に、並列化コンパイル方法、並列化コンパイラCP、及びECU3の第2実施形態について説明する。以下、第1実施形態との相違点を中心に説明する。
図7に示されるように、本実施形態の並列化コンパイラCPは、ステップS6の工程において、処理単位の優先度情報I1に代えて、依存関係情報I2に基づいて各処理A,B,…の処理順序の制約を解析する。依存関係情報I2は、処理グラフMTGにおいて規定される処理単位のデータ依存性とは別に、任意に設定可能な処理単位のデータ依存性を表すものである。依存関係情報I2は、例えば図中に示されるように各処理A,B,…のデータ依存性を表す。依存関係情報I2は、依存関係元の欄に記載される処理と、依存関係先の欄に記載される処理とのデータ依存関係を示している。例えば処理Aは、処理D〜Fとデータ依存関係があることを表している。依存関係情報I2は、例えば入力装置25から入力情報として入力されたり、記憶媒体1に予め記憶されている。本実施形態では、依存関係情報I2が、予め定められたパラメータに相当する。これにより、例えば処理Aには、図8に二点鎖線で示されるような架空のデータ依存性を追加することができる。なお、図8では、便宜上、処理Aの架空のデータ依存性のみを示している。
また、並列化コンパイラCPは、ステップS5で生成される処理グラフMTG、及びステップS6により解析される各処理A,B,…の処理順序の制約に基づいて、各処理A,B,…を複数のプロセッサグループPG1,PG2,…に割り当てるスケジューリングを行う(ステップS7)。その際、並列化コンパイラCPは、上記(b1),(b2)の条件を用いずにスケジューリングを行う。すなわち、並列化コンパイラCPは、例えば図8に示されるような架空のデータ依存性が追加された処理グラフMTGに基づいて、並列実行可能な処理のうちの全部又は一部を異なるプロセッサグループPG1,PG2に割り当てる。これにより、並列化コンパイラCPは、処理A〜Cの実行が終了した後に処理D〜Fが実行されるようにプロセッサグループPG1,PG2への割り当てを行う。また、並列化コンパイラCPは、処理D〜Fの実行が終了した後に処理G,Hが実行されるようにプロセッサグループPG1,PG2への割り当てを行う。よって、並列化コンパイラCPは、例えば図6に示されるようなプロセッサグループPG1,PG2を生成する。
次に、本実施形態の並列化コンパイル方法、並列化コンパイラCP、及びECU3の作用及び効果について説明する。
図6に示されるように、処理Eの内容に変更が生じた場合でも、並列化コンパイラCPは、依存関係情報I2により、処理A〜Cの実行が終了した後に処理D〜Fが実行されるようなプロセッサグループPG1,PG2を生成する。また、並列化コンパイラCPは、処理D〜Fの実行が終了した後に処理G,Hが実行されるようなプロセッサグループPG1,PG2を生成する。したがって、処理Eの変更は、図中に二点鎖線で囲まれる範囲、すなわち並列化プログラムP2の局所的な範囲に影響を及ぼすだけである。よって、上記第1実施形態と同様の効果を得ることができる。
<第3実施形態>
次に、並列化コンパイル方法、並列化コンパイラCP、及びECU3の第2実施形態について説明する。以下、第1実施形態との相違点を中心に説明する。
図9に示されるように、本実施形態の並列化コンパイラCPは、ステップS6の工程において、処理単位の優先度情報I1に代えて、逐次プログラムP1の関数Fa,Fb,…単位の優先度情報I3に基づいて各処理A,B,…の処理順序の制約を解析する。例えば、図10に示されるような関数Fa,Fb,Fcが逐次プログラムP1に記載されているとする。関数Faは処理A〜Cを含んでいる。関数Fbは処理D〜Fを含んでいる。関数Fcは処理G,Hを含んでいる。なお、ステップS1のプログラム構造解析のインライン展開時には、処理A〜Hは親関数の処理順序をそのまま承継する。
この場合、優先度情報I3は、例えば図9に示されるように、関数Fa〜Fc単位の優先度を数字で表したものとなる。優先度情報I3は、優先度の数字が小さいほど、処理の優先度の高い関数であることを示している。優先度情報I3は、例えば入力装置25から入力情報として入力されたり、記憶媒体1に予め記憶されている。本実施形態では、優先度情報I3が、予め定められたパラメータに相当する。
ステップS6の処理に続いて、並列化コンパイラCPは、ステップS5で生成される処理グラフMTG、及びステップS6により解析される各処理A,B,…の処理順序の制約に基づいて、各処理A,B,…を複数のプロセッサグループPG1,PG2,…に割り当てるスケジューリングを行う(ステップS7)。具体的には、並列化コンパイラCPは、以下の条件(c1),(c2)を満たしつつ、並列処理の実行可能な処理のうちの全部又は一部を異なるプロセッサグループPG1,PG2,…に割り当てる。
(c1)優先度の高い関数は、優先度の低い関数よりも先に実行される。
(c2)優先度の低い関数の開始時期は、優先度の高い関数の終了時期よりも遅い。
これにより、並列化コンパイラCPは、例えば図5に示される処理グラフMTGと、優先度情報I3とに基づいて、図11に示されるようなプロセッサグループPG1,PG2を生成する。
次に、本実施形態の並列化コンパイル方法、並列化コンパイラCP、及びECU3の作用及び効果について説明する。
図11に示されるように、処理Eの内容に変更が生じた場合でも、並列化コンパイラCPは、優先度情報I3により、関数Faの実行が終了した後に関数Fbが実行されるようなプロセッサグループPG1,PG2を生成する。また、並列化コンパイラCPは、関数Fbの実行が終了した後に関数Fcが実行されるようなプロセッサグループPG1,PG2を生成する。したがって、処理Eの変更は、図中に二点鎖線で示される範囲、すなわち並列化プログラムP2の局所的な範囲に影響を及ぼすだけである。よって、上記第1実施形態と同様の効果を得ることができる。
<第4実施形態>
次に、並列化コンパイル方法、並列化コンパイラCP、及びECU3の第2実施形態について説明する。以下、第1実施形態との相違点を中心に説明する。
図12に示されるように、本実施形態の並列化コンパイラCPは、ステップS6の工程において、逐次プログラムP1中に記載された指示子Indに基づいて各処理A,B,…の処理順序の制約を解析する。指示子Indは、逐次プログラムP1中において前後の処理の優先度を変更するものである。例えば図13に示されるように、前後の処理の優先度を変更する指示子Indが逐次プログラムP1に記載されているとする。この場合、並列化コンパイラCPは、指示子Indがプログラム中で登場する都度、処理順序の優先度を下げていく。結果的に、処理A〜C、処理D〜F、及び処理G,Hの順で処理順序の優先度が低くなる。本実施形態では、指示子Indが予め定められたパラメータに相当する。
このような構成によれば、第1実施形態と同様に各処理A,B,…に優先順位を設けることができるため、第1実施形態と同様の作用及び効果を得ることができる。
<第5実施形態>
次に、並列化コンパイル方法、並列化コンパイラCP、及びECU3の第5実施形態について説明する。以下、第1実施形態との相違点を中心に説明する。
図14に示されるように、本実施形態の並列化コンパイラCPは、ステップS6の処理において、処理単位の優先度情報I1に代えて、処理フォルダFDa,FDb,…毎の優先度情報I4に基づいて各処理A,B,…の処理順序の制約を解析する。処理フォルダには、単数又は複数の処理ファイルが格納されている。処理ファイルには、単数又は複数の処理が記載されている。
例えば逐次プログラムP1が、処理フォルダFDa,FDb,FDcにより構成されているとする。処理フォルダFDaには、処理A〜Cの内容が記載された処理ファイルが格納されている。処理フォルダFDbには、処理D〜Fの内容が記載された処理ファイルが格納されている。処理フォルダFDcには、処理G,Hの内容が記載された処理ファイルが格納されている。並列化コンパイラCPは、処理フォルダFDa〜FDcに格納されている処理ファイルを実行する。この場合、優先度情報I4は、例えば図14に示されるように、処理フォルダFDa〜FDc単位の優先度を数字で表したものとなる。優先度情報I4は、優先度の数字が小さいほど、処理の優先度の高い処理フォルダであることを示している。優先度情報I4は、例えば入力装置25から入力情報として入力されたり、記憶媒体1に予め記憶されている。本実施形態では、優先度情報I4が、予め定められたパラメータに相当する。
ステップS6の処理に続いて、並列化コンパイラCPは、ステップS5で生成される処理グラフMTG、及びステップS6により解析される各処理A,B,…の処理順序の制約に基づいて、各処理A,B,…を複数のプロセッサグループPG1,PG2,…に割り当てるスケジューリングを行う(ステップS7)。具体的には、並列化コンパイラCPは、以下の条件(d1),(d2)を満たしつつ、並列処理の実行可能な処理のうちの全部又は異物を異なるプロセッサグループPG1,PG2,…に割り当てる。
(d1)優先度の高い処理フォルダは、優先度の低い処理フォルダよりも先に実行される。
(d2)優先度の低い処理フォルダの開始時期は、優先度の高い処理フォルダの終了時期よりも遅い。
これにより、並列化コンパイラCPは、例えば図5に示される処理グラフMTGと、優先度情報I3とに基づいて、図15に示されるようなプロセッサグループPG1,PG2を生成する。
次に、本実施形態の並列化コンパイル方法、並列化コンパイラCP、及びECU3の作用及び効果について説明する。
図15に示されるように、処理Eの内容に変更が生じた場合でも、並列化コンパイラCPは、優先度情報I3により、処理フォルダFDaの実行が終了した後に処理フォルダFDbが実行されるようなプロセッサグループPG1,PG2を生成する。また、並列化コンパイラCPは、処理フォルダFDbの実行が終了した後に処理フォルダFDcが実行されるようなプロセッサグループPG1,PG2を生成する。したがって、処理Eの変更は、図中に二点鎖線で示される範囲、すなわち並列化プログラムP2の局所的な範囲に影響を及ぼすだけである。よって、上記第1実施形態と同様の効果を得ることができる。
<第6実施形態>
次に、並列化コンパイル方法、並列化コンパイラCP、及びECU3の第6実施形態について説明する。以下、第1実施形態との相違点を中心に説明する。
図16に示されるように、本実施形態の並列化コンパイラCPは、ステップS6の処理において、処理単位の優先度情報I1に代えて、処理ファイルFLa,FLb,…毎の優先度情報I5に基づいて各処理A,B,…の処理順序の制約を解析する。処理ファイルには、単数又は複数の処理が記載されている。
例えば逐次プログラムP1が処理ファイルFLa,FLb,FLcにより構成されているとする。処理ファイルFLaには、処理A〜Cの内容が記載されている。処理ファイルFLbには、処理D〜Fの内容が記載されている。処理ファイルFLcには、処理G,Hの内容が記載されている。並列化コンパイラCPは、処理ファイルFLa〜FLcに格納されている処理ファイルを実行する。この場合、優先度情報I4は、例えば図16に示されるように、処理ファイルFLa〜FLc単位の優先度を数字で表したものとなる。優先度情報I4は、優先度の数字が小さいほど、処理の優先度の高い処理ファイルであることを示している。優先度情報I4は、例えば入力装置25から入力情報として入力されたり、記憶媒体1に予め記憶されている。本実施形態では、優先度情報I4が、予め定められたパラメータに相当する。
ステップS6の処理に続いて、並列化コンパイラCPは、ステップS5で生成される処理グラフMTG、及びステップS6により解析される各処理A,B,…の処理順序の制約に基づいて、各処理A,B,…を複数のプロセッサグループPG1,PG2,…に割り当てるスケジューリングを行う(ステップS7)。具体的には、並列化コンパイラCPは、以下の条件(e1),(e2)を満たしつつ、並列処理の実行可能な処理のうちの全部又は一部を異なるプロセッサグループPG1,PG2,…に割り当てる。
(e1)優先度の高い処理ファイルは、優先度の低い処理ファイルよりも先に実行される。
(e2)優先度の低い処理ファイルの開始時期は、優先度の高い処理ファイルの終了時期よりも遅い。
これにより、並列化コンパイラCPは、例えば図5に示される処理グラフMTGと、優先度情報I5とに基づいて、図17に示されるようなプロセッサグループPG1,PG2を生成する。
次に、本実施形態の並列化コンパイル方法、並列化コンパイラCP、及びECU3の作用及び効果について説明する。
図17に示されるように、処理Eの内容に変更が生じた場合でも、並列化コンパイラCPは、優先度情報I3により、処理ファイルFLaの実行が終了した後に処理ファイルFLbが実行されるようなプロセッサグループPG1,PG2を生成する。また、並列化コンパイラCPは、処理ファイルFLbの実行が終了した後に処理ファイルFLcが実行されるようなプロセッサグループPG1,PG2を生成する。したがって、処理Eの変更は、図中に二点鎖線で示される範囲、すなわち並列化プログラムP2の局所的な範囲に影響を及ぼすだけである。よって、上記第1実施形態と同様の効果を得ることができる。
<他の実施形態>
なお、上記実施形態は、以下の形態にて実施することもできる。
・第1実施形態の並列化コンパイラCPは、ステップS7のスケジューリングの際の条件(b2)に代えて、以下の条件(b3)を用いてもよい。
(b3)優先度の低い処理の開始時期は、優先度の高い処理の開始時期よりも遅い。
これにより、並列化コンパイラCPは、例えば図5に示される処理グラフMTGと、優先度情報I1とに基づいて、図18に示されるようなプロセッサグループPG1,PG2を生成することができるため、並列化プログラムP2の実行時間を短縮することができる。第3実施形態の条件(c2)、第5実施形態の条件(d2)、及び第6実施形態の条件(e2)についても同様に変更してもよい。
・第4実施形態の指示子Indは、逐次プログラムP1中の前後の処理の依存関係を追加するものであってもよい。このような構成であっても、第4実施形態と同様の作用及び効果を得ることができる。
・並列化コンパイラCPは、ネットワークを介してコンパイラ装置2にインストールされるものであってもよい。
・コンパイラ装置2は、車載装置に限らず、情報家電等の様々な用途の組込みシステム向けの並列化プログラムの開発や、組込みシステム以外の他の用途の並列化プログラムの開発に用いることができる。
・本発明は上記の具体例に限定されるものではない。すなわち、上記の具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素及びその配置や条件等は、例示したものに限定されるわけではなく適宜変更することができる。また、前述した実施形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
CP:並列化コンパイラ
P1:逐次プログラム
P2:並列化プログラム
2:コンパイラ装置
3:ECU(車載装置)
30:マルチコアプロセッサ

Claims (2)

  1. シングルコアプロセッサ用のプログラムである逐次プログラム(P1)を解析することにより当該プログラムを複数の処理に分割し、当該複数の処理から、マルチコアプロセッサ(30)により並列化処理の可能な並列化プログラム(P2)を生成するコンピュータが実行する並列化コンパイル方法であって、
    前記複数の処理のうちのいずれかの処理が変更された際に、予め定められたパラメータに基づき前記複数の処理の処理順序に制約を設けてコンパイルを行い、処理の変更の影響が処理順序の制約に応じた局所的な範囲に抑えられることにより前記逐次プログラムから前記並列化プログラムを生成するものであり、
    前記パラメータとして、前記逐次プログラムにおいて前後の処理の優先度を変更、又は前記前後の処理の依存関係を追加する指示子を用い、予め定められている優先度によらず、追加された前記依存関係に基づいて前記並列化プログラムを生成することを特徴とする並列化コンパイル方法。
  2. シングルコアプロセッサ用のプログラムである逐次プログラム(P1)を解析することにより当該プログラムを複数の処理に分割し、当該複数の処理から、マルチコアプロセッサ(30)により並列化処理の可能な並列化プログラム(P2)を生成するコンパイル処理をコンパイラ装置(2)に実行させる並列化コンパイラ(CP)であって、
    前記複数の処理のうちのいずれかの処理が変更された際に、予め定められたパラメータに基づき前記複数の処理の処理順序に制約を設けて前記コンパイル処理を行い、処理の変更の影響が処理順序の制約に応じた局所的な範囲に抑えられるものであり、
    前記パラメータとして、前記逐次プログラムにおいて前後の処理の優先度を変更、又は前記前後の処理の依存関係を追加する指示子を用い、予め定められている優先度によらず、追加された前記依存関係に基づいて前記並列化プログラムを生成するコンパイル処理を前記コンパイラ装置に実行させることを特徴とする並列化コンパイラ。
JP2015072814A 2015-03-31 2015-03-31 並列化コンパイル方法、及び並列化コンパイラ Active JP6427055B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015072814A JP6427055B2 (ja) 2015-03-31 2015-03-31 並列化コンパイル方法、及び並列化コンパイラ
DE102016204970.4A DE102016204970A1 (de) 2015-03-31 2016-03-24 Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
US15/083,592 US20160291949A1 (en) 2015-03-31 2016-03-29 Parallelization compiling method, parallelization compiler, and vehicular device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015072814A JP6427055B2 (ja) 2015-03-31 2015-03-31 並列化コンパイル方法、及び並列化コンパイラ

Publications (2)

Publication Number Publication Date
JP2016192154A JP2016192154A (ja) 2016-11-10
JP6427055B2 true JP6427055B2 (ja) 2018-11-21

Family

ID=56937730

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015072814A Active JP6427055B2 (ja) 2015-03-31 2015-03-31 並列化コンパイル方法、及び並列化コンパイラ

Country Status (3)

Country Link
US (1) US20160291949A1 (ja)
JP (1) JP6427055B2 (ja)
DE (1) DE102016204970A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
FR3074931B1 (fr) * 2017-12-13 2020-01-03 Vsora Architectures de processeur
CN109471637B (zh) * 2018-11-08 2021-07-06 西安电子科技大学 电路图的审查脚本调试方法
JP2022175874A (ja) * 2021-05-14 2022-11-25 日立Astemo株式会社 プログラム実行装置、解析方法、実行方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265721A (ja) * 1992-03-03 1993-10-15 Nec Corp 差分コンパイル方法および装置
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
JPH0721015A (ja) * 1993-06-23 1995-01-24 Nec Software Ltd リンク処理方式
US5768594A (en) * 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
JP2002108625A (ja) * 2000-09-26 2002-04-12 Toshiba Corp 言語処理装置及び言語処理プログラムを格納した記録媒体
US7302686B2 (en) * 2001-07-04 2007-11-27 Sony Corporation Task management system
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP2007226739A (ja) * 2006-02-27 2007-09-06 Seiko Epson Corp ソフトウェア開発装置およびプログラム
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8136104B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
US8181168B1 (en) * 2007-02-07 2012-05-15 Tilera Corporation Memory access assignment for parallel processing architectures
JP5019897B2 (ja) * 2007-02-07 2012-09-05 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP2009146243A (ja) * 2007-12-17 2009-07-02 Hitachi Ltd 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム
US8448155B2 (en) * 2009-06-01 2013-05-21 National Instruments Corporation Automatically creating parallel iterative program code in a graphical data flow program
US9009726B2 (en) * 2010-12-10 2015-04-14 Microsoft Technology Licensing, Llc Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
JP5660386B2 (ja) * 2011-05-26 2015-01-28 日本電気株式会社 メモリ配置管理装置、メモリ配置管理方法、メモリ配置管理プログラム、およびプログラム作成システム
JP5971334B2 (ja) * 2012-04-18 2016-08-17 日本電気株式会社 タスク配置装置、タスク配置方法、および、コンピュータ・プログラム
US20140032833A1 (en) * 2012-07-25 2014-01-30 International Business Machines Corporation Dynamic Disk Space Management In A File System
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
US9773496B2 (en) * 2012-12-06 2017-09-26 White Eagle Sonic Technologies, Inc. Apparatus and system for adaptively scheduling ultrasound system actions
US9195506B2 (en) * 2012-12-21 2015-11-24 International Business Machines Corporation Processor provisioning by a middleware processing system for a plurality of logical processor partitions
US20140288911A1 (en) * 2013-03-25 2014-09-25 Nvidia Corporation System and method for simulating integrated circuit performance on a many-core processor
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
US9542221B2 (en) * 2014-05-22 2017-01-10 Oracle International Corporation Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines
US10318194B2 (en) * 2014-10-02 2019-06-11 Hitachi Vantara Corporation Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments
US9280389B1 (en) * 2014-12-30 2016-03-08 Tyco Fire & Security Gmbh Preemptive operating system without context switching

Also Published As

Publication number Publication date
US20160291949A1 (en) 2016-10-06
DE102016204970A1 (de) 2016-10-06
JP2016192154A (ja) 2016-11-10

Similar Documents

Publication Publication Date Title
JP6319880B2 (ja) 並列性の抽出方法及びプログラムの作成方法
US7882498B2 (en) Method, system, and program of a compiler to parallelize source code
JP2015001807A (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
EP3343351B1 (en) Parallel program generating method and parallelization compiling apparatus
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP4965995B2 (ja) プログラム処理方法、処理プログラム及び情報処理装置
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
US10296316B2 (en) Parallelization method, parallelization tool, and in-vehicle apparatus
JP7385989B2 (ja) 演算制御装置
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP2015219906A (ja) ソフトウェア確認方法およびプロセッサ
JP6488739B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
US10255119B2 (en) Parallelization method, parallelization tool and vehicle-mounted device
JP2016192152A (ja) 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP6488738B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
JP6933001B2 (ja) 並列化方法、並列化ツール
JP7095513B2 (ja) マルチコアマイコン、及び車載装置
Van Wagensveld et al. Intra-task parallelism in automotive real-time systems
JP7441861B2 (ja) 演算装置及び検査方法
US10379828B2 (en) Parallelization method, parallelization tool, and in-vehicle device
JP6690570B2 (ja) 並列化方法、並列化ツール、車載制御装置
Schmidhuber et al. Towards the derivation of guidelines for the deployment of real-time tasks on a multicore processor
JP6933063B2 (ja) 並列化方法、並列化ツール、車載装置
JP6600888B2 (ja) 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法
Krdzalic et al. Software Architecture Without Autosar

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171019

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180828

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: 20181002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181026

R150 Certificate of patent or registration of utility model

Ref document number: 6427055

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250