JP4462676B2 - プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents
プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP4462676B2 JP4462676B2 JP30502699A JP30502699A JP4462676B2 JP 4462676 B2 JP4462676 B2 JP 4462676B2 JP 30502699 A JP30502699 A JP 30502699A JP 30502699 A JP30502699 A JP 30502699A JP 4462676 B2 JP4462676 B2 JP 4462676B2
- Authority
- JP
- Japan
- Prior art keywords
- language specification
- program
- specification information
- array
- language
- 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 OR CALCULATING; 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
【発明の属する技術分野】
本発明は最適化促進装置に関し、特にFortran90,95言語のように、言語仕様の定義からプログラム上の変数の値や依存関係が明確にできる言語に対して、その言語仕様を利用した解析結果情報を最適化部が利用できる形式に変換し、各最適化機能を促進させるようにしたプログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
通常、コンパイラ装置では、フロントエンド部にてソースプログラムの構文解析などを行い、最適化部でプログラムの最適化を実施し、出力装置で目的プログラムを生成する。ここで、プログラムがたとえば配列記述を含んでいる場合、そのような配列記述はループとして認識される。このとき、目的プログラムにおけるループの部分は実行時間の比重が高いため、最適化部が配列記述に関係する部分のコードを最適な状態に制御して、実行性能を改善することが行なわれている。
【0003】
【従来の技術】
従来より、プログラム言語によってその表記方法が異なるが、言語仕様の定義からプログラム上の変数の値や依存関係を明確にすることができる言語がある。その言語の例として、Fortran90,95言語がある。C言語やFortran77言語などでは、配列アクセスを要素単位でしか記述できないのに対して、Fortran90,95言語は、図8の(A)に示したような配列のスカラ表現を(B)に示したようなベクトル表現で表記することができる。ここで、言語仕様の定義からプログラム上の変数の定義や依存関係が明確にできるというのは、図8の(B)において、4行目の記述から「L=100」が成立することを意味する。
【0004】
従来の最適化技術の一つとして、ループ融合という最適化は著名な技術であり、その際、利用する配列の依存関係解析も高度な技術が存在している。ここで、ループ融合とは、所定の条件を満足する複数のループによって実行される処理を一つのループによる処理にまとめ、これによって、ループを繰り返し実行するために必要な回転制御のオーバーヘッドをループ数の減少によって削減する処理である。その依存関係解析技術を使ってループ融合の最適化を促進させる方法が既に提案されている(特開平9−62514号公報)。
【0005】
この方法によれば、Fortran90,95のようなベクトル表現ができる言語に対して、配列の添字解析機能を用いてループ融合を促進し、最適な融合ループを作成している。たとえば図9において、上方に記述した3行が配列のベクトル表現を示しており、これに対して配列の添字解析を実行する。言語仕様上、代入文の右辺と左辺のサイズは同じであることから、「L=5=M−1=N−2」という配列の添字解析結果情報が得られる。この配列の添字解析結果情報、すなわち「L=5」という情報は、do文において、ループの回数が5回というループ融合促進とそれによる最適なループ形状の出力とに利用されていることが分かる。
【0006】
【発明が解決しようとする課題】
このように、従来では、配列の添字解析結果情報は、ループ融合という最適化の一つに適用することによって、最適化の促進に有効に働いたが、しかし、この配列の添字解析結果情報は他の最適化において利用されることなく捨てられていたという問題点があった。
【0007】
本発明はこのような点に鑑みてなされたものであり、言語仕様の定義が示唆する情報を利用してさらに他の最適化が促進される最適化促進装置を提供することを目的とする。
【0008】
【課題を解決するための手段】
上記課題を解決するためにプログラム変換装置が提供される。このプログラム変換装置は、言語仕様情報記憶手段、言語仕様情報解析手段および言語仕様解析結果情報埋め込み手段を有する。言語仕様情報記憶手段は、配列代入文における両辺の配列のサイズが等しいことを示す言語仕様情報解析関数を含む言語仕様情報を記憶する。言語仕様情報解析手段は、プログラムから、一方の配列の要素番号の始まり値と終わり値のいずれかに変数を含む配列代入文を取得し、言語仕様情報記憶手段に記憶された言語仕様情報解析関数に基づいて、取得した配列代入文に含まれる両辺の各配列の要素番号の始まり値から終わり値までの要素数が等しくなるように変数の変数値を特定する。言語仕様解析結果情報埋め込み手段は、プログラム内の言語仕様情報解析手段が取得した配列代入文の前に、言語仕様情報解析手段が特定した変数値を変数に代入する代入式を埋め込む。
【0009】
また、上記課題を解決するためにコンパイラ装置が提供される。このコンパイラ装置は、言語仕様情報記憶手段、言語仕様情報解析手段、言語仕様解析結果情報埋め込み手段およびコンパイラ手段を有する。言語仕様情報記憶手段は、配列代入文における両辺の配列のサイズが等しいことを示す言語仕様情報解析関数を含む言語仕様情報を記憶する。言語仕様情報解析手段は、プログラムから、一方の配列の要素番号の始まり値と終わり値のいずれかに変数を含む配列代入文を取得し、言語仕様情報記憶手段に記憶された言語仕様情報解析関数に基づいて、取得した配列代入文に含まれる両辺の各配列の要素番号の始まり値から終わり値までの要素数が等しくなるように変数の変数値を特定する。言語仕様解析結果情報埋め込み手段は、プログラム内の言語仕様情報解析手段が取得した配列代入文の前に、言語仕様情報解析手段が特定した変数値を変数に代入する代入式を埋め込む。コンパイラ手段は、代入式が埋め込まれたプログラムに基づいて、そのプログラムのコンパイルを実行する。
【0010】
また、上記プログラム変換装置と同様の機能をコンピュータに実行させるプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【0013】
【発明の実施の形態】
まず、本発明の概略について図面を参照して説明する。
図1は本発明による最適化促進装置の構成例を示す図である。図1は全体としては本発明による最適化促進装置を適用したコンパイラ装置を示している。コンパイラ装置は、基本的には、プログラムソースを入力する入力部1と、入力されたプログラムソースに対して構文解析などを実施するフロントエンド部2と、プログラムの最適化を実施する最適化部3と、プログラムまたはオブジェクトコードを出力する出力部4とから構成されており、これに本発明による最適化促進装置5が実装されている。
【0014】
最適化促進装置5はフロントエンド部2と最適化部3との間に挿入され、言語仕様情報解析部6と、言語仕様テーブル7と、言語仕様解析結果情報埋め込み部8とを備えている。その言語仕様解析結果情報埋め込み部8には、関数テーブル9を有している。また、この最適化促進装置5における言語仕様テーブル7には、各種言語に対する言語仕様の情報があらかじめ保持されている。
【0015】
以上の構成において、コンパイラ装置の入力部1にプログラムソースが投入されると、フロントエンド部2ではそのプログラムソースに対して構文解析などが行われる。次に、最適化促進装置5では、言語仕様情報解析部6が言語仕様テーブル7を参照して言語仕様情報を解析する言語仕様情報解析関数(以下チェック関数という)を決め、そのチェック関数を言語仕様解析結果情報埋め込み部8の関数テーブル9に登録する。次に、言語仕様情報解析部6がプログラムの命令を獲得すると、言語仕様解析結果情報埋め込み部8は、関数テーブル9に登録された各チェック関数に対して言語仕様の定義からプログラムの変数の定義や依存関係が明確にできるかどうかをチェックし、言語仕様解析結果情報を獲得する。そして、言語仕様解析結果情報埋め込み部8は、獲得された言語仕様解析結果情報のコードを獲得した命令の前に埋め込む。このようにして言語仕様解析結果情報が埋め込まれたプログラムは、最適化部3に渡されて最適化が実施され、出力部4よりプログラムまたはオブジェクトコードが出力される。
【0016】
このように、最適化促進装置5は、言語仕様テーブル7に保持された言語仕様の定義からプログラムソース上の変数の定義や依存関係が明確な言語仕様解析解析結果情報を最適化部3が利用できるコードに変換し、プログラムソースに埋め込むようにした。これにより、最適化部3では、変数として渡されていた言語仕様情報が定数として渡されるようになる。この結果、最適化部3で実施される最適化は、たとえばループ融合のような特定の最適化が促進されるのではなく、複数の最適化が促進される可能性が出てくる。
【0017】
次に、本発明の実施の形態をさらに詳細に説明する。まず、言語仕様テーブル7が保持する言語仕様情報の例について説明する。
図2は言語仕様テーブルの例を示す図であって、(A)は言語仕様情報の第1のテーブルの例を示し、(B)は言語仕様情報の第2のテーブルの例を示している。図2の(A)に示した言語仕様情報の第1のテーブルによれば、言語仕様情報解析関数(チェック関数)として、たとえば「配列のベクトル表記」が各言語に対して可能かどうかを定義している。また、(B)に示した言語仕様情報の第2のテーブルによれば、言語仕様情報解析関数(チェック関数)として、たとえばNo.1に「配列代入文において、参照側の結果サイズと定義側のサイズは等しい」ということが各言語に対して当てはまるかどうかを定義している。
【0018】
図3はプログラムソースの一例を示す図である。このプログラムソースの4行目および5行目の命令に注目すると、配列代入文の記述がある。配列代入文は、言語仕様情報解析部6による解析の結果、Fortran90およびFortran95言語では、右辺と左辺のサイズが等しいことから、Lは5に等しく、Nは6に等しいことが分かる。本発明では、これら言語仕様解析結果情報である「L=5」および「N=6」を最適化部3に伝えることで、最適化の促進を図ることができる。この例では、プログラムソースの6行目に「do i=1,L」の記述がなされているが、その記述の中の変数Lは5であることを最適化部3に伝えることになる。その伝え方は、言語仕様解析結果情報埋め込み部8により、プログラムに言語仕様解析結果情報である「L=5」および「N=6」を埋め込むことによって行う。
【0019】
図4は言語仕様解析結果情報を埋め込んだプログラムソースを示す図である。この図4によれば、図3に示すプログラムに対して、LおよびNを含む命令の前に、「L=5」、「N=6」という言語仕様解析結果情報がそれぞれ埋め込まれている。この例では、実際に最適化部3に伝えられて有効になるのは、「L=5」の言語仕様解析結果情報だけである。
【0020】
ここで、具体的な効果を明示するために、「L=5」という情報を最適化部3に伝えることで、促進される最適化について説明する。
図5はループの全展開最適化を適用した場合の例を示す図である。この図5のプログラムは、「L=5」という情報をプログラムソースの6行目のdoループの終値として適用することにより、ループアンローリング最適化が促進された関数本体部分を示している。図5によれば、ループアンローリング最適化が実施されて、ループは全展開され、プログラム上にループはなくなっている。
【0021】
次に、図5のループアンローリング最適化を実施したプログラムに対して、さらに並列度を高める最適化を適用した例を示す。
図6は並列度を向上させる最適化を適用した場合の例を示す図である。図5のプログラムに対して演算順序を変更することにより、並列度を高める最適化を適用すると、図6のプログラムのように最適化される。すなわち、図5のプログラムでは、kの演算が連なっているが、これらは、それぞれ前の演算が終了しないと、後ろの演算を実行することはできない。しかし、図6のプログラムでは、「k=k+a(1)」、「k1=a(2)+a(3)」および「k2=a(4)+a(5)」という記述に注目してみると、たとえば「k1=a(2)+a(3)」という演算は、その上の「k=k+a(1)」という演算の結果を使わないので、上の演算と関係なく演算を実行することができる。その下の「k2=a(4)+a(5)」という演算も上の演算に依存せずに演算を実行することができる。したがって、この三つの演算は、複数の足し算を一回で発行できるようなマシンにおいて、複数の足し算を並行して行うことができるような最適化が実施されたことになる。ただし、配列a、変数kが浮動少数点数である場合、この最適化は精度誤差が生じる可能性がある。
【0022】
このように、プログラムから明確となる言語仕様解析結果情報である「L=5」をプログラムに埋め込むだけで、後に記述されたdoループの終値に定数伝搬することができ、従来技術の最適化が促進されるのである。
【0023】
次に、最適化促進装置の処理の流れについて図3に示したプログラムソースが入力された場合を例に説明する。この場合、処理のターゲットであるプログラムは、Fortran90言語である。
【0024】
図7は最適化促進装置のアルゴリズムを示すフローチャートである。まず、言語仕様情報解析部6は、言語仕様テーブル7を元に、ターゲットである言語仕様を利用して情報解析を行うチェック関数(言語仕様情報解析関数)を決定し、それを言語仕様解析結果情報埋め込み部8の関数テーブル9ヘ登録を行う(ステップS1)。すなわち、図2に示した二つのテーブルが参照され、そこから、第2のテーブルにおけるNo.1およびNo.2のチェック関数が関数テーブル9に登録される。次に、言語仕様情報解析部6は、プログラムから命令を獲得し(ステップS2)、獲得した命令が最後の命令かどうかを判断する(ステップS3)。最後の命令であれば、この処理は終了し、最後の命令でなければ、カウンタ値iをその初期値である「1」に設定する(ステップS4)。次に、iがチェック関数テーブルサイズ以下かどうかが判断される(ステップS5)。ここでは、チェック関数テーブルサイズは、関数テーブル9にはNo.1およびNo.2のチェック関数が登録されているので、「2」である。iがチェック関数テーブルサイズを越えていれば、ステップS2に戻り、iがチェック関数テーブルサイズ以下であれば、言語仕様情報解析部6は関数テーブル9からi番目のチェック関数を呼び出し(ステップS6)、プログラム内の言語仕様情報の解析を行い、言語仕様解析結果情報を獲得する(ステップS7)。すなわち、プログラムソースの4行目の命令に対して「L=5」、5行目の命令に対して「N=6」という言語仕様解析結果情報を獲得する。次に、言語仕様解析結果情報埋め込み部8は、獲得した言語仕様解析結果情報をプログラムソースに埋め込む(ステップS8)。この埋め込みは、獲得した言語仕様解析結果情報を獲得した命令の前の行に対して行う。そして、カウンタ値iをインクリメントし(ステップS9)、ステップS5に戻る。
【0025】
このようにして、登録されたチェック関数すべてについて、言語仕様情報の解析および言語仕様解析結果情報の獲得を行い、プログラムソースへの埋め込みを行うことで、図4に示したプログラムソースが得られる。この言語仕様解析結果情報が埋め込まれたプログラムが最適化部3への入力となり、この結果、図5および図6に示したような最適化が可能になる。
【0026】
なお、以上の実施の形態では、最適化促進装置5への入力は、プログラムソースの場合を示したが、これに限らず、コンパイラ中間言語であってもよい。
また、以上の実施の形態では、言語仕様情報の解析結果を表す情報を最適化部3へ伝える方法として、言語仕様情報解析結果情報をプログラムソースに埋め込むやり方を例示したが、得られた言語仕様情報解析結果情報をテーブルに保持しておいて、その情報を最適化部3に渡すという方法もある。ただし、この言語仕様解析結果情報テーブルを利用する方法は、ある変数の値がいくつでそれの有効範囲がどこからどこまでであるという情報を求めるための手間のかかる解析が必要であることと、言語仕様解析結果情報埋め込み機能では、既存最適化にプラグインする形で適用できるが、言語仕様解析結果情報テーブルを利用するやり方は、最適化自体、そのテーブルの検索をし、ある命令の時点でそれが参照する変数の値が分かるかどうかをチェックする処理が必要となる。
【0027】
さらに、上記の最適化促進装置5の処理内容は、コンピュータで読み取り可能な記録媒体に記録されたプログラムに記述させておくことができる。このプログラムをコンピュータで実行することにより、上記処理がコンピュータで実現できる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置や半導体メモリなどがある。市場に流通させる場合には、CD−ROM(Compact Disk Read Only Memory)やフロッピーディスクなどの可搬型記録媒体にプログラムを格納して流通させたり、ネットワークを介して接続されたコンピュータの記憶装置に格納しておき、ネットワークを通じて他のコンピュータに転送することもできる。コンピュータで実行する際には、コンピュータ内のハードディスク装置などにプログラムを格納しておき、メインメモリにロードして実行する。
【0028】
【発明の効果】
以上説明したように本発明では、言語仕様の定義からプログラム内の変数の値や依存関係が明確にできる言語に対して、その言語仕様を利用した解析結果情報を最適化部で利用できる形式に変換するように構成した。このため、従来の技術では不可能であった様々な最適化を促進させることができるようになる。
【0029】
また、促進される最適化は特定の最適化が促進されるわけではなく、複数の最適化が促進される可能性があり、その効果は非常に大きい。
【図面の簡単な説明】
【図1】本発明による最適化促進装置の構成例を示す図である。
【図2】言語仕様テーブルの例を示す図であって、(A)は言語仕様情報の第1のテーブルの例を示し、(B)は言語仕様情報の第2のテーブルの例を示している。
【図3】プログラムソースの一例を示す図である。
【図4】言語仕様解析結果情報を埋め込んだプログラムソースを示す図である。
【図5】ループの全展開最適化を適用した場合の例を示す図である。
【図6】並列度を向上させる最適化を適用した場合の例を示す図である。
【図7】最適化促進装置のアルゴリズムを示すフローチャートである。
【図8】配列の記述例を示す図であって、(A)は配列のスカラ表現を示し、(B)は配列のベクトル表現を示している。
【図9】配列の添字解析機能を用いたループ融合促進および最適なループ形状の決定の例を示す図である。
【符号の説明】
1 入力部
2 フロントエンド部
3 最適化部
4 出力部
5 最適化促進装置
6 言語仕様情報解析部
7 言語仕様テーブル
8 言語仕様解析結果情報埋め込み部
9 関数テーブル
Claims (4)
- プログラムを変換するプログラム変換装置において、
配列代入文における両辺の配列のサイズが等しいことを示す言語仕様情報解析関数を含む言語仕様情報を記憶する言語仕様情報記憶手段と、
前記プログラムから、一方の配列の要素番号の始まり値と終わり値のいずれかに変数を含む配列代入文を取得し、前記言語仕様情報記憶手段に記憶された前記言語仕様情報解析関数に基づいて、取得した配列代入文に含まれる両辺の各配列の要素番号の始まり値から終わり値までの要素数が等しくなるように前記変数の変数値を特定する言語仕様情報解析手段と、
前記プログラム内の前記言語仕様情報解析手段が取得した配列代入文の前に、前記言語仕様情報解析手段が特定した前記変数値を前記変数に代入する代入式を埋め込む言語仕様解析結果情報埋め込み手段と、
を備えていることを特徴とするプログラム変換装置。 - 前記言語仕様情報記憶手段には、前記プログラムの言語種別ごとに、前記言語種別に応じた前記言語仕様情報が登録されており、
前記言語仕様情報解析手段は、前記プログラムの言語種別を特定して、特定した前記言語種別に応じた前記言語仕様情報を選択する、
ことを特徴とする請求項1記載のプログラム変換装置。 - プログラムをコンパイルしてオブジェクトコードまたはソースプログラムを生成するコンパイラ装置において、
配列代入文における両辺の配列のサイズが等しいことを示す言語仕様情報解析関数を含む言語仕様情報を記憶する言語仕様情報記憶手段と、
前記プログラムから、一方の配列の要素番号の始まり値と終わり値のいずれかに変数を含む配列代入文を取得し、前記言語仕様情報記憶手段に記憶された前記言語仕様情報解析関数に基づいて、取得した配列代入文に含まれる両辺の各配列の要素番号の始まり値から終わり値までの要素数が等しくなるように前記変数の変数値を特定する言語仕様情報解析手段と、
前記プログラム内の前記言語仕様情報解析手段が取得した配列代入文の前に、前記言語仕様情報解析手段が特定した前記変数値を前記変数に代入する代入式を埋め込む言語仕様解析結果情報埋め込み手段と、
前記代入式が埋め込まれた前記プログラムに基づいて、当該プログラムのコンパイルを実行するコンパイル手段と、
を備えていることを特徴とするコンパイラ装置。 - コンピュータを、
配列代入文における両辺の配列のサイズが等しいことを示す言語仕様情報解析関数を含む言語仕様情報を記憶する言語仕様情報記憶手段、
プログラムから、一方の配列の要素番号の始まり値と終わり値のいずれかに変数を含む配列代入文を取得し、前記言語仕様情報記憶手段に記憶された前記言語仕様情報解析関数に基づいて、取得した配列代入文に含まれる両辺の各配列の要素番号の始まり値から終わり値までの要素数が等しくなるように前記変数の変数値を特定する言語仕様情報解析手段、
前記プログラム内の前記言語仕様情報解析手段が取得した配列代入文の前に、前記言語仕様情報解析手段が特定した前記変数値を前記変数に代入する代入式を埋め込む言語仕様解析結果情報埋め込み手段、
として機能させることを特徴とするプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP30502699A JP4462676B2 (ja) | 1999-10-27 | 1999-10-27 | プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 |
| US09/616,799 US7181735B1 (en) | 1999-10-27 | 2000-07-14 | Method and apparatus for analyzing program based on rules of programming language before optimization in compiler |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP30502699A JP4462676B2 (ja) | 1999-10-27 | 1999-10-27 | プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001125792A JP2001125792A (ja) | 2001-05-11 |
| JP4462676B2 true JP4462676B2 (ja) | 2010-05-12 |
Family
ID=17940209
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP30502699A Expired - Fee Related JP4462676B2 (ja) | 1999-10-27 | 1999-10-27 | プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US7181735B1 (ja) |
| JP (1) | JP4462676B2 (ja) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4328328B2 (ja) * | 2003-10-23 | 2009-09-09 | 富士通株式会社 | ソフトウエア開発ツールプログラム |
| KR100902461B1 (ko) * | 2005-02-03 | 2009-06-11 | 미쓰비시덴키 가부시키가이샤 | 프로그램 코드 생성 지원 장치 및 방법, 프로그램실행장치와 방법, 프로그램 코드 압축 처리 장치 및 방법과그들의 프로그램 |
| US8341597B2 (en) * | 2007-01-17 | 2012-12-25 | International Business Machines Corporation | Editing source code |
| JPWO2009011057A1 (ja) * | 2007-07-19 | 2010-09-09 | 富士通株式会社 | アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置 |
| US8694978B1 (en) * | 2011-03-25 | 2014-04-08 | Google Inc. | Function side-effect modeling by prototyping |
| US9274771B1 (en) * | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
| US10191725B2 (en) * | 2015-12-15 | 2019-01-29 | Facebook, Inc. | Rearrangeable code optimization modules |
| CN113330418A (zh) * | 2019-02-26 | 2021-08-31 | 英特尔公司 | 编译器的面向工作负载的常量传播 |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
| JP2513853B2 (ja) | 1989-08-18 | 1996-07-03 | 富士通株式会社 | ル―プ最適化処理方式 |
| WO1991003791A1 (en) * | 1989-09-01 | 1991-03-21 | Amdahl Corporation | Operating system and data base |
| US5293631A (en) * | 1991-08-06 | 1994-03-08 | Hewlett-Packard Company | Analysis and optimization of array variables in compiler for instruction level parallel processor |
| JP3280449B2 (ja) * | 1993-03-01 | 2002-05-13 | 富士通株式会社 | コンパイル装置 |
| US5548761A (en) * | 1993-03-09 | 1996-08-20 | International Business Machines Corporation | Compiler for target machine independent optimization of data movement, ownership transfer and device control |
| JPH0756745A (ja) * | 1993-08-13 | 1995-03-03 | Nec Corp | 言語処理プログラムのコンパイラ処理方式 |
| CA2102089C (en) * | 1993-10-29 | 1999-05-25 | David M. Gillies | Recompilation of computer programs for enhanced optimization |
| US5838980A (en) * | 1994-01-18 | 1998-11-17 | Sybase, Inc. | Compilation and virtual machine arrangement and process for source code including pre-runtime executable language structure constructs |
| US5764991A (en) * | 1995-06-30 | 1998-06-09 | Canon Kabushiki Kaisha | Processing object oriented code and virtual function code |
| JP3695798B2 (ja) | 1995-08-25 | 2005-09-14 | 富士通株式会社 | コンピュータシステムおよびコード生成最適化制御方法 |
| US5872859A (en) * | 1995-11-02 | 1999-02-16 | University Of Pittsburgh | Training/optimization of computer aided detection schemes based on measures of overall image quality |
| US5819097A (en) * | 1996-12-09 | 1998-10-06 | Allen Bradley Company, Llc | Industrial controller compiler with expandable instruction set |
| US6223337B1 (en) * | 1997-12-12 | 2001-04-24 | Hewlett-Packard Company | Random test generation for compiler optimization |
| US6175948B1 (en) * | 1998-02-05 | 2001-01-16 | Motorola, Inc. | Method and apparatus for a waveform compiler |
-
1999
- 1999-10-27 JP JP30502699A patent/JP4462676B2/ja not_active Expired - Fee Related
-
2000
- 2000-07-14 US US09/616,799 patent/US7181735B1/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001125792A (ja) | 2001-05-11 |
| US7181735B1 (en) | 2007-02-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3311462B2 (ja) | コンパイル処理装置 | |
| Larsen et al. | Exploiting superword level parallelism with multimedia instruction sets | |
| JP2921190B2 (ja) | 並列実行方式 | |
| CN103577241B (zh) | 编译系统以及编译方法 | |
| JP2004511043A (ja) | リターゲッタブルコンパイルシステム及び方法 | |
| JP2001166947A (ja) | コンパイル処理方式 | |
| JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
| JPH11259437A (ja) | 不要バリア命令の削減方式 | |
| EP0428560A4 (en) | Machine process for translating programs in binary machine language into another binary machine language | |
| JP2009524866A (ja) | プログラムの並列実行のためのシステム及び方法 | |
| US6041181A (en) | Method of, system for, and computer program product for providing quick fusion in WHERE constructs | |
| JP2012510661A (ja) | 逐次コンピュータプログラムコードを並列処理する方法及びシステム | |
| US20050028148A1 (en) | Method for dynamic recompilation of a program | |
| JP4462676B2 (ja) | プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| JPH11167492A (ja) | ループ飛び出し文を含むループに対する配列サマリ解析方法 | |
| JP4184900B2 (ja) | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 | |
| JP3840149B2 (ja) | コンパイラ、演算処理システム及び演算処理方法 | |
| JPH10320212A (ja) | キャッシュ向け最適化方法 | |
| JP3196625B2 (ja) | 並列化コンパイル方式 | |
| Karuri et al. | A generic design flow for application specific processor customization through instruction-set extensions (ISEs) | |
| US20260044342A1 (en) | Proactive register promotion of aggregates amid control flow for gpu workloads | |
| JPH1196018A (ja) | コンパイル装置及び方法並びにコンパイル実行プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| JP3956113B2 (ja) | データ処理装置及びプログラム | |
| JP3367438B2 (ja) | 条件実行処理装置 | |
| JPH11242598A (ja) | コンパイル方法およびコンパイル装置ならびにオブジェクトプログラム実行方法およびオブジェクトプログラム実行装置ならびにプログラム記憶媒体 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060424 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080610 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090602 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090803 |
|
| 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: 20100216 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100216 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
| 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: 20130226 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140226 Year of fee payment: 4 |
|
| LAPS | Cancellation because of no payment of annual fees |