JP7302728B2 - ループアンローリング処理装置、方法およびプログラム - Google Patents
ループアンローリング処理装置、方法およびプログラム Download PDFInfo
- Publication number
- JP7302728B2 JP7302728B2 JP2022500197A JP2022500197A JP7302728B2 JP 7302728 B2 JP7302728 B2 JP 7302728B2 JP 2022500197 A JP2022500197 A JP 2022500197A JP 2022500197 A JP2022500197 A JP 2022500197A JP 7302728 B2 JP7302728 B2 JP 7302728B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- processing
- arithmetic expression
- stages
- unroll
- 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 79
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 230000014509 gene expression Effects 0.000 claims description 207
- 238000003672 processing method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 28
- 238000003860 storage Methods 0.000 description 5
- 230000010365 information processing Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Description
= B[(4*j+1)/2] + C[4*j+1]の計算を行う際には、B[(4*j+1)/2]の値を読み込む必要はない。
図1は、本発明の第1の実施形態のループアンローリング処理装置の例を表すブロック図である。第1の実施形態のループアンローリング処理装置1は、入力部2と、特定部3と、生成部4と、置き換え部5とを備える。
A[i+0]
= B[i+0] + C[i+0];
A[i+1]
= B[i+1] + C[i+1];
A[i+2]
= B[i+2] + C[i+2];
A[i+3]
= B[i+3] + C[i+3];
A[i+4]
= B[i+4] + C[i+4];
i+=5
}
第1の実施形態では、元のループ処理のループ回数を指定されたアンロール段数で除算した際の余りと、指定されたアンロール段数との和をアンロール段数とするループ1回分の処理を行うことを表す演算式(図3に示す例では、演算式X2)を含む演算式を生成する。
2 入力部
3 特定部
4 生成部
5 置き換え部
Claims (4)
- 入力されたソースプログラムから、ループ処理を表す演算式の記述箇所を特定する特定部と、
前記ループ処理のループ回数をNとし、指定されたアンロール段数の下限をLとし、指定されたアンロール段数の上限をMとし、NをLで除算した際の商をQとし、NをLで除算した際の余りをRとしたときに、
R-Q*(M-L)>0である場合に、前記ループ処理におけるループ1回分の処理をR-Q*(M-L)回行うこと、および、その後に、アンロール段数をMとしてループ処理を行うことを示す演算式と、
R-Q*(M-L)>0でない場合に、アンロール段数をMとして、Rを(M-L)で除算した際の商の回数のループ処理を行うこと、その後、Rを(M-L)で除算した際の余りが0以外である場合に当該余りとLとの和をアンロール段数とするループ1回分の処理を行うこと、および、その後に、アンロール段数をLとしてループ処理を行うことを示す演算式と
を含む演算式を生成する生成部と、
前記特定部によって特定された前記記述箇所の演算式を、前記生成部によって生成された演算式に置き換える置き換え部とを備える
ことを特徴とするループアンローリング処理装置。 - 前記生成部は、
入力された前記ソースプログラムに記述された所定の書式によって、アンロール段数の下限およびアンロール段数の上限の指定を受け付ける
請求項1に記載のループアンローリング処理装置。 - 入力されたソースプログラムから、ループ処理を表す演算式の記述箇所を特定し、
前記ループ処理のループ回数をNとし、指定されたアンロール段数の下限をLとし、指定されたアンロール段数の上限をMとし、NをLで除算した際の商をQとし、NをLで除算した際の余りをRとしたときに、
R-Q*(M-L)>0である場合に、前記ループ処理におけるループ1回分の処理をR-Q*(M-L)回行うこと、および、その後に、アンロール段数をMとしてループ処理を行うことを示す演算式と、
R-Q*(M-L)>0でない場合に、アンロール段数をMとして、Rを(M-L)で除算した際の商の回数のループ処理を行うこと、その後、Rを(M-L)で除算した際の余りが0以外である場合に当該余りとLとの和をアンロール段数とするループ1回分の処理を行うこと、および、その後に、アンロール段数をLとしてループ処理を行うことを示す演算式と
を含む演算式を生成し、
前記記述箇所の演算式を、生成した演算式に置き換える
ことを特徴とするループアンローリング処理方法。 - コンピュータに、
入力されたソースプログラムから、ループ処理を表す演算式の記述箇所を特定する特定処理、
前記ループ処理のループ回数をNとし、指定されたアンロール段数の下限をLとし、指定されたアンロール段数の上限をMとし、NをLで除算した際の商をQとし、NをLで除算した際の余りをRとしたときに、
R-Q*(M-L)>0である場合に、前記ループ処理におけるループ1回分の処理をR-Q*(M-L)回行うこと、および、その後に、アンロール段数をMとしてループ処理を行うことを示す演算式と、
R-Q*(M-L)>0でない場合に、アンロール段数をMとして、Rを(M-L)で除算した際の商の回数のループ処理を行うこと、その後、Rを(M-L)で除算した際の余りが0以外である場合に当該余りとLとの和をアンロール段数とするループ1回分の処理を行うこと、および、その後に、アンロール段数をLとしてループ処理を行うことを示す演算式と
を含む演算式を生成する生成処理、および、
前記特定処理で特定された前記記述箇所の演算式を、前記生成処理で生成された演算式に置き換える置き換え処理
を実行させるためのループアンローリング処理プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/005891 WO2021161532A1 (ja) | 2020-02-14 | 2020-02-14 | ループアンローリング処理装置、方法およびプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JPWO2021161532A1 JPWO2021161532A1 (ja) | 2021-08-19 |
JPWO2021161532A5 JPWO2021161532A5 (ja) | 2022-08-12 |
JP7302728B2 true JP7302728B2 (ja) | 2023-07-04 |
Family
ID=77293020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022500197A Active JP7302728B2 (ja) | 2020-02-14 | 2020-02-14 | ループアンローリング処理装置、方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230161590A1 (ja) |
JP (1) | JP7302728B2 (ja) |
WO (1) | WO2021161532A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017041085A (ja) | 2015-08-19 | 2017-02-23 | 株式会社東芝 | プログラム仕様推定装置、推定方法、および推定プログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04344535A (ja) * | 1991-05-22 | 1992-12-01 | Nec Software Ltd | ループの展開装置 |
US6035125A (en) * | 1997-07-25 | 2000-03-07 | International Business Machines Corporation | Method and system for generating compact code for the loop unrolling transformation |
US20060048122A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Method, system and computer program product for hierarchical loop optimization of machine executable code |
US9038042B2 (en) * | 2012-06-29 | 2015-05-19 | Analog Devices, Inc. | Staged loop instructions |
-
2020
- 2020-02-14 JP JP2022500197A patent/JP7302728B2/ja active Active
- 2020-02-14 US US17/795,952 patent/US20230161590A1/en active Pending
- 2020-02-14 WO PCT/JP2020/005891 patent/WO2021161532A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017041085A (ja) | 2015-08-19 | 2017-02-23 | 株式会社東芝 | プログラム仕様推定装置、推定方法、および推定プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20230161590A1 (en) | 2023-05-25 |
JPWO2021161532A1 (ja) | 2021-08-19 |
WO2021161532A1 (ja) | 2021-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9898266B2 (en) | Loop vectorization methods and apparatus | |
US8825615B2 (en) | Simplifying implementation of custom atomic transactions in a programming environment | |
JP2009104422A (ja) | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 | |
US11630986B2 (en) | Graph conversion method | |
JPS61107431A (ja) | 演算装置 | |
JP6666554B2 (ja) | 情報処理装置、変換プログラム、及び変換方法 | |
JP4026940B2 (ja) | プログラム変換装置 | |
JP7302728B2 (ja) | ループアンローリング処理装置、方法およびプログラム | |
JP7302727B2 (ja) | ループアンローリング処理装置、方法およびプログラム | |
JP4677172B2 (ja) | レジスタあたり複数の符号付き独立データ要素の処理を可能にする装置、方法、およびコンパイラ | |
JP2021192187A (ja) | 出現頻度算出プログラム、グラフィックス プロセッシング ユニット、情報処理装置、及び出現頻度算出方法 | |
CN108389153A (zh) | 一种视图加载的方法及终端设备 | |
JP2000353097A (ja) | 低密回の干渉グラフを生成する方法および装置 | |
KR20120052751A (ko) | 명령어 오퍼랜드 변경 장치 및 방법 | |
US7257807B2 (en) | Method for optimizing execution time of parallel processor programs | |
JP5648559B2 (ja) | 帳票出力装置、帳票出力方法および帳票出力プログラム | |
JP7447529B2 (ja) | 情報処理装置、情報処理方法、および、プログラム | |
JP2007018313A (ja) | 回路設計プログラム、回路設計装置、回路設計方法 | |
JP6627630B2 (ja) | コンパイル方法、コンパイルプログラム及び情報処理装置 | |
WO2023221626A1 (zh) | 一种内存分配的方法和装置 | |
CN111326216B (zh) | 一种针对大数据基因测序文件的快速划分方法 | |
JPWO2020066375A1 (ja) | 情報処理装置、情報処理方法、プログラム | |
CN113743598A (zh) | 一种ai芯片的运行方式的确定方法和装置 | |
JP2023004763A (ja) | プログラム変換装置、プログラム変換方法およびプログラム | |
JP2016177652A (ja) | コンパイラプログラム、システム、方法、及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220616 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220616 |
|
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: 20230523 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230605 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7302728 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |