JP6427053B2 - 並列化コンパイル方法、及び並列化コンパイラ - Google Patents
並列化コンパイル方法、及び並列化コンパイラ Download PDFInfo
- Publication number
- JP6427053B2 JP6427053B2 JP2015072812A JP2015072812A JP6427053B2 JP 6427053 B2 JP6427053 B2 JP 6427053B2 JP 2015072812 A JP2015072812 A JP 2015072812A JP 2015072812 A JP2015072812 A JP 2015072812A JP 6427053 B2 JP6427053 B2 JP 6427053B2
- Authority
- JP
- Japan
- Prior art keywords
- procedure
- macro task
- program
- processing
- macro
- 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
Links
- 238000000034 method Methods 0.000 title claims description 163
- 238000012545 processing Methods 0.000 claims description 142
- 238000012217 deletion Methods 0.000 claims description 19
- 230000037430 deletion Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 description 92
- 230000008859 change Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 12
- 230000003068 static effect Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 238000005111 flow chemistry technique Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000004807 localization Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 239000011362 coarse particle Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000010419 fine particle Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
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)マルチグレイン並列処理
(2)コンパイル時のスタティックスケジューリングコードの挿入
(3)実行時のダイナミックスケジューリングコードの生成
(4)階層型マクロデータフローの実現
(5)マクロタスクの分割/融合,Loop distribution/interchange等の並列性抽出
(6)データローカライズによるデータ転送効率の向上
(7)コンパイラによる電力削減
自動並列化コンパイラは、Front End(FE),Middle Path(MP),Back End(BE)の3つのステージを有している。各ステージは実行形態として独立しており、FE,MPから生成される中間言語によりコード授受が行われる。
自動並列化コンパイラは、逐次プログラムを、基本ブロック(BB),繰り返しブロック(RB),サブルーチンブロック(SB)の3種類の粗粒度タスク(マクロタスク(MT))に分割するマクロデータフロー処理を行う。しかし、マクロデータフロー処理では、プログラムの形状によってはプロセッサの利用効率が上がらず、十分な粗粒度並列性が抽出できないという問題点がある。
自動並列化コンパイラは、まず、生成された各階層のマクロタスクに対して、マクロタスク間の制御依存性とデータ依存性を解析する。この解析結果は、マクロフローグラフ(MFG)として表される。
MFGは、マクロタスク間の制御依存性とデータ依存性を表すが、並列性は表していない。並列性を抽出するためには、各マクロタスクに対し、制御依存性とデータ依存性の両方を考慮した最早実行可能条件解析を行う必要がある。最早実行可能条件とは、そのMTが最も早い時点で実行可能になる条件であり、次のような実行条件から求められる。
(1)MTiがMTjにデータ依存するならば、MTjの実行が終了するまでMTiは実行できない。
(2)MTjの条件分岐先が確定すれば、MTjの実行が終了しなくても、MTjに制御依存するMTiは実行できる。
(MTiが制御依存するMTjがMTiに分岐する)AND((MTiがデータ依存するMTk(0≦k≦|N|))が終了)OR(MTkが実行されないことが決定する))
マクロタスクの最早実行可能条件は、マクロタスクグラフ(MTG)で表される。
自動並列化コンパイラは、BB,RB,SB等のMT間の制御依存性とデータ依存性を表現したマクロフローグラフ(MFG)を生成し、さらに、MFGから最早実行可能条件解析により引きだしたMT間の並列性を、マクロタスクグラフ(MTG)として表現する(参考文献1,参考文献2(笠原,合田,吉田,岡本,本多、「Fortranマクロデータフロー処理のマクロタスク生成手法」、信学論、1992年、Vol.J75-D-I、No.8、pp.511-525)参照)。
PGに割り当てられたMTが、DOALLループ、或いはイタレーションレベルで並列処理が可能なものであれば、そのMTには、プロセッサクラスタ内のプロセッサによって中粒度並列処理がなされる。この中粒度並列処理は、DOループイタレーション間の並列性を利用する並列処理のことであり、マルチコアプロセッサにおける並列処理では最も一般的なものである。
ステートメントレベルの近細粒度タスクに対する並列処理を、近細粒度並列処理という。これによって、依存の無いステートメントも並列実行が可能になり、実行時間が短縮される。
粗粒度タスク並列処理では、各階層で生成されたマクロタスクは、PGに割り当てられて実行される。どのPGにマクロタスクを割り当てるかを決定するスケジューリング手法として、下記のダイナミックスケジューリングとスタティックスケジューリングがあり、これらは、マクロタスクグラフの形状や実行時非決定性等を元に選択される。
条件分岐等の実行時不確定性が存在する場合には、ダイナミックスケジューリングによって実行時にマクロタスクをPGに割り当てる。ダイナミックスケジューリングルーチンは、マクロタスクの終了や分岐方向の決定に応じてマクロタスク実行管理テーブルを操作し、各マクロタスクの最早実行可能条件を検査する。
一方、スタティックスケジューリングは、マクロタスクグラフがデータ依存エッジのみを持つ場合に使用され、自動並列化コンパイラが、コンパイル時にPGへのマクロタスクの割り当てを決める方式である。
自動並列化コンパイラは、プログラム全域に渡るキャッシュ最適化を行うことが可能である。自動並列化コンパイラは、ループ間などの並列性を解析した後、ループ間にデータ依存があることが分かると、依存があるループ間でのキャッシュのグローバル最適化を試みる(参考文献3(特許第4177681号公報)参照)。
(1)任意のサイズのローカルメモリ或いは分散共有メモリが与えられた時に、DMA(DTU)(参考文献4(特許第4476267号公報)参照)を用いアクセスされる前に、前記プロセッサに近接したローカル或いは分散共有メモリに事前ロードし、プログラム全域で再利用する。
(2)送付先のメモリが一杯の場合には、送付先プロセッサのDTUが、メモリからの掃き出し優先順位に従ってデータを共有メモリ等へ掃き出したことを同期フラグで知らされたら、自動的に空いたメモリにデータを転送する。
(3)将来再利用されるデータであるが、暫くの間使用されず、メモリの領域を開ける必要がある場合には、CPUによるタスク実行の裏側でDTUが当該データを集中共有メモリに待避し、使用時までに再ロードする。
といったローカルメモリ管理,データ転送技術へと進化している(参考文献5(英国特許第2478874号明細書)。
自動並列化コンパイラにおける並列化プログラムの生成は、自動並列化API(参考文献7(早稲田大学、「Optimally Scheduled Advanced Multiprocessor Application Program Interface」、2008年)参照)を用い、並列化C或いは並列化Fortranのような、source-to-sourceで並列化を行うことが可能である。
次に、組み込みシステム用の逐次プログラムの特徴について述べ、本実施形態の自動並列化コンパイラによる並列化手法について説明する。なお、組み込みシステムとは、例えば、車載装置であっても良いし、車載装置以外の電子装置であっても良い。また、逐次プログラムは、モデルベース設計により自動生成されたもの(一例として、MathWork社のMatlab(登録商標),Simulink(登録商標)にて自動生成されたもの)であっても良い。
自動並列化コンパイラ1は、例えば、DVD,CD−ROM,USBメモリ,メモリカード(登録商標)等の光ディスク,磁気ディスク,半導体製メモリ等として構成された記憶媒体18に記憶された状態で、ユーザに提供される(図1参照)。無論、ネットワークを経由してユーザに提供されても良い。
続いて、本実施形態の自動並列化コンパイラ1により生成された並列化プログラムにより動作する車載装置20の構成について説明する(図2参照)。無論、自動並列化コンパイラ1は、車載装置20に限らず、同様の構成を有する様々な電子装置を動作させる並列化プログラムを生成可能である。
続いて、本実施形態の自動並列化コンパイラ1により並列化プログラムを生成する処理の具体例について説明する。以下の説明において、処理a等といった記載がなされるが、これは、各種演算や代入や分岐処理や関数コール等からなる一連の処理の記述を意味する。
20:車載装置
21:マルチコアプロセッサ
Claims (10)
- シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した分割プログラムを生成するコンピュータが実行する並列化コンパイル方法であって、
前記逐次プログラムを構成するマクロタスクを、前記マルチコアプロセッサを構成する複数のコアに割り当てて前記分割プログラムを生成する第1手順と、
前記逐次プログラムに前記マクロタスクを追加又は前記逐次プログラムから前記マクロタスクを削除する第2手順と、
前記第1手順において前記複数のコアに割り当てられている前記マクロタスクの移動が起きないように、前記第2手順における前記マクロタスクの追加及び/又は削除に基づいて前記分割プログラムをコンパイルする第3手順と、を備えることを特徴とする並列化コンパイル方法。 - 前記第2手順において、前記マクロタスクを前記逐次プログラムに追加する場合に、
前記第3手順において、前記複数のコアに割り当てられている前記マクロタスクの移動が起きないようにすると共に、前記マクロタスクを追加した前記分割プログラムの処理長さに応じて前記複数のコアのいずれに割り当てるかを決定してコンパイルする、ことを特徴とする請求項1に記載の並列化コンパイル方法。 - 前記複数のコアの内、前記マクロタスクを追加した前記分割プログラムの処理長さが短くなる方の前記コアに前記マクロタスクを割り当ててコンパイルすることを特徴とする請求項2に記載の並列化コンパイル方法。
- 前記第2手順において、前記マクロタスクを前記逐次プログラムから削除する場合に、
前記第3手順において、前記マクロタスクを削除すると共に、この削除によっても前記複数のコアに割り当てられている前記マクロタスクの移動が起きないようにコンパイルすることを特徴とする請求項1に記載の並列化コンパイル方法。 - 前記第3手順において、前記マクロタスクを削除する際に、データ依存性の情報を保持することを特徴とする請求項4に記載の並列化コンパイル方法。
- シングルコアプロセッサで処理可能なように記述された逐次プログラムからマルチコアプロセッサ(21)で処理可能なように並列化した分割プログラムをコンピュータに生成させるための並列化コンパイラ(1)であって、
前記逐次プログラムを構成するマクロタスクを、前記マルチコアプロセッサを構成する複数のコアに割り当てて前記分割プログラムを生成する第1手順と、
前記逐次プログラムに前記マクロタスクを追加又は前記逐次プログラムから前記マクロタスクを削除する第2手順と、
前記第1手順において前記複数のコアに割り当てられている前記マクロタスクの移動が起きないように、前記第2手順における前記マクロタスクの追加及び/又は削除に基づいて前記分割プログラムをコンパイルする第3手順と、を前記コンピュータに実行可能にさせるように構成されていることを特徴とする並列化コンパイラ。 - 前記第2手順において、前記マクロタスクを前記逐次プログラムに追加する場合に、
前記第3手順において、前記複数のコアに割り当てられている前記マクロタスクの移動が起きないようにすると共に、前記マクロタスクを追加した前記分割プログラムの処理長さに応じて前記複数のコアのいずれに割り当てるかを決定してコンパイルする、ことを特徴とする請求項6に記載の並列化コンパイラ。 - 前記複数のコアの内、前記マクロタスクを追加した前記分割プログラムの処理長さが短くなる方の前記コアに前記マクロタスクを割り当ててコンパイルすることを特徴とする請求項7に記載の並列化コンパイラ。
- 前記第2手順において、前記マクロタスクを前記逐次プログラムから削除する場合に、
前記第3手順において、前記マクロタスクを削除すると共に、この削除によっても前記複数のコアに割り当てられている前記マクロタスクの移動が起きないようにコンパイルすることを特徴とする請求項6に記載の並列化コンパイラ。 - 前記第3手順において、前記マクロタスクを削除する際に、データ依存性の情報を保持することを特徴とする請求項9に記載の並列化コンパイラ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015072812A JP6427053B2 (ja) | 2015-03-31 | 2015-03-31 | 並列化コンパイル方法、及び並列化コンパイラ |
DE102016204960.7A DE102016204960A1 (de) | 2015-03-31 | 2016-03-24 | Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung |
US15/083,526 US9934012B2 (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 |
---|---|---|---|
JP2015072812A JP6427053B2 (ja) | 2015-03-31 | 2015-03-31 | 並列化コンパイル方法、及び並列化コンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016192152A JP2016192152A (ja) | 2016-11-10 |
JP6427053B2 true JP6427053B2 (ja) | 2018-11-21 |
Family
ID=56937620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015072812A Active JP6427053B2 (ja) | 2015-03-31 | 2015-03-31 | 並列化コンパイル方法、及び並列化コンパイラ |
Country Status (3)
Country | Link |
---|---|
US (1) | US9934012B2 (ja) |
JP (1) | JP6427053B2 (ja) |
DE (1) | DE102016204960A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6427054B2 (ja) * | 2015-03-31 | 2018-11-21 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
JP7139633B2 (ja) * | 2018-03-14 | 2022-09-21 | 株式会社デンソー | 並列化方法、並列化ツール、及びマルチコアマイコン |
CN109522720A (zh) * | 2018-11-29 | 2019-03-26 | 北京元心科技有限公司 | 动态度量的方法、装置、电子设备及计算机可读存储介质 |
JP7207519B2 (ja) * | 2019-03-19 | 2023-01-18 | 日本電気株式会社 | 情報処理装置、情報処理方法及びプログラム |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
JPH05265721A (ja) * | 1992-03-03 | 1993-10-15 | Nec Corp | 差分コンパイル方法および装置 |
JPH0721015A (ja) * | 1993-06-23 | 1995-01-24 | Nec Software Ltd | リンク処理方式 |
US20030105620A1 (en) * | 2001-01-29 | 2003-06-05 | Matt Bowen | System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architetures |
US20030033588A1 (en) * | 2001-01-29 | 2003-02-13 | John Alexander | System, method and article of manufacture for using a library map to create and maintain IP cores effectively |
US8914590B2 (en) * | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7159211B2 (en) * | 2002-08-29 | 2007-01-02 | Indian Institute Of Information Technology | Method for executing a sequential program in parallel with automatic fault tolerance |
JP4177681B2 (ja) | 2003-02-20 | 2008-11-05 | 学校法人早稲田大学 | コンパイル方法、コンパイラ、およびコンパイル装置 |
JP2004310651A (ja) | 2003-04-10 | 2004-11-04 | Fujitsu Ltd | コスト解析に基づいてループの自動並列化処理を行う情報処理装置 |
US7590977B2 (en) * | 2005-10-13 | 2009-09-15 | International Business Machines Corporation | Method and system for reducing memory reference overhead associated with threadprivate variables in parallel programs |
JP2007226739A (ja) * | 2006-02-27 | 2007-09-06 | Seiko Epson Corp | ソフトウェア開発装置およびプログラム |
JP4476267B2 (ja) | 2006-10-06 | 2010-06-09 | 株式会社日立製作所 | プロセッサ及びデータ転送ユニット |
JP4957729B2 (ja) * | 2007-01-25 | 2012-06-20 | 日本電気株式会社 | プログラム並列化方法、プログラム並列化装置及びプログラム |
JP5224498B2 (ja) | 2007-02-28 | 2013-07-03 | 学校法人早稲田大学 | メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US20150082314A1 (en) * | 2012-04-18 | 2015-03-19 | Nec Corporation | Task placement device, task placement method and computer program |
JP6018022B2 (ja) | 2013-06-14 | 2016-11-02 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
-
2015
- 2015-03-31 JP JP2015072812A patent/JP6427053B2/ja active Active
-
2016
- 2016-03-24 DE DE102016204960.7A patent/DE102016204960A1/de active Pending
- 2016-03-29 US US15/083,526 patent/US9934012B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160291948A1 (en) | 2016-10-06 |
US9934012B2 (en) | 2018-04-03 |
DE102016204960A1 (de) | 2016-10-06 |
JP2016192152A (ja) | 2016-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
JP6018022B2 (ja) | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 | |
JP6319880B2 (ja) | 並列性の抽出方法及びプログラムの作成方法 | |
KR101559090B1 (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
JP4784827B2 (ja) | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ | |
KR101702651B1 (ko) | 하드웨어 포인터를 이용한 simd 코어 내 분기 해법 | |
US20120054722A1 (en) | Trace generating unit, system, and program of the same | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
JP2009524866A (ja) | プログラムの並列実行のためのシステム及び方法 | |
JP6427053B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
JP6488739B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
JP2017228029A (ja) | 並列化方法、並列化ツール、車載装置 | |
EP2799986B1 (en) | Apparatus and method for translating multithread program code | |
JP6488738B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
JP3311381B2 (ja) | コンパイラにおける命令スケジューリング処理方法 | |
Chandraiah et al. | Code and data structure partitioning for parallel and flexible MPSoC specification using designer-controlled recoding | |
Krolik et al. | rNdN: Fast Query Compilation for NVIDIA GPUs | |
JP6600888B2 (ja) | 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法 | |
Ying | Scaling sequential code with hardware-software co-design for fine-grain speculative parallelization | |
Ghadge | Improving Code Overlay Performance by Pre-fetching in Scratch Pad Memory Systems |
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: 6427053 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 |