JP3539613B2 - ループ飛び出し文を含むループに対する配列サマリ解析方法 - Google Patents

ループ飛び出し文を含むループに対する配列サマリ解析方法 Download PDF

Info

Publication number
JP3539613B2
JP3539613B2 JP34847197A JP34847197A JP3539613B2 JP 3539613 B2 JP3539613 B2 JP 3539613B2 JP 34847197 A JP34847197 A JP 34847197A JP 34847197 A JP34847197 A JP 34847197A JP 3539613 B2 JP3539613 B2 JP 3539613B2
Authority
JP
Japan
Prior art keywords
loop
array
variable
storage means
read
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 - Lifetime
Application number
JP34847197A
Other languages
English (en)
Other versions
JPH11167492A (ja
Inventor
孝好 飯塚
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 JP34847197A priority Critical patent/JP3539613B2/ja
Priority to US09/201,818 priority patent/US6282704B1/en
Publication of JPH11167492A publication Critical patent/JPH11167492A/ja
Application granted granted Critical
Publication of JP3539613B2 publication Critical patent/JP3539613B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops

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

【0001】
【発明の属する技術分野】
本発明は、ループ飛び出し文を含むループに対して近似無しで配列サマリ解析を行う方法に関する。
【0002】
【従来の技術】
並列化コンパイラでは、プログラムの実行性能を向上するために、種々の並列化変換をプログラムに実施する。並列化変換は主にループに対して適用されるが、各ループに任意の並列化変換が適用できるわけではなく、どの並列化変換が適用できるかを判定する必要がある。
【0003】
並列化変換の適用性判定の核になるのは、ループ内でのデータの参照状況解析である。ループ内で参照されるデータには、スカラ変数と配列がある。スカラ変数の参照では常に同じメモリ領域が参照される。これに対して、配列は、添字の値によって別のメモリ領域が参照されるため、ループ内でどの配列のどの部分がどのように参照されるかを解析する必要がある。
【0004】
そこで、並列化コンパイラでの並列化変換適用性判定の手段として、ループ内で参照される各配列の配列部分及び参照の性質を解析する配列サマリ解析が開発されている。配列サマリ解析については、文献1「M. Hall, B. Murphy, S. AmarASinghe, S. Liao, M. Lam, Interprocedural analysis for parallelization, Proceedings of the 8th International Workshop on Languages and Compilers for Parallel Computing, Springer-Verlag, August 1995.」に示されている。
【0005】
例として、図4のプログラムで、配列Aに対して配列プライベート化と呼ばれる並列化変換の適用性を判定する場合の配列サマリ解析について説明する。配列サマリ解析では、最内側ループから外側ループに向かってボトムアップに、また、プログラムの実行順序について逆順に、配列の参照状況を解析し、図8の配列サマリを求める。
【0006】
ただし、図8において、Rは文やループ本体、ループなどのプログラム部分を表す。なお、ループ本体とはループ内の文全体であり、例えば図4のループL2の本体は文S2のみである。以下、ループLに対してループLの本体をL(body)で表す。ループ本体の配列サマリは、ループの1回のイタレーション(ループの1回分の繰り返し)に対する配列サマリであり、ループの配列サマリは、ループの全イタレーションに対する配列サマリである。
【0007】
まず文S2での配列サマリは、図9(a)のようになる。ループL2は文S2しか含まないので、ループL2の本体の配列サマリは、S2の配列サマリそのものとなり、図9(b)のようになる。Fourier-Motzkin変数消去法などの変数消去法を用いてループL2の本体の配列サマリからループL2のループ制御変数Kを消去することにより、ループL2の配列サマリは図9(c)のようになる。同様の処理を文S1及びループL1に対して行うことにより、ループL1の配列サマリは図9(d)のようになる。次に、ループL1とループL2の配列サマリからループL0の本体の配列サマリを求めると、図9(e)のようになる。
【0008】
図9(e)において、ループL0の本体で配列AのExposedReadが空集合になることから、L0の各イタレーションで値を読み出される全ての配列部分は、同イタレーション内で予め値を設定済みであることが分かる。よって、ループL0の各イタレーションでは、他のイタレーションで設定した配列要素の値を読み出すことが無いことが分かる。そこで、ループL0の各イタレーションで別々の配列TA(1:N)を用意して配列Aの代わりに用いることにより、ループL0の各イタレーションはお互いに無関係に実行できることが分かる。このような変換を配列プライベート化と呼ぶ。
【0009】
配列プライベート化を行うことにより、ループL0の各繰り返しは独立に実行できるので、図5のように並列化することができる。ただし、DOALLは並列化ループの始まりを示す。また、文S0は、配列TA(1:N)のメモリ領域をループの各イタレーションで別々に用意することを示す。
【0010】
【発明が解決しようとする課題】
上記従来技術では、ループ内にループ飛び出しがある場合、近似して配列サマリ解析を行うと記述されている。しかしながら、具体的な近似方法は上記従来技術では示されていなかった。
【0011】
なお、一般に、参照の可能性を示す集合については、実際の集合を含む集合で近似すればよく、参照の必然性を示す集合については、実際の集合に含まれる集合で近似すれば良いことが知られている。よって、ループに対する配列サマリのうち、値が書き込まれる可能性がある配列部分の集合と、値が読み出される可能性がある配列部分の集合と、値が書き込まれる前に読み出される可能性がある配列部分の集合は、ループ飛び出しが無い場合の配列サマリで近似し、必ず値が書き込まれる配列部分の集合は空集合で近似すれば、ループ飛び出しを含むループに対しても配列サマリ解析が行える。
【0012】
このように、従来技術の拡張により、ループ飛び出しを含むループに対する配列サマリ解析を行う方法が考えられる。
【0013】
しかし、上記のような従来技術の拡張では、近似により解析精度が不足し、並列化変換が実際には適用可能であるにもかかわらず、適用不能と判断してしまう場合があるという問題があった。
【0014】
例えば、図6のプログラムでは、ループL1がループ飛び出しを含んでいるため、ループL1で必ず値が書き込まれる配列部分の集合MustWrite(L1)が空集合で近似される。そのため、図10に示すように、ループL0の本体の各イタレーションで値が書き込まれる前に読み出される可能性がある配列部分の集合、即ち、ExposedRead(L0(body))が空集合にならず、ループL0で配列Aをプライベート化できると判定できなかった。そのために、ループL0の並列化も実施できなかった。
【0015】
本発明の目的は、ループ飛び出し文を含むループに対して配列サマリ解析の精度を向上し、配列プライベート化の適用性を向上することである。
【0016】
【課題を解決するための手段】
上記課題を解決するため、請求項1に係る発明は、記憶手段に格納されているソースプログラムをコンピュータに入力し、該コンピュータ上で実行される言語処理プログラムの処理により目的プログラムを生成して記憶手段に格納する際に適用される配列サマリ解析方法であって、前記配列は生成されたプログラムがその後実行される際に記憶手段に格納されるものであり、該配列サマリ解析方法は、該コンピュータにより、(a)記憶手段から読み出したソースプログラムに対して構文解析を行い中間コードを生成して記憶手段に格納する構文解析ステップと、(b)記憶手段から読み出された該中間コード内の各ループに対して、該ループで値が書き込まれる可能性がある配列部分の集合と、該ループで必ず値が書き込まれる配列部分の集合と、該ループで値が読み出される可能性がある配列部分の集合と、該ループで値が書き込まれる前に読み出される可能性がある配列部分の集合とから構成される配列サマリを生成して記憶手段に格納する配列サマリ解析ステップと、(c)記憶手段から読み出された該配列サマリを元に、記憶手段から読み出された該中間コード内のループに対して配列プライベート化を行ってから記憶手段に書き込む配列プライベート化ステップと、(d)前記ステップ(c)の書き換え後の中間コードを記憶手段から読み出し、該中間コード内のループに対して並列化を行って記憶手段に書き込むループ並列化ステップと、(e)前記ステップ(d)の書き換え後の中間コードに対して目的プログラムを生成して記憶手段に書き込む目的プログラム生成ステップとを実行するとともに、前記ステップ(b)が、(f)ループ飛び出し文およびループ飛び出し時のループ制御変数の値をスカラ変数に設定する文を含むループに対して該スカラ変数の値をループ制御変数の上限として配列サマリを計算するループ飛び出し時制御変数値配列サマリ解析ステップを含むことを特徴とする。
【0017】
請求項2に係る発明は、請求項1の前記ステップ(f)において、ループ飛び出し文およびループ飛び出し時のループ制御変数の値をスカラ変数に設定する文がループ内に含まれる場合には、該ループの本体の配列サマリにおいて該ループのループ制御変数の上限を該スカラ変数で置き換え、変数消去法で該ループ制御変数を消去した結果を該ループの配列サマリとすることを特徴とする。
【0018】
以上により、ループ飛び出し文を含むループであっても、ループ飛び出し時のループ制御変数の値をスカラ変数に設定する文がループ内に含まれる場合には、近似なしで配列サマリが計算されるので、配列サマリ解析の精度が向上し、配列プライベート化が適用可能となる。
【0019】
【発明の実施の形態】
本発明は、ループ飛び出し文を含むループに対して近似無しで配列サマリ解析を行う方法に関するものである。以下では、本発明の1実施形態を図面を用いて説明する。
【0020】
図1は、本発明実施後の、言語処理系の構成を示す。言語処理系20は、ソースプログラム10を入力し、ループ並列化などの最適化を施したうえで、目的プログラム30を生成する。ソースプログラム10は、FortranやCなどのプログラミング言語で記述されたプログラムであり、目的プログラム30は、コンパイラでは機械語命令であり、プリプロセッサではFortranやCなどのプログラミング言語である。
【0021】
以下では、ソースプログラム10がFortranで記述されたプログラムであり、目的プログラム30もFortranで記述されたプログラムである場合を例にして説明する。すなわち、言語処理系20がプリプロセッサの場合について説明する。
【0022】
言語処理系は、21,22,24,25,26の各ステップから構成される。これらのうち、ステップ22では、ステップ23の処理が追加されているが、他のステップは、公知の技術である。よって、ステップ22以外については、簡単な説明に止める。
【0023】
まずステップ21では、ソースプログラム10の構文解析を行い中間コード28を生成する構文解析を行う。
【0024】
ステップ22では、中間コード28の各ループ部分に対して、ループの実行により値が書き込まれる可能性がある配列部分の集合と、ループで必ず値が書き込まれる配列部分の集合と、ループで値が読み出される可能性がある配列部分の集合と、ループで値が書き込まれる前に読み出される可能性がある配列部分の集合から構成される配列サマリ29を生成する配列サマリ解析を行う。
【0025】
ステップ22は、ステップ23の処理を含んでおり、ステップ23では、ループ飛び出し文およびループ飛び出し時のループ制御変数の値をスカラ変数に設定する文の両方を含むループに対して、このスカラ変数の値をループ制御変数の上限として近似無しで配列サマリ29を計算するループ飛び出し時制御変数値配列サマリ解析を行う。なお、ステップ22およびステップ23の詳細については、後述する。
【0026】
ステップ24では、配列サマリ29を元に、中間コード28内のループに対して配列プライベート化を行う。ステップ25では、ステップ24の書き換え後の中間コード28内のループに対してループ並列化を行う。ステップ26では、ステップ25の書き換え後の中間コード28に対して目的プログラム30を生成する。
【0027】
上記の構成により、ループ飛び出し文を含むループに対して、そのループがループ飛び出し時のループ制御変数の値をスカラ変数に設定する文を含む場合には、ステップ23により近似無しで配列サマリ29が解析されるので、配列プライベート化24の適用対象が増える。即ち、配列プライベート化24の適用性が向上する。
【0028】
図2は、図1のステップ22およびステップ23の詳細フローである。なお、図2のステップのうち、220,230,235,237が図1のステップ23の詳細である。なお、図2では、与えられたループLに対して、配列サマリ29を計算する。
【0029】
ステップ210では、ループLの本体の配列サマリ29(以下、ASと呼ぶ)を求める。ループ本体の配列サマリ29の解析方法は公知なので詳細は省略するが、ループ本体の配列サマリ29を解析するに当たって内側ループの配列サマリ29を求める場合には、図1の処理を再帰的に呼び出す。
【0030】
ステップ220では、ループLがループ飛び出し文を含むか否か判定する。これが真の場合はステップ230を実行し、偽の場合は、ステップ250を実行する。
【0031】
ステップ230では、ループ飛び出し時のループLのループ制御変数の値をスカラ変数に設定する文がループLに含まれるか判定する。この処理の詳細は、後述するが、この結果が真の場合は235を実行し、偽の場合は240を実行する。
【0032】
ステップ235では、配列サマリASにおいて、ループLのループ制御変数に対する上限を前記スカラ変数で置きかえる。ステップ237では、ステップ235で変更した配列サマリASから、ループLのループ制御変数を消去し、この結果をLの配列サマリとする。
【0033】
ステップ、220,230,235,237により、ループ飛び出し文およびループ飛び出し時のループ制御変数の値をスカラ変数に設定する文を含むループに対して、配列サマリ29を近似無しに計算することが出来る。
【0034】
ステップ240では、ループ飛び出し時のループ制御変数の値をスカラ変数に設定する文が含まれない場合の近似を行う。具体的には、値が必ず書き込まれる配列部分の集合を空集合にする。このステップの後でステップ250を実行することにより、ループに対する配列サマリ29のうち、値が書き込まれる可能性がある配列部分の集合と値が読み出される可能性がある配列部分の集合と値が書き込まれる前に読み出される可能性がある配列部分の集合は、ループ飛び出しがない場合の配列サマリで近似され、必ず値が書き込まれる配列部分の集合は空集合で近似される。
【0035】
ステップ250では、変数消去法により、配列サマリASからループLのループ制御変数を消去し、この結果をLの配列サマリとする。
【0036】
なお、ステップ237は図1のステップ23の処理の一部のため、ステップ250と別の処理としたが、これらは同一の処理なので、ステップ235の処理の次にステップ250を実行しても良い。
【0037】
図3は、図2のステップ230の詳細フローである。まずステップ310では、ループLの本体の先頭の文をSとする。
【0038】
ステップ320では、Sがループ飛び出し文であるか否か判定し、これが真の場合はステップ330を実行し、偽の場合はステップ340を実行する。ステップ330では、ループ飛び出し時のループLのループ制御変数の値をスカラ変数に設定する文は無いと判定して、処理を終わる。
【0039】
ステップ340では、Sが代入文で、かつ、左辺がスカラ変数(以下、Vとする)、右辺がループLのループ制御変数であるか否か判定する。これが真の場合は、ステップ342を実行し、偽の場合は、ステップ360を実行する。
【0040】
ステップ342では、Sがループ飛び出し文を支配するか否か判定する。これが真の場合は、ステップ344を実行し、偽の場合はステップ330を実行する。なお、文S1が文S2を支配するとは、プログラムの先頭からS2に至る全てのパスでS1が予め実行されることを示す。支配関係の解析は、公知の技術であるので、詳細は省略する。
【0041】
ステップ344では、スカラ変数Vへの代入文がループL中で1つであるか否か判定する。これが真の場合は、ステップ350を実行し、偽の場合は、ステップ330を実行する。
【0042】
ステップ340,342,344により、文Sでループ飛び出し時のループ制御変数の値をスカラ変数Vに設定していることが判定できる。ステップ350では、ループ飛び出し時のループLのループ制御変数の値をスカラ変数に設定する文はSであると判定して、処理を終わる。
【0043】
ステップ360では、ループL内に文Sの次の文が有るか否か判定する。これが真の場合は、ステップ370を実行し、L内のSの次の文を新たなSとして設定し、ステップ320に制御を移してループする。偽の場合は、ステップ330を実行する。
【0044】
次に、図6のソースプログラム例を用いて、本発明の適用効果を説明する。図11は、図6のソースプログラム例に対する本発明での配列サマリ29を示す。なお、図6の例ではループL3とループL2はループ飛び出し文を含まないので、従来と同様の配列サマリ解析により解析され、図10(a)および図10(b)と同じになる。内容が同じなので、図11ではこれらの配列サマリは省略した。
【0045】
まずループL1はループ飛び出し文S3を含むので、図2のステップ220の判定結果が真となり、ステップ230が実行される。ステップ230では、図3のフローに従って、ループ飛び出し時のループL1のループ制御変数Kの値をスカラ変数に設定する文がループLに含まれるか否か判定する。この結果、文S1がそのような文であると判定され、ステップ235が実行される。
【0046】
ステップ235では、ループL1の本体の配列サマリ29において、ループL1のループ制御変数Kに対する上限を文S1の代入先スカラ変数KEで置きかえる。図11(a)は、ループL1の本体の配列サマリ29であり、図11(b)は、ループ制御変数Kに対する上限を文S1の代入先スカラ変数KEで置きかえたものである。
【0047】
図11(b)からループL1のループ制御変数Kを消去すると、図11(c)になり、ループL1に対するExposedReadが近似無しで表現されたことが分かる。
【0048】
図11(c)を元にループL0に対する配列サマリ29を計算すると図11(d)となり、ループL0の本体に対するExposedReadが空集合になることが分かる。よって、ループL0内で配列Aはプライベート化可能であることが分かる。
【0049】
以上より、図1のステップ24において、ループL0内で配列Aはプライベート化され、この結果、図1のステップ25でループL0はループ並列化される。よって、ステップ26での処理により、図7に示す目的プログラム30が生成される。
【0050】
【発明の効果】
本発明により、ループ飛び出し文を含むループに対して配列サマリ解析の精度が向上し、配列プライベート化の適用性が向上する。これにより、ループ並列化可能となるループが増大し、プログラムの実行速度が向上する。
【図面の簡単な説明】
【図1】本発明実施後の言語処理系の構成図。
【図2】本発明実施後の配列サマリ解析の処理フロー図。
【図3】ステップ230の詳細フロー図。
【図4】従来技術でのソースプログラム例を示す図。
【図5】従来技術での目的プログラム例を示す図。
【図6】本発明でのソースプログラム例を示す図。
【図7】本発明での目的プログラム例を示す図。
【図8】配列サマリを示す図。
【図9】従来技術実施例での配列サマリを示す図。
【図10】ループ飛び出しを含むループの従来技術配列サマリを示す図。
【図11】ループ飛び出しを含むループの本発明配列サマリを示す図。
【符号の説明】
10…ソースプログラム、20…言語処理系、30…目的プログラム、21…構文解析、22…配列サマリ解析、23…ループ飛び出し時制御変数値配列サマリ解析、24…配列プライベート化、25…ループ並列化、26…目的プログラム生成、28…中間コード、29…配列サマリ。

Claims (2)

  1. 記憶手段に格納されているソースプログラムをコンピュータに入力し、該コンピュータ上で実行される言語処理プログラムの処理により目的プログラムを生成して記憶手段に格納する際に適用される配列サマリ解析方法であって、前記配列は生成されたプログラムがその後実行される際に記憶手段に格納されるものであり、該配列サマリ解析方法は、該コンピュータにより、
    (a)記憶手段から読み出したソースプログラムに対して構文解析を行い中間コードを生成して記憶手段に格納する構文解析ステップと、
    (b)記憶手段から読み出された該中間コード内の各ループに対して、該ループで値が書き込まれる可能性がある配列部分の集合と、該ループで必ず値が書き込まれる配列部分の集合と、該ループで値が読み出される可能性がある配列部分の集合と、該ループで値が書き込まれる前に読み出される可能性がある配列部分の集合とから構成される配列サマリを生成して記憶手段に格納する配列サマリ解析ステップと、
    (c)記憶手段から読み出された該配列サマリを元に、記憶手段から読み出された該中間コード内のループに対して配列プライベート化を行ってから記憶手段に書き込む配列プライベート化ステップと、
    (d)前記ステップ(c)の書き換え後の中間コードを記憶手段から読み出し、該中間コード内のループに対して並列化を行って記憶手段に書き込むループ並列化ステップと、
    (e)前記ステップ(d)の書き換え後の中間コードに対して目的プログラムを生成して記憶手段に書き込む目的プログラム生成ステップと
    を実行するとともに、
    前記ステップ(b)が、
    (f)ループ飛び出し文およびループ飛び出し時のループ制御変数の値をスカラ変数に設定する文を含むループに対して該スカラ変数の値をループ制御変数の上限として配列サマリを計算するループ飛び出し時制御変数値配列サマリ解析ステップ
    を含むことを特徴とする配列サマリ解析方法。
  2. 前記ステップ(f)において、ループ飛び出し文およびループ飛び出し時のループ制御変数の値をスカラ変数に設定する文がループ内に含まれる場合には、該ループの本体の配列サマリにおいて該ループのループ制御変数の上限を該スカラ変数で置き換え、変数消去法で該ループ制御変数を消去した結果を該ループの配列サマリとすることを特徴とする請求項1に記載の配列サマリ解析方法。
JP34847197A 1997-12-03 1997-12-03 ループ飛び出し文を含むループに対する配列サマリ解析方法 Expired - Lifetime JP3539613B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP34847197A JP3539613B2 (ja) 1997-12-03 1997-12-03 ループ飛び出し文を含むループに対する配列サマリ解析方法
US09/201,818 US6282704B1 (en) 1997-12-03 1998-12-01 Method for analyzing array summary for loop including loop exit statement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34847197A JP3539613B2 (ja) 1997-12-03 1997-12-03 ループ飛び出し文を含むループに対する配列サマリ解析方法

Publications (2)

Publication Number Publication Date
JPH11167492A JPH11167492A (ja) 1999-06-22
JP3539613B2 true JP3539613B2 (ja) 2004-07-07

Family

ID=18397239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34847197A Expired - Lifetime JP3539613B2 (ja) 1997-12-03 1997-12-03 ループ飛び出し文を含むループに対する配列サマリ解析方法

Country Status (2)

Country Link
US (1) US6282704B1 (ja)
JP (1) JP3539613B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7337437B2 (en) * 1999-12-01 2008-02-26 International Business Machines Corporation Compiler optimisation of source code by determination and utilization of the equivalence of algebraic expressions in the source code
US8176108B2 (en) * 2000-06-20 2012-05-08 International Business Machines Corporation Method, apparatus and computer program product for network design and analysis
JP4598247B2 (ja) * 2000-08-04 2010-12-15 東京エレクトロン株式会社 ラジアルアンテナ及びそれを用いたプラズマ装置
US20040098711A1 (en) * 2002-11-20 2004-05-20 Yonghong Song Method and system for dependence analysis
US7089545B2 (en) * 2002-12-17 2006-08-08 International Business Machines Corporation Detection of reduction variables in an assignment statement
US7581215B1 (en) 2003-06-30 2009-08-25 Sun Microsystems, Inc. Dependency analysis system and method
US7171544B2 (en) * 2003-12-15 2007-01-30 International Business Machines Corporation Run-time parallelization of loops in computer programs by access patterns
US7487497B2 (en) * 2004-08-26 2009-02-03 International Business Machines Corporation Method and system for auto parallelization of zero-trip loops through induction variable substitution
US8037462B2 (en) * 2006-08-02 2011-10-11 International Business Machines Corporation Framework for parallelizing general reduction
US8112751B2 (en) * 2007-03-01 2012-02-07 Microsoft Corporation Executing tasks through multiple processors that process different portions of a replicable task
US8381195B2 (en) 2010-06-17 2013-02-19 Microsoft Corporation Implementing parallel loops with serial semantics
JP6164054B2 (ja) * 2013-11-08 2017-07-19 富士通株式会社 情報処理装置、コンパイル方法およびコンパイラプログラム
CN116062989A (zh) 2014-05-15 2023-05-05 Agc株式会社 玻璃物品以及玻璃物品的制造方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2749039B2 (ja) * 1987-11-06 1998-05-13 株式会社日立製作所 オブジェクト生成方法
US5396627A (en) * 1987-11-06 1995-03-07 Hitachi, Ltd. Method of producing object program based on interprocedural dataflow analysis of a source program
JP2834171B2 (ja) * 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法
US5437034A (en) * 1991-04-19 1995-07-25 Hitachi, Ltd. Method of generating from source program object program by which final values of variables for parallel execution are guaranteed
US5361354A (en) * 1991-12-17 1994-11-01 Cray Research, Inc. Optimization of alternate loop exits
JP3208870B2 (ja) * 1992-10-30 2001-09-17 株式会社日立製作所 データ分割パタンの評価方法
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
JP3417984B2 (ja) * 1993-09-10 2003-06-16 株式会社日立製作所 キャッシュ競合削減コンパイル方法
US5790859A (en) * 1995-12-21 1998-08-04 International Business Machines Corporation Method of, system for, and computer program product for efficient identification of private variables in program loops by an optimizing compiler
US5812852A (en) * 1996-11-14 1998-09-22 Kuck & Associates, Inc. Software implemented method for thread-privatizing user-specified global storage objects in parallel computer programs via program transformation
US5966534A (en) * 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US5953531A (en) * 1997-07-25 1999-09-14 International Business Machines Corporation Method of, system for, and computer program product for minimizing loop execution time by optimizing block/tile sizes

Also Published As

Publication number Publication date
US6282704B1 (en) 2001-08-28
JPH11167492A (ja) 1999-06-22

Similar Documents

Publication Publication Date Title
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
JP4573189B2 (ja) プログラムコード変換方法
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JPH0814817B2 (ja) 自動ベクトル化方法
US8336038B2 (en) System and method for parallel execution of a program
US8806458B2 (en) Vectorization of shaders
JP3539613B2 (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JP2001282549A (ja) プログラム変換装置及び方法並びに記録媒体
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
EP0428560A4 (en) Machine process for translating programs in binary machine language into another binary machine language
JPH02217926A (ja) コード生成方法
US5854933A (en) Method for optimizing a computer program by moving certain load and store instructions out of a loop
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
JPH0656582B2 (ja) 範囲検査の最適化方法
US20010020294A1 (en) Optimization apparatus that decreases delays in pipeline processing of loop and computer-readable storage medium storing optimization program
JP4462676B2 (ja) プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体
US7073169B2 (en) Compiler device with branch instruction inserting unit
JP4719415B2 (ja) 情報処理システム及びコード生成方法
JPH10320212A (ja) キャッシュ向け最適化方法
JPH04293150A (ja) コンパイル方法
JP2001325111A (ja) 投機機構向けコンパイル方法
Gupta code Optimization as a side effect of instruction scheduling
JP3551352B2 (ja) ループ分割方法
JPH0522272B2 (ja)
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031224

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: 20040318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040318

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: 20090402

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100402

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110402

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120402

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120402

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140402

Year of fee payment: 10

EXPY Cancellation because of completion of term