JP6164054B2 - 情報処理装置、コンパイル方法およびコンパイラプログラム - Google Patents
情報処理装置、コンパイル方法およびコンパイラプログラム Download PDFInfo
- Publication number
- JP6164054B2 JP6164054B2 JP2013231957A JP2013231957A JP6164054B2 JP 6164054 B2 JP6164054 B2 JP 6164054B2 JP 2013231957 A JP2013231957 A JP 2013231957A JP 2013231957 A JP2013231957 A JP 2013231957A JP 6164054 B2 JP6164054 B2 JP 6164054B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- parameter
- index
- array
- loop variable
- 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
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
- G06F8/452—Loops
-
- 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/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
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は、第1の実施の形態の情報処理装置を示す図である。
第2の実施の形態の情報処理装置は、コンパイラおよびリンカを用いて、C言語などの高級言語で記述されたソースコードから実行コードを生成する。
情報処理装置100は、CPU101,102、RAM103、HDD104、画像信号処理部105、入力信号処理部106、媒体リーダ107および通信インタフェース108を有する。これらのハードウェアユニットは、情報処理装置100内でバスに接続されている。CPU101,102は、第1の実施の形態の演算部12の一例であり、RAM103またはHDD104は、第1の実施の形態の記憶部11の一例である。
図3は、実行時のインデックス検査の例を示す図である。
ここでは、情報処理装置100が次のようなソースコードをコンパイルする場合を考える。このソースコードには、データ要素数が100の配列Aと、ループ前にその値が動的に決定されループ内でその値が変わらないパラメータMと、ループ変数i,jとが定義されている。配列Aのインデックスの正常範囲は0〜99である。
上記の図3で説明したパラメータMの判定式(パラメータMの値が100以上であるかまたは7以下である)は、図4に示すような条件式から数式処理によって導出することができる。条件式は、ループ変数i,jの変動範囲を制限するループ変数条件と、インデックスi−2j+Mの値がメモリアクセス違反を生じさせることを示すエラー条件を含む。
このような条件式から、情報処理装置100は、数式処理によってループ変数i,jを消去してパラメータMについての判定式を生成することができる。数式処理として、フーリエ・モツキンの消去法などの「射影」と呼ばれるアルゴリズムを用いることができる。ループ変数i,jおよびパラメータMに対応する軸をもつ3次元空間に、上記の条件式を満たす領域を形成することを考える。射影は、ループ変数i,jそれぞれに対応する軸方向から光を当ててパラメータMに対応する空間に影を映し出すことを意味し、ループ変数i,jを消去してパラメータMの値の取り得る範囲を求めることができる。
ここでは、情報処理装置100が、図3と異なる次のようなソースコードをコンパイルする場合を考える。このソースコードには、データ要素数が100×100の二次元配列である配列Bと、ループ前にその値が動的に決定されループ内でその値が変わらないパラメータN,X,Yと、ループ変数i,jとが定義されている。
図6は、並列化検査のための判定式の算出方法の例を示す図である。
上記ではメモリアクセス検査のための判定式と並列化可否検査のための判定式の例を挙げたが、同じループに対してこの2つの目的の判定式が共に生成されることがある。この2つの判定式は、同じパラメータを含むことが多く、その一部の論理式が共通していることがある。そこで、情報処理装置100は、共通の論理式を抽出して、判定ステップが少なくなるように判定式を最適化する。これにより、プログラムの実行効率が向上する。
図8は、情報処理装置で動作するソフトウェア例を示すブロック図である。
情報処理装置100は、ファイル記憶部110、コンパイラ120およびリンカ130を有する。ファイル記憶部110は、例えば、RAM103またはHDD104に確保した記憶領域として実装される。コンパイラ120およびリンカ130は、例えば、CPU101,102が実行するソフトウェアのモジュールとして実装される。
(S1)ソースコード解析部121は、ソースファイル111に含まれるソースコードを解析する。ここで、ソースコードに記述されたループが認識される。
このフローチャートが示す処理は、上記のステップS2において実行される。
(S20)インデックス分析部122は、ループを1つ選択する。
このフローチャートが示す処理は、上記のステップS4において実行される。
(S40)並列化分析部123は、並列化指示文が付加されたループを1つ選択する。
11 記憶部
12 演算部
13 ソースコード
14 オブジェクトコード
14a 検査コード
15 条件式
16 判定情報
Claims (8)
- インデックスによって参照される配列とループ変数と前記ループ変数以外のパラメータとを用いて記述されたループ処理を含むソースコードを記憶する記憶部と、
前記ループ変数および前記パラメータを用いて前記配列のインデックスが所定の条件を満たすことを示す条件式を生成し、数式処理によって前記条件式から前記ループ変数を消去することで前記パラメータについての判定情報を生成し、前記判定情報に応じて前記ソースコードに対応するオブジェクトコードを生成する演算部、
を有する情報処理装置。 - 前記判定情報は、前記条件式が成立するときの前記パラメータの値の範囲を示し、
前記演算部は、実行時の前記パラメータの値が前記範囲に属するか検査する検査コードを、前記オブジェクトコードにおける前記ループ処理の前に挿入する、
請求項1記載の情報処理装置。 - 前記演算部は、前記ループ処理に対して前記判定情報に加えて他の条件式に対応する他の判定情報を生成した場合、前記判定情報が示す判定式と前記他の判定情報が示す判定式とを合成し、合成した判定式に基づいて前記検査コードを生成する、
請求項2記載の情報処理装置。 - 前記判定情報が、前記パラメータの値にかかわらず前記条件式が成立することまたは成立しないことを示している場合、前記演算部は警告情報を生成する、
請求項1乃至3の何れか一項に記載の情報処理装置。 - 前記条件式には、前記ループ変数の値の制限を示す複数の第1の線形式と前記配列のインデックスが前記所定の条件を満たすことを示す第2の線形式とが含まれる、
請求項1乃至4の何れか一項に記載の情報処理装置。 - 前記所定の条件には、前記インデックスの値が定義域に収まっているか否かおよび前記配列の参照を並列化可能か否かの少なくとも一方についての条件が含まれる、
請求項1乃至5の何れか一項に記載の情報処理装置。 - コンピュータが実行するコンパイル方法において、
前記コンピュータが、
インデックスによって参照される配列とループ変数と前記ループ変数以外のパラメータとを用いて記述されたループ処理を含むソースコードを取得し、
前記ループ変数および前記パラメータを用いて、前記配列のインデックスが所定の条件を満たすことを示す条件式を生成し、
数式処理によって前記条件式から前記ループ変数を消去することで、前記パラメータについての判定情報を生成し、
前記判定情報に応じて前記ソースコードに対応するオブジェクトコードを生成する、
コンパイル方法。 - コンピュータが実行するコンパイラプログラムにおいて、
前記コンピュータに、
インデックスによって参照される配列とループ変数と前記ループ変数以外のパラメータとを用いて記述されたループ処理を含むソースコードを取得させ、
前記ループ変数および前記パラメータを用いて、前記配列のインデックスが所定の条件を満たすことを示す条件式を生成させ、
数式処理によって前記条件式から前記ループ変数を消去することで、前記パラメータについての判定情報を生成させ、
前記判定情報に応じて前記ソースコードに対応するオブジェクトコードを生成させる、
コンパイラプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013231957A JP6164054B2 (ja) | 2013-11-08 | 2013-11-08 | 情報処理装置、コンパイル方法およびコンパイラプログラム |
US14/522,815 US9430203B2 (en) | 2013-11-08 | 2014-10-24 | Information processing apparatus and compilation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013231957A JP6164054B2 (ja) | 2013-11-08 | 2013-11-08 | 情報処理装置、コンパイル方法およびコンパイラプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015094960A JP2015094960A (ja) | 2015-05-18 |
JP6164054B2 true JP6164054B2 (ja) | 2017-07-19 |
Family
ID=53044978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013231957A Active JP6164054B2 (ja) | 2013-11-08 | 2013-11-08 | 情報処理装置、コンパイル方法およびコンパイラプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9430203B2 (ja) |
JP (1) | JP6164054B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6689659B2 (ja) | 2016-04-19 | 2020-04-28 | クラリオン株式会社 | 位置推定装置、及び、推定方法 |
WO2018236384A1 (en) * | 2017-06-22 | 2018-12-27 | Archeo Futurus, Inc. | COMPILATION AND OPTIMIZATION OF A COMPUTER CODE BY MINIMIZING A NUMBER OF STATES IN A FINAL MACHINE CORRESPONDING TO THE COMPUTER CODE |
US9996328B1 (en) | 2017-06-22 | 2018-06-12 | Archeo Futurus, Inc. | Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code |
US10481881B2 (en) | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
JP7035751B2 (ja) * | 2018-04-12 | 2022-03-15 | 富士通株式会社 | コード変換装置、コード変換方法、及びコード変換プログラム |
JP2022140995A (ja) * | 2021-03-15 | 2022-09-29 | 富士通株式会社 | 情報処理装置、コンパイルプログラムおよびコンパイル方法 |
US11656854B2 (en) * | 2021-08-30 | 2023-05-23 | Huawei Technologies Co., Ltd. | Methods and devices for computing a memory size for software optimization |
JP2023045347A (ja) * | 2021-09-22 | 2023-04-03 | 富士通株式会社 | プログラムおよび情報処理方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2655614B2 (ja) * | 1988-11-30 | 1997-09-24 | 日本電気株式会社 | 添字の不正使用検査方式 |
US5293631A (en) | 1991-08-06 | 1994-03-08 | Hewlett-Packard Company | Analysis and optimization of array variables in compiler for instruction level parallel processor |
US5742814A (en) * | 1995-11-01 | 1998-04-21 | Imec Vzw | Background memory allocation for multi-dimensional signal processing |
JP3539613B2 (ja) * | 1997-12-03 | 2004-07-07 | 株式会社日立製作所 | ループ飛び出し文を含むループに対する配列サマリ解析方法 |
US7260817B2 (en) * | 1999-07-09 | 2007-08-21 | International Business Machines Corporation | Method using array range check information for generating versioning code before a loop for execution |
JP3280332B2 (ja) | 1998-07-10 | 2002-05-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ループに対するバージョニングを実行する方法及び装置、配列レンジ・チェックに関する情報をベーシック・ブロック内において収集する方法及び装置、配列レンジ・チェックに関する情報を変更する方法、配列レンジ・チェック最適化方法、配列レンジ・チェックのためのコードを生成する方法、不要配列レンジ・チェック除去方法及び装置、配列レンジ・チェックを選択する方法、配列レンジ・チェック変更方法、配列レンジ・チェック収集方法、及び配列レンジ・チェック取扱判断方法 |
US8060870B2 (en) * | 2007-09-26 | 2011-11-15 | International Business Machines Corporation | System and method for advanced polyhedral loop transformations of source code in a compiler |
US8484613B2 (en) * | 2010-01-28 | 2013-07-09 | Synopsys, Inc. | Optimizing bounds checking using computer algebra |
-
2013
- 2013-11-08 JP JP2013231957A patent/JP6164054B2/ja active Active
-
2014
- 2014-10-24 US US14/522,815 patent/US9430203B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015094960A (ja) | 2015-05-18 |
US9430203B2 (en) | 2016-08-30 |
US20150135171A1 (en) | 2015-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6164054B2 (ja) | 情報処理装置、コンパイル方法およびコンパイラプログラム | |
US9201632B2 (en) | Systems and methods for incremental software development | |
US9208057B2 (en) | Efficient model checking technique for finding software defects | |
Verdoolaege et al. | Equivalence checking of static affine programs using widening to handle recurrences | |
US7882498B2 (en) | Method, system, and program of a compiler to parallelize source code | |
US8453134B2 (en) | Improving data locality and parallelism by code replication | |
US9235433B2 (en) | Speculative object representation | |
US9195444B2 (en) | Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction | |
CN102707982A (zh) | 托管汇编件的增量式生成 | |
JP6432450B2 (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
JP2016224812A (ja) | 並列計算装置、並列処理方法、並列処理プログラムおよびコンパイルプログラム | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
Tan et al. | What every scientific programmer should know about compiler optimizations? | |
Mosaner et al. | Using machine learning to predict the code size impact of duplication heuristics in a dynamic compiler | |
Jeong et al. | Speculative symbolic graph execution of imperative deep learning programs | |
US20170329584A1 (en) | Information processing device and compilation method | |
US9367291B2 (en) | Apparatus and method for generating vector code | |
JP2017033342A (ja) | コンパイル装置、コンパイル方法およびコンパイルプログラム | |
US20150082443A1 (en) | System to automate compliance with licenses of software third-party content | |
Cheung et al. | Bridging the gap between general-purpose and domain-specific compilers with synthesis | |
JP2014099108A (ja) | 実行時間算出装置、実行時間算出方法、およびプログラム | |
US11615014B2 (en) | Using relocatable debugging information entries to save compile time | |
Haine et al. | Exploring and evaluating array layout restructuring for SIMDization | |
JP2008015665A (ja) | プログラム解析方法及びプログラム解析装置 | |
JP6926921B2 (ja) | コンパイルプログラム、コンパイル方法及び並列処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160705 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170427 |
|
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: 20170523 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170605 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6164054 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |