JPS62206668A - 目的プログラムの並列化処理方式 - Google Patents

目的プログラムの並列化処理方式

Info

Publication number
JPS62206668A
JPS62206668A JP4839786A JP4839786A JPS62206668A JP S62206668 A JPS62206668 A JP S62206668A JP 4839786 A JP4839786 A JP 4839786A JP 4839786 A JP4839786 A JP 4839786A JP S62206668 A JPS62206668 A JP S62206668A
Authority
JP
Japan
Prior art keywords
loop
parallel
scalar
vector
formation
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.)
Granted
Application number
JP4839786A
Other languages
English (en)
Other versions
JPH0514300B2 (ja
Inventor
Eiji Nunohiro
布広 永示
Shigemi Yamada
山田 重巳
Akio Aoyama
青山 明夫
Giichi Tanaka
義一 田中
Shinobu Sato
忍 佐藤
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 Software Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
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 Software Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP4839786A priority Critical patent/JPS62206668A/ja
Publication of JPS62206668A publication Critical patent/JPS62206668A/ja
Publication of JPH0514300B2 publication Critical patent/JPH0514300B2/ja
Granted 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

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、ソースプログラムを解析して実行効率のよい
目的プログラムを生成するコンパイラ方式に係り、特に
ベクトル化ループと並列実行可能なスカラ部分を検出し
、スカラプロセサ・ベクトルプロセサの並列化効率のよ
い目的プログラムを生成するのに好適なコンパイラ方式
に関する。
〔従来の技術〕
スーパーコンピュータにおいて、演算器はスカラプロセ
サとベクトルプロセサとで構成されている。そしてハー
ドウェア上では、スカラプロセサとベクトルプロセサと
は並列に動作することが出来る1文献「スーパーコンピ
ュータHITAC3−810,FORTRAN  コン
パイラ“VO53FORT77/HAPJ日立評論 第
65巻8号(1983)の第551頁から第555頁で
は、並列化のためにE X V P (execute
 vector processing)命令とT V
 P (test vector processin
g)命令(準備命令)とがあり、ある目次のべクトル命
令の実行と、その次のベクトル命令に対する準備命令と
を並列に実行できることがあると記されている。ここに
、準備命令とはベクトルプロセサ用のレジスタ群への初
期設定を行うための命令群のことである。
〔発明が解決しようとする問題点〕
上記従来技術は、スカシ部分とベクトル化ループとの並
列化を行う場合−ベクトル処理と準備命令による処理と
の並列化に限られていた。
本発明の目的は、ベクトル化ループの外にある準備命令
以外のスカシ部分の中に、ベクトル化ループと並列実行
可能な部分がある場合、スカシ部分を並列化可能部分と
並列化不可能部分とに分離し、並列化可能部のスカシプ
ロセサでの実行とベクトル化ループのベクトルプロセサ
での実行とを並列に動作させることができる目的プログ
ラムを生成することである。
〔問題点を解決するための手段〕 1  上記目的は、コンパイラにおいて、(1)並列化
処理の候補となるスカシ部分を検出する並列化処理候補
検出手段、(2)ベクトル化ループ外のスカシ部分とベ
クトル化ループとのデータ依存関係を調べる依存関係解
析手段、(3)上記スカシ部分をベクトル化ループ並列
化可能な部分と不可能な部分とに分離する並列化可能部
分分離手段からなるスカシ・ベクトル並列化機能を設け
ることによって達成される。
[作用〕 スカシ・ベクトル並列化部は、ソースプログラム中のベ
クトル化ループおよびその前後のスカシ部分に対して動
作する。スカシ・ベクトル並列化部の中の各構成要素は
以下のように動作する。
(1)並列化処理候補検出手段は、ベクトル化ループに
対して並列化処理の候補となるスカシ部分を検出する。
(2)依存関係解析手段は、ベクトル化ループと上記で
検出されたスカシ部分との間のデータ依存関係を調べ、
並列化可能な部分を抽出する。
(3)並列化可能部分分離手段は、スカシ部分を構成す
る文の中で、上記で抽出された並列化可能な部分の移動
を行い、並列化可能部分と並列化不可能部分とに分離し
、並列化可能部分のスカシプロセサでの実行とベクトル
化ループのベクトルプロセサでの実行を並列に動作させ
ることができる目的プログラムを生成する。
〔実施例〕
以下1本発明の実施例を、第1図から第8図を用いて説
明する。
第3図に、本発明が適用されたコンパイラの構成を示す
、コンパイラ1は次のよ、うに動作する。
ソース・プログラム解析部4は、大容量記憶装置2内の
ソース・プログラムを読み込み、それを中間語表現(図
示せず)に変換する。
中間語ループ構造100はここで出力される。
中間語ループ構造は第10図に示すように次の3つの部
分からなる。
(1)ループヘッダ   110 ループ長の設定を行う部分。
(2)ループ本体    120 ループ内の実行対象となるプログラムの実行を行う部分
(3)ループエンド   130 ループ制御変数の更新、ループ終了判定を行う部分。
中間語最適化部5は、中間語表現の構造やデータ参照関
係の解析を行い、実行効率のよい構造に変換する。この
詳細は後述する。
ストレージ割付は部6は、目的プログラムの実行に必要
な領域の割付けを行い、レジスタ割付は部7は、汎用レ
ジスタと浮動小数点レジスタの割当てを行う、目的プロ
グラム出力部8は、機械命令語の列からなる目的プログ
ラムを大容量記憶装置3へ出力する。
中間語最適化部5の構成と動作を次に説明する。
制御フロー解析部10は、中間語表現に対してその中の
制御の流れを解析し、条件構造やループ構造を見つける
ロック:他のブロックへの処理の移りや他からの戻りが
ないもの)かつ、ループを抽出する。
データフロー解析部20は、変数の定義参照関係を解析
する。すなわち、ある変数に対して設定された値(定義
)が、他の場所でのその変数の使用(参照)まで引き継
がれるものか否かを、上記制御フロー解析結果を利用し
て解析する。
そしてデータ依存情報テーブル300を作成する。この
構成については第6図により後で詳述する。
ループ解析部30は、制御フロー解析部10で見つけた
ループ構造の各々について、データフロー解析部20の
結果を用いて解析を行う。
ベクトル化ループ解析部40は、中間語ループ構造をベ
クトル化向きの中間語ループ構造に変換する。
そして各ループに対応してループ情報テーブル200を
作る。
この構成については第4図により後で詳述する。
冗長性削除部50は、共通式の削除や不用コードの削除
を行う。
スカシ・ベクトル並列化部60は、本発明の適用される
部分であり、データフロー解析部2oの解析結果とベク
トル化ループ解析部40の解析結果とを用いて、ベクト
ル化ループ外のスカシで実行される部分を、ベクトル化
ループと並列に実行することができる部分とできない部
分とに分離し。
並列化可能部のスカシプロセサでの実行とベクトル化ル
ープのベクトルプロセサでの実行とを並列に動作させる
ことができる目的プログラムを生成する。
次に、本発明が適用されるスカシ・ベクトル並列化部の
構成を第1図に、各構成部の動作を第2図に示す。この
処理は先に検出されたループのそれぞれについて繰り返
して実行されるものであり、そのループ近傍のスカラ部
が並行処理できるかどうかを求める。
並列化処理候補検出部61は、第2図64に示す如く、
ベクトル化ループ解析部40の作成した処理対象のルー
プ情報テーブル200を入力し。
親ループへのポインタ220、同レベルで直後のループ
へのポインタ230そしてループ構成ブロックリストへ
のポインタ240とを用いて、各ベクトル化ループに対
して並列化処理の候補となる部分を検出する。ここに、
ループ情報テーブル200の構成は第4図に示すように
次の4つのフィールドからなる。
(1)ループ属性 210 ベクトル化ループかそうでないかを示す。
(2)親ループへのポインタ 220 該ループ制御内のブロックを示し、ベクトル化対象とな
る所である。ここで、ブロックとは制御の流れる方向が
変化しない部分の集合である。
並列化処理候補検出部61は、該ループ情報テーブル2
00のループ属性210により、該ループがベクトル化
ループであるか否かを認識し、ベクトル化ループである
場合、以下の処理を行う。
即ち、該ループ情報テーブル200の中の同レベルで直
後のループへのポインタ230により、直後のループへ
のポインタがn1l(次へのポインタがない意)でない
場合、並列ループが存在すると認識し、並列ループが存
在すると認識すると、第5図(A)のように並列化処理
の候補となるスカシ部分を検出する。
また、直後のループへのポインタがnilである(並列
ループが存在しない)場合、親ループへのポインタがn
ilでないと親ループが存在すると認識し、第5図(B
)のように並列化処理の候補となるスカシ部分を検出す
る。
検出方法と並列化処理候補部分を第5図を用いて以下に
説明する。ここで、第5図において、ループ構成ブロッ
ク巳は、ベクトル化ループ(V)で実行する実行部分を
有するブロックで構成されており、第10図においてル
ープ本体に対応する。並列化処理候補部分のブロック=
コはベクトル化ループ内の構成ブロック以外のプロッり
であり、スカラ部分を示す。
簡単のため、第5図(B)では二重ループの場合を挙げ
たが、三重ループ以上の場合の処理に関しては並列化処
理における並列化効率の向上はほとんどないので、三重
ループ以上の場合、最内側の二重ループのみ処理する。
第5図(A)の場合、並列化処理の候補となるスカラ部
分として、ループ構成ブロック240の直後のブロック
201から検出を始め、同レベルで直後のループへのポ
インタの指すループ情報テーブルのループ構成ブロック
の直前のブロック202までを検出する。そして、その
範囲内のブロックを全て並列化処理候補部分とする。第
5図(B)の場合、並列化処理の候補となるスカラ部分
として2箇所を調べる。1つは、ループ構成ブロック2
40の直後のブロック203から親ループへのポインタ
220の指すループ情報テーブルのループ構成ブロック
の最後のブロック204までであり、もう一つは、親火
−プへのポインタ220の指すループ情報テーブルのル
ープ構成ブロックの最初のブロック205から、ループ
構成ブロック240の直前のブロック206までである
。そして、2つの部分の範囲内のブロックを全て並列化
処理候補部分とする。
以上がステップ64における処理である。
依存関係解析部62は、第2図65に示した如く、デー
タフロー解析部20の作成したデータ依存情報テーブル
300を入力し、該ベクトル化ループと並列化可能な部
分を解析する。ここに、データ依存情報テーブル300
の構成は第6図に示すように、参照エントリテーブル、
依存エントリテーブルの2つのテーブルより成り、各々
次のフィールドからなる。
(a)参照エントリテーブル (1)依存エントリテーブルへのポインタ(2)参照エ
ントリの属する文へのポインタ(3)参照点の種別  
330 変数が定数されているか、参照されているかの種別を示
す。
(b)依存エントリテーブル (1)依存種別  340 変数の定義・参照チェイン、参照・定義チェインの種別
を示す。
(2)参照エントリテーブルへのポインタ定義された変
数がどの文で参照されているか、あるいは参照された変
数がどの文で定義されているかを示す。
ここで、参照エントリは、任意の変数ごとに、各変数が
定義、参照されている文に対してチェインが張られる。
また、依存エントリは、任意の変数に対する参照エント
リごとに、各参照エントリでの定義、参照と依存関係を
持つ参照エントリに対してチェインが張られる。
プログラム中で使用されているすべての変数について、
それぞれに参照エントリテーブルと依存エントリテーブ
ルが作成されている。
そして、各変数には参照エントリテーブルへのポインタ
が作られている。ある参照エントリテーブルがポイント
されると、その依存エントリテーブルへのポインタ31
0から依存エントリテーブルの1つが参照される。ここ
には他の参照エントリテーブルへのポインタ350があ
り、これによって参照エントリテーブルが調べられる。
参照エントリテーブルにはその参照エントリの属する文
へのポインタ320があり、図示されていない文とその
文が所属するループの対応が記載されているテーブルが
検索され、その文の属するループが分かる。
従って、スカラ部分のある変数から第6図によって上記
の処理を行い、それに関係するループ名を調べ、そのル
ープ名がいま第2図の処理を行っているループと違って
いればその変数に関しては独立に並行して処理が可能で
ある。並行処理候補のスカラ部のすべての変数について
同様に第2図の処理中のループと関係ないことが分かれ
ばそのスカラ部は並行処理可能なものと判定される。
依存関係解析部62は、データ依存情報テーブル300
を利用して、並列化処理対象部分に含まれる変数に対し
てベクトル化ループ内の変数との依存関係を検出し、変
数の属する文がベクトル化ループと並列化可能であるか
を調べる。すなわち。
第7図(A)に示す二重ループの場合1次の2つのどち
らの条件が成立するのかの解析を行う。第7図(A)は
第5図(B)の1例である。
(1)並列化処理候補部分に含まれる文(Si)内の変
数の依存種別が定義(d)であり(定義(d)とは文S
iで代入されている文の左辺に当たるという意である。
)その変数の依存チェインがベクトル化ループを示し、
ループ内の文(Vi)で参照(u)されている場合(第
8図(A)参照)。
(2)並列化処理候補部分に含まれる文(Si)内の変
数の依存種別が使用(u)されており、その変数の依存
チェインがベクトル化ループを示し。
ループ内の文(V i )で定義(d)されている場合
(第8図(B)参照)。
次に(1)、 (2)に対して並列化可能か否かを調べ
る。その条件をそれぞれ(a)、(b)に示す。
(a) (1)の場合、文(Si)で定義される変数が
文(Vi)で使用された後に文(Si)で定義され、か
つ、(S i)より前の並列化不可能な部分で使用され
ない時1文(Si)は並列化できる。
(b) (2)の場合、文(Si)で使用される変数が
、文(Vi)で定義された後に文(Si)で使用され、
かつ、(Si)より前の並列化不可能な部分で定義され
ない時、文(Si)は並列化できる。
第7図(A)に示した以外の二重ループあるいは並列ル
ープの場合も同様に考えることが出来る。
並列化可能部分分離部63は、第2図66に示す如く、
依存関係解析部でベクトル化ループと並列化可能である
と検出された文と並列化可能部分との間に並列化不可能
な文がある場合、文と文とを結んでいるチェインを張り
替えることにより、並列化可能であると検出された文を
並列化不可能部分の前に移動する。即ち、第7図(A)
において、文くS□> 、 <83> 、 <ss> 
 がベクトル化ループと並列化可能である場合における
並列化可能部分分離部の動作は第9図のようになる。第
7図(B)に文の移動を行い、並列化可能部分と並列化
不可能部分を分離した結果を示す。
以上、本発明の一実施例を説明した。本実施例によれば
、ベクトル化ループ外のスカシ部分を、ベクトル化ルー
プと並列に実行することが可能である並列化可能部分と
不可能である並列化不可能部分とに分離できる。この結
果、スカシプロセサとベクトルプロセサとの並列化効率
を向上することができ、目的プログラムの実行時間を短
縮することが可能となる。
〔発明の効果〕
本発明によれば、ベクトル化ループ外のスカシ部分を、
ベクトル化ループと並列化可能な部分と並列化不可能な
部分に分離することができるので。
スカシプロセサとベクトルプロセサとの並列化効率を向
上することができ、目的プログラムの実行時間を短縮す
ることができるという効果がある。
【図面の簡単な説明】
第1図は本発明の技術手段であるスカシ・ベクトル並列
化部の構成図、第2図はスカシ・ベクトル並列化部の処
理の流れ図、第3図は本発明の適用されるコンパイラの
全体構成図、第4図はループ情報テーブル、第5図は並
列化処理候補検出方法の説明図、第6図はデータ依存情
報テーブル。 第7図は並列化可能部分分離結果の説明図、第8図は依
存関係解析方法の説明図、第9図は並列化可能部分分離
動作の説明図、第10図は中間語ループ構造の詳細図。 1・・・コンパイラ構成、2・・・大容量記憶装置内の
ソースプログラム、3・・・大容量記憶装置内の目的プ
ログラム、4・・・ソースプログラム解析部、5・・・
中間語最適化部、6・・・ストレージ割付は部、7・・
・レジスタ割付は部、8・・・目的プログラム出力部。 6o・・・スカシ・ベクトル並列化部、61・・・並列
処理候補検出部、62・・・依存関係解析部、63・・
・並列化可能部分分離部。 躬 3国 第40 躬5の 第 6犯 躬 q 国 (A )                   (B
)ロ:笠f’囮匙理候孫舒介       ロニ1デj
化可北郁令躬 8国 (A)                  CB)o
s zo Ket、 N           oy 
zo x=1. HDドlOL=LN        
     0610 L=LN70 C3NTLNυE
           !OQ5NTINIn2o C
