JPS6364173A - 自動ベクトル化方式 - Google Patents

自動ベクトル化方式

Info

Publication number
JPS6364173A
JPS6364173A JP20785286A JP20785286A JPS6364173A JP S6364173 A JPS6364173 A JP S6364173A JP 20785286 A JP20785286 A JP 20785286A JP 20785286 A JP20785286 A JP 20785286A JP S6364173 A JPS6364173 A JP S6364173A
Authority
JP
Japan
Prior art keywords
vectorization
dependence
output
output dependency
dependency
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
JP20785286A
Other languages
English (en)
Inventor
Kyoko Iwazawa
岩沢 京子
Giichi Tanaka
義一 田中
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 JP20785286A priority Critical patent/JPS6364173A/ja
Publication of JPS6364173A publication Critical patent/JPS6364173A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、ソースプログラムをベクトル処理用のオブジ
ェク)K変換するコンパイラ方式に係り、%に同一配列
への定義を複数含むループのベクトル化率を向上し、実
行効率のよいオブジェクトを生成するのに好適な自動ベ
クトル化方式に関する。
〔従来の技術〕
一般にベクトル化率が高い方がオブジェクトの実行効率
が高いことが知られている。この定め、コンパイラはベ
クトル化不能部が小さくなるようなプログラム変換を施
してベクトル化してきた。
データの定義から参照へ、参照から定義へ、定義から定
義への順序を示す有向線分から成る、依存グラフに2い
て、強連結成分を構成する部分は。
原理的にベクトル化不可能である。この強連結成分を小
さくすることが、ベクトル化率の向上につながり、その
ためのプログラム変換では、依存関係を解消し、数を少
なくすることが望ましい。
特開昭59−1495691’−スカラ配列化による並
列化処理方式」では、スカラ変数に対する逆依存(参照
と定義の順序?示す)・つ解消について述べており1%
開昭58−149568 r並列実行不可部分極小化処
理方式」では、強連結成分を検出して、それ以外の部分
全ベクトル化する方式について述べている。
このような、ベクトル化のtめのプログラム変換におい
て、配列の定義と定義の順序を示す出力式存の解消を行
い1強運結成分を極小化し、ベクトル化率を上げる方式
について述べているものはない。
〔発明が解決しようとする問題点〕
上記従来技術では、出力依存が含まれる依存グラフの強
連結成分を検出した場合、ベクトル化不能と判定せざる
を兄なかつ九。これでは、強連結成分が十分小さくなっ
ておらず、プログラム変換を施せばベクトル化可能であ
る場合も、不能と判定する場合があるという問題点があ
った。
本発明の目的は、依存グラフの強連結成分の構成要素と
なる出力依存について、これを解消し、ベクトル化不能
である強連結成分を解消したり。
ま友は、より小さくすることVてより、ベクトル化可能
な範囲仝拡げ、ベクトル化率と向上させることrcある
〔問題点を解決するための手段〕
上記目的は、コンパイラの自動ベクトル化処理部におい
て、データ依存グラフの強連結成分検出部、文の韮べ換
え部、出力依存解消部を設けることにより達成さ几る。
データ依存グラフの強連結成分検出部は、各依存関係の
うち、コンパイル時【静的に始点と終点の方向が決まる
静的出力依存を除いて、強連結成分を検出する。
文の並べ換え部は、先に検出した強連結成分以外の文に
対して、コンパイル時にMP的に始点と終点の方向が決
まる静的出力依存を除いた、全ての依存が、ベクトル化
可能な、実行、頂と同じ方向になるよう、文を並べ換え
る。
出力依存解消部は、コンパイル時に静的に始点と終点が
決まる静的出力依存のうち、ベクトル化不能要因となる
、実行順と反対方向の出力依存を解消する。すなわち、
該出力依存の終点となる定義点の値を、新たに導入する
テンポラリベクトルに退避し、該出力依存の始点の直後
で、テンポラリベクトルに退避した値を再びストアする
よう、プログラム変換を画し、該出力依存を解消する。
以上のようKして、まず、解消することのできる出力依
存を検出し、これを除いて、強連結成分を検出する。こ
の後、文を並べ換え、出力依存を解消する。このことに
よシ、データ依存関係からベクトル化不能となる部分を
極小化することができる。
〔作用〕
データ依存グラフの強連結成分検出部、文の並べ換え部
、出力依存解消部は、ソースプログラム内のベクトル化
の対象としている文に、以下のように動作する。
強連結成分検出部は、データ依存グラフから強連結成分
検出部不可能 消することができる。コンパイル時に始点と終点が確定
する静的出力依存は、依存グラフから除いた状態で、強
連結成分を検出する。これは、ベクトル化不能となる強
連結成分をより小さくし、また、出力依存を解消すれば
消滅する強連結成分は。
最初から検出しないためである。
文の並べ換え部では、解消できる静的出力依存を除いて
、全ての依存が、ベクトル化可能な方向となるようそろ
える。こflKよって、静的出力依存を解消すれば、全
てがベクトル化可能な状態となる。この時、該出力依存
以外に依存が無い場合は、この文の並べ換えKより、ベ
クトル化可能な出力依存に変換し1次の出力依存解消部
の処理は不要なので、その対象からは、はずす。
出力依存解消部では、実行順に反する方向の出力依存の
終点となる代入文を検出し、その文の後に、メモリにス
トアするのと同時に、その値をテンポラリベクトルに退
避する代入文を挿入する。
第5図のプログラムを例にとると、代入文24の直汝に
第8図の代入文42を挿入する。メモリ(A(I))に
も、値を挿入するのは、この値全どこかで参照する可能
性があるためであり、第5図の例では1代入文25で参
照している値と退避するのは、該出力依存の始点となる
文の実行により。
メモリの値がこわれてしまうためであり、第5図の例で
は、代入文26の実行により、代入文24の実行でスト
アした埴をこわしてしまう。次に、該出力依存の始点と
なる代入文で、メモリに右辺式の計算結果を代入した後
、先にテンポラリベクトルに退避した値を再びメモリに
ストアする代入文を挿入する。これにより、実行順に反
する出力依存の順序を保証することができる。第5図の
例では1代入文26の直後に、第8図の代入文43を挿
入するつ代人文26のA(I+1)の値ストアを行なっ
た後、代入文24のA (I)の値のストアを行なうこ
とになり、出力依存の始点の実行が、終点の実行に先立
つため、ベクトル化可能となる。
〔実施例〕
以下、本発明のFORTRANコンパイラにおける実施
9Mを図面を参照しつつ説明する。
第2図に1本発明が適用されたコンパイラ全体のIA造
を示す。第2図の構文解析部7がFO几″r几ANのソ
ースプログラム6を千間語8に変換する。中11部9は
これ全入力として、ベクトル化や最適化を行い、中間語
5((変換する。これよりコード生成部6がオブジェク
上コード7を生成する。本発明は中間部4に係り、オブ
ジェクトコード7の実行効率を上げるものでるる。
第2図の中間部9のうち、自動ベクトル化部に係わる部
分の構成と第3図に、第3図の自動ベクトル化部18の
うち、出力依存の解消に係わる部分′f:第1図に示す
第2図の入力するソースプログラムの例として、第4図
のFORTRANプログラムに−Sげ、説明する。
第4図のFORTRANプログラムは、まず、第3図の
制dO構造解析部13が、19の00文2:l)ら23
のCON’rINUE文までが、最内側ループを構成し
ていることを検出する。次に、第3図のデータフロー解
析部15が、ループ内の各計算式の構成要素の最小単位
である一次子について、データの定義・参照、定義・定
義のアクセス順を示す。
データ依存グラフ16を作る。このデータ依存グラフ1
6は、第4図のプログラムには、配列Aと配列BK関し
て、第5図のような依存関係があることを示している。
即ちフロー依存は、文24で定義したA (I)を文2
5で参照していることを示し、フロー依存29は1文2
5で定義したB (I)を文26で参照していることを
示している。逆依存28は、文24で参照したB(I)
を、文25の定義で値を変えていることを示し、出力依
存27は、文26で定義した値を文24の定義により、
値を変えていることを示している。
このようなデータ依存グラフと、第4図のプログラムの
中間語表現が、第3図の自動ベクトル化部18の入力と
なる。これらを例として、第1図に示した自動づクトル
化部18の動作を示す。
第1図の強連結成分検出部lの動作を第6図のフローチ
ャートに示す。判定31は、全ての依存関係について調
べるためのループの終了判定を行なう。判定32は、本
方式によって、解消できるか否かを判定するもので、コ
ンパイル時に静的に方向が決まる出力依存か否かが条件
となる。第5図の例では、出力依存27はこの条件を満
たすため、処8!34に進むが、フロー依存29.30
や逆依存28は、この条件を満たさないため、処理33
に進む。処理33が、当該依存に対して、強運結成分検
出の対象とすることを示すマーク付けを行なう。すなわ
ち、処理34が、当該依存に対して1食違結成分検出の
対象としないことを示すマーク付けを行なう。次に、処
理35が、公知のアルゴリズムにより、対象とするマー
ク付けのついている依存について食違結成分を演出する
。第5図の例では、処理34が出力依存27に対象とす
るマークを付けない几め、食違結成分は検出されない。
次に、第2図の文の並べ換え部2が、強連結成分検出部
1が検出した強運結成分検出の文について、各依存の始
点が終点に先立って実行されるよう文全並べ換える。こ
の時、第5図のプログラムのように、フロー依存や逆依
存と、解消可能な出力依存とが角なる方向の場合は、フ
ロー依存や逆依存の方向が実行順に沿うよう文を並べる
。第5図の例では、出力依存27以外は全て、始点の文
の実行が終点の文の実行に先立つため、文の並べ換え部
2Vi新たに並べ換えることはしない。
最後に、第1図の出力依存解消部3が、始点の文に先立
って終点の文が実行される出力依存を解消する。この処
理の流れを第7図にフローチャートで示す1判定37は
、全ての依存について調べるためのループの終了判定を
行々う。判定38は。
依存が出力依存では々い場合、以下の処理を行なわない
よう、条件分岐を行なう。判定39は、当該出力依存が
、解消する必要があるか否かを判定する。判定39は、
終点の文の実行が、始点の文の実行に先立てば、解消す
る必要があると判断する。以上の条件を満たす出力依存
は、処理4OK進む。処理40は、当該出力依存の終点
の直後に値を退避するための、テンポラリベクトルへの
代入文を挿入する。続いて、処理41が、当該出力依存
の始点の直後に、退避した値をメモリにストアするため
の、テンポラリベクトルからメモリへの代人文を挿入す
る。第5図の例では、判定38が、フロー依存29.3
0や逆依存28をはね、出力依存27のみを、後に続く
処理に渡す。判定39が、出力依存27に対しては終点
の文の実行が始点の文の実行に先立つので、このままで
はベクトル化することはできないこと、そのために依存
関係を解消する必要があることを判断する。続いて、処
理40が、出力依依27の終点の文24の直後に、A 
(I)の値全テンポラリベクトルに退避する代入文を挿
入し、処理41が、出力依存27の始点の文26の直後
に、退避したテンポラリベクトルの値1A(I+1)に
格納する代入文を挿入する。
以上の処理により、第1図の自動ベクトル化の処理が終
わる。この時の中間語の状態をFORTRANプログラ
ムのイメージで書くと、第4図のプログラムは、第8図
のようにな。代入文42は、第7図の処理40が挿入し
た文であり、代入文43ば・第7図の処理41が挿入し
t文である。このようなプログラム変換により、第4図
ではベクトル化不能だったループが、ベクトル化可能と
なり、第2図のコード生成部11がベクトルオブジェク
トを生成することができる。その、結果オブジェクトコ
ードの実行効率を上げることができる。
〔発明の効果〕
本発明によれば、同一配列に対する複数の定義の間に、
始点と終点がコンパイル時に静的に決まる出力依存があ
れば1文を移動することなくこれを解消することができ
る。この之め、原理的にベクトル化不能となる、データ
依存関係の食違結成分を小さくしたり、あるいは解消し
て、1frたにベクトル化可能な範囲を広げることに効
果がある。
従って、生成したオブジェクトコードは、ベクトル演算
器により実行することが可能となり、ベクトル化不能と
判定してスカラ演算器で実行する場イhこ比べ、実行効
率が上がる。
【図面の簡単な説明】
第1図は自動ベクトル化部のうち出力依存の解消に係る
部分を、第2図はFOR,TRANコンパイラ全体の構
成図、第3図は中間部のうち自動ベクトル化部に係る部
分を、第4図はFORTRANソースプログラムの例、
JKS図はデータフロー解析つ出力の依存関係、第6図
は強連結成分検出部のフローチャート、第7図は出力依
存解消部のフローチャート、第8図はプログラム変換に
よりベクトル化可能にし之プログラムであるウ ド・・強連結成分検出部、2・・・文の並べ換え部、3
・・・出力依存解消部、4・・・データ依存グラフ、5
・・・中間時、6・・・FOkLTRANソースプログ
ラム、7・・・、f4文解析部、8・・・中間語、9・
・・中間部、10・・・中間語、11・・・コード生成
部%12・・・オブジェクトコード、13・・・制御構
造解析部、14・・・ループテーブル、15・・・デー
タフロー解析部、16・・・データ依存グラフ、17・
・・中間fL18・・・自動ベクトル化部、19・・・
DO文、20・・・代入文%21・・・代入文、22・
・・代入文、23・・・CoNTINUE文、24・・
・代人文、25・・・代入文、26・・・代入文、27
・・・出力依存、28・・・逆依存、29・・・フロー
依存、30・・・フロー依存、31・・・判定、32・
・・量定、33・・・処理、34・・・処理、35・・
・処理、37・・・判定、38・・・判定、39・・・
判定、40・・・処理、41・・・処理、42・・・挿
入した代入文、43・・・挿入した代入文。

Claims (1)

    【特許請求の範囲】
  1. 1、ソースプログラムを解析する構文解析部と、ベクト
    ルプロセッサのための自動ベクトル化機能などの最適化
    部を含む中間部と、オブジェクトコードを生成するコー
    ド生成部より成るコンパイラにおいて、ベクトル化変換
    を行なう際、変数や配列のデータ依存グラフを作るデー
    タフロー解析部と、データ依存関係からベクトル化不能
    となる再帰演算部分を検出する強連結成分検出部と、再
    帰演算部分を局所化し文を並べ換える文の並べ換え部、
    定義と定義の順序関係を示す出力依存がベクトル化に反
    する方向であれば、テンポラリベクトルを導入してこれ
    を解消する出力依存解消部を有し、出力依存の解消によ
    り再帰演算部を解消したり、より小さくすることにより
    、ベクトル化の範囲を広げることを特徴とする自動ベク
    トル化方式。
JP20785286A 1986-09-05 1986-09-05 自動ベクトル化方式 Pending JPS6364173A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20785286A JPS6364173A (ja) 1986-09-05 1986-09-05 自動ベクトル化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20785286A JPS6364173A (ja) 1986-09-05 1986-09-05 自動ベクトル化方式

Publications (1)

Publication Number Publication Date
JPS6364173A true JPS6364173A (ja) 1988-03-22

Family

ID=16546591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20785286A Pending JPS6364173A (ja) 1986-09-05 1986-09-05 自動ベクトル化方式

Country Status (1)

Country Link
JP (1) JPS6364173A (ja)

Similar Documents

Publication Publication Date Title
US4833606A (en) Compiling method for vectorizing multiple do-loops in source program
US20110119660A1 (en) Program conversion apparatus and program conversion method
JP2921190B2 (ja) 並列実行方式
JP2004038225A (ja) コンパイラプログラムおよびコンパイル処理方法
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
JPS6364173A (ja) 自動ベクトル化方式
JP3032030B2 (ja) ループ最適化方法及び装置
JP3196625B2 (ja) 並列化コンパイル方式
JP2585793B2 (ja) コンパイラシステム
JPH0440742B2 (ja)
JPH0512033A (ja) 並列化コンパイル方式
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JPH10326193A (ja) インライン展開関数の最適化のためのコンパイル方法
JPH0264766A (ja) ベクトル化処理方式
JPH04343140A (ja) コンパイラの最適化処理方法
JPS63120369A (ja) プログラム変換装置
JPH05189243A (ja) 条件付演算のコンパイル処理装置
JPH04332044A (ja) コンパイラのベクトル化処理方式
JPH01213721A (ja) コンパイラ方式
JPH04295960A (ja) コンパイラのベクトル化処理方式
JPH0573607A (ja) ベクトル命令生成処理方法
JPH07234794A (ja) マルチプロセッサシステムにおける目的プログラム生成方法
JPH0497484A (ja) コンパイラのベクトル化処理方式
JPH11306150A (ja) コンパイル処理方式、その方法およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体