JP3729644B2 - ループ並列化方法 - Google Patents
ループ並列化方法 Download PDFInfo
- Publication number
- JP3729644B2 JP3729644B2 JP18236898A JP18236898A JP3729644B2 JP 3729644 B2 JP3729644 B2 JP 3729644B2 JP 18236898 A JP18236898 A JP 18236898A JP 18236898 A JP18236898 A JP 18236898A JP 3729644 B2 JP3729644 B2 JP 3729644B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- processor
- parallelization
- barrier synchronization
- loops
- 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
Landscapes
- Advance Control (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の属する技術分野】
本発明は、バリア同期を利用したループ並列化方法に係り、特に、バリア同期機構を備えたマルチプロセッサに対する目的コードを生成するために使用して好適なコンパイラにおけるループ並列化方法に関する。
【0002】
【従来の技術】
同期制御としてバリア同期を利用する共有メモリ型のマルチプロセッサ上で効率的に並列実行を行うような目的コードを生成するための従来技術によるループ並列化技術として、例えば、「スーバーコンパイラ」(Hans Zima、Barbara Chapman 共著、村岡洋一訳、オーム社)p276−p297等に記載された技術が知られている。
【0003】
従来技術によるループ並列化は、ループ繰り返しにまたがるデータ依存(以下、これをループ運搬依存と呼ぶ)が存在しないDOALLループを対象として並列化を行うものである。そして、従来技術は、並列化したDOALLループ間に依存関係が存在する場合、DOALLループ間にバリア同期を実行する文を挿入することによって並列実行が正しく行われることを保証している。
【0004】
図7は本発明によるループ並列化方法により並列化された目的コードを並列に実行することが可能な従来技術によるマルチプロセッサの構成と実行イメージとを説明する図であり、以下、図7を参照して目的コードの並列実行ついて説明する。
【0005】
図7に示すマルチプロセッサは、単一ノードとして機能するものであり、1台のマスタープロセッサ61と、複数例えば8台のスレーブプロセッサ62とによって構成され、各プロセッサが、個々にキャッシュをもち、また、全てのプロセッサがメモリを共有している。図7に示すマルチプロセッサは、前述のような構成の下で、単一プログラムの処理の高速化を図るためにSID−SMP方式と呼ばれる並列実行方式が採用されている。以下、この方式について説明する。
【0006】
図7において、プログラムは、最初にマスタープロセッサ61上で実行される。同時に、プログラム実行の先頭で、マスタープロセッサ61は、マスタープロセッサ61上で実行するプログラムを親スレッドとしてスレーブプロセッサ数分の子スレッドを生成する。
【0007】
生成された子スレッドは、プログラムが終了するまで各スレーブプロセッサ62に固定して割り付けられる。従って、スレッドの生成、削減のためのオーバーヘッドは、プログラムの最初と最後とにのみ発生する。プログラムは、コンパイラによって、予め逐次実行部分と並列実行部分とに分割される。逐次実行部分は、マスタープロセッサ61によってのみ実行され、この部分の実行中は、他のプロセッサは実行待ちのスピンループを実行する。プログラムの実行が並列実行部分に到達すると、マスタープロセッサ61と共に、全てのスレーブプロセッサ62が並列実行部分の実行を開始する。全てのプロセッサの並列実行部分の実行が終了すると、マスタープロセッサ61は後続の逐次実行部分の実行を開始し、スレーブプロセッサ61は再び実行待ちのスピンループに入る。
【0008】
前述の方式は、複数の子スレッドを、特定のプロセッサ上で固定的に待機させておくことによって、並列実行の起動、終結のためのオーバーヘッド時間を最小限に抑えようとするものである。
【0009】
前述において、スレーブプロセッサの並列実行中にプロセッサ間で同期をとりたい場合がある。このとき、同期の方法としてバリア同期が使用されるのが一般的である。バリア同期は、全てのプロセッサが同期点に到達するまで、先に同期点に到達した他の全てのプロセッサが待機することによって同期をとるための方式であり、専用のハードウエア命令によって実現することができる。
【0010】
一方、自動並列化コンパイラが並列化の対象とするのはループである。そして、並列化の対象となるループは、任意のループではなく、ループ実行前にループ長が計算できるループであ、例えば、FORTRANのDOループがこれに相当する。コンパイラは、これらのループを解析し、並列実行可能か否かを判定し、並列実行可能と判定したループに対して、そのループのイタレーションを分割して、分割されたループを各プロセッサが実行するようなコードを生成する。
【0011】
並列実行されるループのイタレーションをどのように分割して各プロセッサに割り付けるかは、マルチプロセッサにおけるスケジューリング問題といわれる。このようなスケジューリング方式としては、動的スケジューリング方式と静的スケジューリング方式との2つが考えられる。
【0012】
動的スケジューリング方式は、実行時に動的に割り付け先のプロセッサを決定するので、各プロセッサの負荷を均等に近くできるという利点があるが、実行時にプロセッサへの割り付けを行うためのオーバーヘッドが大きくなりすぎる傾向がある。これに対して、静的スケジューリング方式は、コンパイラが静的に割り付け先のプロセッサを決定するため、実行時のオーバーヘッドは少なくて済むという利点を有している。特に、DOループの並列化は、単純な分割でも負荷を均等に近くできる場合が多いと考えられ、図7に説明したマルチプロセッサも、スケジューリング方式として、コンパイラによる静的分割方式が採用されている。
【0013】
図8は並列化可能なDOループの例と、それを静的分割によって並列実行用に変換したコードとを示す図であり、以下、これについて説明する。
【0014】
DOループの静的分割の方法として、各種の分割方法が知られているが、基本的にはブロック分割を行う方法が使用される。ブロック分割されたDOループのそれぞれは、各プロセッサにより1つのループがブロック長分の連続したイタレーションとして実行される。ブロック長は、ループ長をプロセッサの総数で割ることによって求めることができる。
【0015】
図8に示す並列化後のループにおけるTの計算がブロック長を求めるものである。この計算式において、Tはブロック長、PROC_PNはプロセッサの総数、CELIは割り切れないときに切り上げを行う指示である。各プロセッサは、自分のプロセッサの識別番号、図8の例ではPROC_IDを持っているので、そのプロセッサ番号とブロック長とから自分の担当するイタレーションの下限L、上限Uを計算することができる。
【0016】
図8に示したような並列実行用のコードは、各プロセッサ上にロードされて同一のものが並列に実行される。但し、その中で参照される変数は全てのプロセッサで共有されるグローバルなものと、各プロセッサに固有の領域に割り当てられるローカルなものとに分かれる。基本的に、元のプログラム中に現れる変数はグローバルで、T,L,Uのように並列化後に生成される変数はローカルになる。ループ制御変数、すなわち、DOループの実行を制御する変数、図8の例におけるIは、並列化時には、ローカルな変数になる。そうしないと、同一領域に別々のプロセッサからの書き込みが生じてしまう。図8に示す例では、元のループ制御変数と区別するため並列化後のループ制御変数を%Iとしてある。
【0017】
【発明が解決しようとする課題】
一般に、マルチプロセッサの実行性能を向上させるためには、多重ループから効率的に並列性を抽出する技術が重要になる。しかし、バリア同期を利用する前述した従来技術は、多重ループ内にDOALLループがない場合、ループ分配等のループ変換技術を使ってDOALLループを作り出すことができない限り、並列化を行うことが困難であるという問題点を有している。
【0018】
本発明の目的は、前述した従来技術の問題点を解決し、DOALLループを含まない多重ループに対しても、並列性を抽出可能な場合にはバリア同期を利用して並列化を行い、マルチプロセッサ上で効率的な実行性能が得られるような目的コードを生成することを可能にしたコンパイラにおけるループ並列化方法を提供することにある。
【0019】
【課題を解決するための手段】
本発明によれば前記目的は、バリア同期機構を備えた共有メモリ型マルチプロセッサに与える目的コードを生成するための高級言語の翻訳を行うコンパイラにおけるループ並列化方法において、前記コンパイラとしてのプロセッサは、ループ繰り返しにまたがったデータ依存関係の存在する多重ループに対して、当該多重ループからパイプライン的に並列実行可能なループを抽出し当該ループの分割を行った後、当該ループをパイプライン的に並列実行させるために、当該多重ループの前後にバリア同期を発行するループを生成し、前記分割したループの直後にバリア同期を発行する文を生成することにより達成される。
【0020】
また、前記目的は、前記分割したループが内側ループである場合、外側ループをブロック化し、前記分割したループが外側ループである場合、内側ループをブロック化することにより達成される。
【0021】
【発明の実施の形態】
以下、本発明によるバリア同期を利用したループ並列化方法の一実施形態を図面により詳細に説明する。
【0022】
図1は本発明によるループ並列化を行うコンパイラの構成を示す図、図2は図1に示すコンパイラの動作を説明するフローチャート、図3はFORTRAN言語で記述されたDOループの例を示す図、図4は図3に示すDOループの並列分割を行った後のDOループを説明する図、図5は図4に示すDOループにバリア同期文を挿入した後のDOループを説明する図、図6は図5に示すDOループにブロック化を適用した後のDOループを説明する図である。図1において、11はソースプログラム、12はコンパイラ、13は並列化変換部、14はDOALL型並列化変換部、15はパイプライン型並列化変換部、16は目的コード生成部、17は目的プログラム、18はプログラム格納媒体である。
【0023】
本発明によるループ並列化を行うコンパイラ12は、FORTRAN等の逐次型の高級言語で記述されたソースプログラム11を入力として、マルチプロセッサ上で実行可能な目的コードを生成し目的プログラム17として出力するものであり、並列化変換部13と目的コード生成部16とにより構成される。並列化変換部13は、並列化の判定及び変換を実施する機能を持ち、プログラム中のループを認識し、これらの各ループに対して並列化が可能か否かの判定を行い、並列化可能と判定した場合に、入力されたソースプログラムを並列実行可能なループに変換する。
【0024】
並列化変換部13は、従来型のDOALL型の並列化を行うDOALL型並列化変換部14と、本発明によるパイプライン型の並列化を行うパイプライン型並列化変換部15とにより構成される。そして、並列化変換部13は、入力されたソースプログラムの各ループに対して、最初にDOALL型の並列化を試み、これが適用できないループに対してパイプライン型の並列化の適用を試みる。
【0025】
なお、コンパイラ12における処理を実行するコンパイラプログラムは、記録媒体18に格納されている。
【0026】
次に、図2に示すフローを参照してコンパイラ12における処理動作を説明する。
【0027】
(1)入力されるソースプログラム内の各ループネストに対してデータ依存の解析を行う(ステップ201)。
【0028】
(2)データ依存の解析からDOALL型並列化が適用可能か否かをチェックし、DOALL型並列化が適用可能な場合、DOALL型並列化変換部14に並列化を実行させる(ステップ202、203)。
【0029】
(3)ステップ202で、DOALL型並列化が適用不可能であると判定された場合、パイプライン型並列化が適用可能か否かをチェックし、パイプライン型並列化が適用可能な場合、パイプライン型並列化変換部15に並列化を実行させる(ステップ204、205)。
【0030】
(4)ステップ204で、パイプライン型並列化が適用不可能であると判定された場合、並列化を行わず、ステップ201の処理に戻って、次のループネストの解析からの処理を続ける。なお、並列化されないループは、逐次実行されることになる(ステップ206)。
【0031】
次に、ソースプログラムの例として、図3に示すプログラムを考え、パイプライン型の並列化の概要を説明する。
【0032】
図3に示す例は、FORTRAN言語で記述されたDOループであり、このDOループは、外側ループ21に対しても、内側ループ22に対しても配列Aに関してループ運搬依存が存在する。このようなループは、まず、内側ループを分割してマルチプロセッサ上の各プロセッサに割り当てられる。プロセッサ番号をP1,P2,・・・,Pnとすると、内側ループのイタレーション[1:N]が分割されて、順番にプロセッサP1,P2,・・・,Pnに割り当てられる。
【0033】
このとき、各プロセッサに割り当てられた内側ループのイタレーションを、プロセッサPkに対して[Lk:Uk](但し、Lkは、イタレーションの下限値、Ukはイタレーションの上限値)とする。これに、外側ループイタレーション[1:N]を考慮に入れると、結局、各プロセッサは、プロセッサ番号Pkとするとき、[1:N,Lk:Uk]のイタレーションを実行することになる。
【0034】
ここで、外側ループのイタレーションをMとするとき、イタレーション[M,Lk:Uk]からイタレーション[M,Lk+1:Uk+1]への依存が存在するため、イタレーション[M,Lk:Uk]の実行が完了してからでないと、イタレーション[M,Lk+1:Uk+1]の実行を開始することはできない。逆に、これ以外には、異なるプロセッサに割り当てられたイタレーション間には依存関係は存在しない。このような場合、パイプライン的な並列化を適用することができる。
【0035】
バリア同期を利用したパイプライン的な並列化の処理は、プロセッサ番号の小さいものから順番にループの実行を開始することにより行われる。まず、プロセッサP1がループの実行を開始し、プロセッサP1は、外側ループの最初のイタレーションの実行を終了したとき、バリア同期を発行し、プロセッサP2がループの実行を開始する。次に、プロセッサP1が外側ループの2番目のイタレーションの実行を終了し、プロセッサP2が外側ループの最初のイタレーションの実行を終了したとき、バリア同期を発行し、プロセッサP3がループの実行を開始する。
【0036】
以下、同様にしてバリア同期によって同期をとりながらプロセッサは順番にループの実行を開始し、ループの実行を行うプロセッサが1台ずつ増えてゆき、やがて、全てのプロセッサによって並列実行が行われるようになる。このときも、外側ループの1イタレーションの実行終了毎にバリア同期が発行される。ループの実行の終了は、必然的にループ開始と同様にプロセッサ番号が小さいものから完了し、プロセッサP1がループの実行を終了した後、ループの実行を行うプロセッサは1台ずつ減ってゆき、やがて、全てのプロセッサがループの実行を終了する。
【0037】
本発明の実施形態においては、前述したようなバリア同期を利用したパイプライン的な並列化を実現するために、以下のような方針に従って目的コードを生成する。すなわち、
まず、ループ実行の直前に(プロセッサ番号−1)回分のバリア同期を発行するループを生成する。
次に、内側ループを分割し各プロセッサに割り当て、分割したループの直後にバリア同期を発行する文を生成する。
最後に、ループ実行の直後に(プロセッサ総数−プロセッサ番号)回分バリア同期を発行するループを生成する。
【0038】
前述した説明におけるパイプライン的な並列化は、パイプラインの1ステージ、すなわち、バリア同期の発行の間の実行が外側ループの1イタレーションに相当するが、外側ループ長が充分に長いことがわかっている、または、予測されるとき、このパイプラインの1ステージで外側ループの複数のイタレーションを実行するようにすることによってバリア同期の発行回数を削減することができる。これを、ブロック化と呼び、バリア同期の発行回数を削減することが可能となり、実行時間の削減が期待できる。
【0039】
前述したように、図3に示したFORTRANプログラムで記述されたDOループは、外側ループ、内側ループの両方に対してループ運搬依存が存在するためDOALL型の並列化を適用することができない。従って、パイプライン型の並列化が適用される。前述した方針に従って図3に示すDOループを分割したDOループが図4に示されており、以下、これについて説明する。
【0040】
最初に、内側ループのイタレーションをマルチプロセッサ上のプロセッサ数だけ均等に分割して各プロセッサに順番に割り当てる。各プロセッサに割り当てられる内側ループのループ長をB、プロセッサ総数PNとすると、B=[N/PN]となる。ここで、[ ]は割り切れなかった場合、整数への切り上げを示すものである。また、各ループが実行する内側ループのイタレーションの下限値をL、上限値をUとすると、L=B×(P−1)+1、U=MIN(L+B−1,N)となる。この式において、Pはプロセッサ番号(P=1,2,・・・,PN)である。
【0041】
前述した変換によって、各プロセッサは、自プロセッサ番号からループの上下限値を計算して自分に割り当てられたループを実行することが可能になる。そして、自分に割り当てられたループを計算するために、各プロセッサに与えるDOループは、前述した分割ループのループ長の計算式31、分割ループの下限値計算式32、分割ループの上限値計算式33及び分割された内側ループ34の情報を含んでいる。
【0042】
さらに、図4に示す分割したループを各プロセッサがパイプライン的に並列実行するためにバリア同期を発行するバリア同期文が挿入される。バリア同期文は、図5に示すように、図4に示したループの直前に挿入されるバリア同期によるプロローグループ41、直後に挿入されるバリア同期によるエピローグループ43と、分割したループの直後の位置に挿入されるバリア同期文42とにより構成される。プロローグループ41は、(P−1)回繰り返えされ、エピローグループ43は、(PN−P)回繰り返えされる。
【0043】
この結果、マルチプロセッサ上の各プロセッサは、自プロセッサ番号より1つ若いプロセッサ番号のプロセッサが分割されたDOループの1回を終了するまでプロローグループ41を実行し、その後に自プロセッサでのDOループの処理を開始することになる。そして、マルチプロセッサは、若番のプロセッサから順に処理を開始して全てのプロセッサが協調してパイプライン的な並列実行を行うことが可能となる。また、各プロセッサでのDOループの処理は、若番のプロセッサから順に終了することになるが、エピローグループ43を実行することにより、全プロセッサが同時に処理を終了することになる。
【0044】
前述した本発明の実施形態は、内側ループを分割し、分割されたDOループをマルチプロセッサを構成する各プロセッサに割り当てるとして説明したが、本発明は、外側ループを分割し、分割されたDOループをマルチプロセッサを構成する各プロセッサに割り当てるように構成してもよい。
【0045】
また、前述で説明した実施形態により各プロセッサに割り当てられるループにおける多重ループ内でのバリア同期文42の発行回数は外側ループ長と等しくN回となるが、外側ループにブロック化を適用することによってバリア同期の実行回数を削減することができる。
【0046】
外側ループにブロック化を適用して得ることができるループの例が図6に示されている。このループは、図5に示すループに対して、外側ループをブロック化することによりループ51とループ52とからなる二重ループに変換したものである。ループ52は、ブロック化されたループ長Tのループであり、ループ53は、その実行の制御ループになる。このとき、バリア同期文は、ブロック化されたループの直後の位置にバリア同期文53として挿入される。この結果、バリア同期文53の発行は、ブロック化を行わない場合にN回であったものを、ブロック化を適用することにより[N/T]回とすることができる。
【0047】
前述では内側ループを分割し、外側ループをブロック化するとして説明したが、本発明は、外側ループを分割し、内側ループをブロック化することもでき、同様な効果を得ることができる。
【0048】
【発明の効果】
以上説明したように本発明によれば、DOALLループを含まない多重ループに対しても、並列性を抽出可能な場合にはバリア同期を利用して並列化を行い、マルチプロセッサ上で効率的な実行性能が得られるような目的コードを生成することができる。
【図面の簡単な説明】
【図1】本発明によるループ並列化を行うコンパイラの構成を示す図である。
【図2】図1に示すコンパイラの動作を説明するフローチャートである。
【図3】FORTRAN言語で記述されたDOループの例を示す図である。
【図4】図3に示すDOループの並列分割を行った後のDOループを説明する図である。
【図5】図4に示すDOループにバリア同期文を挿入した後のDOループを説明する図である。
【図6】図5に示すDOループにブロック化を適用した後のDOループを説明する図である。
【図7】本発明によるループ並列化方法により並列化された目的コードを並列に実行することが可能な従来技術によるマルチプロセッサの構成と実行イメージとを説明する図である。
【図8】並列化可能なDOループの例と、それを静的分割によって並列実行用に変換したコードとを示す図である。
【符号の説明】
11 ソースプログラム
12 コンパイラ
13 並列化変換部
14 DOALL型並列化変換部
15 パイプライン型並列化変換部
16 目的コード生成部
17 目的プログラム
18 プログラム格納媒体
Claims (3)
- バリア同期機構を備えた共有メモリ型マルチプロセッサに与える目的コードを生成するための高級言語の翻訳を行うコンパイラにおけるループ並列化方法において、前記コンパイラとしてのプロセッサは、ループ繰り返しにまたがったデータ依存関係の存在する多重ループに対して、当該多重ループからパイプライン的に並列実行可能なループを抽出し当該ループの分割を行った後、当該ループをパイプライン的に並列実行させるために、当該多重ループの前後にバリア同期を発行するループを生成し、前記分割したループの直後にバリア同期を発行する文を生成することを特徴とするループ並列化方法。
- 前記分割したループが内側ループである場合、前記プロセッサは、外側ループをブロック化し、前記分割したループが外側ループである場合、内側ループをブロック化することを特徴とする請求項1記載のループ並列化方法。
- 請求項1または2記載のループ並列化方法を実現するプログラムを格納したことを特徴とする記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18236898A JP3729644B2 (ja) | 1998-06-29 | 1998-06-29 | ループ並列化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18236898A JP3729644B2 (ja) | 1998-06-29 | 1998-06-29 | ループ並列化方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005233345A Division JP4084374B2 (ja) | 2005-08-11 | 2005-08-11 | ループ並列化方法及びコンパイル装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000020482A JP2000020482A (ja) | 2000-01-21 |
JP3729644B2 true JP3729644B2 (ja) | 2005-12-21 |
Family
ID=16117098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18236898A Expired - Fee Related JP3729644B2 (ja) | 1998-06-29 | 1998-06-29 | ループ並列化方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3729644B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006268070A (ja) * | 2005-03-22 | 2006-10-05 | Hitachi Ltd | 並列化コンパイル処理方法及び並列化されたオブジェクトコードを実行する並列計算機 |
JP4339907B2 (ja) | 2007-10-24 | 2009-10-07 | 株式会社日立製作所 | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 |
JP5148674B2 (ja) | 2010-09-27 | 2013-02-20 | 株式会社東芝 | プログラム並列化装置およびプログラム |
US8881124B2 (en) | 2010-12-21 | 2014-11-04 | Panasonic Corporation | Compiler device, compiler program, and loop parallelization method |
US20130318540A1 (en) * | 2011-02-01 | 2013-11-28 | Nec Corporation | Data flow graph processing device, data flow graph processing method, and data flow graph processing program |
-
1998
- 1998-06-29 JP JP18236898A patent/JP3729644B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000020482A (ja) | 2000-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2947356B2 (ja) | 並列処理システム及び並列プロセッサの同期方法 | |
JP2921190B2 (ja) | 並列実行方式 | |
US6718541B2 (en) | Register economy heuristic for a cycle driven multiple issue instruction scheduler | |
US6754893B2 (en) | Method for collapsing the prolog and epilog of software pipelined loops | |
US8336038B2 (en) | System and method for parallel execution of a program | |
US20050097509A1 (en) | Methods and products for processing loop nests | |
JP2001282549A (ja) | プログラム変換装置及び方法並びに記録媒体 | |
Baudisch et al. | Multithreaded code from synchronous programs: Extracting independent threads for OpenMP | |
JPH04307625A (ja) | ループ最適化方法及び装置 | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
JP2009151645A (ja) | 並列処理装置及びプログラム並列化装置 | |
JPH0498323A (ja) | プロセス並列実行方法および装置 | |
JP3729644B2 (ja) | ループ並列化方法 | |
JP2016212573A (ja) | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム | |
JP6488739B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
JP6427053B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
US9081561B2 (en) | Method for improving execution performance of multiply-add instruction during compiling | |
US6954927B2 (en) | Hardware supported software pipelined loop prologue optimization | |
JP4084374B2 (ja) | ループ並列化方法及びコンパイル装置 | |
Duesterwald et al. | Register pipelining: An integrated approach to register allocation for scalar and subscripted variables | |
JPH04293150A (ja) | コンパイル方法 | |
Novack et al. | Resource-directed loop pipelining: Exposing just enough parallelism | |
Singh | Automatic parallelization using OpenMP API | |
Bharadwaj et al. | Compiler optimization for superscalar and pipelined processors | |
JP2007108838A (ja) | コンパイル方法及びコンパイル装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040803 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040930 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050614 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050811 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050906 |
|
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: 20050927 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051004 |
|
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: 20091014 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091014 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101014 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111014 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121014 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121014 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131014 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |