JP6810380B2 - ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム - Google Patents
ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム Download PDFInfo
- Publication number
- JP6810380B2 JP6810380B2 JP2016198686A JP2016198686A JP6810380B2 JP 6810380 B2 JP6810380 B2 JP 6810380B2 JP 2016198686 A JP2016198686 A JP 2016198686A JP 2016198686 A JP2016198686 A JP 2016198686A JP 6810380 B2 JP6810380 B2 JP 6810380B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- expansion
- program
- source program
- expanded
- 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 33
- 238000004364 calculation method Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 19
- 230000010365 information processing Effects 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
______________________
for ( i = 0 ; i < n ; i++ ) {
a[i] = b[i] * c[i] ;
}
______________________
ここで、アスタリスク記号“ * ”は乗算を表わす。
このプログラムについて、ループアンローリングをした結果は、次のようになる。
______________________
for ( i = 0 ; i < n ; i+=2 ) {
a[i] = b[i] * c[i] ;
a[i+1] = b[i+1] * c[i+1] ;
}
______________________
このループアンローリングでは、配列bと配列c の乗算結果を配列aに代入する処理を、ループ内で2要素分処理することによって、ループ回数を半減させている。
[構成の説明]
図1は、第1の実施形態に係るソースプログラム変換システムを示すブロック図である。ループ展開装置10は、記憶装置20に格納されたソースプログラム21に含まれたループ内のループアンロール可能なループに関してループアンロールを実施し、ループアンロールしたプログラムを展開済みプログラム22として記憶装置20に格納する装置である。記憶装置20は、ループ展開装置10に内蔵される場合もある。
・プログラム入力部11
・展開可否判定部12
・展開パラメタ決定部13
・展開プログラム作成部14
プログラム入力部11、展開可否判定部12、展開パラメタ決定部13、展開プログラム作成部14は、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサーによって実現してもよいし、一部或いは全部の構成要素を電子回路で形成してもよい。
次に、展開パラメタ決定部13及び展開プログラム作成部14の動作を説明する。
なお、本実施形態では、ループ1回転のコストを演算の回数としたが、ループ内の配列データへのメモリアクセス回数(ロード回数やストア回数)など、他の要因を用いてコストを決定してもよい。ループ1回転のコストの決定方法は、特に限定するものではない。例えば、ループ内の演算の回数とメモリアクセス回数を組み合わせてもよい。
[付記1]
変換対象とするソースプログラムを受け付けるプログラム入力部と、
前記プログラム入力部に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定部と、
前記展開可否判定部が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定部と、
前記展開パラメタ決定部が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成部と、
を含み成るソースプログラム変換システム。
上記付記1に記載のソースプログラム変換システムにおいて、
前記プログラム入力部は、ベクトル計算機で用いるソースプログラムを受け付け、
前記展開プログラム作成部は、前記展開パラメタ決定部によって決定された、ループ展開段数とループ展開幅に基づいて、前記ベクトル計算機向けに展開したループを有するプログラムを生成処理して、前記展開済みプログラムを出力する
請求項1記載のソースプログラム変換システム。
上記付記1又は2に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの中の展開するループの中の、計算回数 および メモリアクセス回数 の少なくとも一方に基づいて、ループ処理コスト(C)を算出し、所定の閾値(Cmin)を用いて、Cmin ≦ C×N を満たす最小の整数Nを、ループ展開段数に決定するソースプログラム変換システム。
上記付記1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの展開するループのループ回転数を計算し、決定したループ展開段数を参照して、ループ展開幅に、(ソースプログラムのループ回転数÷ループ展開段数)以下となる正整数を設定するソースプログラム変換システム。
上記付記1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、ループ展開幅に、展開済みプログラムを実行するベクトル計算機のベクトル長を設定するソースプログラム変換システム。
上記付記1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、前記ソースプログラムを実行させるベクトル計算機のベクトル長 又は 機種 が前記ソースコード中に記載されているか判別し、ベクトル長 又は 機種 が記載されていた場合、該記載されていたベクトル長 又は 機種から定まるベクトル長 を識別して、ループ展開幅に識別したベクトル長を設定するソースプログラム変換システム。
上記付記1から6の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開プログラム作成部は、外側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、前記ループ展開幅と前記ループ展開段数の積ずつ増加し、ソースプログラムのループの回転数と前記積の値の差以下であるまでループし、内側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、ソースプログラムのループのカウンタ変数のループ1回転ごとの増加値ずつ増加し、前記ループ展開幅より小さい間ループするような、2重ループを作成し、
当該2重ループの中に、ソースプログラムのループ中の計算式を、前記ループ展開段数分展開する
ソースプログラム変換システム。
変換対象とするソースプログラムを受け付け、
前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定し、
展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数を導出処理すると共に、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理し、
導出したループ展開段数とループ展開幅に基づいて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する
情報処理システムによるソースプログラム変換方法。
情報処理リソースを、
変換対象とするソースプログラムを受け付けるプログラム入力手段と、
前記プログラム入力手段に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定手段と、
前記展開可否判定手段が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定手段と、
前記展開パラメタ決定手段が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成手段、
として動作させるソースプログラム変換プログラム。
上記付記9に記載のソースプログラム変換プログラムであって、前記情報処理リソースは、プロセッサーとメモリーとバスの組み合わせを用いるソースプログラム変換プログラム。
上記付記9又は10に記載のソースプログラム変換プログラムをコンピュータ読取可能に非一時的に保持する記録媒体。
11 プログラム入力部
12 展開可否判定部
13 展開パラメタ決定部
14 展開プログラム作成部
20 記憶装置
21 ソースプログラム
22 展開済みプログラム(最適化ソースプログラム)
Claims (9)
- 変換対象とするソースプログラムを受け付けるプログラム入力部と、
前記プログラム入力部に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定部と、
前記展開可否判定部が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定部と、
前記展開パラメタ決定部が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成部と、
を含み成るソースプログラム変換システム。 - 前記請求項1に記載のソースプログラム変換システムにおいて、
前記プログラム入力部は、ベクトル計算機で用いるソースプログラムを受け付け、
前記展開プログラム作成部は、前記展開パラメタ決定部によって決定された、ループ展開段数とループ展開幅に基づいて、前記ベクトル計算機向けに展開したループを有するプログラムを生成処理して、前記展開済みプログラムを出力する
請求項1記載のソースプログラム変換システム。 - 前記請求項1又は2に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの中の展開するループの中の、計算回数 および メモリアクセス回数 の少なくとも一方に基づいて、ループ処理コスト(C)を算出し、所定の閾値(Cmin)を用いて、Cmin ≦ C×N を満たす最小の整数Nを、ループ展開段数に決定するソースプログラム変換システム。 - 前記請求項1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの展開するループのループ回転数を計算し、決定したループ展開段数を参照して、ループ展開幅に、(ソースプログラムのループ回転数÷ループ展開段数)以下となる正整数を設定するソースプログラム変換システム。 - 前記請求項1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、ループ展開幅に、展開済みプログラムを実行するベクトル計算機のベクトル長を設定するソースプログラム変換システム。 - 前記請求項1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、前記ソースプログラムを実行させるベクトル計算機のベクトル長 又は 機種 が前記ソースコード中に記載されているか判別し、ベクトル長 又は 機種 が記載されていた場合、該記載されていたベクトル長 又は 機種から定まるベクトル長 を識別して、ループ展開幅に識別したベクトル長を設定するソースプログラム変換システム。 - 前記請求項1から6の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開プログラム作成部は、外側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、前記ループ展開幅と前記ループ展開段数の積ずつ増加し、ソースプログラムのループの回転数と前記積の値の差以下であるまでループし、内側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、ソースプログラムのループのカウンタ変数のループ1回転ごとの増加値ずつ増加し、前記ループ展開幅より小さい間ループするような、2重ループを作成し、
当該2重ループの中に、ソースプログラムのループ中の計算式を、前記ループ展開段数分展開する
ソースプログラム変換システム。 - 変換対象とするソースプログラムを受け付け、
前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定し、
展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数を導出処理すると共に、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理し、
導出したループ展開段数とループ展開幅に基づいて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する
情報処理システムによるソースプログラム変換方法。 - 情報処理リソースを、
変換対象とするソースプログラムを受け付けるプログラム入力手段と、
前記プログラム入力手段に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定手段と、
前記展開可否判定手段が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定手段と、
前記展開パラメタ決定手段が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成手段、
として動作させるソースプログラム変換プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016198686A JP6810380B2 (ja) | 2016-10-07 | 2016-10-07 | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016198686A JP6810380B2 (ja) | 2016-10-07 | 2016-10-07 | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2018060432A JP2018060432A (ja) | 2018-04-12 |
| JP6810380B2 true JP6810380B2 (ja) | 2021-01-06 |
Family
ID=61909986
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016198686A Active JP6810380B2 (ja) | 2016-10-07 | 2016-10-07 | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6810380B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN121350313B (zh) * | 2025-12-18 | 2026-04-17 | 杭州悦数科技有限公司 | 一种图数据库列表展开操作的优化方法 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04344535A (ja) * | 1991-05-22 | 1992-12-01 | Nec Software Ltd | ループの展開装置 |
| JPH04358264A (ja) * | 1991-06-04 | 1992-12-11 | Nec Corp | ベクトル化処理方式 |
| JP4077252B2 (ja) * | 2002-06-28 | 2008-04-16 | 富士通株式会社 | コンパイラプログラムおよびコンパイル処理方法 |
| US9710245B2 (en) * | 2014-04-04 | 2017-07-18 | Qualcomm Incorporated | Memory reference metadata for compiler optimization |
-
2016
- 2016-10-07 JP JP2016198686A patent/JP6810380B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2018060432A (ja) | 2018-04-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20140306964A1 (en) | Incremental compiling of a declarative program | |
| US20200183681A1 (en) | Method for a software development system | |
| JP2010134614A (ja) | 並列化処理方法、システム、及びプログラム | |
| JP2007323573A (ja) | 機能テスト・スクリプト生成装置 | |
| US9430203B2 (en) | Information processing apparatus and compilation method | |
| Wahler et al. | FASA: A software architecture and runtime framework for flexible distributed automation systems | |
| KR20240167036A (ko) | 머신 러닝 파이프라인 생성 및 관리 | |
| US9218317B2 (en) | Parallelization method, system, and program | |
| Serbinowska et al. | Behaverify: Verifying temporal logic specifications for behavior trees | |
| CN107608672B (zh) | 一种ui模块管理器、ui模块管理方法和系统 | |
| JP6810380B2 (ja) | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム | |
| JP2011186991A (ja) | 常微分方程式を解くための方法、プログラム及びシステム | |
| Abdulla | Regular model checking: Evolution and perspectives | |
| Vinkhuijzen et al. | Symbolic model checking with sentential decision diagrams | |
| JP5277825B2 (ja) | プログラム難読化装置及び難読化プログラム | |
| Wang et al. | Gridfor: A domain specific language for parallel grid-based applications | |
| US10289447B1 (en) | Parallel process scheduling for efficient data access | |
| Pham et al. | Unfolding-based dynamic partial order reduction of asynchronous distributed programs | |
| JP2015035174A (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
| Oleynik et al. | Recent advances in Periscope for performance analysis and tuning | |
| Guller | Interactive Data Analysis with Spark Shell | |
| US10572233B2 (en) | Vectorization device, vectorization method, and recording medium on which vectorization program is stored | |
| Sun et al. | Model-based testing of web service with EFSM | |
| WO2018150588A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
| Toda et al. | Parallel, distributed, and differential processing system for human activity sensing flows |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190905 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200625 |
|
| 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: 20201111 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20201124 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6810380 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |