JP3695798B2 - コンピュータシステムおよびコード生成最適化制御方法 - Google Patents
コンピュータシステムおよびコード生成最適化制御方法 Download PDFInfo
- Publication number
- JP3695798B2 JP3695798B2 JP21714495A JP21714495A JP3695798B2 JP 3695798 B2 JP3695798 B2 JP 3695798B2 JP 21714495 A JP21714495 A JP 21714495A JP 21714495 A JP21714495 A JP 21714495A JP 3695798 B2 JP3695798 B2 JP 3695798B2
- Authority
- JP
- Japan
- Prior art keywords
- array
- optimization
- shape
- loop
- description
- 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.)
- Expired - Fee Related
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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の属する技術分野】
本発明は、JIS X 3001により規定されたFORTRAN 90{ANSI(American National Standards of Institute)ではX3.198、因みにISO/IEC 1539:1991 もある}のような新たな言語仕様として追加された配列記述に対して、より最適なコード生成を促進するための配列記述の最適化制御装置および制御方法に関する。通常、ベクトルプロセッサを有していないマシン、例えば、コンピュータシステムにおいては、上記の配列記述は、ソースプログラム(原始プログラム)等の入力としてのテキスト(通常、ソーステキストとよばれる)をオブジェクトプログラム(機械語のプログラム)に変換するためのコンパイラの内部で一つまたは複数のループに展開される。オブジェクトプログラムにおけるループの部分は実行時間の比重が高いため、配列記述に関係する部分のコードを最適な状態に生成することは、実行時間の短縮に大きく貢献することになる。本発明は、種々の分野にわたって広汎に利用するために確立すべき言語仕様として新たに追加された配列記述に対しても、実行時間の短縮を実現するための一方策について言及するものである。
【0002】
さらに、本発明は、上記のFORTRAN 90に限らず、配列記述が可能な言語仕様をもつ言語全般に対しても有効であることがわかっており、本発明の最適化制御装置および制御方法の有用性を示唆している。
【0003】
【従来の技術】
下記の数1の式においては、テキストの配列を操作する配列代入文等の複数の文(式)からなる従来の配列記述の一例が示されている。例えば、FORTRAN 90から新たに言語仕様として追加された配列記述では、以下の数1の右側部分に示すように、配列に対する演算や代入操作をDO文等のループ制御文を使用せずに記述することができる。
【0004】
【数1】
【0005】
前述したように、配列記述はコンパイラ内部でループに変換して実行する。このときに、配列記述からループへの変換を一文ずつ行うと実行性能が悪いため、通常、ループ融合とよばれる最適化制御を実施する。すなわち、下記の数2の右側部分に示すように、同じループにより実行可能な配列記述(数2の左側部分)をまとめることによって特定の配列記述の部分を同じループで実行するように変換することができる。
【0006】
【数2】
【0007】
しかしながら、従来の最適化制御の手法では、下記の数3の式に示すように、形状を表現する添字式が異なっている配列記述に関しては、配列の形状が一致していないとみなされるため、ループ融合を行うことができなかった。
【0008】
【数3】
【0009】
【発明が解決しようとする課題】
上記のとおり、従来の最適化制御の手法では、配列記述においてループ融合を可能にするためには、配列の形状が完全に一致している必要がある。すなわち、従来の最適化制御の手法では、前述の数2に示したように、配列の形状が完全に一致することが判定可能であるものしかループ融合をすることができなかった。すなわち、従来の手法では、ループの形状が実行時に確定し、形状が異なる計算式等により最適なコード生成が求められている場合は、ループ融合を実施することができなかった。
【0010】
また一方で、従来はオプションによって最適化レベルを制御しているが、最適化で必要とする翻訳資源は入力となるソースの複雑さに依存することが多いのに、その情報をコンパイラの最適化レベルの制御に使っていないため翻訳資源を有効に使っていない場合があった。
本発明は、上記問題点に鑑みてなされたものであり、配列記述内の式を複雑にすることなく最適のループ制御を行うことにより、従来のループ融合処理では形状の一致が判定できなかった場合のループ融合処理の問題を解決することが可能な配列記述の最適化制御装置および制御方法を提供することを第1の目的とするものである。
【0011】
さらに、本発明は、最適化レベルを比較的高く設定した場合に、ループ融合処理を含む配列記述のループ展開に依存する実行時間を従来よりも短縮することが可能な配列記述の最適化制御装置および制御方法を提供すること第2の目的とするものである。
【0012】
【課題を解決するための手段】
図1は、本発明の原理構成を示すブロック図である。
図1に示すような本発明の配列記述の最適化制御装置においては、上記問題点を解決するために、入力となるテキスト1を読み込み、このテキスト1の配列を操作する文からなる複数の配列記述に対して最適なコード生成を行う場合に、予め定められた最適化のレベル、複数の配列記述の配列の次元数、および各次元の配列数に基づき、複数の配列記述に関する最適化実施範囲を判定する最適化実施範囲判定手段2を備えている。この最適化実施範囲判定手段2により判定された最適化実施範囲内で最適なコード8を出力することが可能になる。この場合、好ましくは、最適化のレベルは最適化レベル情報保持部3に保持されており、複数の配列記述の配列の次元数、および各次元の配列数は、次元数/配列数情報保持部4に保持されている。
【0013】
さらに、好ましくは、図1に示すように、本発明の配列記述の最適化制御装置においては、上記の最適化実施範囲内で、複数の配列記述の形状を表現する情報を抽出する配列記述形状情報抽出手段5を備えている。この配列記述形状情報抽出手段5により抽出された情報は、リスト形式で保持される。
さらに、好ましくは、図1に示すように、本発明の配列記述の最適化制御装置は、複数の配列記述の形状を表現するためのリスト形式の情報から、各配列記述に対し共通の式を検出して各配列記述に対し共用となる情報を認識するための共通式認識手段6を備えている。
【0014】
さらに、好ましくは、図1に示すように、本発明の配列記述の最適化制御装置は、共通式認識手段6により検出される結果をもとに、最適なコード生成において、実行時に形状が確定する配列記述に対し、この配列記述を最適なループに変換するためのループ融合をすべきか否かのループ融合判定処理がなされるループ融合判定処理手段7等を備えている。
【0015】
さらに、好ましくは、本発明の配列記述の最適化制御装置においては、配列記述をループに変換する場合に、上記のリスト形式で保持された情報から、最適なループの形状を選択するように構成される。
また一方で、本発明の配列記述の最適化制御装置等により遂行される最適化制御方法は、予め定められた最適化のレベル、前記配列記述の配列の次元数、および各次元の配列数に基づき、複数の配列記述に関する最適化実施範囲を判定するステップを有し、このステップにより判定された最適化実施範囲内で最適なコードを出力するようにしている。
【0016】
好ましくは、本発明の配列記述の最適化制御方法においては、上記の最適化実施範囲内で、配列記述の形状を表現する情報を抽出するステップを有し、このステップにより抽出された情報をリスト形式で保持するようにしている。
さらに、好ましくは、本発明の配列記述の最適化制御方法においては、上記のリスト形式で保持された情報から、各配列記述に対し共通の式を検出して各配列記述に対し共用となる情報を認識するステップを有している。
【0017】
さらに、好ましくは、本発明の配列記述の最適化制御方法では、上記の共通の式を検出した結果をもとに、最適なコード生成において、実行時に形状が確定する配列記述に対し、この配列記述を最適なループに変換するためのループ融合をすべきか否かのループ融合判定処理を遂行するようにしている。
さらに、好ましくは、本発明の配列記述の最適化制御方法においては、配列記述をループに変換する場合に、上記のリスト形式で保持された情報から、最適なループの形状を選択するようにしている。
【0018】
さらに詳しく説明すると、本発明の配列記述の最適化制御の手法では、ループの形状を判定する際に、FORTRAN 90等の新たな言語仕様からなる配列記述を演算対象とするデータ要素は、配列記述の左辺と右辺が形状適合しなければならないという規定を利用することにより、形状の一致を認識することができる範囲を拡大する。これにより、前述の数3の式に示したような従来の手法ではループ融合ができなかったケースについても、ループ融合の実行が可能になる。
【0019】
これに加えて、本発明の配列記述の最適化制御の手法では、ループの融合処理の負荷および効果を考慮して、最適化レベルと、配列記述の配列の次元数および各次元の配列数(すなわち、式の複雑さ)をもとに、最適化を実施する範囲を動的に決定するようにしている。このような処理・構成により、最適化レベルに応じた翻訳作業域、翻訳時間、および実行時間を実現することが可能になる。
【0020】
さらにまた、本発明の配列記述の最適化制御の手法では、配列記述のループ展開後のループの形状(ループの回転数の初期値や終値等)をより単純な形で表現するために、ループ融合の判定の際にも用いた配列の添字式の中から、ループの形状をより単純に表現できる式を選択する。これらの処理により、最適化レベルに依存した最適な配列記述のループ展開が実現される。
【0021】
【作用】
入力となるテキスト、例えば、前述の数3の式に示したソースプログラムにおいて、配列記述の形状を代入文の左辺から求めた場合、以下のようになる。
数3の(1) の配列代入文の形状は、1次元で要素数がL
数3の(2) の配列代入文の形状は、1次元で要素数がM−1
数3の(3) の配列代入文の形状は、1次元で要素数がN−2
また一方で、配列記述の形状を代入文の右辺から求めた場合、以下のようになる。
【0022】
数3の(1) の配列代入文の形状は、1次元で要素数がM−1
数3の(2) の配列代入文の形状は、1次元で要素数がN−2
数3の(3) の配列代入文の形状は、1次元で要素数がK
したがって、配列記述の右辺、または左辺だけの情報では、形状の一致を判定することができず、ループ融合は実行することができない。しかしながら、言語仕様の規定によれば、演算対象となるデータは形状適合(すなわち、配列記述の配列の次元数、および各次元の要素数が一致する)の状態にならなくてはならないので、
数3の(1) の配列代入文から、L=M−1
(2) の配列代入文から、M−1=N−2
(3) の配列代入文から、N−2=K
∴L=M−1=N−2=K
を導くことができるので、数3の(1) 、(2) および(3) の配列記述のループ融合が可能になる。上記の言語仕様を利用した共通式の認識とループ融合の様子は、下記の数4の式に詳しく示すこととする。
【0023】
【数4】
【0024】
続いて、最適化レベル、および式の複雑さから、最適化を実施する範囲を動的に決定することにより、最適化レベルに応じた翻訳作業域、翻訳時間、および実行時間を実現できるような処理を追加した理由を説明する。なお、ここで説明するような理論をもとに、実際に最適化実施範囲を決定する式は次節の実施例の項で示すこととする)。
【0025】
一般に、次元数M、文数L(L≧2)、i番目の文i (i=1、2、…、L)の配列の個数をNi (i=1、2、…、L)とした場合、文1 と文2 の形状一致判定には、
M×(N1 ×N2 )(回)
文1 、文2 と文3 との形状一致判定には、
M×(N1 +N2 )×N3 (回)
同様にして文1 〜文L-1 と文L との形状一致判定には、
M×(N1 +N2 +…NL-1 )×NL )
回必要となる。文数Lの配列記述すべてに対し形状の一致判定を行う場合、必要な形状一致判定の回数は、上記のすべての形状一致判定回数の総和になるので、以下の数5のように表される。
【0026】
【数5】
【0027】
ここで、文の複雑さがすべて等しい(N1 =N2 =…=NL =N)とすると、必要な形状一致判定の回数は、以下の数6のように表される。
【0028】
【数6】
【0029】
すなわち、数6の式に示す形状一致判定の回数だけ、一致判定動作を行わなければならない。
このことは、式の複雑さを表すN、および解析対象とする配列記述の文数Lに対して、翻訳時間が2乗のオーダーで増加することを意味する。上記の数5の式より、翻訳資源、翻訳時間、および翻訳作業域を有効に利用するためには、式の複雑さを判定し、最適化実施範囲を動的に判定する必要があるといえる。また一方で、当然のことながら、より多くの翻訳資源を利用することで、より高度なループ融合が可能となり、実行時間を短縮することができる。しかしながら、実際には翻訳資源が限られているために、上記のように無制限に翻訳資源を利用できる訳ではない。
【0030】
本発明によれば、ループの形状を判定する際に形状の一致を認識することができる範囲を拡大し、さらに、ループの融合処理の負荷および効果を考慮して、最適化レベル、および式の複雑さをもとに、最適化を実施する範囲を動的に決定するようにしているので、翻訳資源を無駄にしたり配列記述内の式を複雑にすることなく、最適化レベルに応じた翻訳作業域、翻訳時間、および実行時間を実現することが可能になる。
【0031】
【実施例】
以下、添付図面(図2〜図11)を参照しながら本発明の配列記述の最適化制御を実現するための実施例について説明する。
図2は、本発明の最適化制御を実現するための実施例の構成を示すブロック図である。ただし、ここでは、CPU(Central Processing Unit :中央処理装置)を備えたコンピュータシステムによって本発明の最適化制御装置を構成する場合を代表して示す。なお、これ以降、前述した構成要素と同様のものについては、同一の参照番号を付して表すこととする。
【0032】
図2において、前述の図1に示した最適化実施範囲判定手段2、配列記述形状情報抽出手段5、共通式認識手段6、およびループ融合判定処理手段7を含む最適化制御部50は、コンピュータシステムのCPU20により実現される。
さらに、前述の図1に示した最適化レベル情報保持部3および次元数/配列数情報保持部4は、図2のCPU20に付設されたRAMやROM等の記憶部30内に予め記憶されている。なお、記憶部30として、CPU20に内蔵のRAMまたはROMを用いることもできる。
【0033】
さらに、図2において、入力部10より、入力の対象とすべきテキスト1(図1)が読み込まれる。さらに、テキスト1の配列を操作する文からなる複数の配列記述がCPU20に入力される。
さらに、図2において、CPU20内でループ融合判定処理を行うことにより最適化制御がなされた最適なコード8(図1)が生成され、出力部80から出力される。
【0034】
図2の実施例から明らかなように、本発明の最適化実施範囲の判定、配列記述形状情報の抽出、共通式の認識、およびループ融合の判定等の機能は、現行のコンピュータシステムを利用することによって容易に実現することができる。
図3は、本発明の実施例の概略的な動作を説明するための流れ図である。
図3のステップS1(すなわち、第1フェーズ)において、入力の対象とすべきテキストを読み込み、このテキストを構成する配列記述を検出すると共に、最適化実施範囲の見積りを行う。ここでは、テキストのどの部分からどの部分まで最適化処理を行うかが決定される。本発明の最適化処理において入力となるテキストは、プリプロセッサ方式の場合はソースプログラムであり、中間言語を利用するコンパイラにおいては中間コードである。
【0035】
次に、ステップS2において、前述のステップS1で求めた最適化実施範囲を選択して取り出す。このようにして取り出された最適化実施範囲は、途中に他の文からの飛び込みや飛び出しがない限り、有効なものとなる。
さらに、上記の最適化実施範囲が有効なものであると判定された場合、ステップS3(すなわち、第2フェーズ)において、配列記述の形状を表現する情報の取り出し処理を行う。
【0036】
さらに、上記の最適化実施範囲が有効なものであると判定された場合、ステップS4(すなわち、第3フェーズ)において、前述のステップS3にて取り出した情報に対してリストを作成し、登録を行う。これと同時に、同一データの共通化を行い、共通式の認識とループ融合の判定を行う。これらの第1フェーズおよび第3フェーズの処理を実行することにより、配列記述の形状の計算式が同じ式で求められ、形状の一致判定が可能になる。この結果、ステップS5において、従来の手法ではループ融合が不可能であったループが融合可能となる。さらに、ループ展開時のループの初期値、最終値、および増分値をより単純な式で表現することも可能になる。上記の第1フェーズ〜第3フェーズに関しては、後述の図4〜図11に基づいて詳細に説明することとする。
【0037】
図4および図5は、それぞれ、図3における配列記述の検出と最適化実施範囲の見積りの処理手順の詳細を説明するための流れ図その1およびその2である。ここでは、配列記述の最適化処理の第1フェーズ(図3のステップS1)について説明する。
この第1フェーズの処理では、まず、ステップS41において、配列記述の開始位置(例えば、φ)、終了位置(例えば、φ)および文数(例えば、0)を初期設定することにより、最適化制御部(例えば、CPU)の初期化を行う。次に、ステップS42において、入力となるテキストを読み込み配列記述を検出する。入力となるテキストは、プリプロセッサ方式の場合はソースプログラムであり、中間言語を利用するコンパイラにおいては中間コードである。
【0038】
上記の配列記述の検出動作は、ファイルの終了位置(EOF)に達するまで続けられる(ステップS43)。
さらに、他の文からの飛び込みや飛び出しがないか否かを検出する(ステップS44)と共に、入力となるテキスト内に配列記述が連続して出現するか否かを確認する(ステップS45)。さらに、最適化レベル、および式の複雑さに基づき、最適化実施文数、すなわち、解析対象とする配列記述の文数を順次計算する(ステップS46)。
【0039】
さらに、図5のステップS47において、テキストの配列記述の開始位置が未登録であるか否かを確認する。
もし未登録であれば、ステップS48において、配列記述の開始位置の登録、次元数の取り出し、項(例えば、配列の数)のカウント、および最適化実施文数の見積りを行う。
【0040】
さらに、先程の見積り計算を行った最適化実施文数の範囲内で配列記述の終了位置を更新し(ステップS49およびS50)た後に、配列記述が連続して出現し、かつ、途中に他の文からの飛び込みや飛び出しがない範囲を求める。このようにして求めた範囲が、最終的に、最適化実施範囲として取り出される(ステップS51)。
【0041】
この場合、上記の最適化実施文数は、以下の数7の式に基づいて計算可能であることが、経験上知られている。
【0042】
【数7】
【0043】
・上記の数7において、αは翻訳資源係数である。
このαは、最適化レベルあたりの翻訳資源、翻訳時間および翻訳作業域等の使用増加率を表すものである。当値は、経験則に基づいたチューニングによって決定する。
・βは基準次元数である。
【0044】
このβは、通常の配列記述において最も多く出現する次元数を表す。当値は、コンパイラ等によりFORTRAN を使用した数値計算においては、β=3であることが経験上知られていることから3としている。
・γは基準配列数である。
このγは、通常の配列記述において最も多く出現する項数を表す。当値もまた、経験則に基づいたチューニングによって決定する。
【0045】
・OPTは最適化レベルである。
このOPTは、コンパイラ等が実施する最適化の度合いを1以上の数値で表現したものである。この値が大きいほど、より強い最適化を実施することを意味し、翻訳時間および翻訳作業域を代償として、より高い実行性能が実現され得る。
・dimは配列記述の次元数を表す。
【0046】
このdimの値が大きいほど、形状の一致判定に時間がかかる。処理時間は当値と比例関係にある。
・itemは最初に出現した配列記述内の配列の個数である。
このitemの値が大きいほど、形状の一致判定に時間がかかる。本来、配列の個数は文毎に異なるが、式の複雑さは大体等しいという仮定の元に、最初に出現した配列記述からitemの値を求める。
【0047】
図6および図7は、それぞれ、図3における配列記述の形状を表現する情報の取り出しの処理手順の詳細を説明するための流れ図その1およびその2である。ここでは、配列記述の最適化処理の第2フェーズ(図3のステップS3)について説明する。
この第2フェーズの処理は、大きく分けて次のa)およびb)の2つの処理手順から構成されている。
【0048】
a)最適化実施範囲内の配列記述の配列から要素数を表現する情報を取り出す処理
形状適合によって値が等値であるのは、同一配列記述内の同一次元の要素数である。当該処理は、値が等値であるデータを連続して取り出すための3重ループによって構成される。
【0049】
b)取り出した情報に対してリストを作成し、登録を行う処理(後述の図8参照)
ここでは、リストの作成と同時に、同一データの共通化を行う。当該処理においては、リスト作成時に、既存リストに対する照会を行うことで、同一情報を持つリストの作成が抑止される。さらに、同一情報を有するリストの出現によって、同じ値を表現するリスト同士をマージ(併合)する。
【0050】
配列記述の最適化処理中の第2フェーズの処理を実行する場合、まず、図6のステップS61において、i=0に設定して配列記述の初期化を行う。次に、図7のステップS73において、iの値を1だけ増加させ、i番目(i=i+1)の配列記述があるか否かをチェックする。もし、i番目の配列記述があれば、図6のステップS62において、i番目の配列記述の取り出しを行う(3重ループ中の最初のループ)。
【0051】
さらに、ステップ63において、j=0に設定して配列記述の次元の初期化を行う。さらに、図7のステップS70において、jの値を1だけ増加させ(j=j+1)、ステップS71において、増加後のjの値が、配列記述の次元数以下であるか否かをチェックする。もし、jの値が、配列記述の次元数以下であれば、図6のステップS64において、k=0に設定する(3重ループ中の2番目のループ)。
【0052】
さらに、ステップS68において、kの値を1だけ増加させ(k=k+1)、図7のステップS69において、k番目の項があるか否かをチェックする。もし、k番目の項があれば、図6のステップS65において、k番目の項を取り出す(3重ループ中の3番目のループ)。さらに、この項が配列の数であることを確認した後に(ステップS66)、取り出した項に相当する情報に対してリストを作成し、登録を行う(ステップS67)。すなわち、本発明では、3重ループの構成を採用することによって、配列記述の形状を表現するための値が等値であるようなデータを連続して取り出すことができる。このようにして取り出され、かつ、配列記述の形状を表現する情報に関するリストの作成および登録の処理は、i、jおよびkが所定の値に達するまで続けることができる。
【0053】
図8は、図6におけるリストの作成と登録の処理手順の詳細を説明するための流れ図である。
図8のステップS81において、まず、既に同じ情報を持つリストが存在するか否かをチェックする。この種のリストが存在しない場合、新たにリストを作成し(ステップS82)、i番目の配列記述が、j次元目にて最初に作成されたリストに対応する配列記述であるか否かをチェックする(ステップS83)。もし、i番目の配列記述が、j次元目にて最初に作成されたリストに対応する配列記述であれば、このように異なる値を表現するリストとして配列記述を登録する(ステップS84)。
【0054】
もし、i番目の配列記述が、j次元目にて最初に作成されたリストに対応する配列記述でなければ(ステップS83)、以前に作成したリストと同じ値を表現するリストとして配列記述を登録する(ステップS85)。
また一方で、既に同じ情報を持つリストが存在する場合(ステップS81)、ステップS86において、以前に作成したのと同じ値を表現するリストが存在するか否かをチェックする。もし、以前に作成したのと同じ値を表現するリストが存在するならば、このリストの作成と同時に、同一データの共通化を行う。この場合、リスト作成時に、既存のリストに対する照会を行うことで、同一情報を持つリストの作成が抑止される。さらに、同一情報を有するリストの出現によって、同じ値を表現するリスト同士をマージする(ステップS87)。また一方で、ステップS86において、以前に作成したのと同じ値を表現するリストが存在しない場合、同じ値を表現する既存のリストが存在しないとみなし、連鎖の基点を変更することによって(ステップS88)新たにリストを作成する。
【0055】
図9は、図8の処理手順により作成または登録されるリスト構造の一例を示す図であり、図10は、ソーステキスト入力により作成されるリスト構造の一例を示す図である。
図9においては、リスト作成時に使用される3つのポインタが示されている。これらの3つのポインタとして、要素数を表現する情報へのポインタ、同じ値を表現するリストへのポインタ、および、違う値を表現する情報へのポインタが挙げられる。
【0056】
さらに、図10に示すように、ソーステキスト入力により作成されるリスト構造においては、上記のポインタが機能する。例えば、要素数L=M−1=N−2、I=Jという関係を表現する場合、図10のリスト構造から明らかなように、L、M−1、および、N−2は同じ値を表現するリストへのポインタを用いて連鎖状に表示され、IおよびJも、同じ値を表現するリストへのポインタを用いて連鎖状に表示される。また一方で、LとIとは、違う値を表現する情報へのポインタを用いて表示される。
【0057】
さらに、配列記述の最適化処理の第3フェーズ(図3のステップS4)である共通式の認識とループ融合の判定処理について詳細に説明する。この第3フェーズは、以下の(1) 〜(3) の処理手順により遂行される。
(1) 作成したリストから式の値が等しい集合を得る。
(2) この集合の中で、最も簡単な式を選び出し、他の式を置換する。
【0058】
(3) この結果、配列記述の形状の計算式が同じ式で求められ、形状の一致判定が行うことができる。
このような処理手順により、従来はループ融合不可能であったループが融合可能になる。また、ループ展開時のループの初期値、最終値、および増分値をより単純な式で表現することも可能になる。
【0059】
図11は、本発明の最適化制御を実現するための具体的な一例を示すブロック図である。図11においては、本発明の最適化制御装置を、前述の図2の実施例よりも具体的な構成として開示している。
さらに、図11において、CPUは、フロントエンドプロセッサ21と、オプチマイズ・バックエンドプロセッサ(OBE)23とにより構成される。フロントエンドプロセッサ21では、主として、構文解析等が実施される。また一方で、最適化制御部25を含むオプチマイズ・バックエンドプロセッサ23では、主として、最適化実施範囲内での共通式認識やループ融合判定処理等が行われる。
図11に示す入力部11および出力部81は、それぞれ、前述の図2に示した入力部10および出力部80にほぼ対応する。
【0060】
図11の最適化制御装置の入力部11に入力されるようなFORTRAN 90等の言語仕様からなるソーステキストは、プリプロセッサ方式の場合はソースプログラムであり、中間言語を利用する方式の場合は中間コードである。前者のプリプロセッサ方式の場合は、出力部81から、C言語、FORTRAN 77等の言語仕様からなるコードが出力される。後者の中間言語を利用する方式の場合は、出力部81から中間言語からなるコードが出力される。したがって、図11の本発明の最適化制御装置においては、ソースプログラムおよび中間言語のいずれに対しても、共通式認識やループ融合判定処理等を含む最適化処理を遂行することができる。
【0061】
【発明の効果】
以上説明したように、本発明の配列記述の最適化制御装置によれば、第1に、複数の配列記述に対して最適なコード生成を行う場合に、予め定められた最適化のレベル、配列の数、および、複数の配列記述の配列の次元数に基づき、複数の配列記述に関する最適化実施範囲を見積るようにしているので、最適化レベルに応じた翻訳時間、翻訳領域、および実行時間を設定することが可能になる。この結果、FORTRAN 90等に固有の配列記述に対して、ユーザが与える最適化レベルに依存した最適コードを生成することが可能になり、コンパイラ等の性能向上に大きく貢献することができる。
【0062】
さらに、本発明の配列記述の最適化制御装置によれば、第2に、上記の最適化実施範囲内で、複数の配列記述の形状を表現する情報を抽出し、この抽出した情報をリスト形式で保持しているので、この種の情報をもとに形状の一致を認識することができる範囲を拡大することが可能になる。これにより、従来の手法ではループ融合ができなかったケースについても、ループ融合の実行が可能になり、実行時間の短縮が図れる。
【0063】
さらに、本発明の配列記述の最適化制御装置によれば、第3に、複数の配列記述の形状を表現するためのリスト形式の情報から、各配列記述に対し共通の式を検出して各配列記述に対し共用となる情報を認識するようにしているので、翻訳資源を無駄にしたり配列記述内の式を複雑にすることなく、最適化レベルに応じた翻訳作業域、翻訳時間、および実行時間を実現することが可能になる。
【0064】
さらに、本発明の配列記述の最適化制御装置によれば、第4に、最適なコード生成において、実行時に形状が確定する配列記述を最適なループに変換するためのループ融合をすべきか否かのループ融合判定処理を行うようにしているので、配列記述のループ展開後のループの形状をより単純な形で表現することが可能になる。この結果、実行時間の短縮が促進される。
【0065】
さらに、本発明の配列記述の最適化制御装置によれば、第5に、配列記述をループに変換する場合に、上記のリスト形式で保持された情報から、最適なループの形状を選択するようにしているので、ループ融合判定の際にも用いた配列の添字式の中から、ループの形状をより単純に表現できる式が選択され、最適な配列記述のループ展開が実現される。
【0066】
また一方で、本発明の配列記述の最適化制御方法によれば、第1に、複数の配列記述に対して最適なコード生成を行う場合に、予め定められた最適化のレベル、複数の配列記述の配列の次元数、および各次元の配列数に基づき、複数の配列記述に関する最適化実施範囲を見積っているので、最適化レベルに応じた翻訳時間、翻訳領域、および実行時間を実現することが可能になる。この結果、FORTRAN 90等に固有の配列記述に対して、ユーザが与える最適化レベルに依存した最適コードを生成することができる。
【0067】
さらに、本発明の配列記述の最適化制御方法によれば、第2に、上記の最適化実施範囲内で、複数の配列記述の形状を表現する情報を抽出し、この抽出した情報をリスト形式で保持しているので、この種の情報をもとに形状の一致を認識することができる範囲を拡大することが可能になる。これにより、従来の方法ではループ融合ができなかった場合についても、ループ融合の実行が可能になり、実行時間の短縮が図れる。
【0068】
さらに、本発明の配列記述の最適化制御方法によれば、第3に、複数の配列記述の形状を表現するためのリスト形式の情報から、各配列記述に対し共通の式を検出し、各配列記述に対し共用となる情報を認識しているので、翻訳資源を犠牲にしたり配列記述内の式を複雑にすることなく、最適化レベルに応じた翻訳作業域、翻訳時間、および実行時間を実現することが可能になる。
【0069】
さらに、本発明の配列記述の最適化制御方法によれば、第4に、最適なコード生成において、実行時に形状が確定する配列記述を最適なループに変換するためのループ融合をすべきか否かのループ融合判定をしているので、配列記述のループ展開後のループの形状をより単純な形で表現することが可能になる。この結果、実行時間の短縮が促進される。
【0070】
さらに、本発明の配列記述の最適化制御方法によれば、第5に、配列記述をループに変換する場合に、上記のリスト形式で保持された情報から、最適なループの形状を選択しているので、ループ融合判定の際にも用いた配列の添字式の中から、ループの形状をより単純に表現できる式が選択され、最適化レベルに依存した最適な配列記述のループ展開が実現される。
【0071】
要約すれば、本発明では、FORTRAN 90等の新しい言語仕様を利用することにより、従来不可能であったループの融合が可能となる。さらに、最適化オプション、および式の複雑さから動的に最適化実施範囲を決定することにより、最適化レベルに応じた翻訳時間、翻訳領域、および実行時間の実現を可能にしている。さらに、上記のループ融合を施したループの展開時に、初期値、終値、および増分値等に対し、より最適なループの形状設定も可能となる。したがって、FORTRAN 90固有の配列記述に対して、ユーザが与える最適化レベルに依存した最適コードを生成することができる。このため、本発明は、コンパイラ等の性能向上に大きく貢献できる発明となり得る。
【図面の簡単な説明】
【図1】本発明の原理構成を示すブロック図である。
【図2】本発明の最適化制御を実現するための実施例の構成を示すブロック図である。
【図3】本発明の実施例の概略的な動作を説明するための流れ図である。
【図4】図3における配列記述の検出と最適化実施範囲の見積りの処理手順の詳細を説明するための流れ図(その1)である。
【図5】図3における配列記述の検出と最適化実施範囲の見積りの処理手順の詳細を説明するための流れ図(その2)である。
【図6】図3における配列記述の形状を表現する情報の取り出しの処理手順の詳細を説明するための流れ図(その1)である。
【図7】図3における配列記述の形状を表現する情報の取り出しの処理手順の詳細を説明するための流れ図(その2)である。
【図8】図6におけるリストの作成と登録の処理手順の詳細を説明するための流れ図である。
【図9】図8の処理手順により作成または登録されるリスト構造の一例を示す図である。
【図10】ソーステキスト入力により作成されるリスト構造の一例を示す図である。
【図11】本発明の最適化制御を実現するための具体的な一例を示すブロック図である。
【符号の説明】
1…テキスト
2…最適化実施範囲判定手段
3…最適化レベル情報保持部
4…次元数/配列数情報保持部
5…配列記述形状情報抽出手段
6…共通式認識手段
7…ループ融合判定処理手段
8…最適なコード
10…入力部
20…CPU
30…記憶部
50…最適化制御部
80…出力部
Claims (10)
- ソーステキストを読み込みコード生成を行うコンピュータシステムにおいて、
予め定められた最適化のレベル、配列記述の配列の次元数、および各次元の配列数に基づき、前記ソーステキストに含まれる配列記述に関する最適化実施文数を求める最適化実施文数決定手段と、
前記最適化実施文数決定手段で求めた最適化実施文数に基づき配列記述の最適化実施範囲を決定する最適化実施範囲決定手段とを備えることを特徴とするコンピュータシステム。 - 前記最適化実施範囲決定手段で決定した最適化実施範囲内で、前記配列記述の形状を表現する情報を抽出する配列記述形状情報抽出手段をさらに備えることを特徴とする請求項1記載のコンピュータシステム。
- 前記配列記述形状情報抽出手段で抽出した情報から、各配列記述に対し共通の式を検出して該各配列記述に対し共用となる情報を認識する共通式認識手段をさらに備えることを特徴とする請求項2記載のコンピュータシステム。
- 前記共通式認識手段により認識した情報をもとに、コード生成時に形状が確定する配列形状に対し、該配列形状を最適なループに変換するためのループ融合をすべきか否かを判定するループ融合判定処理手段をさらに備えることを特徴とする請求項3記載のコンピュータシステム。
- 前記配列記述をループに変換する場合に、前記配列記述形状情報抽出手段で抽出した情報をリスト形式で保持する配列リスト保持手段にて保持された情報から、最適なループの形状を選択するループ形状選択手段をさらに備えることを特徴とする請求項3記載のコンピュータシステム。
- ソーステキストを読み込みコード生成を行うコンピュータシステムが、
予め定められた最適化のレベル、配列記述の配列の次元数、および各次元の配列数に基づき、前記ソーステキストに含まれる配列記述に関する最適化実施文数を求める最適化実施文数決定ステップと、
前記最適化実施文数決定ステップで求めた最適化実施文数に基づき配列記述の最適化実施範囲を決定する最適化実施範囲決定ステップとを実行することを特徴とするコード生成最適化制御方法。 - 前記コンピュータシステムが、
前記最適化実施範囲決定ステップで決定した最適化実施範囲内で、前記配列記述の形状を表現する情報を抽出する配列記述形状情報抽出ステップをさらに実行することを特徴とする請求項6記載のコード生成最適化制御方法。 - 前記コンピュータシステムが、
前記配列記述形状情報抽出ステップで抽出した情報から、各配列記述に対し共通の式を検出して該各配列記述に対し共用となる情報を認識する共通式認識ステップをさらに実行することを特徴とする請求項7記載のコード生成最適化制御方法。 - 前記コンピュータシステムが、
前記共通式認識ステップにより認識した情報をもとに、コード生成時に形状が確定する配列形状に対し、該配列形状を最適なループに変換するためのループ融合をすべきか否かを判定するループ融合判定処理ステップをさらに実行することを特徴とする請求項8記載のコード生成最適化制御方法。 - 前記コンピュータシステムが、
前記配列記述をループに変換する場合に、前記配列記述形状情報抽出ステップで抽出した情報をリスト形式で保持する配列リスト形式保持ステップにて保持された情報から、最適なループの形状を選択するループ形状選択ステップをさらに実行することを特徴とする請求項8記載のコード生成最適化制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21714495A JP3695798B2 (ja) | 1995-08-25 | 1995-08-25 | コンピュータシステムおよびコード生成最適化制御方法 |
US08/703,063 US6074433A (en) | 1995-08-25 | 1996-08-26 | Optimization control apparatus and optimization control method for array descriptions |
GB9618443A GB2317031B (en) | 1995-08-25 | 1996-09-04 | optimization control apparatus and optimization control method for array descriptions |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21714495A JP3695798B2 (ja) | 1995-08-25 | 1995-08-25 | コンピュータシステムおよびコード生成最適化制御方法 |
GB9618443A GB2317031B (en) | 1995-08-25 | 1996-09-04 | optimization control apparatus and optimization control method for array descriptions |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0962514A JPH0962514A (ja) | 1997-03-07 |
JP3695798B2 true JP3695798B2 (ja) | 2005-09-14 |
Family
ID=26309973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21714495A Expired - Fee Related JP3695798B2 (ja) | 1995-08-25 | 1995-08-25 | コンピュータシステムおよびコード生成最適化制御方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP3695798B2 (ja) |
GB (1) | GB2317031B (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4462676B2 (ja) | 1999-10-27 | 2010-05-12 | 富士通株式会社 | プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP5169322B2 (ja) * | 2008-03-05 | 2013-03-27 | 日本電気株式会社 | 変数最適化装置、変数最適化プログラム、コンパイラ、変数最適化方法、及びコンパイル方法 |
KR102267920B1 (ko) * | 2020-03-13 | 2021-06-21 | 성재모 | 매트릭스 연산 방법 및 그 장치 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293631A (en) * | 1991-08-06 | 1994-03-08 | Hewlett-Packard Company | Analysis and optimization of array variables in compiler for instruction level parallel processor |
-
1995
- 1995-08-25 JP JP21714495A patent/JP3695798B2/ja not_active Expired - Fee Related
-
1996
- 1996-09-04 GB GB9618443A patent/GB2317031B/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2317031B (en) | 2000-01-19 |
GB9618443D0 (en) | 1996-10-16 |
GB2317031A (en) | 1998-03-11 |
JPH0962514A (ja) | 1997-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8761496B2 (en) | Image processing apparatus for calculating a degree of similarity between images, method of image processing, processing apparatus for calculating a degree of approximation between data sets, method of processing, computer program product, and computer readable medium | |
Komondoor et al. | Effective, automatic procedure extraction | |
CN109344240B (zh) | 一种数据处理方法、服务器及电子设备 | |
JP2755154B2 (ja) | プログラム変換処理装置およびプログラム変換処理方法 | |
US6412105B1 (en) | Computer method and apparatus for compilation of multi-way decisions | |
EP0921478A2 (en) | Transformation of marked up documents | |
JPH08234975A (ja) | プログラム生成装置および方法 | |
CN100377089C (zh) | 二进制翻译中经由跳转表的多目标分支语句的识别方法 | |
US20040154009A1 (en) | Structuring program code | |
CN110688121A (zh) | 代码补全方法、装置、计算机装置及存储介质 | |
JP2008510230A (ja) | 非循環命令パターンの認識の方法 | |
JP3695798B2 (ja) | コンピュータシステムおよびコード生成最適化制御方法 | |
JP4194680B2 (ja) | データ処理装置及びその方法、及びそのプログラムを記憶した記憶媒体 | |
Lefebvre | An Optimized Parsing Algorithm Well Suited to RNA Folding. | |
CN115167868B (zh) | 代码编译方法、装置、设备及计算机存储介质 | |
US7246056B1 (en) | Runtime parameter mapping for system simulation | |
WO2003005193A2 (en) | Source code line counting system and method | |
CN109002684B (zh) | 一种区间信息分析方法 | |
JPH06202875A (ja) | インライン展開による最適化を行うコンパイラ | |
JPH07210397A (ja) | プログラム変換方法およびそれを用いたプログラム実行方法 | |
WO2024047997A1 (ja) | 文書分析装置、及び文書分析用プログラム | |
JP2555011B2 (ja) | ベクトルデ−タ処理方式 | |
JP3311774B2 (ja) | コンパイラ装置 | |
US20020038452A1 (en) | Constant bit folding and propagation | |
JP4327533B2 (ja) | 演算処理プログラム、演算処理方法、および演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050322 |
|
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: 20050531 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050628 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080708 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090708 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100708 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100708 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110708 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110708 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120708 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120708 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130708 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |