JP6488739B2 - 並列化コンパイル方法、及び、並列化コンパイラ - Google Patents
並列化コンパイル方法、及び、並列化コンパイラ Download PDFInfo
- Publication number
- JP6488739B2 JP6488739B2 JP2015021113A JP2015021113A JP6488739B2 JP 6488739 B2 JP6488739 B2 JP 6488739B2 JP 2015021113 A JP2015021113 A JP 2015021113A JP 2015021113 A JP2015021113 A JP 2015021113A JP 6488739 B2 JP6488739 B2 JP 6488739B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- static scheduling
- conditional
- parallel
- scheduling
- 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 144
- 230000003068 static effect Effects 0.000 claims description 121
- 238000012545 processing Methods 0.000 claims description 120
- 230000008569 process Effects 0.000 claims description 87
- 238000012795 verification Methods 0.000 claims description 17
- 238000000605 extraction Methods 0.000 claims description 7
- 238000010187 selection method Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 230000009467 reduction Effects 0.000 description 24
- 238000004458 analytical method Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000005111 flow chemistry technique Methods 0.000 description 7
- 230000004927 fusion Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 239000000470 constituent Substances 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004807 localization Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 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
- 239000010410 layer Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
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
-
- 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/456—Parallelism 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)マルチグレイン並列処理
(2)コンパイル時のスタティックスケジューリングコードの挿入
(3)実行時のダイナミックスケジューリングコードの生成
(4)階層型マクロデータフローの実現
(5)マクロタスクの分割/融合,Loop distribution/interchange等の並列性抽出
(6)データローカライズによるデータ転送効率の向上
(7)コンパイラによる電力削減
1−2.自動並列化コンパイラの内部処理
自動並列化コンパイラは、Front End(FE),Middle Path(MP),Back End(BE)の3つのステージを有している。各ステージは実行形態として独立しており、FE,MPから生成される中間言語によりコード授受が行われる。
また、BEは、MPが生成した並列化中間言語を読み込んで実際のマシンコードを生成する部位である。当該部位は、ターゲットとなっているマルチコアアーキテクチャのアセンブラコードを生成するBEの他、OpenMP用の並列化FortranコードやCコードを生成するBEを有している。さらには、当該部位は、後述する並列化APIによりメモリ配置,データ転送を含めて並列化したコードを生成するBE等、多様なアーキテクチャに対応したコードを出力するBEを有している。
自動並列化コンパイラは、逐次プログラムを、基本ブロック(BB),繰り返しブロック(RB),サブルーチンブロック(SB)の3種類の粗粒度タスク(マクロタスク(MT))に分割するマクロデータフロー処理を行う。
そこで、自動並列化コンパイラでは、従来の単階層マクロデータフロー処理手法を拡張し、MT内部に対してマクロデータフロー処理を階層的に利用する階層型マクロデータフロー処理を採用している。階層的マクロデータフロー処理では、MTの階層的な定義を行い、各階層のマクロタスクに対してマクロタスク間の並列性の解析を行う。
自動並列化コンパイラは、まず、生成された各階層のマクロタスクに対して、マクロタスク間の制御依存性とデータ依存性を解析する。この解析結果は、マクロフローグラフ(MFG)として表される。
MFGは、マクロタスク間の制御依存性とデータ依存性を表すが、並列性は表していない。並列性を抽出するためには、各マクロタスクに対し、制御依存性とデータ依存性の両方を考慮した最早実行可能条件解析を行う必要がある。最早実行可能条件とは、そのMTが最も早い時点で実行可能になる条件であり、次のような実行条件から求められる。
(2)MTjの条件分岐先が確定すれば、MTjの実行が終了しなくても、MTjに制御依存するMTiは実行できる。
(MTiが制御依存するMTjがMTiに分岐する)
AND
((MTiがデータ依存するMTk(0≦k≦|N|))が終了)OR(MTkが実行されないことが決定する))
マクロタスクの最早実行可能条件は、マクロタスクグラフ(MTG)で表される。
自動並列化コンパイラでは、従来のループ並列化に加え、ループ間,サブルーチン間における粗粒度タスク間の並列性を利用する粗粒度タスク並列処理や、ステートメント間の並列性を利用する近細粒度並列処理を効果的に組み合わせたマルチグレイン並列処理(参考文献1(本多弘樹, 岩田雅彦, 笠原博徳、「Fortranプログラム粗粒度タスク間の並列性検出手法」、電子情報通信学会論文誌、1990年)参照)を実現している。
自動並列化コンパイラは、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へのマクロタスクの割り当てを決める方式である。
1−6.データローカライゼーション
自動並列化コンパイラは、プログラム全域に渡るキャッシュ最適化を行うことが可能である。自動並列化コンパイラは、ループ間などの並列性を解析した後、ループ間にデータ依存があることが分かると、依存があるループ間でのキャッシュのグローバル最適化を試みる(参考文献3(特許第4177681号公報)参照)。
(1)任意のサイズのローカルメモリ或いは分散共有メモリが与えられた時に、DMA(DTU)(参考文献4(特許第4476267号公報)参照)を用いアクセスされる前に、前記プロセッサに近接したローカル或いは分散共有メモリに事前ロードし、プログラム全域で再利用する。
1−7.並列化プログラムの生成
自動並列化コンパイラにおける並列化プログラムの生成は、自動並列化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参照)。無論、ネットワークを経由してユーザに提供されても良い。
また、入力装置16は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU13に出力する。
また、RAM15は読み出し、書き込み可能な揮発性メモリであり、ROM14は読み出し専用の不揮発性メモリであり、HDD12は読み出し,書き込みが可能な不揮発性メモリである。ROM14,HDD12には、CPU13が読み出して実行するプログラム等が予め記憶されている。
次に、条件付コンパイルがなされる逐次プログラムに基づき並列化プログラムを生成する自動並列化処理について、図2のフローチャートを用いて説明する。なお、条件付コンパイルにより、該逐次プログラムからは、条件コンパイルスイッチにて参照される引数の値に対応する種別の組み込みシステムに搭載されるバイナリデータが生成される。また、本処理は、PC10にて動作している自動並列化コンパイラ1がユーザからの指示に応じて開始する。
次に、逐次プログラムからMTGを生成するソフト構造解析処理について、図3のフローチャートを用いて説明する。本処理は、自動並列化処理にて実行される。
次に、本実施形態の自動並列化コンパイラ1により生成された並列化プログラムにより動作する車載装置20の構成について説明する(図4参照)。無論、自動並列化コンパイラ1は、車載装置20に限らず、同様の構成を有する様々な電子装置を動作させる並列化プログラムを生成可能である。
マルチコアプロセッサ21は、ROM21aと、RAM21bと、複数のPE21c,21d…等を有している。
また、通信部22は、車内LAN等を介して接続された他のECUと通信を行う部位である。
また、入出力ポート24は、制御対象を制御するための各種信号の送受信を行う部位である。
次に、本実施形態の自動並列化コンパイラ1により並列化プログラムを生成する処理の具体例について説明する。以下の説明において、処理A等といった記載がなされるが、これは、各種演算や代入や分岐処理や関数コール等からなる一連の処理の記述を意味する。
具体例1では、2つの種別(A仕様とB仕様)の組み込みシステムに対応する条件付コンパイルが行われる逐次プログラム300に基づき比較プログラムが生成され、各比較プログラムの性能が検証される(図5参照)。
また、S110〜S115において、自動並列化コンパイラ1は、逐次プログラム300に基づき、A仕様に対応するスタティックスケジューリングAと、B仕様に対応するスタティックスケジューリングBを行う。
割当情報310,311における“処理A”,“処理B”,“処理C1”,“処理C2”は、逐次プログラムにおける各処理に対応するマクロタスクを示している。各スタティックスケジューリングでは、一例として各処理の処理時間が処理負荷とみなされる。また、スタティックスケジューリングAでは、“処理C2”の処理負荷が、スタティックスケジューリングBでは、“処理C1”の処理負荷が無いものとみなされる。
2.具体例2について
具体例2では、2つの種別(A仕様とB仕様)の組み込みシステムに対応する条件付コンパイルが行われる逐次プログラム400に基づき比較プログラムが生成され、各比較プログラムの性能が検証される(図8参照)。
無論、1セットの条件コンパイルスイッチ401により引数の値に応じてコンパイル対象とするか否かが一括して選択される2つの処理である“処理D1,D2”を、1の条件付ブロックとして特定しても良い。また、2セットの条件コンパイルスイッチ402,403により引数の値に応じてコンパイル対象とするか否かが一括して選択される2つの処理である“処理F,G”を、1の条件付ブロックとして特定しても良い。
そして、スタティックスケジューリングAの最大並列実行時間は200μsとなり、スタティックスケジューリングBの最大並列実行時間は190μsとなる。このため、並列実行時間に基づき最適なスタティックスケジューリングを選択するとした場合、スタティックスケジューリングBが選択される。
3.具体例3について
具体例3では、3つの種別(A〜C仕様)の組み込みシステムに対応する条件付コンパイルが行われる逐次プログラムに基づき比較プログラムが生成され、各比較プログラムの性能が検証される。以下では、性能の検証方法について詳しく説明する。
比較プログラムAA〜ACは、A仕様に対応するスタティックスケジューリングAにより生成されたものである。比較プログラムAAの最終種別はA仕様、比較プログラムABの最終種別はB仕様、比較プログラムACの最終種別はC仕様となっている。
また、例えば、最終種別がA仕様である比較プログラムの並列実行時間<65μs、且つ、最終種別がB仕様である比較プログラムとC仕様である比較プログラムの低減率の最小値が相対的に大きい、という選択条件2が設定されていたとする。
具体例4では、異なる複数の引数が用いられる条件コンパイルスイッチ501〜503を用いて3つの種別(A〜C仕様)の組み込みシステムに対応する条件付コンパイルが行われる逐次プログラムに基づき、比較プログラムが生成される。以下では、このような逐次プログラムの条件付記述500をマクロタスクに分割する方法について詳しく説明する(図13参照)。
また、S105(ソフト構造解析処理)では、自動並列化コンパイラ1は、条件付ブロックとして特定された“処理A〜E”の各々をマクロタスクとし、MTGを生成する。“処理A〜E”の各々に対応するマクロタスクを、それぞれ、“マクロタスクA〜E”とする。
なお、S100にて、逐次プログラムの条件付記述500に記載された“処理A〜E”のうち、“処理A〜C”と“処理D,E”を別々の条件付ブロックとしても良い。
本実施形態の自動並列化コンパイラ1は、条件付記述を全て含んだ状態で逐次プログラムから並列化プログラムを生成する。そして、並列化プログラムから、該並列化プログラムに対応する種別ではコンパイルの対象外となる部分を除去し、該種別の組み込みシステム(マルチコアプロセッサを搭載したシステム)を動作させるバイナリコードを生成する。
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。
(2)本実施形態の自動並列化コンパイラ1は、ソフト構造解析処理のS200にて逐次プログラムのインライン展開を行うと共に、S205にてローカル変数のリネームを行うが、これらの処理の双方または一方を行わない構成としても良い。このような場合であっても、逐次プログラムの構造によっては、同様の効果が得られる。
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
また、PGがプロセッサユニットの一例に相当する。
また、条件コンパイルスイッチの引数の値が、入力情報の一例に相当する。
Claims (12)
- シングルプロセッサシステムにより実行されるプログラムであって、条件付コンパイルにより入力情報に応じてコンパイルするか否かが選択される条件付記述が含まれている逐次プログラムに記述された処理を、前記入力情報に関わらず複数のマクロタスクに分割する分割手順(S210)と、
前記マクロタスク間のデータ依存性に基づき、マルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手順(S220)と、
それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てる処理であって、並列実行可能な前記マクロタスクのうちの全部又は一部を、異なる前記プロセッサユニットに割り当て、前記マルチプロセッサシステムを動作させるための並列化プログラムを生成するスタティックスケジューリングを行うスケジューリング手順(S110)と、
を有することを特徴とする並列化コンパイル方法であって、
前記分割手順では、1の前記条件付記述により記述された処理は、1又は複数の前記マクロタスクとして、前記逐次プログラムに記述された他の処理から分割され、
前記スケジューリング手順において、予め定められた前記入力情報に対応して前記スタティックスケジューリングを行い、前記スタティックスケジューリングでは、対応する前記入力情報ではコンパイルの対象とならない前記条件付記述に対応する前記マクロタスクの処理負荷が無いものとみなすこと、
を特徴とする並列化コンパイル方法。 - 請求項1に記載の並列化コンパイル方法において、
前記分割手順では、1の前記条件付記述により記述された処理は、1の前記マクロタスクとして、前記逐次プログラムに記述された他の処理から分割されること、
を特徴とする並列化コンパイル方法。 - 請求項1又は請求項2に記載の並列化コンパイル方法において、
前記入力情報に基づきコンパイルの対象外となる前記条件付記述を特定し、前記スタティックスケジューリングにより生成された前記並列化プログラムにおける特定した前記条件付記述を除いた部分から、バイナリデータを生成する生成手順(S130,S135)をさらに有すること、
を特徴とする並列化コンパイル方法。 - シングルプロセッサシステムにより実行されるプログラムであって、条件付コンパイルにより入力情報に応じてコンパイルするか否かが選択される条件付記述が含まれている逐次プログラムに記述された処理を、前記入力情報に関わらず複数のマクロタスクに分割する分割手順(S210)と、
前記マクロタスク間のデータ依存性に基づき、マルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手順(S220)と、
それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てる処理であって、並列実行可能な前記マクロタスクのうちの全部又は一部を、異なる前記プロセッサユニットに割り当て、前記マルチプロセッサシステムにより実行される並列化プログラムを生成するスタティックスケジューリングを行うスケジューリング手順(S110)と、
を有することを特徴とする並列化コンパイル方法であって、
前記スケジューリング手順において、前記マクロタスクの処理負荷に基づき前記スタティックスケジューリングを行うと共に、予め定められた前記入力情報に対応して前記スタティックスケジューリングを行い、前記スタティックスケジューリングでは、対応する前記入力情報ではコンパイルの対象とならない前記条件付記述に対応する前記マクロタスクの処理負荷が無いものとみなすこと、
を特徴とする並列化コンパイル方法。 - 請求項1から請求項4のうちのいずれか1項に記載の並列化コンパイル方法において、
前記スケジューリング手順において、予め定められた2種類以上の前記入力情報の各々に対応して前記スタティックスケジューリングを行い、各種類の前記入力情報に対応する前記並列化プログラムを生成し、
予め定められた前記入力情報に対応付けられており、前記スタティックスケジューリングにおいて生成されたそれぞれの前記並列化プログラムから、該入力情報によりコンパイルしないことが選択された前記条件付記述を除去したものを、比較プログラムとし、
前記並列化コンパイル方法は、
各々の前記スタティックスケジューリングについて、該スタティックスケジューリングにより生成された前記並列化プログラムから生じる、各種類の前記入力情報に対応付けられている前記比較プログラムの性能を検証する検証手順(S120)と、
前記検証手順による検証結果に基づき、いずれかの前記スタティックスケジューリングを選択する選択手順(S120)と、
をさらに有することを特徴とする並列化コンパイル方法。 - 請求項5に記載の並列化コンパイル方法において、
前記検証手順において、それぞれの前記比較プログラムに関して、各々の前記プロセッサユニットについて、前記割り当てがなされている前記マクロタスクの処理負荷の総和を算出し、これらの総和のうちの最大値を、該比較プログラムの最大処理負荷とし、
前記選択手順において、前記最大処理負荷に基づき、前記スタティックスケジューリングを選択すること、
を特徴とする並列化コンパイル方法。 - 請求項5に記載の並列化コンパイル方法において、
前記検証手順において、それぞれの前記比較プログラムに関して、該比較プログラムに従い動作する前記マルチプロセッサシステムと、該比較プログラムに対応する前記入力情報によりコンパイルしないことが選択された前記条件付記述を除いた前記逐次プログラムに従い動作する前記シングルプロセッサシステムとの性能の差を推定し、
前記選択手順において、前記性能の差の推定結果に基づき、前記スタティックスケジューリングを選択すること、
を特徴とする並列化コンパイル方法。 - 請求項5に記載の並列化コンパイル方法において、
前記検証手順において、それぞれの前記比較プログラムに関して、各々の前記プロセッサユニットについて、前記割り当てがなされている前記マクロタスクの処理負荷の総和を算出し、該総和の最大値を、該比較プログラムの最大処理負荷とすると共に、該比較プログラムに従い動作する前記マルチプロセッサシステムと、該比較プログラムに対応する前記入力情報によりコンパイルしないことが選択された前記条件付記述を除いた前記逐次プログラムに従い動作する前記シングルプロセッサシステムとの性能の差を推定し、
前記選択手順において、前記最大処理負荷と前記性能の差の推定結果とに基づき、前記スタティックスケジューリングを選択すること、
を特徴とする並列化コンパイル方法。 - 請求項5から請求項8のうちのいずれか1項に記載の並列化コンパイル方法において、
前記選択手順において、前記スタティックスケジューリングを選択することができなかった場合には、その旨を報知する報知手順(S145)をさらに有すること、
を特徴とする並列化コンパイル方法。 - シングルプロセッサシステムにより実行されるプログラムであって、条件付コンパイルにより入力情報に応じてコンパイルするか否かが選択される条件付記述が含まれている逐次プログラムに記述された処理を、前記入力情報に関わらず複数のマクロタスクに分割する分割手段(S210)と、
前記マクロタスク間のデータ依存性に基づき、マルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手段(S220)と、
それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てる処理であって、並列実行可能な前記マクロタスクのうちの全部又は一部を、異なる前記プロセッサユニットに割り当て、前記マルチプロセッサシステムを動作させるための並列化プログラムを生成するスタティックスケジューリングを行うスケジューリング手段(S110)として、
コンピュータを動作させることを特徴とする並列化コンパイラ(1)であって、
前記分割手段は、1の前記条件付記述により記述された処理は、1又は複数の前記マクロタスクとして、前記逐次プログラムに記述された他の処理から分割し、
前記スケジューリング手段は、予め定められた前記入力情報に対応して前記スタティックスケジューリングを行い、前記スタティックスケジューリングでは、対応する前記入力情報ではコンパイルの対象とならない前記条件付記述に対応する前記マクロタスクの処理負荷が無いものとみなすこと、
を特徴とする並列化コンパイラ。 - 請求項10に記載の並列化コンパイラにおいて、
前記入力情報に基づきコンパイルの対象外となる前記条件付記述を特定し、前記スタティックスケジューリングにより生成された前記並列化プログラムにおける特定した前記条件付記述を除いた部分から、バイナリデータを生成する生成手段(S130,S135)をさらに有すること、
を特徴とする並列化コンパイラ。 - シングルプロセッサシステムにより実行されるプログラムであって、条件付コンパイルにより入力情報に応じてコンパイルするか否かが選択される条件付記述が含まれている逐次プログラムに記述された処理を、前記入力情報に関わらず複数のマクロタスクに分割する分割手段(S210)と、
前記マクロタスク間のデータ依存性に基づき、マルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手段(S220)と、
それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てる処理であって、並列実行可能な前記マクロタスクのうちの全部又は一部を、異なる前記プロセッサユニットに割り当て、前記マルチプロセッサシステムにより実行される並列化プログラムを生成するスタティックスケジューリングを行うスケジューリング手段(S110)として、
コンピュータを動作させることを特徴とする並列化コンパイラ(1)であって、
前記スケジューリング手段は、前記マクロタスクの処理負荷に基づき前記スタティックスケジューリングを行うと共に、予め定められた前記入力情報に対応して前記スタティックスケジューリングを行い、前記スタティックスケジューリングでは、対応する前記入力情報ではコンパイルの対象とならない前記条件付記述に対応する前記マクロタスクの処理負荷が無いものとみなすこと、
を特徴とする並列化コンパイラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015021113A JP6488739B2 (ja) | 2015-02-05 | 2015-02-05 | 並列化コンパイル方法、及び、並列化コンパイラ |
DE102016201612.1A DE102016201612A1 (de) | 2015-02-05 | 2016-02-03 | Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015021113A JP6488739B2 (ja) | 2015-02-05 | 2015-02-05 | 並列化コンパイル方法、及び、並列化コンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016143378A JP2016143378A (ja) | 2016-08-08 |
JP6488739B2 true JP6488739B2 (ja) | 2019-03-27 |
Family
ID=56498743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015021113A Active JP6488739B2 (ja) | 2015-02-05 | 2015-02-05 | 並列化コンパイル方法、及び、並列化コンパイラ |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6488739B2 (ja) |
DE (1) | DE102016201612A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614696A (zh) * | 2016-12-08 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种应用制作的方法、静态库生成的方法及装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3343351B1 (en) * | 2016-12-28 | 2023-04-26 | Waseda University | Parallel program generating method and parallelization compiling apparatus |
KR102329368B1 (ko) * | 2019-02-26 | 2021-11-19 | 미쓰비시덴키 가부시키가이샤 | 정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램 |
JP7333889B2 (ja) * | 2021-05-24 | 2023-08-25 | 三菱電機株式会社 | ソフトウェア設計支援システム、ソフトウェア設計支援方法およびソフトウェア設計支援プログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02245934A (ja) * | 1989-03-20 | 1990-10-01 | Fujitsu Ltd | データ処理装置 |
JP3614372B2 (ja) * | 2001-02-26 | 2005-01-26 | 三菱電機株式会社 | コンパイル方法 |
JP4728563B2 (ja) * | 2003-01-27 | 2011-07-20 | 株式会社デンソー | コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム |
JP4177681B2 (ja) | 2003-02-20 | 2008-11-05 | 学校法人早稲田大学 | コンパイル方法、コンパイラ、およびコンパイル装置 |
JP5119590B2 (ja) * | 2005-11-10 | 2013-01-16 | 富士通セミコンダクター株式会社 | マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 |
JP4476267B2 (ja) | 2006-10-06 | 2010-06-09 | 株式会社日立製作所 | プロセッサ及びデータ転送ユニット |
JP5224498B2 (ja) | 2007-02-28 | 2013-07-03 | 学校法人早稲田大学 | メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム |
JP5381302B2 (ja) * | 2009-05-07 | 2014-01-08 | 三菱電機株式会社 | 並列化スケジューリング装置 |
JP6018022B2 (ja) * | 2013-06-14 | 2016-11-02 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
-
2015
- 2015-02-05 JP JP2015021113A patent/JP6488739B2/ja active Active
-
2016
- 2016-02-03 DE DE102016201612.1A patent/DE102016201612A1/de active Granted
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614696A (zh) * | 2016-12-08 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种应用制作的方法、静态库生成的方法及装置 |
CN108614696B (zh) * | 2016-12-08 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 一种应用制作的方法、静态库生成的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2016143378A (ja) | 2016-08-08 |
DE102016201612A1 (de) | 2016-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6018022B2 (ja) | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
KR100878917B1 (ko) | 헤테로지니어스 멀티프로세서용 글로벌 컴파일러 | |
JP6319880B2 (ja) | 並列性の抽出方法及びプログラムの作成方法 | |
Zhong et al. | Uncovering hidden loop level parallelism in sequential applications | |
US8683468B2 (en) | Automatic kernel migration for heterogeneous cores | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
US8561046B2 (en) | Pipelined parallelization with localized self-helper threading | |
US8528001B2 (en) | Controlling and dynamically varying automatic parallelization | |
Tian et al. | Speculative parallelization using state separation and multiple value prediction | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
KR20120068572A (ko) | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 | |
US9195444B2 (en) | Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction | |
JP6488739B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
EP3238053A1 (en) | Technologies for low-level composable high performance computing libraries | |
JP6427053B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
Mehrara et al. | Multicore compilation strategies and challenges | |
JP6488738B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
Sura et al. | Using multiple threads to accelerate single thread performance | |
Ying | Scaling sequential code with hardware-software co-design for fine-grain speculative parallelization | |
US20210157638A1 (en) | Method and apparatus for functional unit assignment | |
KR20130028505A (ko) | 재구성가능 프로세서, 재구성가능 프로세서의 코드 변환 장치 및 방법 | |
JP2001249817A (ja) | 命令スケジューリング時の変形処理の適用方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170605 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180223 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180313 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180424 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20181002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181206 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20181214 |
|
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: 20190129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190211 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6488739 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
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 |