JP6898556B2 - 情報処理装置、コンパイル方法及びコンパイルプログラム - Google Patents
情報処理装置、コンパイル方法及びコンパイルプログラム Download PDFInfo
- Publication number
- JP6898556B2 JP6898556B2 JP2017144452A JP2017144452A JP6898556B2 JP 6898556 B2 JP6898556 B2 JP 6898556B2 JP 2017144452 A JP2017144452 A JP 2017144452A JP 2017144452 A JP2017144452 A JP 2017144452A JP 6898556 B2 JP6898556 B2 JP 6898556B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- information
- source code
- generation unit
- exchange
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Description
図1は、情報処理システム10の全体構成を示す図である。図1に示す情報処理システム10は、情報処理装置1(コンパイラが動作する情報処理装置)と、記憶装置2と、操作端末3とを含む。図1に示す操作端末3は、操作端末3a、3b及び3cが含まれている。
初めに、情報処理装置1が行うコンパイル処理について説明を行う。図2は、情報処理装置1が行うコンパイル処理を説明するフローチャートである。
次に、情報処理装置1が行うコード実行処理について説明を行う。図3は、情報処理装置1が行うコード実行処理を説明するフローチャートである。
続いて、ソースコード131の具体例について説明を行う。図4及び図5は、ソースコード131の具体例について説明する図である。なお、ソースコード131は、Fortranによって記述されたソースコードである。
次に、オブジェクトコード133の実行時におけるメモリアクセスの具体例について説明を行う。図6は、ストライドアクセスが行われる場合における具体例を説明する図である。また、図7は、連続アクセスが行われる場合における具体例を説明する図である。具体的に、図6(A)は、ストライドアクセスが行われる二重ループの具体例を説明する図であり、図6(B)は、キャッシュメモリに記憶されたデータに対してストライドアクセスが行われる場合を説明する図である。また、図7(A)は、連続アクセスが行われる二重ループの具体例を説明する図であり、図7(B)は、キャッシュメモリに記憶されたデータに対して連続アクセスが行われる場合を説明する図である。
次に、情報処理装置1のハードウエア構成について説明する。図8は、情報処理装置1のハードウエア構成を説明する図である。
次に、情報処理装置1のソフトウエア構成について説明する。図9は、情報処理装置1の機能のブロック図である。図10は、情報格納領域130に記憶された情報のブロック図である。
次に、第1の実施の形態の概略について説明する。具体的に、ここでは、図2で説明したS3の処理の概略について説明する。図11は、S3の処理の概略について説明するフローチャートである。
次に、第1の実施の形態の詳細について説明する。図12から図15は、第1の実施の形態におけるコンパイル処理の詳細を説明するフローチャートである。具体的に、図12から図15は、図11で説明したS24の処理の詳細について説明するフローチャートである。また、図16から図26は、第1の実施の形態におけるコンパイル処理の詳細を説明する図である。図16から図26を参照しながら、図12から図15に示すS24の処理の詳細について説明を行う。
初めに、ループ交換が指示されているループと、ループ分割が行われた後のループと、ループ分割及びループ交換が行われた後のループとの具体例について説明を行う。図16は、ループ交換が指示されているループの具体例を説明する図である。また、図17は、図16に示すループに対してループ分割が行われた後のループの具体例を説明する図である。さらに、図18は、図17に示すループに対してループ交換が行われた後のループの具体例を説明する図である。
初めに、ループ交換が指示されていないループと、ループ分割が行われた後のループとの具体例について説明を行う。図21は、ループ交換が指示されていないループの具体例を説明する図である。また、図22は、図21に示すループに対してループ分割が行われた後のループの具体例を説明する図である。
図25は、第2の推奨情報136cが追加された第2の情報136aの具体例を説明する図である。
図26は、第1の推奨情報135cが追加された第1の情報135の具体例を説明する図である。
ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示された特定のループにおいて行われるメモリアクセスの順序に基づいて、ループの交換が行われた場合における前記特定のループに関する第1の情報、または、ループの交換が行われなかった場合における前記特定のループに関する第2の情報を生成する情報生成部と、
生成した前記第1の情報または前記第2の情報を出力する情報出力部と、を有する、
ことを特徴とする情報処理装置。
付記1において、
前記情報生成部は、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われる場合、前記特定のループに対するループの交換を推奨しないことを示す情報を前記第1の情報として生成する、
ことを特徴とする情報処理装置。
付記1において、
前記情報生成部は、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われない場合、前記特定のループに対するループの交換を推奨することを示す情報を前記第2の情報として生成する、
ことを特徴とする情報処理装置。
付記2または3において、
前記情報生成部は、前記特定のループにおける1次元目の添え字の値が前記特定のループの最内ループ内において不変であり、前記特定のループにおける2次元目以降の添え字が前記最内ループの制御変数である場合、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われないと判定する、
ことを特徴とする情報処理装置。
付記2または3において、
前記情報生成部は、前記特定のループにおける1次元目の添え字が前記特定のループの最内ループの制御変数であり、前記特定のループにおける2次元目の添え字の値が前記最内ループ内において不変である場合、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われると判定する、
ことを特徴とする情報処理装置。
付記1において、
前記特定のループは、前記ソースコードに含まれるループから分割された複数のループであり、
前記情報生成部は、前記複数のループのそれぞれについて、前記第1の情報または前記第2の情報の生成を行う、
ことを特徴とする情報処理装置。
ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示されていない特定のループにおいて行われるメモリアクセスの順序に基づいて、ループの交換が行われた場合における前記特定のループに関する第1の情報、または、ループの交換が行われなかった場合における前記特定のループに関する第2の情報を生成する情報生成部と、
生成した前記第1の情報または前記第2の情報を出力する情報出力部と、を有する、
ことを特徴とする情報処理装置。
ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示された特定のループにおいて行われるメモリアクセスの順序に基づいて、ループの交換が行われた場合における前記特定のループに関する第1の情報、または、ループの交換が行われなかった場合における前記特定のループに関する第2の情報を生成し、
生成した前記第1の情報または前記第2の情報を出力する、
ことを特徴とするコンパイル方法。
付記8において、
前記生成する工程では、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われる場合、前記特定のループに対するループの交換を推奨しないことを示す情報を前記第1の情報として生成する、
ことを特徴とするコンパイル方法。
付記8において、
前記生成する工程では、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われない場合、前記特定のループに対するループの交換を推奨することを示す情報を前記第2の情報として生成する、
ことを特徴とするコンパイル方法。
ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示されていない特定のループにおいて行われるメモリアクセスの順序に基づいて、ループの交換が行われた場合における前記特定のループに関する第1の情報、または、ループの交換が行われなかった場合における前記特定のループに関する第2の情報を生成し、
生成した前記第1の情報または前記第2の情報を出力する、
ことを特徴とするコンパイル方法。
ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示された特定のループにおいて行われるメモリアクセスの順序に基づいて、ループの交換が行われた場合における前記特定のループに関する第1の情報、または、ループの交換が行われなかった場合における前記特定のループに関する第2の情報を生成し、
生成した前記第1の情報または前記第2の情報を出力する、
処理をコンピュータに実行させることを特徴とするコンパイルプログラム。
付記12において、
前記生成する工程では、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われる場合、前記特定のループに対するループの交換を推奨しないことを示す情報を前記第1の情報として生成する、
ことを特徴とするコンパイルプログラム。
付記12において、
前記生成する工程では、前記特定のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われない場合、前記特定のループに対するループの交換を推奨することを示す情報を前記第2の情報として生成する、
ことを特徴とするコンパイルプログラム。
ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示されていない特定のループにおいて行われるメモリアクセスの順序に基づいて、ループの交換が行われた場合における前記特定のループに関する第1の情報、または、ループの交換が行われなかった場合における前記特定のループに関する第2の情報を生成し、
生成した前記第1の情報または前記第2の情報を出力する、
処理をコンピュータに実行させることを特徴とするコンパイルプログラム。
3:操作端末 101:CPU
102:メモリ 103:I/Oユニット
104:記憶媒体 130:情報格納領域
Claims (11)
- ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示された第1のループにおいて行われるメモリアクセスの順序に基づいて、前記第1のループに対するループの交換を推奨しないことを示す第1の情報を生成し、前記ソースコードに含まれるループのうち、ループの交換が指示されていない第2のループにおいて行われるメモリアクセスの順序に基づいて、前記第2のループに対するループの交換を推奨することを示す第2の情報を生成する情報生成部と、
生成した前記第1の情報または前記第2の情報を出力する情報出力部と、を有する、
ことを特徴とする情報処理装置。 - 請求項1において、
前記情報生成部は、前記第1のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われる場合、前記第1の情報を生成する、
ことを特徴とする情報処理装置。 - 請求項1において、
前記情報生成部は、前記第2のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われない場合、前記第2の情報を生成する、
ことを特徴とする情報処理装置。 - 請求項2において、
前記情報生成部は、前記第1のループにおける1次元目の添え字の値が前記第1のループの最内ループ内において不変であり、前記第1のループにおける2次元目以降の添え字が前記最内ループの制御変数である場合、前記第1のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われないと判定する、
ことを特徴とする情報処理装置。 - 請求項2において、
前記情報生成部は、前記第1のループにおける1次元目の添え字が前記第1のループの最内ループの制御変数であり、前記第1のループにおける2次元目の添え字の値が前記最内ループ内において不変である場合、前記第1のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われると判定する、
ことを特徴とする情報処理装置。 - 請求項3において、
前記情報生成部は、前記第2のループにおける1次元目の添え字の値が前記第2のループの最内ループ内において不変であり、前記第2のループにおける2次元目以降の添え字が前記最内ループの制御変数である場合、前記第2のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われないと判定する、
ことを特徴とする情報処理装置。 - 請求項3において、
前記情報生成部は、前記第2のループにおける1次元目の添え字が前記第2のループの最内ループの制御変数であり、前記第2のループにおける2次元目の添え字の値が前記最内ループ内において不変である場合、前記第2のループにおいて行われる前記メモリアクセスが、連続する記憶領域に対して順に行われると判定する、
ことを特徴とする情報処理装置。 - 請求項1において、
前記第1のループは、前記ソースコードに含まれるループから分割された複数のループであり、
前記情報生成部は、前記複数のループのそれぞれについて、前記第1の情報の生成を行う、
ことを特徴とする情報処理装置。 - 請求項1において、
前記第2のループは、前記ソースコードに含まれるループから分割された複数のループであり、
前記情報生成部は、前記複数のループのそれぞれについて、前記第2の情報の生成を行う、
ことを特徴とする情報処理装置。 - ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示された第1のループにおいて行われるメモリアクセスの順序に基づいて、前記第1のループに対するループの交換を推奨しないことを示す第1の情報を生成し、前記ソースコードに含まれるループのうち、ループの交換が指示されていない第2のループにおいて行われるメモリアクセスの順序に基づいて、前記第2のループに対するループの交換を推奨することを示す第2の情報を生成し、
生成した前記第1の情報または前記第2の情報を出力する、
ことを特徴とするコンパイル方法。 - ソースコードをコンパイルする際に、前記ソースコードに含まれるループのうち、ループの交換が指示された第1のループにおいて行われるメモリアクセスの順序に基づいて、前記第1のループに対するループの交換を推奨しないことを示す第1の情報を生成し、前記ソースコードに含まれるループのうち、ループの交換が指示されていない第2のループにおいて行われるメモリアクセスの順序に基づいて、前記第2のループに対するループの交換を推奨することを示す第2の情報を生成し、
生成した前記第1の情報または前記第2の情報を出力する、
処理をコンピュータに実行させることを特徴とするコンパイルプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017144452A JP6898556B2 (ja) | 2017-07-26 | 2017-07-26 | 情報処理装置、コンパイル方法及びコンパイルプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017144452A JP6898556B2 (ja) | 2017-07-26 | 2017-07-26 | 情報処理装置、コンパイル方法及びコンパイルプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019028540A JP2019028540A (ja) | 2019-02-21 |
JP6898556B2 true JP6898556B2 (ja) | 2021-07-07 |
Family
ID=65478392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017144452A Active JP6898556B2 (ja) | 2017-07-26 | 2017-07-26 | 情報処理装置、コンパイル方法及びコンパイルプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6898556B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08241208A (ja) * | 1995-03-06 | 1996-09-17 | Fujitsu Ltd | キャッシュの情報表示システム |
JP2003256214A (ja) * | 2002-02-27 | 2003-09-10 | Hitachi Ltd | 配列拡張によるループ変換方法 |
JP2006107339A (ja) * | 2004-10-08 | 2006-04-20 | Matsushita Electric Ind Co Ltd | プログラム処理装置 |
JP2015194881A (ja) * | 2014-03-31 | 2015-11-05 | 富士通株式会社 | コンパイル装置、コンパイラプログラム、コンパイル方法 |
-
2017
- 2017-07-26 JP JP2017144452A patent/JP6898556B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019028540A (ja) | 2019-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9047399B2 (en) | Generating visualization from running executable code | |
US8276130B2 (en) | Method and compiler of compiling a program | |
US20120030652A1 (en) | Mechanism for Describing Values of Optimized Away Parameters in a Compiler-Generated Debug Output | |
Hiniker et al. | Improving region selection in dynamic optimization systems | |
WO2013079006A1 (en) | Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies | |
TW201405424A (zh) | 編譯系統以及編譯方法 | |
Mendis et al. | Revec: program rejuvenation through revectorization | |
CN112434266A (zh) | 一种shellcode控制流扁平化混淆方法 | |
US10013244B2 (en) | Apparatus and method to compile a variadic template function | |
JP6665720B2 (ja) | 情報処理装置、コンパイルプログラム、コンパイル方法、およびキャッシュ制御方法 | |
JP7060803B2 (ja) | 情報処理装置、コンパイラプログラム及びコンパイル方法 | |
JP6898556B2 (ja) | 情報処理装置、コンパイル方法及びコンパイルプログラム | |
JP6730587B2 (ja) | キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置 | |
CN107817972B (zh) | 缓存代码处理方法、装置、存储介质及电子设备 | |
Goss | Machine code optimization-improving executable object code | |
JP4719415B2 (ja) | 情報処理システム及びコード生成方法 | |
Glück | A self‐applicable online partial evaluator for recursive flowchart languages | |
JPWO2017204139A1 (ja) | データ処理装置、データ処理方法、およびプログラム記録媒体 | |
JP5021584B2 (ja) | マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体 | |
JP6558310B2 (ja) | 並列化方法、並列化ツール | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
JP2018206175A (ja) | コンパイラ、情報処理装置及びコンパイル方法 | |
US20170344351A1 (en) | Information processing apparatus, compiling management method, and recording medium | |
JP2008071065A (ja) | インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体 | |
JP2014099108A (ja) | 実行時間算出装置、実行時間算出方法、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210216 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210217 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210414 |
|
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: 20210511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210524 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6898556 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |