JPH0748205B2 - ベクトル化処理方式 - Google Patents

ベクトル化処理方式

Info

Publication number
JPH0748205B2
JPH0748205B2 JP25559788A JP25559788A JPH0748205B2 JP H0748205 B2 JPH0748205 B2 JP H0748205B2 JP 25559788 A JP25559788 A JP 25559788A JP 25559788 A JP25559788 A JP 25559788A JP H0748205 B2 JPH0748205 B2 JP H0748205B2
Authority
JP
Japan
Prior art keywords
regression
vector
scalar
type operation
type
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
JP25559788A
Other languages
English (en)
Other versions
JPH02101577A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP25559788A priority Critical patent/JPH0748205B2/ja
Publication of JPH02101577A publication Critical patent/JPH02101577A/ja
Publication of JPH0748205B2 publication Critical patent/JPH0748205B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はベクトル処理プロセッサに供給する目的プログ
ラムを生成するコンパイラにおけるベクトル化処理方式
に関するものである。
〔従来の技術〕
ベクトル処理プロセッサは複数の規則的に並んだデータ
列(ベクトルデータ)間の演算をベクトル命令によって
一度に高速に実行できるため、その性能を充分発揮する
ためにもベクトル実行できるプログラム部分はベクトル
命令に置き換えることが好ましく、そのため、コンパイ
ル方式の高級言語(例えばFORTRAN)で記述されたソー
スプログラムをコンパイルしてベクトル処理プロセッサ
に対する目的プログラムを生成する際に、プログラムを
解析してベクトル命令への置き換え(ベクトル化)を行
うようにしている。なお、ベクトル化が可能な部分は、
ソースプログラム上ではループ構造で表現されている。
また、単純なベクトル演算のみならず、並列実行に矛盾
するデータ依存関係がある場合であっても、スカラ変数
に対する内積・総和あるいは漸化式等の回帰型演算につ
いて適用可能な特別なベクトル命令を備えたベクトル処
理プロセッサが提供されている。
第4図はコンパイラに入力されるソースプログラムの例
を示したものであり、従来のコンパイラでは、このソー
スプログラムを解析して第5図に示すような構造の第1
中間テキストを生成し、その後、第6図に示すような構
造の一部をベクトル化に適した文に変形した第2中間テ
キストを生成し、これをコード化して目的プログラムを
生成するようにしていた。すなわち、第4図に示すソー
スプログラムは、スカラ変数Qの初期値を“1.0"とし、
これに配列要素A(I)の値を1番目の要素から100番
目の要素まで順次加えて行く処理を示しており、順次加
算を行わないと最終結果が得られないため、スカラ変数
Qに対して並列実行に矛盾するデータ依存関係はある
が、前述のスカラ変数Qに対する総和の回帰型演算のベ
クトル命令が適用できるため、データ依存関係の矛盾を
解消してベクトル化を行うことが可能であった。
〔発明が解決しようとする課題〕
上述したように、従来のコンパイラにあっては、並列実
行に矛盾するデータ依存関係がある場合であっても、ス
カラ変数に対する内積・総和あるいは漸化式等の回帰型
演算についてはベクトル化が可能であったが、ベクトル
化できるのは回帰型演算が独立して使用されている場合
だけであり、同じループ内でその回帰型演算の文の左辺
の値が後に参照されるような場合はベクトル化できない
という欠点があった。
すなわち、第7図に示すようなソースプログラムが与え
られた場合には、 Q=Q+A(I) のループ毎の値(評価結果)を同じループ内の C(I)=Q+B(I) で参照するため、スカラ変数Qに対するループ毎の値を
別に格納しておく必要があるため、スカラ変数Qに対す
る総和の回帰型演算に対応するベクトル命令は適用でき
ず、よって、スカラ変数Qが出現している範囲をベクト
ル化不可能な文群として処理し、この部分のみについて
スカラ命令により順次実行することを余儀なくされてい
た。
しかして、ベクトル演算機能を有するベクトル処理プロ
セッサにおいては、一般に目的プログラムのうちのベク
トル命令によって実行される部分の割合を大きくすれば
大きくするほど、プログラムの実行時間を短縮すること
ができることから、上述した従来技術では、ベクトル処
理プロセッサの性能を充分に発揮することができないと
いう欠点があった。
また、ベクトル化不可能な文群のみスカラ命令で実行す
るため、ソースプログラム上で1つのループ構造をコン
パイラが内部的にいくつかのループ構造に分割しなけれ
ばならない場合もあり、コンパイル時間が増加するとい
う欠点もあった。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、回帰型演算の文より後の同一ループ
内でその回帰型演算の文の左辺のスカラ変数に対して参
照がある場合であっても、ベクトル化が可能なベクトル
化処理方式を提供することにある。
〔課題を解決するための手段〕
本考案は上記の目的を達成するため、スカラ変数に対す
る内積・総和あるいは漸化式等の回帰型演算についても
適用可能なベクトル命令を有するベクトル処理プロセッ
サに対し高級言語で記述されたソースプログラムを入力
して目的プログラムを生成するコンパイラにおけるベク
トル化処理方式において、 ループ構造を解析して並列実行に矛盾するデータ依存関
係がある場合に起動され、 式の構造を調べてスカラ変数に対する内積・総和の特定
のパターンをもった回帰型演算の文を検出する回帰型演
算パターン認識部と、 検出された文のスカラ変数に対してループ内での定義・
参照位置関係を調査する定義・参照位置関係調査部と、 調査の結果、回帰型演算の文より後でその回帰型演算の
文の左辺のスカラ変数に対して参照がある場合、そのス
カラ変数に対してベクトル作業領域を割り当てて漸化式
の回帰型演算を適用可能な文に変形する回帰型演算ベク
トル化処理部とを有する回帰型演算処理部を備えるよう
にしている。
〔作用〕
本発明のベクトル化処理方式にあっては、コンパイルの
途中でループ構造を解析して並列実行に矛盾するデータ
依存関係がある場合に回帰型演算処理部が起動され、回
帰型演算処理部の回帰型演算パターン認識部が式の構造
を調べてスカラ変数に対する内積・総和の特定のパター
ンをもった回帰型演算の文を検出し、定義・参照位置関
係調査部が検出された文のスカラ変数に対してループ内
での定義・参照位置関係を調査し、調査の結果、回帰型
演算の文より後でその回帰型演算の文の左辺のスカラ変
数に対して参照がある場合、回帰型演算ベクトル化処理
部がそのスカラ変数に対してベクトル作業領域を割り当
てて漸化式の回帰型演算を適用可能な文に変形する。
〔実施例〕
以下、本発明の実施例につき図面を参照して説明する。
第1図は、本発明のベクトル化処理方式を適用したコン
パイラの一実施例を示す構成図である。第1図におい
て、コンパイラ2は、高級言語で記述されたソースプロ
グラム1を読み込み、構文解析を行って第1中間テキス
ト24を生成する構文解析部21と、第1中間テキスト24を
読み込み、ソースプログラム1中のループ構造を検出し
てベクトル化可能部分の認識および処理を行い、第2中
間テキスト25を生成するベクトル化部22と、第2中間テ
キスト25を読み込み、コード化を行って目的プログラム
3を生成して出力するコード生成部23とから構成されて
いる。また、ベクトル化部22は、ループ構造内の各文の
配列要素,スカラ変数等に対し、並列実行に矛盾するデ
ータ依存関係を調べるための情報収集を行うループ構造
解析部221と、ループ構造解析部221により得られた情報
を基に並列実行に矛盾するデータ依存関係があるか否か
を判定するデータ依存関係判定部222と、データ依存関
係判定部222により並列実行に矛盾するデータ依存関係
ありと判定された文群について可能な場合にベクトル化
に適した変形を行う回帰型演算処理部223と、適用すべ
きベクトル命令に対応した文を含んだ第2中間テキスト
を生成するベクトルテキスト生成部224とから構成され
ている。更に、回帰型演算処理部223は、並列実行に矛
盾するデータ依存関係ありと判定された文群について式
の構造を調べ、スカラ変数に対する内積・総和の特定な
パターンをもった回帰型演算を検出する回帰型演算パタ
ーン認識部2231と、回帰型演算パターン認識部2231で検
出された文のスカラ変数に対してループ構造解析部221
で得た情報を基にループ内での定義・参照位置関係を調
査する定義・参照位置関係調査部2232と、定義・参照位
置関係調査部2232における調査の結果、回帰型演算より
後でその回帰型演算の文の左辺のスカラ変数に対して参
照がある場合、そのスカラ変数に対して1次元の配列要
素のベクトル作業領域を割り当てて漸化式の回帰型演算
を適用可能な文に変形する回帰型演算ベクトル化処理部
2233とから構成されている。
以下、上記の実施例の動作について説明する。なお、従
来のコンパイラでベクトル化できなかった第7図のソー
スプログラムを具体例として用いる。
先ず、構文解析部21はソースプログラム1を読み込み、
第1中間テキスト24を生成する。すなわち、第7図のソ
ースプログラムに対して、第8図のような構造の第1中
間テキストを生成する。
次いで、ベクトル化部22は第1中間テキスト24を読み込
み、ループ構造解析部221において第1中間テキスト24
からループ構造を検出し、ループ構造内の各文に対し
て、並列実行に矛盾するデータ依存関係を調べるための
情報収集を行う。
次いで、データ依存関係判定部222において、ループ構
造解析部221で得た情報を基に、並列実行に矛盾するデ
ータ依存関係があるか否かを判定する。第7図のソース
プログラム(第8図の第1中間テキスト)に対しては、
代入文 Q=Q+A(I) の左辺のスカラ変数Qに対して並列実行に矛盾するデー
タ依存関係ありと判定する。そして、並列実行に矛盾す
るデータ依存関係ありと判定した場合は、回帰型演算処
理部223に制御を渡す。
回帰型演算処理部223においては、回帰型演算パターン
認識部2231で式の構造を調べ、スカラ変数に対する内積
・総和の特定のパターンをもった回帰型演算の文を検出
する。
次いで、定義・参照位置関係調査部2232は、ループ構造
解析部221で得た情報を基に、回帰型演算パターン認識
部2231で検出された文につき、左辺のスカラ変数Qに対
してループ内での定義・参照位置関係を調査する。この
とき、第7図のソースプログラムに対しては、回帰型演
算の文 Q=Q+A(I) より後でその回帰型演算の文の左辺のスカラ変数Qに対
して C(I)=Q+B(I) において参照があることが判明する。
回帰型演算ベクトル化処理部2233はそのスカラ変数に対
してベクトル作業領域を割り当て、漸化式の回帰型演算
を適用可能な文に変形する。第7図のソースプログラム
に対しては、具体的に次の処理を行う。
スカラ変数Qに対し、ベクトル作業領域を用いた1
次元の仮の配列要素Q′(I)を設ける処理を行う。こ
のとき、配列の大きさはベクトル長+1要素分とする。
漸化式の回帰型演算に対応するベクトル命令が実行
される直前にスカラ変数Qの初期値を仮の配列要素Q′
(I)の第1番目の要素に格納する文を生成する処理を
行う。
総和の回帰型演算の代入文のスカラ変数Qの代わり
に、仮の配列要素Q′(I)を使用(左辺をQ′(I+
1)、右辺をQ′(I))し、更に漸化式の回帰型演算
に対応するベクトル命令を適用するための処理を行う。
総和の回帰型演算の代入文の後で、スカラ変数Qを
参照している文に対して、仮の配列要素Q′(I)を使
用するための処理を行う。この時、仮の配列要素Q′
(I)は、第2要素目のQ′(I+1)から参照する。
上記の回帰型演算ベクトル化処理部2233の処理により変
形されたプログラムの概念を第2図に示す。
その後、ベクトルテキスト生成部224は回帰型演算ベク
トル化処理部2233での処理結果を基に、第2中間テキス
ト25を生成する。第2図のプログラムに対して第3図に
示されるような構造の第2中間テキストを生成する。
最後に、コード生成部23はベクトルテキスト生成部224
で生成した第2中間テキスト25を読み込み、コード化し
て目的プログラム3を生成し、出力を行ってコンパイラ
2の処理を終了する。
〔発明の効果〕
以上説明したように、本発明のベクトル化処理方式にあ
っては、従来ベクトル化不可能だった文群のベクトル化
が可能となるため、ベクトル処理プロセッサにおける、
プログラムの実行速度を向上することができる効果があ
る。また、ベクトル化不可能な部分を分割する処理も減
少することから、コンパイル時間の短縮化も図れる効果
がある。
【図面の簡単な説明】
第1図は本発明のベクトル化処理方式を適用したコンパ
イラの一実施例を示す構成図、 第2図は第1図の実施例における回帰型演算ベクトル化
処理部により変形されたプログラムの概念図、 第3図は第2図のプログラムに対応する第2中間テキス
トの概念図、 第4図はソースプログラムの例を示す図、 第5図は第4図のソースプログラムに対応する第1中間
テキストの概念図、 第6図は第5図の第1中間テキストに対応する第2中間
テキストの概念図、 第7図はソースプログラムの例を示す図および、 第8図は第7図のソースプログラムに対応する第1中間
テキストの概念図である。 図において、 1……ソースプログラム 2……コンパイラ 21……構文解析部 22……ベクトル化部 221……ループ構造解析部 222……データ依存関係判定部 223……回帰型演算処理部 2231……回帰型演算パターン認識部 2232……定義・参照位置関係調査部 2233……回帰型演算ベクトル化処理部 224……ベクトルテキスト生成部 23……コード生成部 24……第1中間テキスト 25……第2中間テキスト 3……目的プログラム

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】スカラ変数に対する内積・総和あるいは漸
    化式等の回帰型演算についても適用可能なベクトル命令
    を有するベクトル処理プロセッサに対し高級言語で記述
    されたソースプログラムを入力して目的プログラムを生
    成するコンパイラにおけるベクトル化処理方式におい
    て、 ループ構造を解析して並列実行に矛盾するデータ依存関
    係がある場合に起動され、 式の構造を調べてスカラ変数に対する内積・総和の特定
    のパターンをもった回帰型演算の文を検出する回帰型演
    算パターン認識部と、 検出された文のスカラ変数に対してループ内での定義・
    参照位置関係を調査する定義・参照位置関係調査部と、 調査の結果、回帰型演算の文より後でその回帰型演算の
    文の左辺のスカラ変数に対して参照がある場合、そのス
    カラ変数に対してベクトル作業領域を割り当てて漸化式
    の回帰型演算を適用可能な文に変形する回帰型演算ベク
    トル化処理部とを有する回帰型演算処理部を備えたこと
    を特徴とするベクトル化処理方式。
JP25559788A 1988-10-11 1988-10-11 ベクトル化処理方式 Expired - Lifetime JPH0748205B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25559788A JPH0748205B2 (ja) 1988-10-11 1988-10-11 ベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25559788A JPH0748205B2 (ja) 1988-10-11 1988-10-11 ベクトル化処理方式

Publications (2)

Publication Number Publication Date
JPH02101577A JPH02101577A (ja) 1990-04-13
JPH0748205B2 true JPH0748205B2 (ja) 1995-05-24

Family

ID=17280935

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25559788A Expired - Lifetime JPH0748205B2 (ja) 1988-10-11 1988-10-11 ベクトル化処理方式

Country Status (1)

Country Link
JP (1) JPH0748205B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6319908B2 (ja) 2014-12-25 2018-05-09 ライオン株式会社 エアゾール殺虫剤

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6319908B2 (ja) 2014-12-25 2018-05-09 ライオン株式会社 エアゾール殺虫剤

Also Published As

Publication number Publication date
JPH02101577A (ja) 1990-04-13

Similar Documents

Publication Publication Date Title
US5230053A (en) Processor scheduling method for iterative loops
Ammarguellat A control-flow normalization algorithm and its complexity
US4833606A (en) Compiling method for vectorizing multiple do-loops in source program
US5485619A (en) Array variable transformation system employing subscript table mapping to scalar loop indices
JPH10228382A (ja) コンパイル方式
Van der Cruysse et al. Latent idiom recognition for a minimalist functional array language using equality saturation
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH07152576A (ja) アレイ関数をもつプログラミング言語におけるインライン展開方法
JPH0748205B2 (ja) ベクトル化処理方式
JP5227646B2 (ja) コンパイラ及びそのコード生成方法
JP3032030B2 (ja) ループ最適化方法及び装置
JP3196625B2 (ja) 並列化コンパイル方式
JP2701246B2 (ja) コンパイラのベクトル化処理方式
JPH0468664B2 (ja)
JP3057904B2 (ja) ベクトル化方式
JPH02214974A (ja) ベクトル化処理方式
JP3311775B2 (ja) ポインタベクトル化方式
JPH03220669A (ja) 多重ループベクトル化コンパイル方式
JPH0713962A (ja) コンパイラ装置
JPH0512033A (ja) 並列化コンパイル方式
JPS63187365A (ja) If文下定義変数ベクトル化コンパイル方式
JPS6367676A (ja) 一般ル−プベクトル化処理方式
JPH0425969A (ja) If文下定義配列ベクトル化コンパイル方式
JPH0290266A (ja) 依存関係解析方式
JPH08221276A (ja) コンパイラ