JP2003099269A - コンパイル方法、コンパイル装置およびコンパイルを行うプログラム - Google Patents

コンパイル方法、コンパイル装置およびコンパイルを行うプログラム

Info

Publication number
JP2003099269A
JP2003099269A JP2001292777A JP2001292777A JP2003099269A JP 2003099269 A JP2003099269 A JP 2003099269A JP 2001292777 A JP2001292777 A JP 2001292777A JP 2001292777 A JP2001292777 A JP 2001292777A JP 2003099269 A JP2003099269 A JP 2003099269A
Authority
JP
Japan
Prior art keywords
language
intermediate language
dependency
source program
data
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.)
Pending
Application number
JP2001292777A
Other languages
English (en)
Inventor
Yoshihiro Ito
芳浩 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001292777A priority Critical patent/JP2003099269A/ja
Publication of JP2003099269A publication Critical patent/JP2003099269A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】本発明は、各種の高級言語で書かれたプログラ
ムの実行性能を向上するコンパイル方法、プログラム及
び装置を提供する。 【解決手段】コンパイラは、ソースファイル111をフ
ロントエンド部12で、中間言語に変換する。バックエ
ンド部13は、仮展開部14でデータの依存が無いと仮
定して展開した中間言語とデータの依存が有ると仮定し
て展開した中間言語の両方又は片方に仮展開し、データ
フロー解析部15で、両方又は片方のデータの依存の有
無を検出し、その結果により本展開部16で、いずれか
を選択し、オブジェクト生成部17でオブジェクトファ
イル112に変換する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、各種の高級言語で
書かれたプログラムの実行性能を向上するコンパイル方
法又はコンパイラ装置に関し、特にソースプログラムを
記述している言語の仕様上の性質を利用した最適化を実
施するコンパイル方法、プログラム又はコンパイラ装置
に関する。
【0002】
【従来の技術】近年、開発システムの大規模化や科学技
術計算の膨大化により、プログラミングの負担を軽くす
ることを目的として、ソースプログラム上のデータ記述
の簡略化が進んでいる。このため、コンパイラは、簡略
なデータ記述から実行結果が変わらない範囲で最適化
し、高速実行するために、データの依存関係を効率良く
解析する必要性が高まっている。
【0003】データの記述が簡略化している例として
は、ベクトル記述であるFortran90の配列構文などが挙
げられる。また、データの記述が冗長である例として
は、スカラ記述であるFortran77の配列要素毎の代入ル
ープなどが挙げられる。
【0004】なお、本明細書で使用している「データの
依存」、「データフロー解析」などの用語は、Wolfe M.
J.“Optimizing Supercompiler for Supercomputers”,
TheMIT Press (1989) などで定義されている。
【0005】プログラミング言語は、一般的に言語仕様
に忠実にコンパイルされる。Fortran90の配列代入文を
例に挙げると、ISO規格(ISO/IEC 1539-1 7.5.1.5)で以
下のように定められている。「代入文を実行するとき
は、右辺の式および変数の中のすべての式を評価してか
ら変数の任意の部分が確定する。変数の中の式の評価
は、右辺の式の評価に影響を与えたり与えられたりして
はならない。」 即ち、指定された添字範囲全体について右辺の評価をす
べて確定させた後に、左辺への代入を実行するというこ
とになっているので、一般的には、右辺の評価結果を格
納するための作業配列が必要となる。
【0006】一方、従来は、Fortran言語においてルー
プ融合や並列化に限定した言語仕様固有の最適化を行う
のみであった。現在のデータ記述に関するデータフロー
解析を用いたコンパイラ最適化方法に関しては、様々な
研究がなされている。例えば、岩澤「Fortran90の配列
記述の最適化方式」 電子情報通信学会論文誌 '95/5 Vo
l.J78-D-I,no.5,pp.504-506 1995年5月、堀田,他 「F
ortran90に完全に準拠、配列構文をループ融合で最適
化」 日経エレクトロニクス1995.11.20(No.649),pp.141
-153、E. Lewis, C. Lin, and L. Synder, "The Implem
entation and Evaluation of Fusion and Contraction
in Array Languages," PLDI'98, pp.50-59、G.-H. Hwan
g, J. K. Lee, and D.-C. Ju, "An Array Operation Sy
nthesis Scheme to Optimize Fortran 90 Programs,"
PPoPP'95, pp.112-122では、全てFortran言語において
ループ融合や並列化に限定した言語仕様固有の最適化を
行う方法が記載されている。
【0007】また、具体的な手法として、Banerjeeのテ
スト(Banerjee,U.: “Dependence Analysis for superc
omputing”, Kluwer Academic Publishers(1988)) で
は、配列添字を標準化して配列添字解析を行い、データ
の依存の有無を判別し、並列化やループ融合を行う手法
が記載されている。
【0008】
【発明が解決しようとする課題】上記従来技術では、言
語仕様に忠実にコンパイルするため、ソースプログラム
によっては、冗長な実行可能コードが生成される。例え
ば、Fortran90の配列代入文を例に挙げると、コンパイ
ラは図9に示すような配列代入文を用いたソースプログ
ラムを図11に示すような中間言語に変換する。この変
換された中間言語ではworkという作業配列を使用してお
り、この作業配列のためのメモリ領域が必要になる。ま
た、作業配列の確保や作業配列の参照により無駄なオー
バヘッドが生じる。
【0009】また、配列添字解析などの言語固有のデー
タフロー解析を行うため、言語仕様に特化したコンパイ
ラ最適化部分を開発する必要があり、各言語仕様に共通
なコンパイラ処理部分を広げて、コンパイラの開発規模
の削減を行う上での障害の一因となっていた。
【0010】本発明の目的は、各種の高級言語で書かれ
たプログラムの実行性能を向上するコンパイル方法及び
装置を提供し、かつ、コンパイラの言語固有の処理部分
を必要最小限、あるいは、全く不要にして、各言語のコ
ンパイラ間で部品や方式の共有を可能にする方法、プロ
グラム及び装置を提供することにある。
【0011】
【課題を解決するための手段】上記目的を達成するため
の一つの手段として、ソースプログラムを解析して実行
可能なコードに変換するコンパイル方法であって、ソー
スプログラム中の配列構文などの言語固有文法で記述さ
れた部分に対してデータの依存の有り無しの2通りの仮
定により展開した2通りの言語固有の中間言語を生成
し、少なくとも一方の中間言語に対してデータフロー解
析を行い、その結果により、いずれか1つの中間言語を
選択する。
【0012】
【発明の実施の形態】以下の説明で「フロー依存」とい
う言葉を用いているが、これはデータの依存の一つの形
態であり、定義(代入)された変数が後の文により参照
される場合を意味している。
【0013】本発明は、展開された中間言語の言語固有
の部分を減らしてもデータの依存の有無を検出できると
いう言語仕様の定義から導出される性質を利用し、コン
パイラの言語固有の処理部分の規模を削減可能にするも
のである。
【0014】これをFortran90の配列代入文を例に説明
する。配列代入文をデータの依存無しと仮定して展開し
たループ(作業配列を使わないで展開したループであ
る。)において、フロー依存が存在するということは、
左辺で定義された値を右辺で使用する(可能性がある)こ
とになり、配列代入文の規則に矛盾する。逆に、フロー
依存がなければ、左辺で定義される配列要素が定義後に
右辺で使用されることはない。したがって、作業配列を
用いなくともそのままで、配列代入文の規則を満たして
いることになる。即ち、「配列代入文をデータの依存無
しと仮定して展開したループにおいて配列要素代入文の
右辺と左辺の間にフロー依存が無いならば、配列代入文
のデータの依存は無い。」という性質を持つことが分か
る。本発明はこの性質を利用して、配列代入文をデータ
の依存無しと仮定して展開したループに対してデータフ
ロー依存解析を行うことにより、言語固有のデータフロ
ー解析部をほとんど不要、あるいは全く不要とする。
【0015】例えば、図9のソースプログラムを配列要
素毎の代入文に展開すると図10のようになる。もし、
(1+m)≦nである場合、x=1+mとなるxが存在する。この
場合、下線で示したように、文S1で定義したa(1+m)の値
を文Sxで使用するため、配列要素代入文の右辺と左辺の
間にフロー依存が有り、配列代入文の規則を満たさな
い。また、(1+m)>nである場合は、S1からSnまでの全て
の文において、定義した値を定義した文より後の文で使
用することは無いため、配列要素代入文の右辺と左辺の
間にフロー依存は無く、配列代入文の規則を満たす。以
上から、「配列代入文をデータの依存無しと仮定して展
開したループにおいて配列要素代入文の右辺と左辺の間
にフロー依存が無いならば、配列代入文のデータの依存
は無い。」という性質が導出できる。
【0016】図1は、コンパイラの構成を示したもので
ある。コンパイラ10は、ソースファイル111をコン
パイラのフロントエンド部11で、意味解析や構文解析
を行い、中間言語に変換し、バックエンド部13で、以
下の様にしてオブジェクトファイル112に変換する。
仮展開部14でデータの依存が無いと仮定して展開した
中間言語と、データの依存が有ると仮定して展開した中
間言語に展開し(以下「仮展開」と呼ぶ)、データフロー
解析部15で、両方又は片方のデータの依存の有無を検
出し、その結果により本展開部16で、いずれかを選択
し、オブジェクト生成部17でオブジェクトファイル1
12に変換する。
【0017】Fortran90の配列代入文を例に本構成図で
の処理方式を述べる。図2は、Fortran90の配列代入文
を含むソースプログラムの一例である。これをフロント
エンド部11で、意味解析や構文解析を行い、変換する
と図3に示す中間言語が生成される。図3の中間言語に
ついて説明する。ASSIGNノードは代入文、ARRAY_IDは配
列、TRIPLETは配列の添字、IDは変数、CONSTノードは定
数、MULノードは乗算、ADDノードは加算をそれぞれを表
現するノードである。この中間言語のままだと、TRIPLE
Tノードから配列要素の使用範囲が分かるが、添字が配
列代入文の前後に依存する場合があり、ソースプログラ
ムの広範囲に渡って配列添字専用のデータフロー解析、
即ち言語固有のデータフロー解析を行う必要があった。
しかし、本実施例では、以下の様に仮展開して言語固有
のデータフロー解析を不要とする。
【0018】仮展開部14において、データの依存が無
いと仮定、即ち、作業配列を導入しないで仮展開する
と、図4のようになる。また、データの依存が有ると仮
定、即ち、作業配列を導入して仮展開すると、図5のよ
うになる。データフロー解析部15で図4の中間言語に
対してデータフロー解析を行うと、最内側のループのi
(ループの回数)はL+1からnまでの値を取る、即ちi≠
Lであるので、同一文の右辺と左辺の間にデータの依存
が無い事が明らかであることが分かり、「データの依存
が無い」という情報を本展開部16に渡す。本展開部1
6は、データの依存が無いと仮定して展開した中間言語
を正式な中間言語としてオブジェクト生成部17に渡
し、オブジェクトファイル112を生成する。もし、デ
ータの依存が有る場合は、「データの依存が有る」とい
う情報を本展開部16に渡す。本展開部16は、データ
の依存が有ると仮定して展開した中間言語を正式な中間
言語としてオブジェクト生成部17に渡し、オブジェク
トファイル112を生成する。
【0019】図6、図7及び図8は図1で示したバック
エンド部13の処理を示したものである。コンパイラの
バックエンド部13は、以下の6通りのいずれかの方法
でオブジェクトファイル112を生成する。
【0020】1つ目は、仮展開部14において、中間言
語をデータの依存が有ると仮定して展開した言語固有の
中間言語(以下、「中間言語」と呼ぶ)とデータの依存が
無いと仮定して展開した中間言語の2通りの中間言語に
展開する(図6のステップ601)。この2通りの中間
言語に対してデータフロー解析部15においてデータの
依存の有無を解析し(図6のステップ602)、本展開
部16にデータの依存の有無の情報を渡す。本展開部1
6は、依存が有るかどうかを判断し(図6のステップ6
03)、データの依存が有ると仮定して展開した中間言
語を採用し(図6のステップ604)、データの依存が
無い場合、データの依存が無いと仮定して展開した中間
言語を採用する(図6のステップ605)。本展開部1
6は、正式に採用した中間言語をオブジェクト生成部1
7に渡す。オブジェクト生成部17は、正式に採用した
中間言語をオブジェクトファイルに変換する(図6のス
テップ506)。
【0021】2つ目は、仮展開部14において、中間言
語をデータの依存が有ると仮定して展開した中間言語と
データの依存が無いと仮定して展開した中間言語の2通
りの中間言語に展開する(図7のステップ701)。こ
のうちデータの依存が無いものと仮定して展開した中間
言語に対してデータフロー解析部15において、データ
の依存を解析し(図7のステップ702)、データの依
存の有無を解析し(図7のステップ703)、本展開部
16にデータの依存の有無の情報を渡す。本展開部16
は、データの依存が有る場合、データの依存が有ると仮
定して展開した中間言語を採用し(図7のステップ70
4)、データの依存が無い場合、データの依存が無いと
仮定して展開した中間言語を採用する(図7のステップ
705)。本展開部16は、正式に採用した中間言語を
オブジェクト生成部17に渡す。オブジェクト生成部1
7は、正式に採用した中間言語をオブジェクトファイル
に変換する(図7のステップ706)。
【0022】3つ目は、仮展開部14において、中間言
語をデータの依存が無いものと仮定して中間言語に展開
する(図8のステップ801)。この中間言語に対して
データフロー解析部15においてデータの依存を解析し
(図9のステップ802)、データの依存の有無を解析
し(図8のステップ803)、本展開部16にデータの
依存の有無の情報を渡す。
【0023】本展開部16は、データの依存が有る場
合、データの依存が有る部分に対してデータの依存が有
る時の中間言語に展開しなおして、正式な中間言語とす
る(図8のステップ804)。データの依存がない場
合、データの依存が無いと仮定して展開した中間言語を
採用する(図8のステップ805)。本展開部16は、
正式に採用した中間言語をオブジェクト生成部17に渡
す。オブジェクト生成部17は、正式な中間言語をオブ
ジェクトファイルに変換する(図8のステップ80
6)。
【0024】4つ目は、仮展開部14において、中間言
語をデータの依存が有ると仮定して展開した複数のコン
パイル対象言語間で共通の中間言語(以下、「共通中間
言語」と呼ぶ)とデータの依存が無いと仮定して展開し
た中間言語の2通りの中間言語に展開する(図6のステ
ップ601)。この2通りの中間言語に対してデータフ
ロー解析部15において、データの依存を解析し(図6
のステップ602)、データの依存の有無を解析し(図
6のステップ603)、本展開部16にデータの依存の
有無の情報を渡す。本展開部16は、依存が有る場合、
データの依存が有ると仮定して展開した中間言語を採用
し(図6のステップ604)、データの依存が無い場
合、データの依存が無いと仮定して展開した中間言語を
採用する(図6のステップ605)。本展開部16は、
正式に採用した中間言語をオブジェクト生成部17に渡
す。オブジェクト生成部17は、正式に採用した中間言
語をオブジェクトファイルに変換する(図6のステップ
606)。
【0025】5つ目は、仮展開部14において、中間言
語をデータの依存が有ると仮定して展開した共通中間言
語とデータの依存が無いと仮定して展開した共通中間言
語の2通りの中間言語に展開する(図7のステップ70
1)。このうちデータの依存が無いものと仮定して展開
した共通中間言語に対してデータフロー解析部15にお
いてデータの依存を解析し(図7のステップ702)、
データの依存の有無を解析し(図7のステップ70
3)、本展開部16にデータの依存の有無の情報を渡
す。本展開部16は、データの依存が有る場合、データ
の依存が有ると仮定して展開した共通中間言語を採用し
(図7のステップ704)、データの依存が無い場合、
データの依存が無いと仮定して展開した共通中間言語を
採用する(図7のステップ705)。本展開部16は、
正式に採用した共通中間言語をオブジェクト生成部17
に渡す。オブジェクト生成部17は、正式に採用した共
通中間言語をオブジェクトファイルに変換する(図7の
ステップ706)。
【0026】6つ目は、仮展開部54において、中間言
語をデータの依存が無いものと仮定して共通中間言語に
展開する(図8のステップ801)。この共通中間言語
に対してデータフロー解析部15において、データの依
存を解析し(図8のステップ802)、データの依存の
有無を解析し(図8のステップ803)、本展開部16
にデータの依存の有無の情報を渡す。本展開部16は、
データの依存が有る場合、データの依存が有る部分に対
してデータの依存が有る時の共通中間言語に展開しなお
して、正式な共通中間言語とする(図8のステップ80
4)。データの依存がない場合、データの依存が無いと
仮定して展開した共通中間言語を採用する(図8のステ
ップ805)。本展開部16は、正式に採用した共通中
間言語をオブジェクト生成部17に渡す。オブジェクト
生成部17は、正式な共通中間言語をオブジェクトファ
イルに変換する(図8のステップ806)。
【0027】上記の1〜3つ目の方法では、中間言語と
してコンパイル対象固有中間言語を含む中間言語を採用
するのに対し、4〜6つ目の方法では、コンパイル対象
言語間で共通の中間言語を選択する違いが有る。また、
4〜6つ目の方法では、データフロー解析部の言語固有
の部分が不要になる。
【0028】
【発明の効果】以上説明したように、コンパイラの言語
固有の処理部分がほとんど不要になり、実行性能を向上
することができる。
【図面の簡単な説明】
【図1】 コンパイル装置の構成を示した図である。
【図2】 ソースプログラムの一例を示した図である。
【図3】 図2のソースプログラムの中間言語のイメー
ジコードを示した図である。
【図4】 図2のソースプログラムを依存が無いと仮定
して仮展開したときの中間言語のイメージコードを示し
た図である。
【図5】 図2のソースプログラムを依存が有ると仮定
して仮展開したときの中間言語のイメージコードを示し
た図である。
【図6】 本発明の処理における処理の形態を示すフロ
ーチャートを示した図である。
【図7】 本発明の処理における処理の形態を示すフロ
ーチャートを示した図である。
【図8】 本発明の処理における処理の形態を示すフロ
ーチャートを示した図である。
【図9】 ソースプログラムの一例を示した図である。
【図10】 図9のソースプログラムを配列要素毎の代
入文に展開したときの中間言語のイメージコードを示し
た図である。
【図11】 図9のソースプログラムを展開したときの
中間言語のイメージコードを示した図である。
【符号の説明】
111 ソースファイル 112 オブジェクトファイル 12 フロントエンド部 13 バックエンド部 14 仮展開部 15 データフロー解析部 16 本展開部 17 オブジェクト生成部

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】ソースプログラムを解析して実行可能なコ
    ードに変換するコンパイル方法において、ソースプログ
    ラム中の配列構文などの言語固有文法で記述された部分
    に対してデータの依存の有り無しの2通りの仮定により
    展開した2通りの言語固有の中間言語を生成し、少なく
    とも一方の中間言語に対してデータフロー解析を行い、
    その結果により、いずれか1つの中間言語を選択するコ
    ンパイル方法。
  2. 【請求項2】ソースプログラムを解析して実行可能なコ
    ードに変換するコンパイル方法において、ソースプログ
    ラム中の配列構文などの言語固有文法で記述された部分
    に対してデータの依存が無いと仮定して展開した中間言
    語を生成し、この中間言語に対してデータフロー解析を
    行い、依存が有る場合、前記ソースプログラム中の配列
    構文などの言語固有文法で記述された部分に対して依存
    が有ると仮定して展開した中間言語を生成するコンパイ
    ル方法。
  3. 【請求項3】請求項1又は2記載のコンパイル方法にお
    いて、言語固有の中間言語を複数のコンパイル対象言語
    間で共通の中間言語にするコンパイル方法。
  4. 【請求項4】ソースプログラムを解析して実行可能なコ
    ードに変換するコンパイルを行うプログラムにおいて、
    ソースプログラム中の配列構文などの言語固有文法で記
    述された部分に対してデータの依存の有り無しの2通り
    の仮定により展開した2通りの言語固有の中間言語を生
    成し、少なくとも一方の中間言語に対してデータフロー
    解析を行い、その結果により、いずれか1つの中間言語
    を選択するコンパイルを行うプログラム。
  5. 【請求項5】ソースプログラムを解析して実行可能なコ
    ードに変換するコンパイルを行うプログラムにおいて、
    ソースプログラム中の配列構文などの言語固有文法で記
    述された部分に対してデータの依存が無いと仮定して展
    開した中間言語を生成し、この中間言語に対してデータ
    フロー解析を行い、依存が有る場合、前記ソースプログ
    ラム中の配列構文などの言語固有文法で記述された部分
    に対して依存が有ると仮定して展開した中間言語を生成
    するコンパイルを行うプログラム。
  6. 【請求項6】請求項4又は5記載のコンパイルを行うプ
    ログラムにおいて、言語固有の中間言語を複数のコンパ
    イル対象言語間で共通の中間言語にするコンパイルを行
    うプログラム。
  7. 【請求項7】ソースプログラムを解析して実行可能なコ
    ードに変換するコンパイル装置において、ソースプログ
    ラム中の配列構文などの言語固有文法で記述された部分
    に対してデータの依存の有り無しの2通りの仮定により
    展開した2通りの言語固有の中間言語を生成し、少なく
    とも一方の中間言語に対してデータフロー解析を行い、
    その結果により、いずれか1つの中間言語を選択するコ
    ンパイル装置。
  8. 【請求項8】ソースプログラムを解析して実行可能なコ
    ードに変換するコンパイル装置において、ソースプログ
    ラム中の配列構文などの言語固有文法で記述された部分
    に対してデータの依存が無いと仮定して展開した中間言
    語を生成し、この中間言語に対してデータフロー解析を
    行い、依存が有る場合、前記ソースプログラム中の配列
    構文などの言語固有文法で記述された部分に対して依存
    が有ると仮定して展開した中間言語を生成するコンパイ
    ル装置。
  9. 【請求項9】請求項7又は8記載のコンパイル装置にお
    いて、言語固有の中間言語を複数のコンパイル対象言語
    間で共通の中間言語にするコンパイル装置。
JP2001292777A 2001-09-26 2001-09-26 コンパイル方法、コンパイル装置およびコンパイルを行うプログラム Pending JP2003099269A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001292777A JP2003099269A (ja) 2001-09-26 2001-09-26 コンパイル方法、コンパイル装置およびコンパイルを行うプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001292777A JP2003099269A (ja) 2001-09-26 2001-09-26 コンパイル方法、コンパイル装置およびコンパイルを行うプログラム

Publications (1)

Publication Number Publication Date
JP2003099269A true JP2003099269A (ja) 2003-04-04

Family

ID=19114676

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001292777A Pending JP2003099269A (ja) 2001-09-26 2001-09-26 コンパイル方法、コンパイル装置およびコンパイルを行うプログラム

Country Status (1)

Country Link
JP (1) JP2003099269A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571432B2 (en) 2003-10-17 2009-08-04 Panasonic Corporation Compiler apparatus for optimizing high-level language programs using directives

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571432B2 (en) 2003-10-17 2009-08-04 Panasonic Corporation Compiler apparatus for optimizing high-level language programs using directives

Similar Documents

Publication Publication Date Title
US7565631B1 (en) Method and system for translating software binaries and assembly code onto hardware
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
CA2288614C (en) Loop allocation for optimizing compilers
US6253373B1 (en) Tracking loop entry and exit points in a compiler
JPH07234790A (ja) プログラム変換処理装置およびプログラム変換処理方法
JPH0814817B2 (ja) 自動ベクトル化方法
JP3651774B2 (ja) コンパイラ及びそのレジスタ割付方法
CN109933327A (zh) 基于代码融合编译框架的OpenCL编译器设计方法和系统
US6993756B2 (en) Optimization apparatus that decreases delays in pipeline processing of loop and computer-readable storage medium storing optimization program
US8117604B2 (en) Architecture cloning for power PC processors
US7350165B2 (en) Compiler
Berlin et al. High-level loop optimizations for GCC
JPH07110800A (ja) 最適化並列コンパイル装置及び最適化並列コンパイル方法
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
US20080307177A1 (en) Program conversion device
US20170206068A1 (en) Program optimization based on directives for intermediate code
US7120905B2 (en) System and method for transformation of assembly code for conditional execution
JP4719415B2 (ja) 情報処理システム及びコード生成方法
JP3840149B2 (ja) コンパイラ、演算処理システム及び演算処理方法
JP2003099269A (ja) コンパイル方法、コンパイル装置およびコンパイルを行うプログラム
Aguilar et al. Parallelism extraction in embedded software for Android devices
JP3028821B2 (ja) 並列化コンパイル方法
JP2008015665A (ja) プログラム解析方法及びプログラム解析装置
Pister et al. Generic software pipelining at the assembly level
Qian Loop transformations for clustered VLIW architectures