JP5278336B2 - プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム - Google Patents
プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム Download PDFInfo
- Publication number
- JP5278336B2 JP5278336B2 JP2009553440A JP2009553440A JP5278336B2 JP 5278336 B2 JP5278336 B2 JP 5278336B2 JP 2009553440 A JP2009553440 A JP 2009553440A JP 2009553440 A JP2009553440 A JP 2009553440A JP 5278336 B2 JP5278336 B2 JP 5278336B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- time
- thread
- schedule
- program
- 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 65
- 238000004458 analytical method Methods 0.000 claims description 125
- 238000012545 processing Methods 0.000 claims description 62
- 230000001419 dependent effect Effects 0.000 claims description 52
- 238000005206 flow analysis Methods 0.000 claims description 49
- 238000005259 measurement Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect 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/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
101 逐次処理プログラム
101M 記憶部
102 記憶装置
103 並列化プログラム
103M 記憶部
104 記憶装置
107、107A、107B 処理装置
108、108A スレッド開始・終了時刻制限スケジュール部
110 制御フロー解析部
140 スケジュール領域形成部
150 レジスタデータフロー解析部
170 命令間メモリデータフロー解析部
180 命令の実行開始・終了時刻制限選択部
190 スケジュール候補命令選択部
200 命令配置部
210 フォーク命令挿入部
220 スレッド開始時刻制限解析部
230 スレッド終了時刻制限解析部
240 占有状況解析部
250 依存遅延解析部
260 最良スケジュール決定部
270 並列実行時間測定部
280 レジスタ割り当て部
290 プログラム出力部
301 記憶装置
302 記憶装置
303 記憶装置
304 記憶装置
305 記憶装置
306 記憶装置
310 プロファイルデータ
310M 記憶部
320 逐次処理中間プログラム
320M 記憶部
330 命令間の依存情報
330M 記憶部
340 命令の実行開始・終了時刻の制限
340M 記憶部
350 並列化中間プログラム
350M 記憶部
360 命令の実行開始・終了時刻の制限集合
360M 記憶部
第1の実施の形態に係るプログラム並列化装置は、逐次処理中間プログラムを入力し、並列化中間プログラムを出力する。このプログラム並列化装置は、命令実行開始・終了時刻制限選択部、スレッド開始時刻制限解析部、スレッド終了時刻制限解析部、占有状況解析部、依存遅延解析部、スケジュール候補命令選択部、及び命令配置部を有する。
第2の実施の形態に係るプログラム並列化装置は、逐次処理中間プログラムを入力し、並列化中間プログラムを出力する。このプログラム並列化装置は、命令実行開始・終了時刻制限選択部、スレッド開始時刻制限解析部、スレッド終了時刻制限解析部、占有状況解析部、依存遅延解析部、スケジュール候補命令選択部、並列実行時間測定部、及び最良スケジュール決定部を有する。
第3の実施の形態に係るプログラム並列化装置は、逐次処理プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化プログラムを出力する。このプログラム並列化装置は、制御フロー解析部、スケジュール領域形成部、レジスタデータフロー解析部、命令間メモリデータフロー解析部、命令実行開始・終了時刻制限選択部、スレッド開始時刻制限解析部、スレッド終了時刻制限解析部、占有状況解析部、依存遅延解析部、命令配置部、並列実行時間測定部、最良スケジュール決定部、レジスタ割り当て部、及びプログラム出力部を有する。
第4の実施の形態は、スケジュール候補命令選択部が、スケジュール候補の命令を先頭とする依存命令列に属する命令のそれぞれについて、実行されるスレッド番号と時刻を解析する。
第5の実施の形態は、命令実行開始・終了時刻制限選択部が、全てのスレッドに対して開始時刻と終了時刻の差が一定で、開始時刻がスレッド番号とともに一定の増分で増えるような実行開始・終了時刻の制限のみを制限の集合とする。
第6の実施の形態は、逐次処理中間プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化中間プログラムを出力する。このプログラム並列化方法は、次の各ステップを有する。
第7の実施の形態に係るプログラム並列化方法は、逐次処理中間プログラムを入力し、並列化中間プログラムを出力する。このプログラム並列化方法は、次の各ステップを有する。
第8の実施の形態に係るプログラム並列化方法は、逐次処理プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化プログラムを出力する。このプログラム並列化方法は、次の各ステップを有する。
第9の実施の形態に係るプログラム並列化方法は、次の各ステップを含む。
第10の実施の形態では、ステップb)は、次の各ステップを含む。
第11の実施の形態では、ステップb−9)は、次の各ステップを含む。
第12の実施の形態は、次にスケジュールする命令を選択するステップにおいて、スケジュール候補の命令を先頭とする最長依存命令列に属する命令のそれぞれについて、実行されるスレッド番号と時刻を解析する。
第13の実施の形態は、各スレッドの命令実行開始・終了時刻の制限の集合から制限を選ぶステップにおいて、全てのスレッドに対して開始時刻と終了時刻の差が一定で、開始時刻がスレッド番号とともに一定の増分で増えるような実行開始・終了時刻の制限のみを制限の集合とする。
第14の実施の形態に係るプログラム並列化プログラムは、逐次処理中間プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化中間プログラムを出力するプログラム並列化装置を構成するコンピュータを、命令実行開始・終了時刻制限選択手段、スレッド開始時刻制限解析手段、スレッド終了時刻制限解析手段、占有状況解析手段、スケジュール候補命令選択手段、及び命令配置手段として機能させる。
第15の実施の形態に係るプログラム並列化プログラムは、逐次処理中間プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化中間プログラムを出力するプログラム並列化装置を構成するコンピュータを、命令実行開始・終了時刻制限選択手段、スレッド開始時刻制限解析手段、スレッド終了時刻制限解析手段、占有状況解析手段、依存遅延解析手段、スケジュール候補命令選択手段、命令配置手段、並列実行時間測定手段、及び最良スケジュール決定手段として機能させる。
第16の実施の形態に係るプログラム並列化プログラムは、逐次処理プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化プログラムを出力するプログラム並列化装置を構成するコンピュータを、制御フロー解析手段、スケジュール領域形成手段、命令間メモリデータフロー解析手段、命令実行開始・終了時刻制限選択手段、スレッド開始時刻制限解析手段、スレッド終了時刻制限解析手段、占有状況解析手段、依存遅延解析手段、スケジュール候補命令選択手段、命令配置手段、並列実行時間測定手段、最良スケジュール決定手段、レジスタ割り当て手段、及びプログラム出力手段として機能させる。
第17の実施の形態は、スケジュール候補命令選択手段が、スケジュール候補の命令を先頭とする最長依存命令列に属する命令のそれぞれについて、実行されるスレッド番号と時刻を解析する。
第18の実施の形態は、命令実行開始・終了時刻制限選択手段が、全てのスレッドに対して開始時刻と終了時刻の差が一定で、開始時刻がスレッド番号とともに一定の増分で増えるような実行開始・終了時刻の制限のみを制限の集合とする。
図14を参照して、第1の実施例に係るプログラム並列化装置100におけるスレッド開始・終了時刻制限スケジュール部108の処理の具体例を説明する。
以上、本発明の実施の形態及び実施例について説明したが、本発明は以上の実施の形態及び実施例にのみ限定されず、その他各種の付加変更が可能である。例えば、前記各実施例において、プロファイルデータ310を省略した構成にすることも可能である。
Claims (18)
- 逐次処理中間プログラムを入力し、並列化中間プログラムを出力するプログラム並列化装置において、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド開始時刻制限解析部と、
各スレッドの命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド終了時刻制限解析部と、
すでにスケジュールされた命令に占められていない時刻を解析する占有状況解析部と、
命令間の依存による遅延に基づいて、命令を割当て可能な時刻を解析する依存遅延解析部と、
次にスケジュールする命令を選択するスケジュール候補命令選択部と、
命令に対し実行するプロセッサと時刻を割り当てる命令配置部と、
を有することを特徴とするプログラム並列化装置。 - 逐次処理中間プログラムを入力し、並列化中間プログラムを出力するプログラム並列化装置において、
各スレッドの命令実行開始・終了時刻の制限の集合から制限を選ぶ命令実行開始・終了時刻制限選択部と、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド開始時刻制限解析部と、
各スレッドの命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド終了時刻制限解析部と、
すでにスケジュールされた命令に占められていない時刻を解析する占有状況解析部と、
命令間の依存による遅延に基づいて、命令を割当て可能な時刻を解析する依存遅延解析部と、
次にスケジュールする命令を選択するスケジュール候補命令選択部と、
命令に対し実行するプロセッサと時刻を割り当てる命令配置部と、
スケジュール結果に対し、並列実行時間を測定あるいは推定する並列実行時間測定部と、
前記制限を変えてスケジュールを繰り返し、最良のスケジュールを決定する最良スケジュール決定部と、
を有することを特徴とするプログラム並列化装置。 - 逐次処理プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化プログラムを出力するプログラム並列化装置において、
入力した前記逐次処理プログラムの制御フローを解析する制御フロー解析部と、
前記制御フロー解析部による制御フローの解析結果を参照して、スケジュール対象となる領域を決定するスケジュール領域形成部と、
前記スケジュール領域形成部によるスケジュール領域の決定を参照して、レジスタのデータフローを解析するレジスタデータフロー解析部と、
あるアドレスに読み書きを行う命令と、前記アドレスから読み書きを行う命令の間の依存を解析する命令間メモリデータフロー解析部と、
各スレッドの命令実行開始時刻の間隔と、実行命令数の制限の集合から制限を選ぶ命令実行開始・終了時刻制限選択部と、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド開始時刻制限解析部と、
各スレッドの命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド終了時刻制限解析部と、
すでにスケジュールされた命令に占められていない時刻を解析する占有状況解析部と、
命令間の依存による遅延に基づいて、命令を割当て可能な時刻を解析する依存遅延解析部と、
次にスケジュールする命令を選択するスケジュール候補命令選択部と、
命令に対し実行するプロセッサと時刻を割り当てる命令配置部と、
スケジュール結果に対し、並列実行時間を測定あるいは推定する並列実行時間測定部と、
前記制限を変えてスケジュールを繰り返し、最良のスケジュールを決定する最良スケジュール決定部と、
前記最良のスケジュール決定結果を参照して、レジスタ割り当てを行うレジスタ割り当て部と、
前記レジスタ割り当て結果を参照して、並列化プログラムを生成し出力するプログラム出力部と、
を有することを特徴とするプログラム並列化装置。 - 前記スケジュール候補命令選択部が、スケジュール候補の命令を先頭とする依存命令列に属する命令のそれぞれについて、実行されるスレッド番号と時刻を解析することを特徴とする請求項1から3のいずれか1項に記載のプログラム並列化装置。
- 前記命令実行開始・終了時刻制限選択部が、全てのスレッドに対して開始時刻と終了時刻の差が一定で、開始時刻がスレッド番号とともに一定の増分で増えるような実行開始・終了時刻の制限のみを制限の集合とすることを特徴とする請求項2または3に記載のプログラム並列化装置。
- 逐次処理中間プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化中間プログラムを出力するプログラム並列化方法において、
各スレッドの命令実行開始・終了時刻の制限の集合から制限を選ぶステップと、
ある命令について、各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するステップと、
ある命令について、各スレッドの命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻を解析するステップと、
プロセッサごとに、すでにスケジュールされた命令に占められていない時刻を解析するステップと、
命令間の依存による遅延を解析するステップと、
次にスケジュールする命令を選択するステップと、
命令に対し実行するプロセッサと時刻を割り当てるステップと、
を含むことを特徴とするプログラム並列化方法。 - 逐次処理中間プログラムを入力し、並列化中間プログラムを出力するプログラム並列化方法において、
各スレッドの命令実行開始時刻の間隔と、実行命令数の制限の集合から制限を選ぶステップと、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するステップと、
各スレッドの命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻を解析するステップと、
プロセッサごとに、すでにスケジュールされた命令に占められていない時刻を解析するステップと、
命令間の依存による遅延を解析するステップと、
次にスケジュールする命令を選択するステップと、
命令に対し実行するプロセッサと時刻を割り当てるステップと、
スケジュール結果に対し、並列実行時間を測定あるいは推定するステップと、
前記制限を変えてスケジュールを繰り返し、最良のスケジュールを決定するステップと、
を含むことを特徴とするプログラム並列化方法。 - 逐次処理プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化プログラムを出力するプログラム並列化方法において、
入力した前記逐次処理プログラムの制御フローを解析するステップと、
前記制御フロー解析部による制御フローの解析結果を参照して、スケジュール対象となる領域を決定するステップと、
前記スケジュール領域形成部によるスケジュール領域の決定を参照して、レジスタのデータフローを解析するステップと、
あるアドレスに読み書きを行う命令と、前記アドレスから読み書きを行う命令の間の依存を解析するステップと、
各スレッドの命令実行開始・終了時刻の制限の集合から制限を選ぶステップと、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するステップと、
各スレッドの命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻を解析するステップと、
プロセッサごとに、すでにスケジュールされた命令に占められていない時刻を解析するステップと、
命令間の依存による遅延を解析するステップと、
次にスケジュールする命令を選択するステップと、
命令に対し実行するプロセッサと時刻を割り当てるステップと、
スケジュール結果に対し、並列実行時間を測定あるいは推定するステップと、
前記制限を変えてスケジュールを繰り返し、最良のスケジュールを決定するステップと、
前記最良のスケジュール決定結果を参照して、レジスタ割り当てを行うステップと、
前記レジスタ割り当て結果を参照して、並列化プログラムを生成し出力するステップと、
を含むことを特徴とするプログラム並列化方法。 - a)命令実行開始・終了時刻制限選択部が、各スレッドの命令の実行開始・終了時刻の制限の集合から、未選択のものを選び、SHとするステップと、
b)スレッド開始時刻制限解析部とスレッド終了時刻制限解析部と占有状況解析部と依存遅延解析部とスケジュール候補命令選択部と命令配置部とが、前記制限SHに従って命令スケジュールを行い、スケジュール結果をSCとするステップと、
c)並列実行時間測定部が、前記スケジュール結果SCの並列実行時間を計測あるいは推定するステップと、
d)最良スケジュール決定部が、記憶していた最短並列実行時間より短ければ前記スケジュール結果SCを最短スケジュールとして記憶するステップと、
e)前記最良スケジュール決定部が、全ての制限を選択したか判定するステップと、
f)前記最良スケジュール決定部が、最短スケジュールを最終的なスケジュールとして出力するステップと、
を含むことを特徴とする請求項6から8のいずれか1項に記載のプログラム並列化方法。 - 前記ステップb)は、
b−1)前記命令配置部が、各命令IについてのHT(I)を計算し、また、その値を与える命令を記憶するステップと、
b−2)前記命令配置部が、依存している命令がない命令を集合RSに登録するステップと、
b−3)前記命令配置部が、前記集合RSの全命令を未選択とするステップと、
b−4)前記スケジュール候補命令選択部が、前記集合RSに属する命令のうち、未選択のものを命令RIとするステップと、
b−5)前記スケジュール候補命令選択部が、前記命令RIが依存している命令のうち、すでにスケジュールされたもののうち、最もスレッド番号が大きいもののスレッド番号をLFとし、前記スレッド番号LFより大きくかつ現在命令が割り当てられていない最も番号の小さいスレッド番号をRMとし、スレッド番号TNを前記LFに設定するステップと、
b−6)前記スレッド開始時刻制限解析部が、前記スレッド番号TNのスレッドについて、各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻の最低値を解析し、その時刻をER1とするステップと、
b−7)前記占有状況解析部が、前記スレッド番号TNのスレッドについて、すでにスケジュールされた命令が占められていない時刻を解析し、その時刻の集合をER2とするステップと、
b−8)前記依存遅延解析部が、前記命令RIが依存している命令のうち、すでにスケジュールされたもののうち、前記スレッド番号TNのスレッドにデータを届けるのが最も遅いものについて、その到着時刻をER3とするステップと、
b−9)前記スレッド終了時刻制限解析部が、前記スレッド番号TNのスレッドについて、命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻の最大値を解析し、その値をER4とするステップと、
b−10)前記スケジュール候補命令選択部が、前記集合ER2の要素のうち、前記時刻ER1以上かつ前記時刻ER4以下かつ前記時刻ER3以上のもののうち、最小のものは存在するか判定するステップと、
b−11)前記スケジュール候補命令選択部が、スレッド番号TNを1進めるステップと、
b−12)前記スケジュール候補命令選択部が、存在する場合はその時刻をER5とするステップと、
b−13)前記スケジュール候補命令選択部が、前記スレッド番号TN、前記時刻ER5に前記命令RIを仮に割り当てたと仮定して、各スレッドの実行開始・終了時刻の制限に基づいて、前記命令RIを先頭とする最長依存命令列の末尾の命令TIの実行時刻を推定するステップと、
b−14)前記スケジュール候補命令選択部が、前記スレッド番号TNに渡る、前記命令TIの実行が最も早い時刻となる前記命令RIのスレッド番号と時刻と、推定された前記命令TIの予測時刻を前記命令RIに記憶するステップと、
b−15)前記スケジュール候補命令選択部が、前記スレッド番号TNがRMに達したか判定するステップと、
b−16)前記スケジュール候補命令選択部が、前記スレッド番号TNを1進めるステップと、
b−17)前記スケジュール候補命令選択部が、前記集合RSの全ての命令を選択したか判定するステップと、
b−18)前記命令配置部が、前記ステップb−14で記憶した前記命令TIの予測時刻が最も大きい命令をスケジュール対象CDとし、前記ステップb−14で記憶したスレッド番号と、前記ステップb−14で記憶した時刻に割り当てるステップと、
b−19)前記命令CDを集合RSから除去し、前記命令CDに依存している命令について調べ、その命令について、前記命令CDに対する依存は解決したとし、依存している命令がなくなった場合はその命令を前記集合RSに登録するステップと、
b−20)前記命令配置部が、全ての命令をスケジュールしたか判定するステップと、
b−21)前記命令配置部が、スケジュール結果を出力するステップと、
を含むことを特徴とする請求項9記載のプログラム並列化方法。 - 前記ステップb−9)は、
b−9−1)前記スケジュール候補命令選択部が、前記命令RIを先頭とする、依存グラフにおける命令列について、最長のものTSとし、前記命令TSを、TL[0]をRIとして、TL[0]、TL[1]、TL[2]、…と表すステップと、
b−9−2)前記スケジュール候補命令選択部が、変数V2を1とするステップと、
b−9−3)前記スケジュール候補命令選択部が、前記命令TL[V2]が依存している命令のうち、すでにスケジュール、あるいは仮に割り当てられているもののうち、最もスレッド番号が大きいもののスレッド番号をLF2とし、前記スレッド番号LF2より大きくかつ、現在命令がスケジュールされていない最も番号の小さいスレッド番号をRM2とし、変数CUに前記LF2を代入するステップと、
b−9−4)前記スレッド開始時刻制限解析部が、前記スレッド番号CUのスレッドについて、各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻の最低値を解析し、その時刻をER11とするステップと、
b−9−5)前記占有状況解析部が、前記スレッド番号CUのスレッドについて、すでにスケジュール、あるいは仮割当てされた命令に占められていない時刻を解析し、その時刻の集合をER12とするステップと、
b−9−6)前記依存遅延解析部が、前記命令TL[V2]が依存している命令のうち、すでにスケジュール、あるいは仮割当てされているものについて、前記命令TL[V2]へのデータの送信を調べ、それらの命令のデータの、前記スレッド番号CUのスレッドへの到着時刻を調べ、その最大値をER13とするステップと、
b−9−7)前記スレッド終了時刻制限解析部が、前記スレッド番号CUのスレッドについて、命令実行終了時刻の制限に基づいて、命令を割り当て可能な時刻の最大値を解析し、その値をER14とするステップと、
b−9−8)前記スケジュール候補命令選択部が、前記集合ER12の要素のうち、前記時刻ER11以上かつ前記時刻ER14以下かつ前記時刻ER13以上のもののうち、最小のものは存在するか判定するステップと、
b−9−9)前記スケジュール候補命令選択部が、前記スレッド番号CUを1進めるステップと、
b−9−10)前記スケジュール候補命令選択部が、存在する場合はその時刻をER15とするステップと、
b−9−11)前記スケジュール候補命令選択部が、前記命令TL[V2]に対する、前記時刻ER15のスレッド番号CUに渡る最小値を記憶し、最小値が更新された場合、前記スレッド番号CUも記憶するステップと、
b−9−12)前記スケジュール候補命令選択部が、前記スレッド番号CUが前記RM2に達したか判定するステップと、
b−9−13)前記スケジュール候補命令選択部が、前記スレッド番号CUを1増やすステップと、
b−9−14)前記スケジュール候補命令選択部が、前記ステップb−9−11で記憶したスレッド番号、時刻に前記命令TL[V2]を仮に割り当てるステップと、
b−9−15)前記スケジュール候補命令選択部が、前記命令TSのすべての命令を仮に割り当てたか判定するステップと、
b−9−16)前記スケジュール候補命令選択部が、前記変数V2を1増やすステップと、
b−9−17)前記スケジュール候補命令選択部が、仮の割当てをすべて消去して、前記命令TL[V2]が仮に割り当てられたスレッド番号と時刻を出力するステップと、
を含むことを特徴とする請求項10記載のプログラム並列化方法。 - 次にスケジュールする命令を選択するステップにおいて、スケジュール候補の命令を先頭とする最長依存命令列に属する命令のそれぞれについて、実行されるスレッド番号と時刻を解析することを特徴とする請求項6から11のいずれか1項に記載のプログラム並列化方法。
- 各スレッドの命令実行開始・終了時刻の制限の集合から制限を選ぶステップにおいて、全てのスレッドに対して開始時刻と終了時刻の差が一定で、開始時刻がスレッド番号とともに一定の増分で増えるような実行開始・終了時刻の制限のみを制限の集合とすることを特徴とする請求項6から11のいずれか1項に記載のプログラム並列化方法。
- 逐次処理中間プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化中間プログラムを出力するプログラム並列化装置を構成するコンピュータを、
各スレッドの命令実行開始時刻の間隔と、実行命令数の制限の集合から制限を選ぶ命令実行開始・終了時刻制限選択手段と、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド開始時刻制限解析手段と、
各スレッドの実行命令数の制限に基づいて、ある命令について、その命令が属する依存命令列のうち最も遅い時刻に実行される命令と、その命令の実行時刻を推定するスレッド終了時刻制限解析手段と、
プロセッサごとに、すでにスケジュールされた命令に占められていない時刻を解析する占有状況解析手段と、
命令間の依存による遅延に基づいて、命令を割当て可能な時刻を解析する依存遅延解析手段と、
次にスケジュールする命令を選択するスケジュール候補命令選択手段と、
命令に対し実行するプロセッサと時刻を割り当てる命令配置手段と、
として機能させることを特徴とするプログラム並列化プログラム。 - 逐次処理中間プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化中間プログラムを出力するプログラム並列化装置を構成するコンピュータを、
各スレッドの命令実行開始時刻の間隔と、実行命令数の制限の集合から制限を選ぶ命令実行開始・終了時刻制限選択手段と、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド開始時刻制限解析手段と、
各スレッドの実行命令数の制限に基づいて、ある命令について、その命令が属する依存命令列のうち最も遅い時刻に実行される命令と、その命令の実行時刻を推定するスレッド終了時刻制限解析手段と、
プロセッサごとに、すでにスケジュールされた命令に占められていない時刻を解析する占有状況解析手段と、
命令間の依存による遅延に基づいて、命令を割当て可能な時刻を解析する依存遅延解析手段と、
次にスケジュールする命令を選択するスケジュール候補命令選択手段と、
命令に対し実行するプロセッサと時刻を割り当てる命令配置手段と、
スケジュール結果に対し、並列実行時間を測定あるいは推定する並列実行時間測定手段と、
制限を変えてスケジュールを繰り返し、最良のスケジュールを決定する最良スケジュール決定手段と、
として機能させることを特徴とするプログラム並列化プログラム。 - 逐次処理プログラムを入力し、マルチスレッド型並列プロセッサ向けの並列化プログラムを出力するプログラム並列化装置を構成するコンピュータを、
入力した前記逐次処理プログラムの制御フローを解析する制御フロー解析手段と、
前記制御フロー解析手段による制御フローの解析結果を参照して、スケジュール対象となる領域を決定するスケジュール領域形成手段と、
前記スケジュール領域形成手段によるスケジュール領域の決定を参照して、レジスタのデータフローを解析するレジスタデータフロー解析手段と、
あるアドレスに読み書きを行う命令と、前記アドレスから読み書きを行う命令の間の依存を解析する命令間メモリデータフロー解析手段と、
各スレッドの命令実行開始時刻の間隔と、実行命令数の制限の集合から制限を選ぶ命令実行開始・終了時刻制限選択手段と、
各スレッドの命令実行開始時刻の制限に基づいて、命令を割り当て可能な時刻を解析するスレッド開始時刻制限解析手段と、
各スレッドの実行命令数の制限に基づいて、ある命令について、その命令が属する依存命令列のうち最も遅い時刻に実行される命令と、その命令の実行時刻を推定するスレッド終了時刻制限解析手段と、
プロセッサごとに、すでにスケジュールされた命令に占められていない時刻を解析する占有状況解析手段と、
命令間の依存による遅延に基づいて、命令を割当て可能な時刻を解析する依存遅延解析手段と、
次にスケジュールする命令を選択するスケジュール候補命令選択手段と、
命令に対し実行するプロセッサと時刻を割り当てる命令配置手段と、
スケジュール結果に対し、並列実行時間を測定あるいは推定する並列実行時間測定手段と、
制限を変えてスケジュールを繰り返し、最良のスケジュールを決定する最良スケジュール決定手段と、
前記最良のスケジュール決定結果を参照して、レジスタ割り当てを行うレジスタ割り当て手段と、
前記レジスタ割り当て結果を参照して、並列化プログラムを生成し出力するプログラム出力手段と、
として機能させることを特徴とするプログラム並列化プログラム。 - 前記スケジュール候補命令選択手段が、スケジュール候補の命令を先頭とする最長依存命令列に属する命令のそれぞれについて、実行されるスレッド番号と時刻を解析することを特徴とする請求項14から16のいずれか1項に記載のプログラム並列化プログラム。
- 前記命令実行開始・終了時刻制限選択手段が、全てのスレッドに対して開始時刻と終了時刻の差が一定で、開始時刻がスレッド番号とともに一定の増分で増えるような実行開始・終了時刻の制限のみを制限の集合とすることを特徴とする請求項14から16のいずれか1項に記載のプログラム並列化プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009553440A JP5278336B2 (ja) | 2008-02-15 | 2009-02-12 | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008034614 | 2008-02-15 | ||
JP2008034614 | 2008-02-15 | ||
JP2009553440A JP5278336B2 (ja) | 2008-02-15 | 2009-02-12 | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
PCT/JP2009/052309 WO2009101976A1 (ja) | 2008-02-15 | 2009-02-12 | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2009101976A1 JPWO2009101976A1 (ja) | 2011-06-09 |
JP5278336B2 true JP5278336B2 (ja) | 2013-09-04 |
Family
ID=40957006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009553440A Active JP5278336B2 (ja) | 2008-02-15 | 2009-02-12 | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110067015A1 (ja) |
JP (1) | JP5278336B2 (ja) |
WO (1) | WO2009101976A1 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9189233B2 (en) | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US8230410B2 (en) * | 2009-10-26 | 2012-07-24 | International Business Machines Corporation | Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization |
JP5148674B2 (ja) * | 2010-09-27 | 2013-02-20 | 株式会社東芝 | プログラム並列化装置およびプログラム |
US9003383B2 (en) * | 2011-09-15 | 2015-04-07 | You Know Solutions, LLC | Analytic engine to parallelize serial code |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
KR101892273B1 (ko) * | 2011-10-12 | 2018-08-28 | 삼성전자주식회사 | 스레드 프로그레스 트래킹 방법 및 장치 |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
JP6287018B2 (ja) * | 2013-10-04 | 2018-03-07 | 富士通株式会社 | 可視化方法、表示方法、情報処理装置、可視化プログラム及び表示プログラム |
WO2015107378A1 (en) * | 2014-01-20 | 2015-07-23 | Sony Corporation | Parallelization method and system |
JP6245031B2 (ja) * | 2014-03-27 | 2017-12-13 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
JP6369170B2 (ja) * | 2014-07-02 | 2018-08-08 | 富士通株式会社 | 実行時間推定装置及び方法 |
US9583116B1 (en) * | 2014-07-21 | 2017-02-28 | Superpowered Inc. | High-efficiency digital signal processing of streaming media |
US10318261B2 (en) * | 2014-11-24 | 2019-06-11 | Mentor Graphics Corporation | Execution of complex recursive algorithms |
US9996354B2 (en) * | 2015-01-09 | 2018-06-12 | International Business Machines Corporation | Instruction stream tracing of multi-threaded processors |
DE102015103727A1 (de) * | 2015-03-13 | 2016-09-15 | Phoenix Contact Gmbh & Co. Kg | Projektiergerät und Verfahren zum Konfigurieren und/oder Parametrieren von Automatisierungskomponenten eines Automatisierungssystems |
US11112845B2 (en) * | 2015-06-24 | 2021-09-07 | National Taiwan University | Probabilistic framework for compiler optimization with multithread power-gating controls |
CN108595371B (zh) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
US11567855B1 (en) * | 2020-09-09 | 2023-01-31 | Two Six Labs, LLC | Automated fault injection testing |
CN116010047B (zh) * | 2022-12-12 | 2023-12-15 | 爱芯元智半导体(宁波)有限公司 | 线程调度方法、硬件电路及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03242731A (ja) * | 1990-02-21 | 1991-10-29 | Nec Corp | コンパイル処理方式 |
JPH10187464A (ja) * | 1996-12-16 | 1998-07-21 | Internatl Business Mach Corp <Ibm> | マルチスカラ・プログラムを作成する方法およびシステム |
JP2003030050A (ja) * | 2001-07-18 | 2003-01-31 | Nec Corp | マルチスレッド実行方法及び並列プロセッサシステム |
JP2004302706A (ja) * | 2003-03-31 | 2004-10-28 | Nec Corp | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム |
JP2005018610A (ja) * | 2003-06-27 | 2005-01-20 | Toshiba Corp | スケジューリング方法および情報処理システム |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2902402B2 (ja) * | 1987-09-30 | 1999-06-07 | 三菱電機株式会社 | データ処理装置 |
DE69123629T2 (de) * | 1990-05-04 | 1997-06-12 | Ibm | Maschinenarchitektur für skalaren Verbundbefehlssatz |
US5303356A (en) * | 1990-05-04 | 1994-04-12 | International Business Machines Corporation | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag |
US5655096A (en) * | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
US5630128A (en) * | 1991-08-09 | 1997-05-13 | International Business Machines Corporation | Controlled scheduling of program threads in a multitasking operating system |
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
EP0798633B1 (en) * | 1996-03-29 | 2005-06-08 | Matsushita Electric Industrial Co., Ltd. | Data processor having a variable number of pipeline stages |
US6625635B1 (en) * | 1998-11-02 | 2003-09-23 | International Business Machines Corporation | Deterministic and preemptive thread scheduling and its use in debugging multithreaded applications |
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
US7140022B2 (en) * | 2000-06-02 | 2006-11-21 | Honeywell International Inc. | Method and apparatus for slack stealing with dynamic threads |
JP3702814B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US7418703B2 (en) * | 2002-03-20 | 2008-08-26 | Nec Corporation | Parallel processing system by OS for single processor |
US20040015684A1 (en) * | 2002-05-30 | 2004-01-22 | International Business Machines Corporation | Method, apparatus and computer program product for scheduling multiple threads for a processor |
CN100395709C (zh) * | 2003-02-20 | 2008-06-18 | 皇家飞利浦电子股份有限公司 | 一种用于指令转换的数据处理方法及其系统 |
EP1658563B1 (en) * | 2003-08-28 | 2013-06-05 | MIPS Technologies, Inc. | Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor |
JP4171910B2 (ja) * | 2004-03-17 | 2008-10-29 | 日本電気株式会社 | 並列処理システム及び並列処理プログラム |
JP3901181B2 (ja) * | 2004-06-30 | 2007-04-04 | 日本電気株式会社 | プログラム並列化装置及びその方法並びにプログラム |
US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7627864B2 (en) * | 2005-06-27 | 2009-12-01 | Intel Corporation | Mechanism to optimize speculative parallel threading |
US20070011687A1 (en) * | 2005-07-08 | 2007-01-11 | Microsoft Corporation | Inter-process message passing |
US7539852B2 (en) * | 2005-08-29 | 2009-05-26 | Searete, Llc | Processor resource management |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US7975059B2 (en) * | 2005-11-15 | 2011-07-05 | Microsoft Corporation | Generic application level protocol analyzer |
US7765536B2 (en) * | 2005-12-21 | 2010-07-27 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processors |
US8387033B2 (en) * | 2005-12-21 | 2013-02-26 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processing elements |
WO2007084700A2 (en) * | 2006-01-19 | 2007-07-26 | University Of Maryland Office Of Technology Commercialization | System and method for thread handling in multithreaded parallel computing of nested threads |
US20070234014A1 (en) * | 2006-03-28 | 2007-10-04 | Ryotaro Kobayashi | Processor apparatus for executing instructions with local slack prediction of instructions and processing method therefor |
US8032821B2 (en) * | 2006-05-08 | 2011-10-04 | Microsoft Corporation | Multi-thread spreadsheet processing with dependency levels |
US8595744B2 (en) * | 2006-05-18 | 2013-11-26 | Oracle America, Inc. | Anticipatory helper thread based code execution |
US8108872B1 (en) * | 2006-10-23 | 2012-01-31 | Nvidia Corporation | Thread-type-based resource allocation in a multithreaded processor |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US20100070958A1 (en) * | 2007-01-25 | 2010-03-18 | Nec Corporation | Program parallelizing method and program parallelizing apparatus |
US7937568B2 (en) * | 2007-07-11 | 2011-05-03 | International Business Machines Corporation | Adaptive execution cycle control method for enhanced instruction throughput |
-
2009
- 2009-02-12 JP JP2009553440A patent/JP5278336B2/ja active Active
- 2009-02-12 US US12/866,219 patent/US20110067015A1/en not_active Abandoned
- 2009-02-12 WO PCT/JP2009/052309 patent/WO2009101976A1/ja active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03242731A (ja) * | 1990-02-21 | 1991-10-29 | Nec Corp | コンパイル処理方式 |
JPH10187464A (ja) * | 1996-12-16 | 1998-07-21 | Internatl Business Mach Corp <Ibm> | マルチスカラ・プログラムを作成する方法およびシステム |
JP2003030050A (ja) * | 2001-07-18 | 2003-01-31 | Nec Corp | マルチスレッド実行方法及び並列プロセッサシステム |
JP2004302706A (ja) * | 2003-03-31 | 2004-10-28 | Nec Corp | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム |
JP2005018610A (ja) * | 2003-06-27 | 2005-01-20 | Toshiba Corp | スケジューリング方法および情報処理システム |
Non-Patent Citations (2)
Title |
---|
CSNG200100269006; 酒井淳嗣、鳥居 淳、近藤真己、市川成浩、小俣仁美、西 直樹、枝廣正人: '制御並列アーキテクチャ向け自動並列化コンパイル手法' 情報処理学会論文誌 第40巻,第5号, 19990515, p.2045〜2053, 社団法人情報処理学会 * |
JPN6009015941; 酒井淳嗣、鳥居 淳、近藤真己、市川成浩、小俣仁美、西 直樹、枝廣正人: '制御並列アーキテクチャ向け自動並列化コンパイル手法' 情報処理学会論文誌 第40巻,第5号, 19990515, p.2045〜2053, 社団法人情報処理学会 * |
Also Published As
Publication number | Publication date |
---|---|
US20110067015A1 (en) | 2011-03-17 |
JPWO2009101976A1 (ja) | 2011-06-09 |
WO2009101976A1 (ja) | 2009-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5278336B2 (ja) | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム | |
JP4957729B2 (ja) | プログラム並列化方法、プログラム並列化装置及びプログラム | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
JP5971334B2 (ja) | タスク配置装置、タスク配置方法、および、コンピュータ・プログラム | |
Jeffrey et al. | Data-centric execution of speculative parallel programs | |
KR20100089350A (ko) | 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치 | |
EP3908920B1 (en) | Optimizing hardware fifo instructions | |
US7058937B2 (en) | Methods and systems for integrated scheduling and resource management for a compiler | |
US8869129B2 (en) | Apparatus and method for scheduling instruction | |
US9354850B2 (en) | Method and apparatus for instruction scheduling using software pipelining | |
US20150127926A1 (en) | Instruction scheduling approach to improve processor performance | |
WO2022073346A1 (en) | Devices, methods, and media for efficient data dependency management for in-order issue processors | |
KR20140109146A (ko) | 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 | |
JP2016192152A (ja) | 並列化コンパイル方法、並列化コンパイラ、及び車載装置 | |
Zaki et al. | Implementation, scheduling, and adaptation of partial expansion graphs on multicore platforms | |
JP5983623B2 (ja) | タスク配置装置及びタスク配置方法 | |
Arató et al. | Time-constrained scheduling of large pipelined datapaths | |
Berson et al. | GURRR: A global unified resource requirements representation | |
WO2021098105A1 (en) | Method and apparatus for functional unit assignment | |
Saba et al. | Anytime algorithms for gpu architectures | |
Castrillón Mazo et al. | Parallel Code Flow | |
Briais et al. | How to eliminate non-positive circuits in periodic scheduling: a proactive strategy based on shortest path equations | |
Mandal | Complexity Analysis and Algorithms for Data Path Synthesis | |
BORDOLOI | Interactive design space exploration of real-time embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120112 |
|
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: 20130423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130506 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5278336 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |