JP2004062324A - 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 - Google Patents
最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 Download PDFInfo
- Publication number
- JP2004062324A JP2004062324A JP2002216856A JP2002216856A JP2004062324A JP 2004062324 A JP2004062324 A JP 2004062324A JP 2002216856 A JP2002216856 A JP 2002216856A JP 2002216856 A JP2002216856 A JP 2002216856A JP 2004062324 A JP2004062324 A JP 2004062324A
- Authority
- JP
- Japan
- Prior art keywords
- program
- optimization
- runtime information
- minimum
- information
- 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.)
- Withdrawn
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【課題】プログラム最適化装置において、実行時情報を利用してコンパクトで高速な目的コードを生成すること。その際、実行時情報の取得にかかるコストを最小とし、最適化を高速に行えるようにすること。
【解決手段】プログラム最適化手段と、実行時情報取得プログラム生成手段と、実行時情報解析手段とを設ける。プログラム最適化手段はソースプログラムの最適化変形を行う。実行時情報取得プログラム生成手段は最適化の過程で必要な実行時情報を取得するため、プログラム最適化手段からの要求により、ソースプログラムから必要最小限の実行時情報取得プログラムを作成し、出力する。実行時情報解析手段は、実行時情報取得プログラムを対象計算機上で実行した出力として得られる実行時情報を解析し、プログラム最適化手段で利用できる形に加工する。
【選択図】 図1
【解決手段】プログラム最適化手段と、実行時情報取得プログラム生成手段と、実行時情報解析手段とを設ける。プログラム最適化手段はソースプログラムの最適化変形を行う。実行時情報取得プログラム生成手段は最適化の過程で必要な実行時情報を取得するため、プログラム最適化手段からの要求により、ソースプログラムから必要最小限の実行時情報取得プログラムを作成し、出力する。実行時情報解析手段は、実行時情報取得プログラムを対象計算機上で実行した出力として得られる実行時情報を解析し、プログラム最適化手段で利用できる形に加工する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、最適化コンパイル装置、プログラム最適化方法、及び記憶媒体に関し、特に、プログラムの実行時の情報を最適化に利用することができる最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体に関する。
【0002】
【従来の技術】
入力されたプログラムに何らかの最適化変形を施して出力するプログラム変換装置(以下「コンパイラ」と呼ぶ)は、最適化の対象となるプログラムに関して、その文面から静的に解析できる情報だけをもとに最適化を行うのが通例である。しかし、対象プログラムを実行してみて初めてわかるプログラム情報(以下「実行時情報」)を用いれば、より進んだ最適化を行うことができる場合がある。
【0003】
たとえば、ループ処理をベクトル命令に置き換える自動ベクトル化コンパイラにおいては、ループの反復数の多寡によってベクトル処理命令列に置き換えた方が、コンピュータによって実際に実行される目的コードの処理時間がより高速になる場合、別のベクトル処理命令列の方が前記目的コードの処理時間が高速になる場合、ベクトル処理命令列に置き換えない方が前記目的コードの処理時間が高速になる場合などがある。コンパイラはこれらを適切に判断して前記目的コードを生成し、該目的コードを使用してオブジェクトプログラムを生成しなければならない。しかし、そもそも対象ループの反復数がプログラムの文面だけから静的にわからない場合には、このような判断ができない。
【0004】
従来、このような場合には、コンパイラは様々な場合を仮定したループの最適化コードを複数同時に生成し、実行時にループの反復数の多寡に応じて、いずれかのコードを条件分岐により選択して使用する、「マルチバージョン方式」と呼ばれる方法が採られていた。マルチバージョン方式については、たとえば、特開平01−018876号公報、特開平03−094371号公報、特開平03−220632号公報、特開平04−332044号公報、特開平06−324881号公報、特開平06−250989号公報、特開平10−333919号公報に記載されている。
【0005】
一方、目的コードの実行時の挙動を逐一記録し、この情報をソースプログラムとともに再度コンパイラ等に入力してプログラムの最適化に利用する、「プロファイル方式」と呼ばれる方法もある。プロファイル方式については、たとえば、特開平01−118931号公報、特開平06−004299号公報、特開平09−330233号公報に記載されている。
【0006】
【発明が解決しようとする課題】
マルチバージョン方式では、コンパイラによって生成される目的コードのサイズが増大するばかりでなく、結果的には利用されないコードも目的コードに含まれることになるため、目的コードのメモリの利用効率が悪い。また、どの最適化方式を採用するかの条件判断をプログラムの翻訳時ではなく実行時に行うため、プログラムの実行性能が低下するという問題があった。
【0007】
また、プロファイル方式では、実行時情報の取得のために本質的にソースプログラムと同一のプログラムを利用するため、実行時間のかかる巨大なプログラムに対して適用が困難であるという問題があった。
【0008】
本発明の目的は、実行時情報を利用して、コンパクトで高速な目的コードを生成するコンパイラを提供することである。また、その際、実行時情報の取得にかかるコストを最小とし、コンパイラにおけるプログラムの最適化を高速に行えるようにすることができる。
【0009】
【課題を解決するための手段】
請求項1記載の最適化コンパイル装置は、前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出し、最適化のために必要とする最小限の実行時情報を取得するために構成された実行時情報取得プログラムを生成する実行時情報取得プログラム生成手段と、前記実行時情報抽出プログラムを実行した結果得られる最適化のために必要とする最小限の実行時情報の構造を解析し、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する実行時情報解析手段と、前記実行時情報取得プログラム生成手段に対し、最適化に必要な実行時情報の取得を要求するとともに、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行うプログラム最適化手段とを有することを特徴とする。
【0010】
請求項2記載の最適化コンパイル装置は、前記プログラム最適化手段が、最適化処理を行う際、前記実行時情報取得プログラム生成手段に対して最適化の対象となるループの反復数の値を要求し、当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えることを特徴とする。
【0011】
請求項3記載の最適化コンパイル装置は、前記実行時情報取得プログラム生成手段はデータの有効範囲の解析を行うデータフロー解析部を有し、該データフロー解析部によるデータフロー解析により最適化のために必要とする最小限の実行文情報を抽出することを特徴とする。
【0012】
請求項4記載の最適化コンパイル装置は、前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする。
【0013】
請求項5記載のプログラム最適化方法は、最適化に必要な最小限の実行時情報の取得を要求する第1のステップと、前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出する第2のステップと、最適化のために必要とする最小限の実行時情報を取得するためのプログラムであって、抽出された前記最小限の実行文情報が埋め込まれている実行時情報取得プログラムを生成する第3のステップと、前記実行時情報抽出プログラムを実行した結果得られる前記最小限の実行時情報の構造を解析する第4のステップと、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する第5のステップと、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う第6のステップを有することを特徴とする。
【0014】
請求項6記載のプログラム最適化方法は、前記第6のステップには、さらに最適化の対象となるループの反復数の値を要求するステップと、当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えるステップを有することを特徴とする。
【0015】
請求項7記載のプログラム最適化方法は、前記第1のステップにおいて、最適化のために必要とする最小限の実行文情報をデータフロー解析により抽出することを特徴とする。
【0016】
請求項8記載のプログラム最適化方法は、前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする。
【0017】
請求項9記載のプログラムは、プログラム最適化処理が、最適化に必要な最小限の実行時情報の取得を要求する第1のステップと、前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出する第2のステップと、最適化のために必要とする最小限の実行時情報を取得するためのプログラムであって、抽出された前記最小限の実行文情報が埋め込まれている実行時情報取得プログラムを生成する第3のステップと、前記実行時情報抽出プログラムを実行した結果得られる前記最小限の実行時情報の構造を解析する第4のステップと、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する第5のステップと、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う第6のステップを有することを特徴とする。
【0018】
請求項13記載の記録媒体は、請求項9〜12のいずれかに記載のプログラムが記録されているものである。
【0019】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。図1は本発明による最適化コンパイル装置の一実施の形態を示すブロック図である。
【0020】
コンパイラ20は、その内部に実行時情報取得プログラム生成手段22と、実行時情報解析手段23と、プログラム最適化手段21を備えている。
【0021】
コンパイラ20は高級言語で記述されたソースプログラム10を入力として受理し、最適化変形を施した後、高級言語、アセンブリ言語、若しくは機械命令列で表現された目的コード60を出力する。そして、その目的コード60を使用してオブジェクトプログラムが生成される。
【0022】
ここで、ソースプログラム10の最適化変形はプログラム最適化手段21によって行なわれる。以下、コンパイラ20の各構成要素の動作について図2のフローチャートを参照して説明する。
【0023】
プログラム最適化手段21は、実行時情報取得プログラム生成手段22に対し、最適化に必要な実行時情報50の取得を要求する(ステップS101)。
【0024】
実行時情報取得プログラム生成手段22は、ソースプログラム10から最適化の過程で必要とする最小限の実行文情報(モジュール)を抽出し(ステップS102)、最適化のために必要とする最小限の実行時情報を取得するために構成された実行時情報取得プログラム30を生成する(ステップS103)。
【0025】
対象計算機40は実行時情報抽出プログラム30を実行する(ステップS104)。実行時情報解析手段23は、対象計算機40が実行時情報抽出プログラム30を実行した結果、出力された実行時情報50を入力し、入力された実行時情報50の構造を解析し(ステップS105)、解析された実行時情報50をプログラム最適化手段21でソースプログラム10の最適化に利用できる形式に加工する(ステップS106)。
【0026】
プログラム最適化手段21は、上記したように解析された実行時情報50に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う(ステップS107)。
【0027】
次に、図3のソースプログラムを例に、本実施の形態の動作を説明する。プログラム最適化手段21は、入力されたソースプログラム10中のループの反復数が、例えば256よりも大きいときに、そのループをベクトル処理命令に置き換えるものとする。
【0028】
図3のソースプログラムがコンパイラ20に入力されると、プログラム最適化手段21は、5行目のループをベクトル命令に置き換えるべきかどうか判定しようとする。ループの反復数はCであるが、Cの値はプログラムの文面上だけからは不明である。そこで、プログラム最適化手段21は、実行時情報取得プログラム生成手段22に対し、「5行目におけるCの値」を要求する。
【0029】
実行時情報取得プログラム生成手段22は、データフロー解析の手法により、「5行目におけるCの値」を決定するのに必要最小限の実行文(必要最小限の実行時情報)をソースプログラム10から抽出し、その必要最小限の実行文だけを必要最小限の実行時情報として取得するのに利用される実行時情報取得プログラム30を再構成する。
【0030】
さらに、実行時情報取得プログラム30には、ソースプログラムの5行目に相当する位置に、Cの値のみを出力するための出力文が埋め込まれる。図3のソースプログラムで、5行目におけるCの値を計算しているのは3行目の代入文「C=A*A」であり、さらにその右辺のAの値は1行目のREAD文によりプログラム外から入力されている。
【0031】
したがって、実行時情報取得プログラム生成手段22により出力される実行時情報取得プログラムは、図3のソースプログラムから1行目と3行目を抽出し、さらに5行目の位置にCの値を出力するWRITE文を挿入したもの、すなわち図4のようになる。
【0032】
図4に示す実行時情報取得プログラムを対象計算機40の上で実行すると、出力として図5のような実行時情報が得られる。実行時情報解析手段23はこの出力を構文解析し、プログラム最適化手段21に対して「5行目におけるCの値」の回答として400を与える。プログラム最適化手段21は、ループの反復数(400)が256よりも大きいため、5行目のループをベクトル処理命令で置き換える最適化処理を行う。
【0033】
【発明の効果】
マルチバージョン方式では複数の最適化方式によるコードを目的コード内に併せ持ち、結果的には利用されない無駄なコードも目的コードに含まれるのに対し、本発明では、実際に利用されるコードのみが目的コードに含まれるため、従来のマルチバージョン方式と比べて目的コードのサイズが小さくなり、メモリの利用効率がよいという効果が得られる。
【0034】
マルチバージョン方式ではどの最適化方式によるコードを利用するかの判断を実行時に行うため、オーバーヘッドが生じるのに対し、本発明では、その判断を翻訳時にすべて終えており、実行時にオーバーヘッドが生じないので、マルチバージョン方式と比べて目的コードが高速に実行されるという効果が得られる。
【0035】
プロファイル方式が、元のソースプログラムに情報取得ルーチンを追加しただけのものを実行時情報の取得に利用しており、本質的に元のプログラムの実行時間と同じだけの時間を実行時情報の取得に必要とするのに対し、本発明では、コンパイラが最適化のために必要とする情報だけを取得する最小限の実行時情報取得プログラムを実行時情報の取得に利用するため、その実行時間がわずかで済むプロファイル方式と比べて実行時情報の取得に要する時間が短く、結果としてプログラムの最適化に要する時間が短いという効果が得られる。
【図面の簡単な説明】
【図1】本発明の一実施の形態を示したブロック図である。
【図2】本発明のプログラム最適化方法における各処理手順を示したフローチャートである。
【図3】ソースプログラムの一例を示した図である。
【図4】実行時情報取得プログラムの一例を示した図である。
【図5】実行時情報の一例を示した図である。
【符号の説明】
10 ソースプログラム
20 コンパイラ
21 プログラム最適化手段
22 実行時情報取得プログラム生成手段
23 実行時情報解析手段
30 実行時情報取得プログラム
40 対象計算機
50 実行時情報
【発明の属する技術分野】
本発明は、最適化コンパイル装置、プログラム最適化方法、及び記憶媒体に関し、特に、プログラムの実行時の情報を最適化に利用することができる最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体に関する。
【0002】
【従来の技術】
入力されたプログラムに何らかの最適化変形を施して出力するプログラム変換装置(以下「コンパイラ」と呼ぶ)は、最適化の対象となるプログラムに関して、その文面から静的に解析できる情報だけをもとに最適化を行うのが通例である。しかし、対象プログラムを実行してみて初めてわかるプログラム情報(以下「実行時情報」)を用いれば、より進んだ最適化を行うことができる場合がある。
【0003】
たとえば、ループ処理をベクトル命令に置き換える自動ベクトル化コンパイラにおいては、ループの反復数の多寡によってベクトル処理命令列に置き換えた方が、コンピュータによって実際に実行される目的コードの処理時間がより高速になる場合、別のベクトル処理命令列の方が前記目的コードの処理時間が高速になる場合、ベクトル処理命令列に置き換えない方が前記目的コードの処理時間が高速になる場合などがある。コンパイラはこれらを適切に判断して前記目的コードを生成し、該目的コードを使用してオブジェクトプログラムを生成しなければならない。しかし、そもそも対象ループの反復数がプログラムの文面だけから静的にわからない場合には、このような判断ができない。
【0004】
従来、このような場合には、コンパイラは様々な場合を仮定したループの最適化コードを複数同時に生成し、実行時にループの反復数の多寡に応じて、いずれかのコードを条件分岐により選択して使用する、「マルチバージョン方式」と呼ばれる方法が採られていた。マルチバージョン方式については、たとえば、特開平01−018876号公報、特開平03−094371号公報、特開平03−220632号公報、特開平04−332044号公報、特開平06−324881号公報、特開平06−250989号公報、特開平10−333919号公報に記載されている。
【0005】
一方、目的コードの実行時の挙動を逐一記録し、この情報をソースプログラムとともに再度コンパイラ等に入力してプログラムの最適化に利用する、「プロファイル方式」と呼ばれる方法もある。プロファイル方式については、たとえば、特開平01−118931号公報、特開平06−004299号公報、特開平09−330233号公報に記載されている。
【0006】
【発明が解決しようとする課題】
マルチバージョン方式では、コンパイラによって生成される目的コードのサイズが増大するばかりでなく、結果的には利用されないコードも目的コードに含まれることになるため、目的コードのメモリの利用効率が悪い。また、どの最適化方式を採用するかの条件判断をプログラムの翻訳時ではなく実行時に行うため、プログラムの実行性能が低下するという問題があった。
【0007】
また、プロファイル方式では、実行時情報の取得のために本質的にソースプログラムと同一のプログラムを利用するため、実行時間のかかる巨大なプログラムに対して適用が困難であるという問題があった。
【0008】
本発明の目的は、実行時情報を利用して、コンパクトで高速な目的コードを生成するコンパイラを提供することである。また、その際、実行時情報の取得にかかるコストを最小とし、コンパイラにおけるプログラムの最適化を高速に行えるようにすることができる。
【0009】
【課題を解決するための手段】
請求項1記載の最適化コンパイル装置は、前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出し、最適化のために必要とする最小限の実行時情報を取得するために構成された実行時情報取得プログラムを生成する実行時情報取得プログラム生成手段と、前記実行時情報抽出プログラムを実行した結果得られる最適化のために必要とする最小限の実行時情報の構造を解析し、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する実行時情報解析手段と、前記実行時情報取得プログラム生成手段に対し、最適化に必要な実行時情報の取得を要求するとともに、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行うプログラム最適化手段とを有することを特徴とする。
【0010】
請求項2記載の最適化コンパイル装置は、前記プログラム最適化手段が、最適化処理を行う際、前記実行時情報取得プログラム生成手段に対して最適化の対象となるループの反復数の値を要求し、当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えることを特徴とする。
【0011】
請求項3記載の最適化コンパイル装置は、前記実行時情報取得プログラム生成手段はデータの有効範囲の解析を行うデータフロー解析部を有し、該データフロー解析部によるデータフロー解析により最適化のために必要とする最小限の実行文情報を抽出することを特徴とする。
【0012】
請求項4記載の最適化コンパイル装置は、前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする。
【0013】
請求項5記載のプログラム最適化方法は、最適化に必要な最小限の実行時情報の取得を要求する第1のステップと、前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出する第2のステップと、最適化のために必要とする最小限の実行時情報を取得するためのプログラムであって、抽出された前記最小限の実行文情報が埋め込まれている実行時情報取得プログラムを生成する第3のステップと、前記実行時情報抽出プログラムを実行した結果得られる前記最小限の実行時情報の構造を解析する第4のステップと、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する第5のステップと、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う第6のステップを有することを特徴とする。
【0014】
請求項6記載のプログラム最適化方法は、前記第6のステップには、さらに最適化の対象となるループの反復数の値を要求するステップと、当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えるステップを有することを特徴とする。
【0015】
請求項7記載のプログラム最適化方法は、前記第1のステップにおいて、最適化のために必要とする最小限の実行文情報をデータフロー解析により抽出することを特徴とする。
【0016】
請求項8記載のプログラム最適化方法は、前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする。
【0017】
請求項9記載のプログラムは、プログラム最適化処理が、最適化に必要な最小限の実行時情報の取得を要求する第1のステップと、前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出する第2のステップと、最適化のために必要とする最小限の実行時情報を取得するためのプログラムであって、抽出された前記最小限の実行文情報が埋め込まれている実行時情報取得プログラムを生成する第3のステップと、前記実行時情報抽出プログラムを実行した結果得られる前記最小限の実行時情報の構造を解析する第4のステップと、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する第5のステップと、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う第6のステップを有することを特徴とする。
【0018】
請求項13記載の記録媒体は、請求項9〜12のいずれかに記載のプログラムが記録されているものである。
【0019】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。図1は本発明による最適化コンパイル装置の一実施の形態を示すブロック図である。
【0020】
コンパイラ20は、その内部に実行時情報取得プログラム生成手段22と、実行時情報解析手段23と、プログラム最適化手段21を備えている。
【0021】
コンパイラ20は高級言語で記述されたソースプログラム10を入力として受理し、最適化変形を施した後、高級言語、アセンブリ言語、若しくは機械命令列で表現された目的コード60を出力する。そして、その目的コード60を使用してオブジェクトプログラムが生成される。
【0022】
ここで、ソースプログラム10の最適化変形はプログラム最適化手段21によって行なわれる。以下、コンパイラ20の各構成要素の動作について図2のフローチャートを参照して説明する。
【0023】
プログラム最適化手段21は、実行時情報取得プログラム生成手段22に対し、最適化に必要な実行時情報50の取得を要求する(ステップS101)。
【0024】
実行時情報取得プログラム生成手段22は、ソースプログラム10から最適化の過程で必要とする最小限の実行文情報(モジュール)を抽出し(ステップS102)、最適化のために必要とする最小限の実行時情報を取得するために構成された実行時情報取得プログラム30を生成する(ステップS103)。
【0025】
対象計算機40は実行時情報抽出プログラム30を実行する(ステップS104)。実行時情報解析手段23は、対象計算機40が実行時情報抽出プログラム30を実行した結果、出力された実行時情報50を入力し、入力された実行時情報50の構造を解析し(ステップS105)、解析された実行時情報50をプログラム最適化手段21でソースプログラム10の最適化に利用できる形式に加工する(ステップS106)。
【0026】
プログラム最適化手段21は、上記したように解析された実行時情報50に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う(ステップS107)。
【0027】
次に、図3のソースプログラムを例に、本実施の形態の動作を説明する。プログラム最適化手段21は、入力されたソースプログラム10中のループの反復数が、例えば256よりも大きいときに、そのループをベクトル処理命令に置き換えるものとする。
【0028】
図3のソースプログラムがコンパイラ20に入力されると、プログラム最適化手段21は、5行目のループをベクトル命令に置き換えるべきかどうか判定しようとする。ループの反復数はCであるが、Cの値はプログラムの文面上だけからは不明である。そこで、プログラム最適化手段21は、実行時情報取得プログラム生成手段22に対し、「5行目におけるCの値」を要求する。
【0029】
実行時情報取得プログラム生成手段22は、データフロー解析の手法により、「5行目におけるCの値」を決定するのに必要最小限の実行文(必要最小限の実行時情報)をソースプログラム10から抽出し、その必要最小限の実行文だけを必要最小限の実行時情報として取得するのに利用される実行時情報取得プログラム30を再構成する。
【0030】
さらに、実行時情報取得プログラム30には、ソースプログラムの5行目に相当する位置に、Cの値のみを出力するための出力文が埋め込まれる。図3のソースプログラムで、5行目におけるCの値を計算しているのは3行目の代入文「C=A*A」であり、さらにその右辺のAの値は1行目のREAD文によりプログラム外から入力されている。
【0031】
したがって、実行時情報取得プログラム生成手段22により出力される実行時情報取得プログラムは、図3のソースプログラムから1行目と3行目を抽出し、さらに5行目の位置にCの値を出力するWRITE文を挿入したもの、すなわち図4のようになる。
【0032】
図4に示す実行時情報取得プログラムを対象計算機40の上で実行すると、出力として図5のような実行時情報が得られる。実行時情報解析手段23はこの出力を構文解析し、プログラム最適化手段21に対して「5行目におけるCの値」の回答として400を与える。プログラム最適化手段21は、ループの反復数(400)が256よりも大きいため、5行目のループをベクトル処理命令で置き換える最適化処理を行う。
【0033】
【発明の効果】
マルチバージョン方式では複数の最適化方式によるコードを目的コード内に併せ持ち、結果的には利用されない無駄なコードも目的コードに含まれるのに対し、本発明では、実際に利用されるコードのみが目的コードに含まれるため、従来のマルチバージョン方式と比べて目的コードのサイズが小さくなり、メモリの利用効率がよいという効果が得られる。
【0034】
マルチバージョン方式ではどの最適化方式によるコードを利用するかの判断を実行時に行うため、オーバーヘッドが生じるのに対し、本発明では、その判断を翻訳時にすべて終えており、実行時にオーバーヘッドが生じないので、マルチバージョン方式と比べて目的コードが高速に実行されるという効果が得られる。
【0035】
プロファイル方式が、元のソースプログラムに情報取得ルーチンを追加しただけのものを実行時情報の取得に利用しており、本質的に元のプログラムの実行時間と同じだけの時間を実行時情報の取得に必要とするのに対し、本発明では、コンパイラが最適化のために必要とする情報だけを取得する最小限の実行時情報取得プログラムを実行時情報の取得に利用するため、その実行時間がわずかで済むプロファイル方式と比べて実行時情報の取得に要する時間が短く、結果としてプログラムの最適化に要する時間が短いという効果が得られる。
【図面の簡単な説明】
【図1】本発明の一実施の形態を示したブロック図である。
【図2】本発明のプログラム最適化方法における各処理手順を示したフローチャートである。
【図3】ソースプログラムの一例を示した図である。
【図4】実行時情報取得プログラムの一例を示した図である。
【図5】実行時情報の一例を示した図である。
【符号の説明】
10 ソースプログラム
20 コンパイラ
21 プログラム最適化手段
22 実行時情報取得プログラム生成手段
23 実行時情報解析手段
30 実行時情報取得プログラム
40 対象計算機
50 実行時情報
Claims (13)
- ソースプログラムを入力として受理し、最適化変形を施した目的コードを含む目的プログラムを生成する最適化コンパイル装置において、
前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出し、最適化のために必要とする最小限の実行時情報を取得するために構成された実行時情報取得プログラムを生成する実行時情報取得プログラム生成手段と、前記実行時情報抽出プログラムを実行した結果得られる最適化のために必要とする最小限の実行時情報の構造を解析し、解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する実行時情報解析手段と、
前記実行時情報取得プログラム生成手段に対し、最適化に必要な実行時情報の取得を要求するとともに、前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行うプログラム最適化手段と
を有することを特徴とする最適化コンパイル装置。 - 前記プログラム最適化手段は、最適化処理を行う際、前記実行時情報取得プログラム生成手段に対して最適化の対象となるループの反復数の値を要求し、当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えることを特徴とする請求項1記載の最適化コンパイル装置。
- 前記実行時情報取得プログラム生成手段はデータの有効範囲の解析を行うデータフロー解析部を有し、該データフロー解析部によるデータフロー解析により最適化のために必要とする最小限の実行文情報を抽出することを特徴とする請求項1又は2記載の最適化コンパイル装置。
- 前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする請求項1〜3のいずれかに記載の最適化コンパイル装置。
- ソースプログラムに最適化変形を施し、最適な実行プログラムを生成するプログラム最適化方法において、
最適化に必要な最小限の実行時情報の取得を要求する第1のステップと、
前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出する第2のステップと、
最適化のために必要とする最小限の実行時情報を取得するためのプログラムであって、抽出された前記最小限の実行文情報が埋め込まれている実行時情報取得プログラムを生成する第3のステップと、
前記実行時情報抽出プログラムを実行した結果得られる前記最小限の実行時情報の構造を解析する第4のステップと、
解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する第5のステップと、
前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う第6のステップ
を有することを特徴とするプログラム最適化方法。 - 前記第6のステップには、さらに最適化の対象となるループの反復数の値を要求するステップと、
当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えるステップを
有することを特徴とする請求項5記載のプログラム最適化方法。 - 前記第1のステップにおいて、最適化のために必要とする最小限の実行文情報をデータフロー解析により抽出することを特徴とする請求項5又は6記載のプログラム最適化方法。
- 前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする請求項5〜7のいずれかに記載のプログラム最適化方法。
- ソースプログラムに最適化変形を施し、最適な実行プログラムを生成するプログラム最適化処理をコンピュータに対して実行させるプログラムにおいて、前記プログラム最適化処理は、
最適化に必要な最小限の実行時情報の取得を要求する第1のステップと、
前記ソースプログラムから最適化のために必要とする最小限の実行文情報を抽出する第2のステップと、
最適化のために必要とする最小限の実行時情報を取得するためのプログラムであって、抽出された前記最小限の実行文情報が埋め込まれている実行時情報取得プログラムを生成する第3のステップと、
前記実行時情報抽出プログラムを実行した結果得られる前記最小限の実行時情報の構造を解析する第4のステップと、
解析された実行時情報を前記ソースプログラムの最適化に利用できる形式に加工する第5のステップと、
前記実行時情報に基いて最適化の対象となるループをベクトル命令に置き換える最適化処理を行う第6のステップ
を有することを特徴とするプログラム。 - 前記第6のステップには、さらに最適化の対象となるループの反復数の値を要求するステップと、
当該ループの反復数が、最適化処理を行うのに必要最小限のあらかじめ定められた所定数よりも大きいときに、当該ループをベクトル処理命令に置き換えるステップを
有することを特徴とする請求項9記載のプログラム。 - 前記第1のステップにおいて、最適化のために必要とする最小限の実行文情報をデータフロー解析により抽出することを特徴とする請求項9又は10記載のプログラム。
- 前記最小限の実行文情報は、前記ソースプログラムに実行される実行文情報の内、コンパイラの最適化処理において省略しても差し支えない実行文情報を除いた実行文情報であることを特徴とする請求項9〜11のいずれかに記載のプログラム。
- 請求項9〜12のいずれかに記載のプログラム最適化方法を実行可能なプログラムが記録されている記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002216856A JP2004062324A (ja) | 2002-07-25 | 2002-07-25 | 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002216856A JP2004062324A (ja) | 2002-07-25 | 2002-07-25 | 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004062324A true JP2004062324A (ja) | 2004-02-26 |
Family
ID=31938495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002216856A Withdrawn JP2004062324A (ja) | 2002-07-25 | 2002-07-25 | 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004062324A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226589A (ja) * | 2006-02-24 | 2007-09-06 | Oki Electric Ind Co Ltd | プログラム変換システム |
-
2002
- 2002-07-25 JP JP2002216856A patent/JP2004062324A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226589A (ja) * | 2006-02-24 | 2007-09-06 | Oki Electric Ind Co Ltd | プログラム変換システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7856629B2 (en) | Compiler apparatus | |
US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
US20090049434A1 (en) | Program translating apparatus and compiler program | |
US20130139137A1 (en) | Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
EP2963547A1 (en) | Compiling device, compiling method, and storage medium storing compiler program | |
EP2924559A2 (en) | Program, compiler method, and compiler apparatus | |
US8266416B2 (en) | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system | |
US20090077563A1 (en) | Systems And Methods For Grid Enabling Computer Jobs | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
JP2007094731A (ja) | コンパイラ装置 | |
JP2004062324A (ja) | 最適化コンパイル装置、プログラム最適化方法、プログラム、及び記憶媒体 | |
JP2005071135A (ja) | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 | |
US20060123382A1 (en) | Computer program functional partitioning system and method for heterogeneous multi-processing systems | |
US7774767B2 (en) | System and method for compiler interprocedural optimization having support for object files in libraries | |
US10949209B2 (en) | Techniques for scheduling instructions in compiling source code | |
JP3323147B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
JP7026563B2 (ja) | 高位合成方法、高位合成プログラム、高位合成装置 | |
JP4788902B2 (ja) | コンパイル最適化方法およびコンパイラ | |
JP2008071065A (ja) | インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体 | |
JPH11195011A (ja) | 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体 | |
JP2007265098A (ja) | マクロ定義情報取得装置 | |
JP2002082811A (ja) | コンパイル方法および記録媒体 | |
JP2009064207A (ja) | コンパイル装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20050418 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20051004 |