JP6555005B2 - 最適化装置、方法およびプログラム - Google Patents
最適化装置、方法およびプログラム Download PDFInfo
- Publication number
- JP6555005B2 JP6555005B2 JP2015163396A JP2015163396A JP6555005B2 JP 6555005 B2 JP6555005 B2 JP 6555005B2 JP 2015163396 A JP2015163396 A JP 2015163396A JP 2015163396 A JP2015163396 A JP 2015163396A JP 6555005 B2 JP6555005 B2 JP 6555005B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- instruction
- repetitions
- fusion
- loop structure
- 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の実施の形態としての最適化装置1の機能ブロック構成を図1に示す。図1において、最適化装置1は、ループ解析部11と、ループ融合部12と、命令生成部13と、無効化情報生成部14とを備える。
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
なお、図10では、ループの開始、終了処理といったループの繰返し制御のための命令列、マスクを設定する命令列、および、ループ融合の有無に関わらず共通であるアドレス計算処理のために生成される命令列の図示を省略している。
<ループ融合を行わない場合>
命令列901の命令コストは、次式(1)で表される。
(LD+LD+ADD+ST)×(M+N)・・・(1)
なお、式(1)において、「LD」、「ADD」および「ST」は、それぞれ、その名称の命令に係るコストを表すものとする。
<ループ融合を行う場合>
命令列902の命令コストは、次式(2)で表される。
(LDU+LDL+OR+LDU+LDL+OR+SADD+STU+STL)×M・・・(2)
なお、式(2)において、「LDU」、「LDL」、「OR」、「SADD」、「STU」および「STL」は、それぞれ、その名称の命令に係るコストを表すものとする。
(LD×2+ST)×(N−M)+ADD×N−OR×M×2・・・(3)。
ADD−OR×2・・・(4)
なお、ループ中の演算が加算でない場合、式(4)における第1項を、他の演算命令のコストに置き換えればよい。いずれにしても、式(4)における第1項の大きさは、ループ中で扱われるデータの種類によっても変わるが、浮動小数点演算のように演算に必要なクロック数が大きい場合、第2項より大きくなると考えられる。したがって、式(4)で表される命令コスト差は、0より大きくなる。つまり、本実施の形態のループ融合によって、命令コストの削減が実現されたことになる。
その結果、本実施の形態は、マスク制御機能付きのSIMD命令をもつプロセッサに実行させるオブジェクトプログラムにおいて、ループ構造により処理される命令コストをより削減することができ、プログラムの高速化に寄与する。
11、21 ループ解析部
12 ループ融合部
13、23 命令生成部
14、24 無効化情報生成部
91、92、93 ループ構造
901、902 命令列
1001 CPU
1002 メモリ
1003 出力装置
1004 入力装置
Claims (6)
- ソースプログラムに含まれる任意の複数のループ構造が1つのループ構造に融合可能であるか否かを判断するループ解析部と、
前記融合可能と判断された複数のループ構造を、前記複数のループ構造にそれぞれ指定された繰返し数のうち最大値を繰返し数(融合後繰返し数)とする1つのループ構造に融合するループ融合部と、
前記融合されたループ構造において、融合前の前記複数のループ構造にそれぞれ含まれていた処理に基づく命令を生成する命令生成部と、
前記融合されたループ構造において、融合前の前記複数のループ構造のうち繰返し数として前記融合後繰返し数より小さい値が指定されていたループ構造に含まれていた処理を、その時点までの繰返し数およびそのループ構造に指定されていた繰返し数に基づいて無効化する無効化情報を生成する無効化情報生成部と、
を備えた最適化装置。 - 前記命令生成部は、融合前の前記複数のループ構造にそれぞれに含まれていた処理に基づく前記命令として、SIMD(single instruction multiple data)命令を生成し、
前記無効化情報生成部は、前記無効化情報として、前記SIMD命令の演算対象を制御するマスクを設定する命令を生成することを特徴とする請求項1に記載の最適化装置。 - ソースプログラムに含まれる任意の複数のループ構造が1つのループ構造に融合可能であるか否かを判断し、
前記融合可能と判断された複数のループ構造を、前記複数のループ構造にそれぞれ指定された繰返し数のうち最大値を繰返し数(融合後繰返し数)とする1つのループ構造に融合し、
前記融合されたループ構造において、融合前の前記複数のループ構造にそれぞれ含まれていた処理に基づく命令を生成し、
前記融合されたループ構造において、融合前の前記複数のループ構造のうち繰返し数として前記融合後繰返し数より小さい値が指定されていたループ構造に含まれていた処理を、その時点までの繰返し数およびそのループ構造に指定されていた繰返し数に基づいて無効化する無効化情報を生成する方法。 - 前記融合されたループ構造において、融合前の前記複数のループ構造にそれぞれに含まれていた処理に基づく前記命令として、SIMD命令を生成し、
前記融合されたループ構造において、前記無効化情報として、前記SIMD命令の演算対象を制御するマスクを設定する命令を生成することを特徴とする請求項3に記載の方法。 - ソースプログラムに含まれる任意の複数のループ構造が1つのループ構造に融合可能であるか否かを判断するループ解析ステップと、
前記融合可能と判断された複数のループ構造を、前記複数のループ構造にそれぞれ指定された繰返し数のうち最大値を繰返し数(融合後繰返し数)とする1つのループ構造に融合するループ融合ステップと、
前記融合されたループ構造において、融合前の前記複数のループ構造にそれぞれ含まれていた処理に基づく命令を生成する命令生成ステップと、
前記融合されたループ構造において、融合前の前記複数のループ構造のうち繰返し数として前記融合後繰返し数より小さい値が指定されていたループ構造に含まれていた処理を、その時点までの繰返し数およびそのループ構造に指定されていた繰返し数に基づいて無効化する無効化情報を生成する無効化情報生成ステップと、
をコンピュータ装置に実行させるプログラム。 - 前記命令生成ステップにおいて、融合前の前記複数のループ構造にそれぞれに含まれていた処理に基づく前記命令として、SIMD(single instruction multiple data)命令を生成し、
前記無効化情報生成ステップにおいて、前記無効化情報として、前記SIMD命令の演算対象を制御するマスクを設定する命令を生成することを特徴とする請求項5に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015163396A JP6555005B2 (ja) | 2015-08-21 | 2015-08-21 | 最適化装置、方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015163396A JP6555005B2 (ja) | 2015-08-21 | 2015-08-21 | 最適化装置、方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017041162A JP2017041162A (ja) | 2017-02-23 |
JP6555005B2 true JP6555005B2 (ja) | 2019-08-07 |
Family
ID=58206620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015163396A Active JP6555005B2 (ja) | 2015-08-21 | 2015-08-21 | 最適化装置、方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6555005B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111325243B (zh) * | 2020-02-03 | 2023-06-16 | 天津大学 | 一种基于区域注意力学习机制的视觉关系检测方法 |
-
2015
- 2015-08-21 JP JP2015163396A patent/JP6555005B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2017041162A (ja) | 2017-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9383999B2 (en) | Conditional compare instruction | |
JP2004038225A (ja) | コンパイラプログラムおよびコンパイル処理方法 | |
JP6666554B2 (ja) | 情報処理装置、変換プログラム、及び変換方法 | |
KR20180035211A (ko) | 벡터 산술 명령 | |
JP6555005B2 (ja) | 最適化装置、方法およびプログラム | |
JP4771079B2 (ja) | Vliw型プロセッサ | |
JP2018521422A (ja) | ベクトル長クエリ命令 | |
KR20200094771A (ko) | 벡터 자리올림이 있는 가산 명령 | |
JP2020527797A (ja) | データ処理装置におけるベクトル・インタリーブ | |
JP6547466B2 (ja) | コンパイラ装置、コンパイル方法およびコンパイラプログラム | |
JP7035751B2 (ja) | コード変換装置、コード変換方法、及びコード変換プログラム | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
WO2020116025A1 (ja) | コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体 | |
JP6790646B2 (ja) | コンパイル装置、コンパイル方法、および、コンパイルプログラム | |
KR20150105209A (ko) | 데이터 처리장치 및 벡터 스캔 연산의 수행방법 | |
JP6974722B2 (ja) | コンパイラプログラム、コンパイル方法及びコンパイルする情報処理装置 | |
JP2013182420A (ja) | ベクトル処理装置およびベクトル処理方法 | |
US10572233B2 (en) | Vectorization device, vectorization method, and recording medium on which vectorization program is stored | |
US20230342117A1 (en) | Program generation apparatus, program generation method and program | |
JP2010140344A (ja) | コンパイルシステム及びコンパイル方法 | |
Ueda | New developments in FORM | |
Singh et al. | Optimization Techniques in C â [euro]" A Survey | |
JP5304307B2 (ja) | ソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法 | |
JP2009211491A (ja) | プログラム作成方法およびその装置 | |
JP2003256214A (ja) | 配列拡張によるループ変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180713 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190522 |
|
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: 20190611 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190624 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6555005 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |