JP2005222262A - ループ融合方法及びプログラムコードの生成方法 - Google Patents

ループ融合方法及びプログラムコードの生成方法 Download PDF

Info

Publication number
JP2005222262A
JP2005222262A JP2004028793A JP2004028793A JP2005222262A JP 2005222262 A JP2005222262 A JP 2005222262A JP 2004028793 A JP2004028793 A JP 2004028793A JP 2004028793 A JP2004028793 A JP 2004028793A JP 2005222262 A JP2005222262 A JP 2005222262A
Authority
JP
Japan
Prior art keywords
loop
fusion
directive
level
program
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
JP2004028793A
Other languages
English (en)
Inventor
Hiroyuki Hashimoto
博幸 橋本
Shinichi Ito
信一 伊藤
Keiko Motokawa
敬子 本川
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 JP2004028793A priority Critical patent/JP2005222262A/ja
Publication of JP2005222262A publication Critical patent/JP2005222262A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】
複数のループを対象とするループ融合を行うコンパイラにおいて、ユーザの意図に従ったループ融合を適用してプログラム実行の高速化を図る。
【解決手段】
ループ融合の対象とするループとネストレベルをプログラム中の指示文(401)で指定する。ループ融合指示文解析(102)で指示文情報をループ表(210)に登録し、ループ融合(103)では、登録情報に従って変換を行う。
【選択図】 図1

Description

本発明は、計算機の利用技術において、オブジェクトプログラムの実行時間を削減するコンパイル方法に関する。特に、ループを含むプログラムに対する最適化指示方法に関する。
ループ融合とは複数のループを合わせて1つのループにまとめるループの変換手法である。このような変換はどのようなループに対しても適用できるわけではない。変換後のプログラムが変換前のプログラムと同じ意味を持ち、正しく実行されるためには、融合対象となるループが同じ形であることや、ループ間の依存関係に関する条件などの制約がある。これらの条件については、例えば非特許文献1に記載されている。
従来ループ融合においては、非特許文献2に記載されているように、ループをまとめることによるループオーバーヘッドの削減や、同じ配列要素参照を持つループの融合によるロード・ストアの削減を目的として行われてきた。このループオーバヘッドの削減や、ロード・ストアの削減について、図10を用いて説明する。
図10の(a)はループ融合前のソースプログラムであり、図10の(b)はループ融合後のソースプログラムである。ループオーバヘッドはループ繰り返しにおける終了判定にほとんどの時間が費やされるため、ループの数が多くなればオーバーヘッドも増加し、ループの数が少なくなればオーバーヘッドが削減されることになる。ここで、図10の(a)(b)のソースプログラムを見てみると、ループ融合前では4つのループ(L1001,L1002,L1003, L1004)があったが、ループ融合後は2つのループ(L1005,L1006)になっており、ループの数が少なくなっているため、ループ融合によってループオーバヘッドが削減されることが分かる。
次にロード・ストアの削減について説明する。ループ融合前の図10の(a)のソースプログラムでは、ループL1002とループL1004のループ本体で配列bに対する参照が行われているため、ループL1002とループL1004のそれぞれのループ本体で配列bに対するロード命令が必要になる。ループ融合後の図10の(b)のソースプログラムでは、配列bに対する参照はループL1006だけのため、ループL1006内の1010の参照でメモリからロードした値をレジスタに保持しておけば1011の参照ではそのレジスタの値を参照すれば良いため、ロード命令が削減されることが分かる。配列cについても同様にロード命令が削減される。
H.Zima: Supercompilers for Parallel and Vector Computers. ACM Press, 1990, pp.275-278
M.J.Wolfe: Optimizing Supercompilers for Supercomputers. MIT Press, 1989, pp.89-92
従来の技術によるループ融合処理の場合、ループ融合の対象とするループ間で参照されている配列要素に対し、ループ融合することのできない依存関係がある場合は、ループ融合が適用されなかった。つまり、従来技術ではループのすべてのネストレベルにおいて融合可能であると判定した場合のみループ融合を適用していた。このループ融合を完全融合と呼ぶ。例えば、図11の(a)のソースプログラムは、ユーザによるループ融合指示1101が指定されている場合でも、ループ融合されない例を示している。ループ融合されない理由は、ループL1112の文S1102の配列aの定義と、ループL1114の文S1103の配列aの使用がループ間に跨る依存を持ちループ融合の制約条件を満たさないためである。したがってこの例の場合、ユーザによるループ融合指示があるにも係わらず、出力されるコードのソースイメージは図11の(b)のように、ループ変換が何も行われていないコードとなる。
しかし、対象ループのすべてのネストレベルに対して融合ができない場合でも、一部のループに対するループ融合によって性能向上を図れる場合がある。例えば、外側ループを融合した場合の効果としては、データ局所性の向上が挙げられる。ここで、データ局所性の向上について図10を用いて説明する。図10の(a)のソースプログラムにおいて、配列の要素サイズを8バイトとすると、ループL1001の実行で各配列は8*N*Nバイトの値を参照し、配列a,b,cの合計参照サイズは24*N*Nバイトとなる。これがキャッシュサイズより十分大きい場合には、ループL1001の終了時にはb(1,1)のようにループの最初の方で参照されたデータはキャッシュから追い出されており、ループL1003で再度メモリからキャッシュ上へロードすることになる。これに対し、外側ループだけをループ融合した図10の(c)では、ループL1008の実行で各配列8*Nバイト、合計で24*Nバイト分しか参照しないため、これがキャッシュサイズ以下ならば、ループL1009において配列bおよびcのデータをキャッシュ上で再利用することができ、性能向上が図れる。
また、従来技術では対象ループに対しループ融合が可能である場合、ループ融合が適用され1つのループにまとめられていたが、まとめられたループ内の文の数がある程度大きくなると、ループ内で参照される変数や配列要素などを格納するレジスタが不足してしまうという問題がある。例えば、図12の(a)のソースプログラムでは、ループL1210内で変数b1,b2,b3,b4(1201)の値がループ不変なので、これらの値はループL1210の直前にメモリからレジスタに値が転送され、ループ内ではそのレジスタを参照するコードが生成される。同様にループL1211でも変数e1,e2,e3,e4(1202)はレジスタを参照するコードになる。ループ融合後の図12の(b)のループL1212でもループ不変である変数b1,b2,b3,b4,e1,e2,e3, e4(1203)はレジスタを参照するコードになるが、その数はループ融合前が各ループ(L1210,L1211)で4個であったものが、ループL1212では8個に増えることになる。そのため、ループ不変である変数の数が利用可能なレジスタの数を超えてしまう場合は、ループ不変の値をレジスタに転送することができないため、ループ内で毎回ロード命令が必要になる。つまり、レジスタの数は有限個であるため、ループ融合後に必要なレジスタ数が、プロセッサの持つレジスタの数を超えてしまった場合は、その値をレジスタ以外であるメモリなどの場所に保持しなければならない。しかし、メモリなどの場所に値を保存する場合、その値の読み書きはレジスタからの読み書きにくらべ十数倍から数百倍のコストがかかる。そのため、ループ融合によってループオーバヘッドなどの削減効果よりも、レジスタ不足による実行時間の増加割合が大きい場合は、必ずしもループ融合によって実行時間が削減できると言うわけではない。
本発明の目的は、完全融合できないループに対して部分的にループ融合するのと、ループ融合による最内側ループの肥大化を防ぐために、ループ融合のネストレベルを指示文によりプログラム中に指定する手段を設け、ユーザの意図に従ったループ融合方法を提供することである。
本発明の目的は、プログラム中に指示されたループ融合に関する指示文を解釈し情報を登録するループ融合指示解析ステップ(102)と、指示文の解析結果に基づきループ融合を実施するループ融合ステップ(103)とにより達成される。
本発明によれば、ループ融合のネストレベルをユーザが指示する手段を設けることにより、ユーザの意図に従ったループ融合を適用することができる。本発明のループ融合方法により、外側ループ融合によるデータ局所性の向上と、ループ融合による最内側ループの肥大化を防ぐことが可能になるという効果が得られ、プログラムの実行性能向上が図れる。
ソースプログラム中のループに対し、ユーザの意図に従ったループ融合を提供するという目的を、ループ融合のネストレベルを指示できる指示文を設けることにより実現した。
以下、図面を用いて本発明の実施の形態について説明する。
図2は、本発明によるコンパイラが稼動する計算機システムの構成図である。この計算機システムは、CPU201、ディスプレイ装置202、キーボード203、主記憶装置204、および外部記憶装置205より構成されている。キーボード203により、ユーザからのコンパイラ起動命令を受け付ける。コンパイラ終了メッセージやエラーメッセージは、ディスプレイ装置202に表示される。外部記憶装置205には、ソースプログラム206とオブジェクトプログラム207が格納される。主記憶装置204には、コンパイラ208、コンパイル過程で必要となる中間コード209とループ表210が格納される。コンパイル処理はCPU201がコンパイラプログラム208を実行することにより行われる。
図3に、図2のシステムで稼動するコンパイラ208の処理手順を示す。
コンパイラの処理は、構文解析301、ループ融合最適化302、レジスタ割り付け303、コード生成304の順で行う。構文解析301では、ソースプログラム206を入力として構文解析を行い、中間コード209を出力する。ループ融合最適化302は、後で詳細に説明する。レジスタ割り付け303では、中間コード209の各ノードに対しレジスタ割り付けを行う。コード生成304では、中間コード209をオブジェクトプログラム207に変換し、出力する。図3に示す一連のコンパイル処理は、コンパイラプログラム208をCPU201で実行することで実現される。
図1に、ループ融合最適化302の処理手順を示す。ステップ101のループ解析により、プログラムに含まれるループの集合を求め、ループ表210に記録する。ループ解析の方法は非特許文献1の67頁に記載されている。ステップ102でループ融合指示の解析を行い、ループ表210に追記する。ステップ103では、ループ表210の情報に基づき、ループ融合処理を行う。
図4(a)にループ融合指示文を付加したソースプログラムの例を示す。本プログラム例はFortran言語で記述してある。指示文401'*option fuse(1)'は、ループ融合対象とするループの直前に指定し、指定ループとその後続ループを融合対象とする。また、括弧内のパラメタは、外側の何重ループを融合対象とするかを指定するもので、本例では最外側一重ループの融合を指定している。
図5に、中間コード209の一例を示す。本中間コードは、図4(a)のソースプログラムに対応している。中間コードは基本ブロックB0〜B14をエッジで結んだグラフで表現される。このようなグラフは制御フローグラフと呼ばれている。基本ブロックとは、連続した文の列で、実行が先頭から始まり、途中へ飛び込んだり途中から飛び出すことのないものである。エッジは基本ブロック間の遷移を表している。なお、ループ融合最適化の処理手順の説明の簡略化のために、ループ融合の対象ループとネストレベルを示す指示文を含む基本ブロック内には他の文が含まれないよう、前後の文との間で基本ブロックを分割した中間コードを生成するものとする。
図6にループ表210の一例を示す。ループ表は、ループ番号601、後続ループ番号602、子ループ番号603、ループプリヘッダ604、制御変数605、増分値606、初期値607、上限値608、処理済みフラグ609、融合指示文610、融合レベル指示611などの欄からなる。ループ番号はループを識別するための番号である。後続ループ番号は、自ループの直後にあるループのループ番号である。子ループ番号は、自ループの内側にあるループのループ番号である。ループプリヘッダは、ループ本体の直前に配置されている基本ブロックのことで、ループ表には基本ブロック番号を登録する。制御変数は、ループ制御変数を登録する。増分値、初期値、上限値はそれぞれ制御変数の増分値、初期値、上限値を登録する。処理済みフラグは、ループ融合処理が終了したかどうかを示す領域である。融合指示文は、そのループにループ融合指示文が指定されているかどうかを示す領域である。融合レベル指示は、ループ融合指示文が指定されている場合に、指示文で指定された融合レベルを登録する。ループ融合指示文が指定されてないループについてはその欄に何も記入しない。図6(a)のループ表は図5の中間コードに対応している。
ループ融合指示解析102の詳細な処理手順を図7に示す。
ステップ701では未処理の基本ブロックがあるかを調べ、ステップ702で次の処理対象基本ブロックを取り出す。
ステップ703で基本ブロックにループ融合を指示する指示文(fuse指示文)があるかどうかを調べる。なければステップ701に戻り、次の基本ブロックの処理へ進む。fuse指示文があればステップ704へ進む。
ステップ704では、fuse指示文の括弧内に指定されたループ融合レベルを取り出す。
ステップ705では、指示文を含む基本ブロックの次の基本ブロックがループプリヘッダとして登録されているループをループ表210から探す。
ステップ706では、ステップ705で探し出したループの融合指示文欄610に「あり」を、融合レベル指示欄611にステップ704で取り出した融合レベルを登録する。登録後ステップ701へ戻り次の基本ブロックの処理へ進む。
次に、ループ融合103の詳細な処理手順を図8、図9に示す。
ステップ801では、ループ表に融合指示文付きの未処理のエントリがあるかを調べる。未処理かどうかはループ表210の処理済みフラグ609が設定されているかどうかを調べれば分かる。
ステップ802、ステップ803では、ループ融合を行うネストレベルの設定を行う。ステップ802では、ループ融合を行う最大のネストレベルを保持する変数max_nest_levelに対象ループのネストレベルを設定する。対象ループのネストレベルはループ表210を利用して取得する。ネストレベルは初期値を1として、対象ループに子ループ番号603が設定されている場合にネストレベルに1を加える。そして、その子ループ番号に対応するループ情報からさらに子ループを辿るというように順じ子ループを辿り、子ループがなくなるまで辿ったときのネストレベルを対象ループのネストレベルとする。ステップ803では、融合レベル指示611と、その時点でのmax_nest_level(対象ループのネストレベル)のうち、よりネストレベル数が少ないものをmax_nest_levelに設定する。
ステップ804では、現在どのネストレベルの処理を行っているのかを示すnest_level変数の初期化を行う。本実施例では、初期値として1を設定する。
ステップ805では、対象ループのループ融合処理を行う。
次にループ融合処理805の詳細な処理手順を図9に示す。
ステップ901では、L1に処理対象ループを設定する。
ステップ902では、現在処理中のネストレベル(nest_level)が、最大ネストレベル(max_nest_level)以下かどうかを調べ、条件を満たす場合はステップ903に進み、大きい場合はステップ910に進みL1を処理済みとした後でループ融合処理を終了する。
ステップ903〜906では、ループ融合処理を行う。ステップ903では、ループ表210の後続ループ番号602を参照して、L1の後続ループがあるかどうかを調べる。後続ループがある場合はステップ904に進み、後続ループをL2とする。後続ループがない場合は、ステップ910に進む。ステップ905では、ループL1とL2の組がループ融合の制約条件を満たすかどうかを判定する。本ステップでは主として、2つのループの制御変数とその初期値、上限値、増分値が同一かどうかや、ループ間の依存関係を調べる。これらの制約条件については非特許文献1の275頁から278頁などに記載がある。条件を満たす場合はステップ906に進み、条件を満たさない場合はステップ910に進む。ステップ906では、ループL1とL2の融合処理を行う。本ステップでは中間コードの変換処理の他、ループ表の更新と、処理済みフラグの設定を行う。ループ表の更新は、新たなループをループ表210に登録し、ループプリヘッダ、制御変数、増分値、初期値、上限値を、ループL1のループ情報からコピーする。子ループ番号については、ループL1とループL2の子ループ番号を登録する。後続ループについては、ループL2の後続ループを登録する。さらに、L1ループに子ループが指定されている場合は、子ループの後続ループにL2の子ループを登録する。そして、新たに登録したループ情報の処理済みフラグ609をセットし、ループL1とL2に対応する情報をループ表210から削除する。
ステップ907では、ループ融合後のループに子ループかあるかどうかを調べる。子ループがあるかどうかは、ループ表210の子ループ番号603を調べれば分かる。子ループがある場合は、ステップ908に進み、子ループがない場合はループ融合処理を終了する。
ステップ908では、子ループのネストレベルの処理を行うために、ネストレベルに1を加える。
ステップ909では、子ループを対象にしたループ融合処理を行うために、図9のループ融合処理を呼び出す。子ループの融合処理が終了したら自ループの融合処理も終了する。
図8、図9に示したループ融合処理を行うことで、各ネストレベルごとにループ融合を適用するようになり、全ネストレベルに対して融合できない場合でも、一部のネストレベルに対しループ融合が適用され、データの局所性を向上させることができる。また、ループ融合により最内側ループ内の文の数が多くなる場合に、ユーザの指示文指定により最内側ループの融合を抑止できるため、レジスタ不足による性能劣化を避けることが可能になる。
図5の中間コードを例に、ループ融合指示解析102およびループ融合103の処理を説明する。
ステップ701,702で基本ブロックを順に取り出し、基本ブロックB1の処理において、ステップ703でfuse指示文ありと判定する。ステップ704では、fuse指示文の括弧内に指定されている融合レベルを取り出す。この例では、指示された融合レベルが1であり、ループ融合の対象となるループが2重ループであるため、外側ループだけループ融合するという指示をユーザが与えたことになる。ステップ705で、次の基本ブロックであるB2がループヘッダとして登録されているループをループ表210から探すとループ番号1のループであることが分かるので、ステップ706でループ表の融合指示文610欄に「あり」を、融合レベル指示611欄にステップ704で取り出した融合レベル1を設定する。図5の中間コードにはB2以外にfuse指示文が設定された基本ブロックがないため、これでループ融合指示解析処理を終了する。
次に、ループ融合処理を行う。ステップ801で融合指示文付きで未処理であるループ番号1のループが処理対象として選ばれる。ステップ802でループ番号1のネストレベルを求める。ループ番号1には子ループとしてループ番号2のループがあり、ループ番号2のループには子ループがないので、ネストレベルは2となる。ステップ803で指定融合レベルである1と、対象ループのネストレベルである2のうち、少ない数である1をmax_nest_levelに設定する。ステップ804で現在の処理ネストレベルを1にして、融合処理図9に進む。
ステップ901で処理対象であるループ番号1のループをL1として設定する。ステップ902でネストレベルのチェックを行うが、nest_level,max_nest_level共に1であるため、ステップ903に進む。ステップ903ではL1の後続ループを調べるが、L1であるループ番号1のループはループ表210より、後続ループとしてループ番号3のループを持っているため、ステップ904に進みループ番号3のループをL2として設定する。ステップ905では、L1(ループ番号1)とL2(ループ番号3)のループが融合可能かどうかを判定する。それぞれのループは、ループ制御変数、初期値、上限値、増分値が同じで、ループ間に跨る依存もないためステップ905でループ融合可能と判断され、ステップ906でループ融合が行われる。この融合処理でループ表210にループ番号5のループが登録される。さらに、ループ番号2の後続ループは、融合前のループ番号3の子ループである、ループ番号4のループを設定し、ステップ907に進む。ステップ907では、ループ番号5の子ループがないためループ融合処理は以上で終了する。ループ融合最適化後のループ表を図6(b)に示す。また、このループ融合後のコードをソースイメージで示したものが図4(b)になる。
ソースプログラムをオブジェクトコードに変換するコンパイラにおいて、ループに着目した最適化を行う用途に適用できる。
本発明によるループ融合最適化の処理手順を示す図である。 本発明に係る最適化方法を実施するコンパイラが稼動する計算機システムの構成図である。 本発明によるコンパイラの処理手順を示す。 ループ融合指示文を含むソースプログラムの例を示す。 中間コードの一例を示す。 ループ表の例である。 本発明によるループ融合ネストレベルを登録する処理手順を示す。 本発明によるループ融合の処理手順を示す。 本発明によるループ融合の処理手順を示す。 ループ融合変換例を示す。 従来技術のループ融合変換例を示す。 従来技術のループ融合変換例を示す。
符号の説明
201・・・CPU、202・・・ディスプレイ装置、203・・・キーボード、204・・・主記憶装置、205・・・外部記憶装置、206・・・ソースプログラム、207・・・オブジェクトプログラム、208・・・コンパイラ、209・・・中間コード、210・・・ループ表

Claims (9)

  1. プログラム中の複数のループネストを対象にした、ループ変換方法であって、
    メモリ上に読み込まれた対象プログラム内のループ融合対象とするループネスト範囲を指示する指示文をCPUにより解釈するステップと、
    上記指示されたループネスト範囲において、ループ融合対象とするネストレベルを指示する指示文をCPUにより解釈するステップと、
    上記指示されたループ範囲を対象にCPUの処理によりループ融合を行うステップとを有することを特徴とするループ融合方法。
  2. 請求項1のループ融合方法であって、
    上記のループネスト範囲を指示する指示文と、上記ネストレベルを指示する指示文を1つの指示文で記述することを特徴とするループ融合方法。
  3. 請求項1のループ融合方法であって、
    ループ融合を行うネストレベルを指示する指示文を解釈するステップと、
    上記指示されたネストレベルよりも浅いネストレベルまでのループ融合を行うステップとを有することを特徴とするループ融合方法。
  4. プログラムコードの生成方法であって、
    メモリ上に読み込まれた対象プログラム内のループ融合対象とするループネスト範囲を指示する融合指示文をCPUにより解釈するステップと、
    上記指示されたループネスト範囲において、ループ融合対象とするネストレベルを指示する融合レベル指示文をCPUにより解釈するステップと、
    上記指示されたループ範囲を対象にCPUの処理によりループ融合を行うステップと、
    ループ融合された対象プログラムに基づいて、プログラムコードを生成するステップと、
    を有することを特徴とするプログラムコードの生成方法。
  5. 請求項4に記載のプログラムコードの生成方法であって、
    上記融合指示と、上記融合レベル指示を1つの指示文で記述することを特徴とするプログラムコードの生成方法。
  6. 請求項4に記載のプログラムコードの生成方法であって、
    前記融合指示の有無と前記融合レベル指示のレベルに関する情報をループ毎に有するループ表をメモリ上に読み込むステップと、
    前記ループ融合処理後に、前記ループ表のループ融合のされたループのデータを更新するステップと、
    を有することを特徴とするプログラムコードの生成方法。
  7. プログラムコードを生成するコンパイラプログラムであって、
    メモリ上に読み込まれた対象プログラム内のループ融合対象とするループネスト範囲を指示する融合指示文をCPUにより解釈するステップと、
    上記指示されたループネスト範囲において、ループ融合対象とするネストレベルを指示する融合レベル指示文をCPUにより解釈するステップと、
    上記指示されたループ範囲を対象にCPUの処理によりループ融合を行うステップと、
    ループ融合された対象プログラムに基づいて、プログラムコードを生成するステップと、
    を実行可能とすることを特徴とするコンパイラプログラム。
  8. 請求項7に記載のコンパイラプログラムであって、
    上記融合指示と、上記融合レベル指示を1つの指示文で記述することを特徴とするコンパイラプログラム。
  9. 請求項7に記載のコンパイラプログラムであって、
    前記融合指示の有無と前記融合レベル指示のレベルに関する情報をループ毎に有するループ表をメモリ上に読み込むステップと、
    前記ループ融合処理後に、前記ループ表のループ融合のされたループのデータを更新するステップと、
    を実行可能とすることを特徴とするコンパイラプログラム。
JP2004028793A 2004-02-05 2004-02-05 ループ融合方法及びプログラムコードの生成方法 Pending JP2005222262A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004028793A JP2005222262A (ja) 2004-02-05 2004-02-05 ループ融合方法及びプログラムコードの生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004028793A JP2005222262A (ja) 2004-02-05 2004-02-05 ループ融合方法及びプログラムコードの生成方法

Publications (1)

Publication Number Publication Date
JP2005222262A true JP2005222262A (ja) 2005-08-18

Family

ID=34997845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004028793A Pending JP2005222262A (ja) 2004-02-05 2004-02-05 ループ融合方法及びプログラムコードの生成方法

Country Status (1)

Country Link
JP (1) JP2005222262A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549507B2 (en) 2007-03-23 2013-10-01 Samsung Electronics Co., Ltd. Loop coalescing method and loop coalescing device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549507B2 (en) 2007-03-23 2013-10-01 Samsung Electronics Co., Ltd. Loop coalescing method and loop coalescing device

Similar Documents

Publication Publication Date Title
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JP4962564B2 (ja) 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム
US20140282444A1 (en) Programming language transformations with abstract syntax tree extensions
US9582321B2 (en) System and method of data processing
US20160321039A1 (en) Technology mapping onto code fragments
JP2015201119A (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
US20090119652A1 (en) Computer Program Functional Partitioning System for Heterogeneous Multi-processing Systems
JP2006107338A (ja) プログラム処理装置
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
CN116661804B (zh) 代码编译方法、代码编译装置、电子设备和存储介质
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
JP2006107339A (ja) プログラム処理装置
JP4719415B2 (ja) 情報処理システム及びコード生成方法
US20230113783A1 (en) Cross-platform code conversion method and device
KR102614967B1 (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
CN113791770B (zh) 代码编译器、代码编译方法、代码编译系统和计算机介质
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP2012014526A (ja) プログラムコードの構造変換装置、並びにコード構造変換プログラム
US11635947B2 (en) Instruction translation support method and information processing apparatus
US11556317B2 (en) Instruction translation support method and information processing apparatus
JP2005222262A (ja) ループ融合方法及びプログラムコードの生成方法
Komatsu et al. Xevolver: A code transformation framework for separation of system‐awareness from application codes
JP5932707B2 (ja) 計算機、プログラム及びデータ生成方法
JP2009265708A (ja) コンパイラ及びそのコード生成方法
US20170344351A1 (en) Information processing apparatus, compiling management method, and recording medium

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060424