JP6558310B2 - 並列化方法、並列化ツール - Google Patents
並列化方法、並列化ツール Download PDFInfo
- Publication number
- JP6558310B2 JP6558310B2 JP2016117248A JP2016117248A JP6558310B2 JP 6558310 B2 JP6558310 B2 JP 6558310B2 JP 2016117248 A JP2016117248 A JP 2016117248A JP 2016117248 A JP2016117248 A JP 2016117248A JP 6558310 B2 JP6558310 B2 JP 6558310B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- dependency
- data dependency
- processing units
- 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 66
- 238000012545 processing Methods 0.000 claims description 74
- 238000004364 calculation method Methods 0.000 claims description 16
- 239000000284 extract Substances 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 9
- 230000005856 abnormality Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 15
- 238000004458 analytical method Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000007717 exclusion Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 125000000524 functional group Chemical group 0.000 description 4
- 230000004043 responsiveness Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
シングルコアマイコン用に記述されたシングルプログラムを解析して、シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム(21a1)を生成するコンピュータが実行する並列化方法であって、
複数のデータ依存関係における無視可能なデータ依存関係を示す無視情報(30)を取得して、無視情報で示されたデータ依存関係のうち、同じデータへの書込みと書込みとを示すデータ依存関係を同期必須依存関係として抽出する抽出手順(10c)と、
無視情報で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視し、同期必須依存関係となる二つの処理単位の同時実行を回避することでデータの異常が発生しないようにしつつ、処理単位が最も多く並列化されるように並列プログラムを生成する生成手順(10d、10e、10f)と、を備えていることを特徴とする。
シングルコアマイコン用に記述されたシングルプログラムを解析して、シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム(21a1)を生成する並列化ツールであって、
複数のデータ依存関係における無視可能なデータ依存関係を示す無視情報(30)を取得して、無視情報で示されたデータ依存関係のうち、同じデータへの書込みと書込みとを示すデータ依存関係を同期必須依存関係として抽出する抽出部(10c)と、
無視情報で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視し、同期必須依存関係となる二つの処理単位の同時実行を回避することでデータの異常が発生しないようにしつつ、処理単位が最も多く並列化されるように並列プログラムを生成する生成部(10d、10e、10f)と、を備えていることを特徴とする。
Claims (12)
- シングルコアマイコン用に記述されたシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な前記処理単位を並列化した並列プログラム(21a1)を生成するコンピュータが実行する並列化方法であって、
複数の前記データ依存関係における無視可能な前記データ依存関係を示す無視情報(30)を取得して、前記無視情報で示された前記データ依存関係のうち、同じ前記データへの書込みと書込みとを示す前記データ依存関係を同期必須依存関係として抽出する抽出手順(10c)と、
前記無視情報で示された前記データ依存関係のうち、前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位の同時実行を回避することで前記データの異常が発生しないようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する生成手順(10d、10e、10f)と、を備えている並列化方法。 - 前記抽出手順は、複数の前記データのうち、書込みと参照のタイミング規定が制御制約として必要な前記データを示す同時性必要情報(40)を取得するとともに、前記無視情報で示された前記データ依存関係のうち、前記同時性必要情報で示された前記データに対する書込みと参照とを含む前記データ依存関係をさらに前記同期必須依存関係として抽出し、
前記生成手順は、前記無視情報で示された前記データ依存関係のうち、前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位による同じ前記データへの書込みが同時に発生せず、且つ、前記タイミング規定が維持されるようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する請求項1に記載の並列化方法。 - 前記生成手順は、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させて並べて、前記並列プログラムを生成する請求項1又は2に記載の並列化方法。
- 前記抽出手順は、抽出した前記同期必須依存関係の全てについて、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させた全組合せについてのデータ依存パターンを生成する請求項1又は2に記載の並列化方法。
- 前記生成手順は、
生成された前記データ依存パターン毎に、スケジューリングするとともに、複数のスケジューリング結果の夫々における並列度を算出する算出手順(10d、10e)と、
前記算出手順での複数の前記スケジューリング結果から前記並列度が最大となる前記スケジューリング結果の採用を決定することで、前記処理単位が最も多く並列化された前記並列プログラムを生成する決定手順(10f)とを含んでいる請求項4に記載の並列化方法。 - 前記シングルプログラムは、複数の前記処理単位を複数の機能群に区分可能に構成されており、
前記無視情報は、異なる前記機能群に区分される前記処理単位間の前記データ依存関係を、無視可能な前記データ依存関係として示す請求項1乃至5のいずれか一項に記載の並列化方法。 - シングルコアマイコン用に記述されたシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な前記処理単位を並列化した並列プログラム(21a1)を生成する並列化ツールであって、
複数の前記データ依存関係における無視可能な前記データ依存関係を示す無視情報(30)を取得して、前記無視情報で示された前記データ依存関係のうち、同じ前記データへの書込みと書込みとを示す前記データ依存関係を同期必須依存関係として抽出する抽出部(10c)と、
前記無視情報で示された前記データ依存関係のうち前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位の同時実行を回避することで前記データの異常が発生しないようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する生成部(10d、10e、10f)と、を備えている並列化ツール。 - 前記抽出部は、複数の前記データのうち、書込みと参照のタイミング規定が制御制約として必要な前記データを示す同時性必要情報(40)をさらに取得するとともに、前記無視情報で示された前記データ依存関係のうち、前記同時性必要情報で示された前記データに対する書込みと参照とを含む前記データ依存関係をさらに前記同期必須依存関係として抽出し、
前記生成部は、前記無視情報で示された前記データ依存関係のうち前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位による同じ前記データへの書込みが同時に発生せず、且つ、前記タイミング規定が維持されるようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する請求項7に記載の並列化ツール。 - 前記生成部は、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させて並べて、前記並列プログラムを生成する請求項7又は8に記載の並列化ツール。
- 前記抽出部は、抽出した前記同期必須依存関係の全てについて、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させた全組合せについてのデータ依存パターンを生成する請求項7又は8に記載の並列化ツール。
- 前記生成部は、
生成された前記データ依存パターン毎に、スケジューリングするとともに、複数のスケジューリング結果の夫々における並列度を算出する算出部(10d、10e)と、
前記算出部での複数の前記スケジューリング結果から前記並列度が最大となる前記スケジューリング結果の採用を決定することで、前記処理単位が最も多く並列化された前記並列プログラムを生成する決定部(10f)とを含んでいる請求項10に記載の並列化ツール。 - 前記シングルプログラムは、複数の前記処理単位を複数の機能群に区分可能に構成されており、
前記無視情報は、異なる前記機能群に区分される前記処理単位間の前記データ依存関係を、無視可能な前記データ依存関係として示す請求項7乃至11のいずれか一項に記載の並列化ツール。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016117248A JP6558310B2 (ja) | 2016-06-13 | 2016-06-13 | 並列化方法、並列化ツール |
DE102017209285.8A DE102017209285A1 (de) | 2016-06-13 | 2017-06-01 | Parallelization method, parallelization tool, and in-vehicle device |
US15/614,771 US10228948B2 (en) | 2016-06-13 | 2017-06-06 | Parallelization method, parallelization tool, and in-vehicle device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016117248A JP6558310B2 (ja) | 2016-06-13 | 2016-06-13 | 並列化方法、並列化ツール |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017224046A JP2017224046A (ja) | 2017-12-21 |
JP6558310B2 true JP6558310B2 (ja) | 2019-08-14 |
Family
ID=60419956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016117248A Active JP6558310B2 (ja) | 2016-06-13 | 2016-06-13 | 並列化方法、並列化ツール |
Country Status (3)
Country | Link |
---|---|
US (1) | US10228948B2 (ja) |
JP (1) | JP6558310B2 (ja) |
DE (1) | DE102017209285A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017228029A (ja) * | 2016-06-21 | 2017-12-28 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
US6948162B2 (en) * | 2002-01-09 | 2005-09-20 | Sun Microsystems, Inc. | Enhanced parallelism in trace scheduling by using renaming |
US7882498B2 (en) * | 2006-03-31 | 2011-02-01 | Intel Corporation | Method, system, and program of a compiler to parallelize source code |
US20070260856A1 (en) * | 2006-05-05 | 2007-11-08 | Tran Thang M | Methods and apparatus to detect data dependencies in an instruction pipeline |
US7984431B2 (en) * | 2007-03-31 | 2011-07-19 | Intel Corporation | Method and apparatus for exploiting thread-level parallelism |
JP2009129179A (ja) * | 2007-11-22 | 2009-06-11 | Toshiba Corp | プログラム並列化支援装置およびプログラム並列化支援方法 |
JP5036523B2 (ja) * | 2007-12-21 | 2012-09-26 | 三菱電機株式会社 | プログラム並列化装置 |
US9354884B2 (en) * | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
JP6018022B2 (ja) * | 2013-06-14 | 2016-11-02 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
JP6427054B2 (ja) | 2015-03-31 | 2018-11-21 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
-
2016
- 2016-06-13 JP JP2016117248A patent/JP6558310B2/ja active Active
-
2017
- 2017-06-01 DE DE102017209285.8A patent/DE102017209285A1/de active Pending
- 2017-06-06 US US15/614,771 patent/US10228948B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2017224046A (ja) | 2017-12-21 |
US10228948B2 (en) | 2019-03-12 |
DE102017209285A1 (de) | 2017-12-14 |
US20170357511A1 (en) | 2017-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4629768B2 (ja) | 並列化処理方法、システム、及びプログラム | |
US10095657B2 (en) | Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel | |
Grosser et al. | Polly-ACC transparent compilation to heterogeneous hardware | |
KR101279179B1 (ko) | 병렬 프로그램 생성 방법 | |
US9195444B2 (en) | Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction | |
JPH04211830A (ja) | 並列化コンパイル方式 | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
US10296316B2 (en) | Parallelization method, parallelization tool, and in-vehicle apparatus | |
Sukumaran-Rajam et al. | The polyhedral model of nonlinear loops | |
JP2017228029A (ja) | 並列化方法、並列化ツール、車載装置 | |
EP2799986B1 (en) | Apparatus and method for translating multithread program code | |
Carle et al. | Predicate-aware, makespan-preserving software pipelining of scheduling tables | |
JP6558310B2 (ja) | 並列化方法、並列化ツール | |
US8806466B2 (en) | Program generation device, program production method, and program | |
Juega et al. | Adaptive mapping and parameter selection scheme to improve automatic code generation for gpus | |
JP2008305337A (ja) | プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム | |
CN112313626B (zh) | 异步处理器架构上的死锁检测及同步感知优化的方法 | |
JP6933001B2 (ja) | 並列化方法、並列化ツール | |
JP7095513B2 (ja) | マルチコアマイコン、及び車載装置 | |
Patel et al. | Principles of Speculative Run—Time Parallelization | |
WO2023155863A1 (en) | Methods and devices for compiler function fusion | |
Kuroda et al. | Applying Temporal Blocking with a Directive-based Approach | |
JP4819442B2 (ja) | コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム | |
JP6933063B2 (ja) | 並列化方法、並列化ツール、車載装置 | |
Jimborean et al. | Dynamic and speculative polyhedral parallelization of loop nests using binary code patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180730 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190416 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190417 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190529 |
|
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: 20190618 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190701 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6558310 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 |