JP3028821B2 - 並列化コンパイル方法 - Google Patents

並列化コンパイル方法

Info

Publication number
JP3028821B2
JP3028821B2 JP1227346A JP22734689A JP3028821B2 JP 3028821 B2 JP3028821 B2 JP 3028821B2 JP 1227346 A JP1227346 A JP 1227346A JP 22734689 A JP22734689 A JP 22734689A JP 3028821 B2 JP3028821 B2 JP 3028821B2
Authority
JP
Japan
Prior art keywords
array
loop
parallel
value
variable
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
JP1227346A
Other languages
English (en)
Other versions
JPH0391036A (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 JP1227346A priority Critical patent/JP3028821B2/ja
Publication of JPH0391036A publication Critical patent/JPH0391036A/ja
Application granted granted Critical
Publication of JP3028821B2 publication Critical patent/JP3028821B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、逐次実行型の高級言語で記述されたユーザ
プログラムを並列プロセツサシステムで並列に実行する
プログラムに変換する並列化コンパイル方式に関する。
〔従来の技術〕
近年、プログラム実行時間を短縮するため、多重ルー
プ処理を複数処理に分割し、複数プロセツサで実行する
並列処理が行なわれてきている。また、FORTRANのよう
な高級言語で記述されたユーザプログラムから自動的に
並列化可能部分を検出し、並列実行形態に変換する自動
並列コンパイラシステムが開発されてきている。
多重ループに関し並列化できるためには、そのループ
の異なるループ繰り返し間でデータの流れがないことが
必要である。たとえば、第3図(B)は、DOループ31,3
2をループ制御変数値I,Jに関して展開した結果を示す。
このDOループ31を並列化するには、第3図(B)に示す
ようにデータ間の矢印331,332,333,334が異なるループ
制御変数値(異なるJ値)でまたがらないことである。
第3図(A)の多重ループは第3図(C)に示す処理単
位U1,U2に分けられる。
一方、第2図(A)のDO10ループ21のループ展開結果
を第2図(B)に示す。この図から分かるように、この
ループ21の異なる繰り返し間ではデータの流れ321,322
がある。このループを第2図(C)に示すごとく、並列
処理単位U1とU2に分けた場合、それらの間で通信が必要
となるため、通信が相対的に大きな時間を占める大型計
算機においては、このループを処理単位U1とU2に並列化
しないのが一般的である。しかし、ループ間にまたがる
データが存在する場合でも、配列化と呼ばれるプログラ
ム変換をすることにより、ループ間にまたがるデータの
流れを消滅させ、通信のない並列変換ができる場合があ
ることが、“プログラミング言語の原理”(Principles
of Programming Langnage)(ACM0−89791−029−X/81
−0100−0207,1981年1月号第207〜218頁)中の“依存
グラフとコンパイラ最適化”(DEPEN−DENCE GRAPHS AN
D COMPILER OPTIMIZATIONS)で論じられている。プログ
ラムのなかの単純変数に対するリネイムおよび配列化に
よる方法が論じられている。
〔発明が解決しようとする課題〕
上記従来技術は以下の点について配慮がされておらず
問題があつた。
(i) すなわち、複数要素から成る配列要素を含むル
ープにおいて、その異なるループ繰り返し間でデータの
流れの場合そのループを並列化する方法は述べられてい
ない、たとえば、第4図(A)のDO10ループ41のループ
展開結果を示す第4図(B)にあるごとく、異なるルー
プ繰り返し間にまたがつたデータの流れ341,342,343,34
4がある場合に、本ループを並列処理単位に分割する並
列化ができない問題があつた。
(ii) さらにコンパイル時に配列要素列の要素数が、
定数として確定しない場合には、必要な要素数の配列を
コンパイル時に確保できない。この場合でも本ループを
並列処理単位に分割することが望ましい。
(iii) 本ループ外でその配列の値を使用している場
合でも、本ループを配列化することが望ましい。
本発明の目的は、上記(i)〜(iii)の問題をそれ
ぞれ解決することにより、並列化範囲を拡大することで
ある。
〔課題を解決するための手段〕
上記目的を達成するためには、本願発明では外側ルー
プの任意の繰り返し1回における、該外側ループ内で定
義される配列について、該外側ループに関し添字範囲が
不変で、かつ定義配列要素の値を、異なるループ繰り返
しで使用されるか否かを判定し、定義配列要素の値を異
なるループ繰り返しで使用しない時は、各並列処理単位
毎に該配列に対し別々の領域を作業配列として割り当て
る。
本願発明の望ましい態様では使用配列要素列より定義
配列要素列の範囲が小さいときは、作業配列へ該配列の
初期値を代入する。
本願発明の他の望ましい態様では単純変数に対して
は、定義変数の値を、異なる繰り返しで使用されるか否
かを判定し、該異なる繰り返しで使用しない時は、各並
列処理単位毎に該配列に対し別別の領域を作業変数とし
て割り当てる。
本願発明の他の望ましい態様では、用意すべき該作業
配列の要素数が、コンパイル時に定数として確定すると
き、及びコンパイル時にその最大値を推定できるとき
は、コンパイル時にそれらの要素数に見合つた領域を上
記作業配列用の領域として確保し、コンパイル時にその
要素数が不明な場合はプログラム実行時に必要な大きさ
の領域を確保する。
本願発明の他の望ましい態様では並列化対象DOループ
内で定義された単純変数又は配列要素列の値を、その並
列化対象DOループ外でその値を使用している場合、分割
された並列処理単位毎の最終定義ループ制御変数値を求
め、並列処理終了後、該最終定義ループ制御変数値か
ら、全ての並列処理単位の中で最終計算を行つた並列処
理単位を求め、該単純変数又は配列要素列に最終計算値
を代入する。
〔作用〕
コンパイラの並列化部は以下のように動作する。
第1の課題に対しては、並列化検討DOループ内で定義
されている単純変数または配列要素列に対し、外側ルー
プの任意の繰り返し間でのデータの流れに着目し5種類
に分類する。
分類1 並列化不能な単純変数または配列 分類2 並列化可能な単純変数または配列 分類3 各並列処理単位毎に作業変換を導入することに
より並列化可能な単純変数、つまり、同一の単純変数に
対して、各並列処理単位毎に別々の変数をわりあてるこ
とにより、並列処理単位間のデータの流れがなくなる。
このため、並列化可能となる。
分類4 各並列処理単位毎に作業配列を導入することに
より並列化可能な配列、つまり、同一の配列に対して、
各並列処理単位毎に、別々の配列をわりあてることによ
り、並列処理単位間のデータの流れがなくなる。このた
め、並列化可能となる。
分類5 各並列処理単位毎に作業配列を導入し、作業配
列に並列処理単位で定義されない部分に初期値を設定す
ることにより並列化可能な配列 上記、分類結果に応じて並列処理単位に分割する。
第2の課題に対しては、分類4,分類5として分類され
た配列に対しては、並列化対象ループ内の配列が属する
ループのループ長を調べ、用意すべき作業配列が、コン
パイル時に要素数が定数として確定するとき、又はコン
パイル時に最大値を推定できるときは、コンパイル時に
領域を確保をおこない、コンパイル時に要素数が不明な
場合はプログラム実行時に必要な領域を確保する処理を
実行時ライブラリに依頼する文を挿入する。
第3の課題に対しては、並列化対象DOループ内で定義
された単純変数又は配列要素列の値を、並列化対象DOル
ープ外でその値を使用しているかを調べ、使用している
場合は、分割された並列処理単位毎の最終定義ループ制
御変数値を求め、並列処理終了後、最終定義ループ制御
変数値から、全ての並列処理単位の中で最終計算を行つ
た並列処理単位を求め、単純変数又は配列要素列に最終
計算値を代入する文を挿入する。
上記のようにして、単純変数及び配列に関し、並列化
可能な範囲を拡大することができる。
〔実施例〕
以下、本発明の一実施例を図面を参照しつつ説明す
る。
第5図に、本発明が適用されたFORTRANコンパイラ全
体の構成を示す、第5図の構文解析処理52でFORTRANプ
ログラム51を中間語53に変換する。中間処理54では、こ
れを入力として、データ依存解析をおこない、データ依
存グラフ57を作成し、制御依存解析を行い、制御依存グ
ラフ58を作製し、並列化処理で複数のプロセツサで並列
に実行可能な部分を見つけ、その後最適化処理を行い、
変換した中間語53を出力する。次にコード生成処理55
で、変数に対する主記憶割当て、及びオブジエクトコー
ド56を生成する。本発明は中間処理54に係わり、より広
い範囲を並列化することにより、オブジエクトコード56
の実行性能を改良することにある。
本発明においては、第5図の中間処理54の並列化処理
において、第1図に示した処理を行わせる。即ち、多重
ループ内の単純変数、及び配列を並列化の観点から分類
し、従来、並列化できない場合に対し、作業変数、及び
作業配列を導入することにより並列化対象範囲を拡大す
る。
以下に、例を用いて処理の流れを述べる。
(1)ステツプ1 与えられたプログラムに対応して、並列化を検討する
DOループたとえば第13図のDO10ループを選択する。
(2)ステツプ2 当該DOループ内で定義される単純変数又は配列要素
列、第13図の例ではA(I,J)を検出して取り出す。
また、配列要素列は、一般に複数のスカラ値の集合で
あり、公知のデータ構造で表す。つまりそのループに対
し、初期値0,増分値1のループ繰返に関し線形に変わる
基準変数を設定し、配列の各次元ごとに配列添字を基準
変数により表現する。例えば第13図の配列Aの定義文13
9の配列添字I,Jは、以下のように表現される。
I=1×I0+0×I1+1 J=0×I0+1×I1+1 I0 DO 20ループの基準変数 値域 0〜99 I1 DO 10ループの基準変数 値域 0〜99 (3)ステツプ3 取り出された単純変数又は配列要素列について、第6
図に示すごとく、並列化検討のループに関するデータの
参照関係に着目し分類1〜5に分類する。この分類の仕
方は後に具体的に説明する。なお、分類1に属する単純
変数又は配列要素 (4)ステツプ4,5 並列化不可能な分類1に属する単純変数又は配列要素
列が途中で検出されたら(ステツプ4)、当該ループに
関しては、並列実行できないものとして、逐次処理実行
の形でコンパイルを進める(ステツプ5)。
(5)ステツプ4,6,7 1つの単純変数又は配列要素列に関し分類処理が行わ
れると、次にチエツクすべきものがあれば、これについ
て処理が繰り返される。
(6)ステツプ8 そして、検討ループ内の全ての単純変数又は、配列要
素列が並列化可能な分類2〜5のいずれかに属する場
合、第7図から第12図で示すように、分類に応じた形で
並列化のための変換を行う。
次に、第6図を用いて、ステツプ3における単純変数
又は配列要素列の分類処理について説明する。
(1)ステツプ61 対象とする単純変数又は配列要素列の定義点と使用点
の関係において、使用点において使用する値は、並列化
対象のDOループの同一繰返時に定義された値か、又は、
並列化対象DOループの外側で伝義された値であるかをチ
エツクする。
例えば、第3図の多重ループプログラムにおいて、配
列Aの使用点34にて使用する値は、並列化検討ループDO
31の同一繰返し(同一のループ制御変数値J)で定義さ
れるためこの条件を満足する。しかし、第2図の多重ル
ーププログラムにおいて、配列Aの使用点24にて使用す
る値は、並列化検討ループ21に関し1つ前の繰返しで定
義するものが存在するため、この条件を満足しない。
(2)ステツプ65 第2図のDO10(21)に関する配列Aのごとく、ステツ
プ61の条件を満たさない場合は、並列化不可能という分
類を与える。
(3)ステツプ62,67 ステツプ61の条件を満たし、対象が単純変数の場合
は、分類3の属性を与える。
(4)ステツプ63 ステツプ62の条件を満足した場合は、配列要素の添字
が、並列化対象ループに関してループ不変かチエツクす
る。
例えば、第4図の多重ループプログラムにおいて、配
列要素A(I)の添字Iは並列化対象DOループDO10(4
1)に関して不変である。
(5)ステツプ66 第3図のDO10(31)に関する配列Aのごとく、ステツ
プ62の条件を満たさない場合は、分類2の属性を与え
る。
(6)ステツプ64,68,69 ステツプ63の条件を満たし、対象が配列要素列の場合
で、第4図の配列Aの要素列のごとく定義域(A
(1),A(2))が、使用域(A(1),A(2))と等
しいか、広い場合は、分類4の属性を、そうでない場合
は、分類5の属性を与える。
上記では、単純変数又は配列要素の、定義及びその使
用の関係で説明したが、定義及びその再定義,使用及び
その再定義の関係も同様である。
次に、第7図を用いて、ステツプ8における単純変数
又は配列要素列の分類に応じた並列化のための変換を説
明する。
(1)ステツプ71 並列化対象DOループに関し、当該ループの制御変数の
値域を分割し、複数処理単位に分割する。
例えば、第13図(A)の多重ループの場合、並列化対
象ループDO10(132)の制御変数J(132)の値を2つに
分け(135,136)、処理を第13図(B)に示すように2
分割(137,138)している。またここでは、配列データ1
31が、別々な処理からアクセスすることから、コモンデ
ータ化133,134を行つている。
(2)ステツプ72,73 処理単位ごと、及びDOループ内で定義される単純変数
又は配列要素単位ごとに以下の処理を終わりまで繰り返
す。
(3)ステツプ74 単純変数又は配列の属性の持つ分類にしたがつて処理
を行う。
(i) 分類2 この場合特別処理は不要である。
(ii) 分類3 このときは、処理1(75)を行う。処
理1は第8図に示してある。単純変数(#Vi)を確保
(81)し、処理単位内の当該単純変数を、確保した単純
変数(#Vi)に置き換える(82)。例えば、第14図
(A)に示す例では、単純変数T(141,142,143)にた
いし、第14図(B)に示すように、処理単位U1,U2毎
に、単純変数#V1,#V2を確保し、もともとの単純変数
Tを、それぞれの処理単位で置き換える。これにより、
処理単位U1と処理単位U2の並列に実行することが可能と
なる。
(iii) 分類4 このときは、処理2(76)を行う。
処理2は第9図に示してある。定義側の当該配列要素列
と、同一の要素数を持つ配列(#Wi)を確保(91)し、
処理単位内の、当該配列を確保した配列(#Wi)に置換
(92)する。また、ここで、確保すべき配列の要素数の
求め方を第12図に示す。先ず要素数がコンパイル時に確
定するかをチエツク(121)する。これは、DOループ長
が第4図DO20(42)のごとく、定数として決まるかを意
味する。この場合、確定した要素数の配列をコンパイル
時に確保(122)する。要素数がコンパイル時に確定し
ない場合は、次に、要素数の最大の値が推定できないか
をチエツク(123)する。これは、プログラム上の配列
宣言の大きさなどから、プログラムではこの範囲を越え
る事はない事を利用して推定する。この場合、この最大
推定値の要素数の配列をコンパイル時に確保(124)す
る。次に、最大推定値が求められない場合は、次の処理
(125)を行う。この場合は、プログラム実行時に必要
な配列領域を確保する。これを行うために、処理単位の
前に126,127の文を挿入する。文126の意味は、前回実行
した際に既に確保されている要素長#LENより、今回の
実行で必要な要素長Nが大きければ、新たに、Nより大
きな要素長の領域を確保し、その長さを#LENに与え、
かつ先頭アドレスをオブジエクトのアドレス定数領域に
設定するライブラリ¥DCOM127を呼ぶ。ここで、確保す
べき要素長として、今回必要な長さより、大きく(例え
ば1000要素余分)にとつておくことが、次回に再度ライ
ブラリ¥DCOM127を呼ぶ必要がなくなる確立が大きくな
るため、一般的に重要である。
例えば、第15図(A)に示す変換例を示す。配列A
(151,153,154,156)にたいし、第15図(B)に示す並
列処理単位U1,U2毎に、配列#W1,#W2を確保し、もとも
との配列Aを、それぞれの処理単位で置き換える。文15
2,155から定義域と、使用域の大きさは等しいが、大き
さはMであり、コンパイル時には確定しない。この為、
配列#W1,#W2をプログラム実行時に158,159の文で確保
する。文157は、確保した配列#W1の要素数の初期値は
0であることを意味する。これにより、処理単位U1と処
理単位U2を並列に実行することが可能となる。
(iv) 分類5 このときは、処理3(77)を行う。処
理3は第10図に示してある。使用側の当該配列要素列
と、同一の要素数を持つ配列(#Wi)を確保(101)
し、処理単位内の、当該配列を確保した配列(#Wi)に
置換(102)する。定義されない範囲を作業配列#Wiで
アクセスするため、処理単位の入り口において、作業配
列にもともとの配列の値を代入(103)する文を挿入す
る。
例えば、第16図(A)の変換例を示す。配列A(161,
163,165)にたいし、第16図(B)のように処理単位U1,
U2毎に、配列#W1,#W2を確保し、もともとの配列A
を、それぞれの処理単位で置き換える。文162,164から
定義域より、使用域が大きいため、未定義領域に対し
て、文166,167でもともとの配列の値を設定する。これ
により、処理単位U1と処理単位U2を並列に実行すること
が可能となる。
(4)ステツプ78,79 当該単純変数又は配列要素の値を、並列化対象ループ
の外で使用しているか否かをチエツク(78)し、使用し
ている場合は処理79を行う。処理79は、第11図に示す。
並列化対象ループに対し、当該単純変数又は配列要素列
が定義された最終ループ制御変数値を求めるため、定義
点の次に各処理単位での最終ループ制御変数値を求める
文113を挿入する(111)。そして、処理単位出口に、ど
の処理単位が、最終計算をしたかをチエツクする文を挿
入し、当該処理単位が、最終計算をした場合は、その値
をもともとの単純変数又は配列に代入する文を挿入する
(112)。
例えば、第17図(A)の変換例を示す。この例は、分
類4の例である。仮に配列Aが並列化対象ループDO10
(171)の外側(例えば175)で使用されていた場合、並
列化対象ループ内で計算された値をもとの配列Aに設定
する必要がある。並列化対象ループDO10(171)のルー
プのどこで最終定義が起こるかをチエツクするための文
181,182を定義直後に、各処理単位に挿入する。そし
て、最終定義が発生した処理単位で定義された作業配列
#Wiからもともとの配列Aへの終値補償文を挿入する
(183,184,185)。ここで、同期186とあるのは、各並列
処理単位183,184が終了したことを確かめるために必要
な機能であり、その方法は公知(中研出願受付番号3187
−6229)である。
〔発明の効果〕
本発明の方法によれば、単純変数及び、配列を含むル
ープについて並列実行を範囲を拡大することができ、並
列プロセツサによる高速実行が可能となる。
【図面の簡単な説明】
第1図は本発明の一実施例によるコンパイラにおける並
列化部フローチヤート、第2図は並列化不能なFORTRAN
プログラム例、第3図は並列化可能なFORTRANプログラ
ム例、第4図は並列処理単位ごとに作業配列を導入する
ことにより並列化可能なFORTRANプログラム例、第5図
はFORTRANコンパイラ全体の構成図、第6図は単純変数
及び配列の分類を示すフローチヤート、第7図から第10
図は分類に基づく並列化変換法を示すフローチヤート、
第11図はループ外への単純変数及び配列の終値補償法の
フローチヤート、第12図は並列処理単位で用意する作業
配列の確保法を示したフローチヤート、第13図から第16
図はそれぞれ順に分類2から分類5に対応した並列変換
例を示した例を示す図、第17図はループ外への配列の終
値補償法を示した例の図である。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平2−132525(JP,A) 特開 昭58−149569(JP,A) 特開 昭63−81564(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 15/16 - 15/177 JICSTファイル(JOIS)

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】ソースプログラム中の並列実行可能部分の
    認識を行い、かつ並列実行を示す中間語に変換を行う並
    列化処理を施し、その結果から並列に実行するためのオ
    ブジエクトコードを生成する並列化コンパイル方法にお
    いて、該並列化処理では、プログラム中の多重ループの
    外側ループの任意の繰り返し1回における、該外側ルー
    プ内で定義される配列が、該外側ループに関しその添字
    範囲が不変で、定義配列要素列の値を、異なる繰り返し
    で使用される配列であるか否かを判定し、該判定結果が
    肯定的なとき、該多重ループを該外側ループの異なるル
    ープ繰り返しごとの処理からなる並列処理単位に分け、
    かつ、それぞれの単位毎に該配列に対し別々の作業配列
    用の領域を割り当てることを特徴とする並列化コンパイ
    ル方法。
  2. 【請求項2】特許請求の範囲第1項において、該配列の
    使用要素列より定義要素列の範囲が小さいときは、該作
    業配列へ該配列の初期値を代入することを特徴とする並
    列化コンパイル方法。
  3. 【請求項3】特許請求の範囲第1項において、用意すべ
    き該作業配列の要素数が、コンパイル時に定数として確
    定するとき、及びコインパイル時にその最大値を推定で
    きるときは、コンパイル時に要素数に組合つた大きさの
    領域を確保することを特徴とする並列化コンパイル方
    法。
  4. 【請求項4】特許請求の範囲第1項において、用意すべ
    き該作業配列の要素数が、コンパイル時に不明な場合は
    プログラム実行時に必要な大きさの領域を確保すること
    を特徴とする並列化コンパイル方法。
  5. 【請求項5】高級言語で書かれたソースプログラムを、
    並列プロセツサによる並列実行のための命令列を含むオ
    ブジエクトコードを生成するコンパイラにおいて、該ソ
    ースプログラムの文解釈を行つて中間語に展開し、プロ
    グラム中の並列実行可能部分の認識を行い、かつ並列実
    行を示す中間語に変換を行う並列化処理を施し、その結
    果から並列に実行するためのオブジエクトコードを生成
    する並列化コンパイル方法において、該並列化処理で
    は、ループの存在を検出し、該ループのなかで外側ルー
    プに注目し、該外側ループの任意の繰り返し1回におけ
    る、該外側ループ内で定義される変数の中で、配列に対
    しては、該外側ループに関し添字範囲が不変な配列の場
    合で、定義配列要素列の値を、異なる繰り返しで使用さ
    れるか否かを判定し、該異なる繰り返しで使用しない時
    は、各並列処理単位毎に該配列に対し別々の領域を作業
    配列として割り当て、単数変数に対しては、定義変数の
    値を、異なる繰り返しで使用されるか否かを判定し、該
    異なる繰り返しで使用しない時は、各並列処理単位毎に
    該配列に対し別々の領域を作業変数として割り当てるこ
    とにより、該外側ループ処理を複数に分割する並列化コ
    ンパイル方法において、該並列化対象DOループ内で定義
    された該単純変数又は配列要素列の値を、該並列化対象
    DOループ外でその値を使用している場合、分割された並
    列処理単位毎の最終定義ループ制御変数値を求め、並列
    処理終了後、該最終定義ループ制御変数値から、全ての
    並列処理単位の中で最終計算を行つた並列処理単位を求
    め、該単純変数又は配列要素列に最終計算値を代入する
    ことを特徴とする並列化コンパイル方法。
  6. 【請求項6】特許請求の範囲第4項において、対象並列
    計算機が、各計算機に高速なローカル記憶を有する場
    合、該作業変数及び、該作業配列をローカル記憶に確保
    することを特徴とする並列化コンパイル方法。
JP1227346A 1989-09-04 1989-09-04 並列化コンパイル方法 Expired - Lifetime JP3028821B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1227346A JP3028821B2 (ja) 1989-09-04 1989-09-04 並列化コンパイル方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1227346A JP3028821B2 (ja) 1989-09-04 1989-09-04 並列化コンパイル方法

Publications (2)

Publication Number Publication Date
JPH0391036A JPH0391036A (ja) 1991-04-16
JP3028821B2 true JP3028821B2 (ja) 2000-04-04

Family

ID=16859365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1227346A Expired - Lifetime JP3028821B2 (ja) 1989-09-04 1989-09-04 並列化コンパイル方法

Country Status (1)

Country Link
JP (1) JP3028821B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656347B2 (en) 2007-03-29 2014-02-18 Fujitsu Limited Generation of parallelized program based on program dependence graph
JP5580416B2 (ja) * 2010-07-05 2014-08-27 パナソニック株式会社 プログラム生成装置、プログラム生産方法及びプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2288614C (en) 1999-11-08 2004-05-11 Robert J. Blainey Loop allocation for optimizing compilers
JP6973856B2 (ja) * 2018-11-22 2021-12-01 Necプラットフォームズ株式会社 情報処理装置、実行方法及びプログラムの修正方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656347B2 (en) 2007-03-29 2014-02-18 Fujitsu Limited Generation of parallelized program based on program dependence graph
JP5580416B2 (ja) * 2010-07-05 2014-08-27 パナソニック株式会社 プログラム生成装置、プログラム生産方法及びプログラム

Also Published As

Publication number Publication date
JPH0391036A (ja) 1991-04-16

Similar Documents

Publication Publication Date Title
US6292939B1 (en) Method of reducing unnecessary barrier instructions
US5442790A (en) Optimizing compiler for computers
JP3032031B2 (ja) ループ最適化方法及び装置
US6247173B1 (en) Computer compiler optimizer for reducing computer resource consumption during dependence analysis after loop unrolling
JPH0814817B2 (ja) 自動ベクトル化方法
JPH06103463B2 (ja) コード生成方法
US5367684A (en) Register allocation using an improved register candidate usage matrix
JP2003173262A (ja) プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US7076777B2 (en) Run-time parallelization of loops in computer programs with static irregular memory access patterns
JP3028821B2 (ja) 並列化コンパイル方法
US7222337B2 (en) System and method for range check elimination via iteration splitting in a dynamic compiler
JP2002527816A (ja) プログラム最適化装置および方法
US6973645B2 (en) Compiler, operation processing system and operation processing method
JP3032030B2 (ja) ループ最適化方法及び装置
JP3276479B2 (ja) コンパイル方式
JP2000020482A (ja) ループ並列化方法
JP3551352B2 (ja) ループ分割方法
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JP3233467B2 (ja) プログラム変換方法および装置
Luo et al. TSCompiler: efficient compilation framework for dynamic-shape models
Darabi et al. A verification technique for deterministic parallel programs (extended version)
JP3464019B2 (ja) レジスタの割付方式
Tavares et al. Efficient SSI conversion
JP2003099269A (ja) コンパイル方法、コンパイル装置およびコンパイルを行うプログラム
JPH06290159A (ja) 並列計算機のプロセス割当方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080204

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090204

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100204

Year of fee payment: 10

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100204

Year of fee payment: 10