3NT工NUE            2o C3r
rrxNUE第 9閃

Claims (1)

    【特許請求の範囲】
  1. 1、スカラプロセサとベクトルプロセサとが並列に動作
    することが出来るスカラプロセサとベクトルプロセサか
    らなる計算機システムにおいて動作する目的プログラム
    を生成するコンパイラであり、かつ与えられたソースプ
    ログラムを解析し配列要素(または変数)の値の定義・
    参照関係を示したループ依存関係の検出を行うコンパイ
    ラにおいて、並列化処理の候補となるスカラ部分を検出
    し、ベクトル化ループ内の配列要素(または変数)とス
    カラ部内の配列要素(または変数)とのデータ依存関係
    を調べ、上記スカラ部分を、ベクトル化ループ部分と並
    列に実行できる並列化可能部分とベクトル化ループ部分
    と並列に実行できない並列化不可能部分とに分離するこ
    とを特徴とする目的プログラムの並列化処理方式。
JP4839786A 1986-03-07 1986-03-07 目的プログラムの並列化処理方式 Granted JPS62206668A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4839786A JPS62206668A (ja) 1986-03-07 1986-03-07 目的プログラムの並列化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4839786A JPS62206668A (ja) 1986-03-07 1986-03-07 目的プログラムの並列化処理方式

Publications (2)

Publication Number Publication Date
JPS62206668A true JPS62206668A (ja) 1987-09-11
JPH0514300B2 JPH0514300B2 (ja) 1993-02-24

Family

ID=12802164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4839786A Granted JPS62206668A (ja) 1986-03-07 1986-03-07 目的プログラムの並列化処理方式

Country Status (1)

Country Link
JP (1) JPS62206668A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0377141A (ja) * 1989-08-18 1991-04-02 Fujitsu Ltd コンパイル処理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58149570A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd ベクトル命令のスケジユ−リング処理方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58149570A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd ベクトル命令のスケジユ−リング処理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0377141A (ja) * 1989-08-18 1991-04-02 Fujitsu Ltd コンパイル処理装置

Also Published As

Publication number Publication date
JPH0514300B2 (ja) 1993-02-24

Similar Documents

Publication Publication Date Title
US4833606A (en) Compiling method for vectorizing multiple do-loops in source program
Triolet et al. Direct parallelization of call statements
US5586020A (en) Program transformation processing system and method
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
Walsh et al. Paragen: a novel technique for the autoparallelisation of sequential programs using gp
Anantharaman et al. A hardware accelerator for speech recognition algorithms
JP3318051B2 (ja) 翻訳処理方法
Roh et al. An Evaluation of Optimized Threaded Code Generation.
JPS62206668A (ja) 目的プログラムの並列化処理方式
JP3032030B2 (ja) ループ最適化方法及び装置
US6694512B1 (en) Data processing device, data processing method and supply medium thereof
Ramamoorthy et al. Compilation techniques for recognition of parallel processable tasks in arithmetic expressions
Williams Approaches to the determination of parallelism in computer programs
JP3167386B2 (ja) プログラム自動並列化方法
Hendren et al. Intererence analysis tools for parallelizing programs with recursive data structures
JPS62204374A (ja) 2倍演算最適化処理方式
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JP3726992B2 (ja) 一括関数呼出化方法
Deelman et al. Integrating data and task parallelism in scientific programs
Jouvelot Designing new languages or new language manipulation systems using ML
JP3047418B2 (ja) ベクトル化処理方式
JPH04184540A (ja) 並列化コンパイル方式
Magnaghi et al. An Inter-procedural Approach for Optimizations of Java Programs
Mattson Portable programs for parallel computers using STRAND/sup 88
JPH02132525A (ja) コンパイル方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees