JP2019219912A - 情報処理装置、コンパイラプログラム及びコンパイル方法 - Google Patents
情報処理装置、コンパイラプログラム及びコンパイル方法 Download PDFInfo
- Publication number
- JP2019219912A JP2019219912A JP2018116777A JP2018116777A JP2019219912A JP 2019219912 A JP2019219912 A JP 2019219912A JP 2018116777 A JP2018116777 A JP 2018116777A JP 2018116777 A JP2018116777 A JP 2018116777A JP 2019219912 A JP2019219912 A JP 2019219912A
- Authority
- JP
- Japan
- Prior art keywords
- dimensional
- data
- array
- length array
- stored
- 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.)
- Granted
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/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- 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/4434—Reducing the memory space required by the program code
Abstract
Description
図1から図3は、情報処理システム10の構成を示す図である。図1から図3に示す情報処理システム10は、情報処理装置1と、操作端末3とを有する。
次に、情報処理システム10のハードウエア構成について説明する。図4は、情報処理装置1のハードウエア構成を説明する図である。
次に、情報処理システム10の機能について説明を行う。図5は、情報処理装置1の機能のブロック図である。
次に、第1の実施の形態の概略について説明する。図6は、第1の実施の形態におけるコンパイル処理の概略を説明するフローチャート図である。また、図7及び図8は、第1の実施の形態におけるコンパイル処理の概略を説明する図である。
次に、S4の処理の具体例について説明を行う。
次に、S7の処理の具体例について説明を行う。
次に、第1の実施の形態の詳細について説明する。図12から図17は、第1の実施の形態におけるコンパイル処理の詳細を説明するフローチャート図である。また、図18から図24は、第1の実施の形態におけるコンパイル処理の詳細を説明する図である。
初めに、コンパイラ11の解析部11aにおけるコンパイル処理について説明を行う。図12は、解析部11aにおけるコンパイル処理を説明するフローチャート図である。
図18は、ソースコード131bの具体例を説明する具体例である。
次に、コンパイラ11の最適化部11bにおけるコンパイル処理について説明を行う。図13は、最適化部11bにおけるコンパイル処理を説明するフローチャート図である。
図15から図17は、オブジェクト実行処理の一部を説明するフローチャート図である。なお、以下、オブジェクトコード133bが情報処理装置1(CPU101)によって実行される場合について説明を行う。
次に、S25の処理で中間言語132bが更新された命令のうち、N次元の固定長配列に対するデータの格納を行う命令の実行時(オブジェクトコード133bの実行時)における具体例について説明を行う。図19及び図20は、S25の処理で中間言語132bが更新された命令の実行時における具体例について説明する図である。
次に、S25の処理で中間言語132bが更新された命令のうち、アドレス情報135を生成する命令の実行時(ソースコード131bから生成されたオブジェクトコード133bの実行時)における具体例について説明を行う。図21は、アドレス情報135の具体例について説明する図である。
次に、S31の処理で更新された命令の実行時(ソースコード131bから生成されたオブジェクトコード133bの実行時)における具体例について説明を行う。
次に、S32の処理で更新された命令の実行時(ソースコード131bから生成されたオブジェクトコード133bの実行時)における具体例について説明を行う。図22から図24は、S32の処理で追加された命令の実行時における具体例について説明する図である。
ソースコードのコンパイルを実行してオブジェクトコードを生成する情報処理装置であって、
N(Nは2以上の整数)次元の可変長配列に対する特定データの格納を行う命令が前記ソースコードに含まれている場合、前記N次元の可変長配列に代えて、N次元の固定長配列に対して前記特定データを格納するように、前記オブジェクトコードを生成する格納先変更部と、
前記N次元の可変長配列に格納されたデータに対して順にアクセスを行う命令が前記ソースコードに含まれている場合、前記N次元の固定長配列に格納されているデータのそれぞれを1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成するアクセス先変更部と、を有する、
ことを特徴とする情報処理装置。
付記1において、さらに、
前記特定データの格納先のアドレスを示すアドレス情報を記憶する記憶部と、を有し、
前記アクセス先変更部は、前記アドレス情報が記憶された前記記憶部を参照し、前記N次元の固定長配列に格納されているデータのそれぞれの格納位置を特定し、特定した前記格納位置に格納されたデータのそれぞれを前記1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とする情報処理装置。
付記2において、
前記アクセス先変更部は、前記アドレス情報が記憶された前記記憶部を参照し、前記N次元の固定長配列に格納されているデータのデータ長の合計値を算出し、前記N次元の固定長配列に格納されているデータのそれぞれを格納する前に、前記1次元の固定長配列に対応する領域として、算出した前記合計値に対応する領域を確保するように、前記オブジェクトコードを生成する、
ことを特徴とする情報処理装置。
付記2において、
前記アドレス情報は、前記N次元の固定長配列に対応する領域において、連続する領域に格納された複数の前記特定データが格納された領域の先頭アドレスを示す先頭アドレス情報と、連続する領域に格納された複数の前記特定データごとに、前記特定データの数を示す情報を示すデータ数情報とを含む、
ことを特徴とする情報処理装置。
付記1において、
前記アクセス先変更部は、前記N次元の固定長配列に格納されているデータのそれぞれを前記1次元の固定長配列に対して格納した後、前記N次元の新たな固定長配列を生成し、生成した前記新たな固定長配列における前記N次元のうち、1次元目からN−1次元目のそれぞれに対応する領域に、2次元目からN次元目に対応する領域の先頭アドレスを示すデータを格納し、前記新たな固定長配列における前記N次元のうち、N次元目に対応する領域に、前記1次元の固定長配列に格納されたデータのそれぞれを格納し、前記新たな固定長配列に格納されたデータのそれぞれに対して順にアクセスが行われるように、前記オブジェクトコードを生成する、
ことを特徴とする情報処理装置。
ソースコードのコンパイルを実行してオブジェクトコードを生成する処理をコンピュータに実行させるコンパイラプログラムであって、
N次元の可変長配列に対する特定データの格納を行う命令が前記ソースコードに含まれている場合、前記N次元の可変長配列に代えて、N次元の固定長配列に対して前記特定データを格納するように、前記オブジェクトコードを生成し、
前記N次元の可変長配列に格納されたデータに対して順にアクセスを行う命令が前記ソースコードに含まれている場合、前記N次元の固定長配列に格納されているデータのそれぞれを1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とするコンパイラプログラム。
付記6において、さらに、
前記特定データの格納先のアドレスを示すアドレス情報を記憶部に記憶する、
処理をコンピュータに実行させ、
前記1次元の固定長配列に格納されたデータに対して順にアクセスが行われるようにオブジェクトコードを生成する処理では、前記アドレス情報が記憶された前記記憶部を参照し、前記N次元の固定長配列に格納されているデータのそれぞれの格納位置を特定し、特定した前記格納位置に格納されたデータのそれぞれを前記1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とするコンパイラプログラム。
ソースコードのコンパイルを実行してオブジェクトコードを生成するコンパイル方法であって、
N次元の可変長配列に対する特定データの格納を行う命令が前記ソースコードに含まれている場合、前記N次元の可変長配列に代えて、N次元の固定長配列に対して前記特定データを格納するように、前記オブジェクトコードを生成し、
前記N次元の可変長配列に格納されたデータに対して順にアクセスを行う命令が前記ソースコードに含まれている場合、前記N次元の固定長配列に格納されているデータのそれぞれを1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とするコンパイル方法。
付記8において、さらに、
前記特定データの格納先のアドレスを示すアドレス情報を記憶部に記憶し、
前記1次元の固定長配列に格納されたデータに対して順にアクセスが行われるようにオブジェクトコードを生成する工程では、前記アドレス情報が記憶された前記記憶部を参照し、前記N次元の固定長配列に格納されているデータのそれぞれの格納位置を特定し、特定した前記格納位置に格納されたデータのそれぞれを前記1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とするコンパイル方法。
11:コンパイラ 11a:解析部
11b:最適化部 11c:コード生成部
12:リンカ 130:情報格納領域
131:ソースコード 132:中間言語
133:オブジェクトコード 134:実行ファイル
Claims (7)
- ソースコードのコンパイルを実行してオブジェクトコードを生成する情報処理装置であって、
N(Nは2以上の整数)次元の可変長配列に対する特定データの格納を行う命令が前記ソースコードに含まれている場合、前記N次元の可変長配列に代えて、N次元の固定長配列に対して前記特定データを格納するように、前記オブジェクトコードを生成する格納先変更部と、
前記N次元の可変長配列に格納されたデータに対して順にアクセスを行う命令が前記ソースコードに含まれている場合、前記N次元の固定長配列に格納されているデータのそれぞれを1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成するアクセス先変更部と、を有する、
ことを特徴とする情報処理装置。 - 請求項1において、さらに、
前記特定データの格納先のアドレスを示すアドレス情報を記憶する記憶部と、を有し、
前記アクセス先変更部は、前記アドレス情報が記憶された前記記憶部を参照し、前記N次元の固定長配列に格納されているデータのそれぞれの格納位置を特定し、特定した前記格納位置に格納されたデータのそれぞれを前記1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とする情報処理装置。 - 請求項2において、
前記アクセス先変更部は、前記アドレス情報が記憶された前記記憶部を参照し、前記N次元の固定長配列に格納されているデータのデータ長の合計値を算出し、前記N次元の固定長配列に格納されているデータのそれぞれを格納する前に、前記1次元の固定長配列に対応する領域として、算出した前記合計値に対応する領域を確保するように、前記オブジェクトコードを生成する、
ことを特徴とする情報処理装置。 - 請求項2において、
前記アドレス情報は、前記N次元の固定長配列に対応する領域において、連続する領域に格納された複数の前記特定データが格納された領域の先頭アドレスを示す先頭アドレス情報と、連続する領域に格納された複数の前記特定データごとに、前記特定データの数を示す情報を示すデータ数情報とを含む、
ことを特徴とする情報処理装置。 - 請求項1において、
前記アクセス先変更部は、前記N次元の固定長配列に格納されているデータのそれぞれを前記1次元の固定長配列に対して格納した後、前記N次元の新たな固定長配列を生成し、生成した前記新たな固定長配列における前記N次元のうち、1次元目からN−1次元目のそれぞれに対応する領域に、2次元目からN次元目に対応する領域の先頭アドレスを示すデータを格納し、前記新たな固定長配列における前記N次元のうち、N次元目に対応する領域に、前記1次元の固定長配列に格納されたデータのそれぞれを格納し、前記新たな固定長配列に格納されたデータのそれぞれに対して順にアクセスが行われるように、前記オブジェクトコードを生成する、
ことを特徴とする情報処理装置。 - ソースコードのコンパイルを実行してオブジェクトコードを生成する処理をコンピュータに実行させるコンパイラプログラムであって、
N次元の可変長配列に対する特定データの格納を行う命令が前記ソースコードに含まれている場合、前記N次元の可変長配列に代えて、N次元の固定長配列に対して前記特定データを格納するように、前記オブジェクトコードを生成し、
前記N次元の可変長配列に格納されたデータに対して順にアクセスを行う命令が前記ソースコードに含まれている場合、前記N次元の固定長配列に格納されているデータのそれぞれを1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とするコンパイラプログラム。 - ソースコードのコンパイルを実行してオブジェクトコードを生成するコンパイル方法であって、
N次元の可変長配列に対する特定データの格納を行う命令が前記ソースコードに含まれている場合、前記N次元の可変長配列に代えて、N次元の固定長配列に対して前記特定データを格納するように、前記オブジェクトコードを生成し、
前記N次元の可変長配列に格納されたデータに対して順にアクセスを行う命令が前記ソースコードに含まれている場合、前記N次元の固定長配列に格納されているデータのそれぞれを1次元の固定長配列に連続して格納するように、前記オブジェクトコードを生成する、
ことを特徴とするコンパイル方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018116777A JP7060803B2 (ja) | 2018-06-20 | 2018-06-20 | 情報処理装置、コンパイラプログラム及びコンパイル方法 |
US16/421,534 US11231917B2 (en) | 2018-06-20 | 2019-05-24 | Information processing apparatus, computer-readable recording medium storing therein compiler program, and compiling method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018116777A JP7060803B2 (ja) | 2018-06-20 | 2018-06-20 | 情報処理装置、コンパイラプログラム及びコンパイル方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019219912A true JP2019219912A (ja) | 2019-12-26 |
JP7060803B2 JP7060803B2 (ja) | 2022-04-27 |
Family
ID=68981784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018116777A Active JP7060803B2 (ja) | 2018-06-20 | 2018-06-20 | 情報処理装置、コンパイラプログラム及びコンパイル方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11231917B2 (ja) |
JP (1) | JP7060803B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100620B (zh) * | 2020-09-04 | 2024-02-06 | 百度在线网络技术(北京)有限公司 | 代码安全检测方法、装置、设备和可读存储介质 |
US11748075B2 (en) | 2021-08-10 | 2023-09-05 | Bank Of America Corporation | Two-phase application development device |
US11403072B1 (en) * | 2021-08-10 | 2022-08-02 | Bank Of America Corporation | Mobile application development device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004021425A (ja) * | 2002-06-13 | 2004-01-22 | Hitachi Ltd | コンパイラにおけるメモリ配置方式 |
JP2010003031A (ja) * | 2008-06-19 | 2010-01-07 | Fujitsu Ltd | コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム |
US20130007721A1 (en) * | 2001-07-10 | 2013-01-03 | Micron Technology, Inc. | Dynamic arrays and overlays with bounds policies |
JP2018092383A (ja) * | 2016-12-05 | 2018-06-14 | 富士通株式会社 | コンパイルプログラム、コンパイル方法および情報処理装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586325A (en) * | 1993-12-10 | 1996-12-17 | Cray Research, Inc. | Method for the dynamic allocation of array sizes in a multiprocessor system |
US7127559B2 (en) * | 2001-07-10 | 2006-10-24 | Micron Technology, Inc. | Caching of dynamic arrays |
JP3992102B2 (ja) | 2003-06-04 | 2007-10-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体 |
US8161464B2 (en) * | 2006-04-11 | 2012-04-17 | International Business Machines Corporation | Compiling source code |
JP2007328692A (ja) | 2006-06-09 | 2007-12-20 | Canon Inc | 代数演算方法及びその装置、プログラム |
US8015556B2 (en) * | 2006-10-12 | 2011-09-06 | International Business Machines Corporation | Efficient method of data reshaping for multidimensional dynamic array objects in the presence of multiple object instantiations |
JP5224498B2 (ja) | 2007-02-28 | 2013-07-03 | 学校法人早稲田大学 | メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム |
CA2820230A1 (en) * | 2013-07-09 | 2015-01-09 | Ibm Canada Limited - Ibm Canada Limitee | Data splitting for multi-instantiated objects |
US9250878B1 (en) * | 2014-11-24 | 2016-02-02 | Red Hat, Inc. | Function attribute for dynamic stack allocation |
US10416967B2 (en) * | 2017-10-13 | 2019-09-17 | Internationa Business Machines Corporation | Method of optimizing vargs in object-oriented programming languages |
-
2018
- 2018-06-20 JP JP2018116777A patent/JP7060803B2/ja active Active
-
2019
- 2019-05-24 US US16/421,534 patent/US11231917B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130007721A1 (en) * | 2001-07-10 | 2013-01-03 | Micron Technology, Inc. | Dynamic arrays and overlays with bounds policies |
JP2004021425A (ja) * | 2002-06-13 | 2004-01-22 | Hitachi Ltd | コンパイラにおけるメモリ配置方式 |
JP2010003031A (ja) * | 2008-06-19 | 2010-01-07 | Fujitsu Ltd | コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム |
JP2018092383A (ja) * | 2016-12-05 | 2018-06-14 | 富士通株式会社 | コンパイルプログラム、コンパイル方法および情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP7060803B2 (ja) | 2022-04-27 |
US20190391795A1 (en) | 2019-12-26 |
US11231917B2 (en) | 2022-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442713B2 (en) | Methods and apparatus to improve optimizing loops with predictable recurring memory reads | |
Hartono et al. | Annotation-based empirical performance tuning using Orio | |
JP7060803B2 (ja) | 情報処理装置、コンパイラプログラム及びコンパイル方法 | |
US8352686B2 (en) | Method and system for data prefetching for loops based on linear induction expressions | |
US9977759B2 (en) | Parallel computing apparatus, compiling apparatus, and parallel processing method for enabling access to data in stack area of thread by another thread | |
US9430203B2 (en) | Information processing apparatus and compilation method | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
JP6665720B2 (ja) | 情報処理装置、コンパイルプログラム、コンパイル方法、およびキャッシュ制御方法 | |
US11733981B2 (en) | Methods, systems, articles of manufacture and apparatus to automatically optimize software programs | |
Liang et al. | Romou: Rapidly generate high-performance tensor kernels for mobile gpus | |
Hoshino et al. | An openacc extension for data layout transformation | |
US10095494B2 (en) | Systems and methods for footprint based scheduling | |
Shei et al. | MATLAB parallelization through scalarization | |
Meister et al. | Productivity via automatic code generation for pgas platforms with the r-stream compiler | |
Sharma et al. | User-specified and automatic data layout selection for portable performance | |
Liu et al. | Improving the performance of OpenMP by array privatization | |
Eimouri et al. | Using field access frequency to optimize layout of objects in the JVM | |
Baloukas et al. | Mapping embedded applications on MPSoCs: the MNEMEE approach | |
JP7035751B2 (ja) | コード変換装置、コード変換方法、及びコード変換プログラム | |
Hornung et al. | A case for improved C++ compiler support to enable performance portability in large physics simulation codes | |
JP2009265708A (ja) | コンパイラ及びそのコード生成方法 | |
Wende | C++ data layout abstractions through proxy types | |
US11734003B2 (en) | Non-transitory computer-readable recording medium, compilation method, and compiler device | |
JP6898556B2 (ja) | 情報処理装置、コンパイル方法及びコンパイルプログラム | |
US20220405110A1 (en) | Non-transitory computer-readable recording medium and compilation method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210310 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220224 |
|
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: 20220315 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220328 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7060803 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |