JP2701246B2 - コンパイラのベクトル化処理方式 - Google Patents

コンパイラのベクトル化処理方式

Info

Publication number
JP2701246B2
JP2701246B2 JP3130320A JP13032091A JP2701246B2 JP 2701246 B2 JP2701246 B2 JP 2701246B2 JP 3130320 A JP3130320 A JP 3130320A JP 13032091 A JP13032091 A JP 13032091A JP 2701246 B2 JP2701246 B2 JP 2701246B2
Authority
JP
Japan
Prior art keywords
loop
increment
vector
sum
unit
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
Application number
JP3130320A
Other languages
English (en)
Other versions
JPH04332044A (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 JP3130320A priority Critical patent/JP2701246B2/ja
Publication of JPH04332044A publication Critical patent/JPH04332044A/ja
Application granted granted Critical
Publication of JP2701246B2 publication Critical patent/JP2701246B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ベクトル演算を実行可
能な計算機システムにおいて、目的プログラムのベクト
ル化率を高め、実行時間を短縮するための、コンパイラ
のベクトル化処理方式に関するものである。
【0002】
【従来の技術】ベクトル演算が実行可能な計算機システ
ムにおいては、ベクトル演算は、スカラー演算に比べて
極めて高速である。このような、ベクトル計算機の能力
を最大限に引き出すために、プログラムのうちベクトル
演算で実行される部分の割合、即ちベクトル化率を高め
ることが重要な要件となる。このため、コンパイラにお
いても可能な限りベクトル化を行うことが望ましい。
【0003】ところで、従来のコンパイラのベクトル化
処理方式においては、ループ中に、“A(K)=A
(K)+T”のようなコーディングが存在し、添字Kは
ループの繰り返しごとに一定の増分値で増加/減少する
ものとする。増分値が0でない場合、当該部分は、配列
Aの各要素にループの繰り返しごとのTの値を加える演
算となる。一方、増分値が0である場合、上記演算は、
各繰り返しにおけるTの値の総和を配列Aのただ一つの
要素A(K)に加える演算となる。当該部分は、前者の
場合ベクトル加算命令でベクトル化可能であり、後者の
場合ベクトル総和命令を用いてベクトル化することがで
きる。
【0004】
【発明が解決しようとする課題】ところが、このような
ベクトル化処理方式では、実際の添字の振るまいが上記
2者の何れに属するものか、コンパイル時には判断がつ
かない場合がある。このような場合、従来の技術では、
当該部分はベクトル化できなかった。
【0005】そこで、本発明の目的は、添字式の増分が
不明な上記のようなパターンの配列参照に対して、総和
/累積等のベクトル命令を用いたベクトルコードと、総
和/累積以外のベクトル命令を用いたベクトルコードの
両方を作成しておき、実行時に、増分の値により実行可
能なコードを選択して、目的プログラムのベクトル化率
を上げることのできるコンパイラのベクトル化処理方式
を得ることである。
【0006】
【課題を解決するための手段】上記の目的を達成するた
め、本発明におけるコンパイラのベクトル化処理方式
は、ベクトル演算機能を有する電子計算機のために、高
級言語で書かれた原始プログラムを入力とし、ベクトル
化された目的プログラムを出力するコンパイラにおい
て、原始プログラムの構文解析を行って中間テキストを
生成する構文解析部と、中間テキスト中にループを検出
してベクトル化するベクトル化部と、中間テキストから
目的プログラムを生成する目的プログラム生成部とを備
え、さらに上記ベクトル化部は、ループ中において、増
分がコンパイル時には不明である線形添字をもつ配列要
素参照を検出する増分値解析部と、上記配列参照の、ル
ープ中における出現状況を解析し、上記増分が0のとき
には、当該配列参照が総和/累積型演算となり、上記増
分が0でないときには要素ごとに計算を行う通常の演算
となることを検出する参照パターン解析部と、当該ルー
プを2種類のループ、即ち、当該配列を総和/累積型ベ
クトル命令を用いてベクトル化するループ、及び当該配
列を総和/累積以外のベクトル命令を用いてベクトル化
するループとに分割するループ分割部と、上記増分の値
を実行時に検査し、上記増分が0のときには総和/累積
型ベクトル命令を用いてベクトル化されたループが実行
され、上記増分が0でないときには上記通常のベクトル
命令を用いてベクトル化されたループが実行されるため
の条件分岐を生成する条件分岐生成部とを備えており、
ループ中に、増分がコンパイル時には不明である線形添
字をもつ配列参照があるときに当該ループをベクトル化
すことを特徴とする。
【0007】
【作用】コンパイラ1のベクトル化部4は、増分値解析
部6及び参照パターン解析部7により、ループ中に存在
するある配列要素名の参照の増分値が不明であり、増分
値が0ならば総和/累積型の演算となり、0でなければ
通常の演算となることを検出する。次に、ループ分割部
8でループを二つに分け、それぞれのループをベクトル
総和(累積)命令やその他のベクトル命令で各々ベクト
ル化する。更に、条件分岐生成部9で実行時に、上記二
つのループのうち適するループが実行されるための条件
分岐を生成する。
【0008】
【実施例】以下、本発明の一実施例を図面を参照して説
明する。
【0009】図1は、本発明のコンパイラのベクトル化
処理方式の構成を示すブロック図である。図中、1はコ
ンパイラ、2はコンパイラの制御部、3は構文解析部、
4はベクトル化部、5は目的プログラム生成部、6は増
分値解析部、7は参照パターン解析部、8はループ分割
部、9は条件分岐生成部、10は原始プログラム、11
は目的プログラムである。
【0010】このうち、構文解析部3は、原始プログラ
ム10の構文解析を行って中間テキストを生成し、ベク
トル化部4は、中間テキスト中にループを検出してベク
トル化する。ただし、ベクトル化部4は、中間テキスト
をベクトル化する過程において増分値解析部6、参照パ
ターン解析部7、ループ分割部8、条件分岐生成部9を
用いる。
【0011】増分値解析部6は、ループ中において、増
分がコンパイル時には、不明である線形添字をもつ配列
要素参照を検出する。参照パターン解析部7は、配列要
素参照のループ中における出現状況を解析し、増分が0
のときには当該配列要素参照が総和/累積型演算とな
り、増分が0でないときには要素ごとに計算を行う通常
の演算となることを検出する。ループ分割部8は、ルー
プを2種類のループ、即ち、配列を総和/累積型ベクト
ル命令を用いてベクトル化するループと配列を総和/累
積以外のベクトル命令を用いてベクトル化するループと
に分割する。条件分岐生成部9は、増分の値を実行時に
検査し、増分が0のときには、総和/累積型ベクトル命
令を用いてベクトル化されたループが実行され、増分が
0でないときには、通常のベクトル命令を用いてベクト
ル化されたループが実行されるための条件分岐を生成す
る。目的プログラム生成部5は、中間テキストから目的
プログラムを生成する。
【0012】一例として、ソースプログラム中に次のよ
うなループが存在していた場合を想定する。
【0013】 構文解析部3は、次のような中間テキストを生成する。
【0014】 ベクトル化部4は、上記の中間テキストの列をループと
して認識し、以下のようにベクトル化する。まず、増分
値解析部6で、配列Aの添字Kの増分値KDの値が不明
であることを検出する。
【0015】次に、参照パターン解析部7で、配列要素
参照の出現パターンに関して、次に述べる事実を検出す
る。この事実とは、KDの値が0ならば、配列要素参照
は、 A(1)=A(1)+1→A(1)=A(1)+2→A
(1)=A(1)+3→・・・→A(1)=A(1)+
N のように、数列{1,2,3,・・・N}の和を求めて
配列要素A(1)に代入する総和型の演算となり、一
方、KDの値が0でなければ、配列要素参照は、 A(1)=A(1)+1→A(1+ID)=A(1+I
D)+2→A(1+2*ID)=A(1+2*ID)+
3→・・・→A(1+(N−1)*ID)=A(1+
(N−1)*ID)+N のように、Aの各要素ごとに計算を行う通常の演算とな
るということである。
【0016】次に、ベクトル化部4は、ループ分割8で
ループを二つのループに分割し、それぞれベクトル総和
命令、ベクトル加算命令を用いてベクトル化する。
【0017】最期に、ベクトル化部4は、条件分岐生成
部9により、KDの値が0であるときには、ベクトル総
和命令を用いてベクトル化されたループが実行され、K
Dの値が0でないときには、ベクトル加算命令を用いて
ベクトル化されたループが実行されるように条件分岐文
などを生成する。
【0018】上記一連の処理によりベクトル化部4が生
成する中間テキストは、次のようになる。
【0019】
【数1】 K=1 bnez KD,1 {ti=i} i=1,N (V) N S= Σ ti (V) i=1 A(K)=S br 2 1:{ti=i}i =1,N (V) {A((i−1)*ID+1)=ti} i=1,N (V) K=N+ID+1 2: 上記テキスト中、ベクトル命令に相当するテキストは、
(V)印で示してある。また、「bnez KD,1」
は、(branch not equal zero KD, 1)の略で、「KD
がゼロでない場合は1:にブランチせよ」の意味であ
り、KD=0の場合は、続く行の演算を行い、「A
(K)=S」の行まで演算する。KD=0でない場合
は、1:に飛ぶ。また、次の「br 2」は、(branch
2)の略で、「2:に飛べ」の意味である。従って、こ
の不明変数KD=0の場合は、総和・累積型ベクトル命
令を実行する。また、目的プログラム生成部5は、上記
中間テキストからベクトル化された目的プログラムを生
成する。
【0020】
【発明の効果】以上説明したように、本発明のベクトル
化処理方式によれば、添字式の増分が不明なパターンの
配列参照に対して、総和/累積型等のベクトル命令を用
いたベクトルループと、総和/累積型以外のベクトル命
令を用いたベクトルループの両方を作成しておき、実行
時に、増分の値により実行可能なループを選択して実行
することで、従来のコンパイラではベクトル化されなか
ったベクトルループがベクトル化されるので、目的プロ
グラムの実行時間を短縮することのできるコンパイラの
ベクトル化処理方式を得ることができる。
【図面の簡単な説明】
【図1】本発明の一実施の概略構成を示すブロック図。
【符号の説明】
1…コンパイラ、2…コンパイラの制御部、3…構文解
析部、4…ベクトル化部、5…目的プログラム生成部、
6…増分値解析部、7…参照パターン解析部、8…ルー
プ分割部、9…条件分岐生成部、10…原子プログラ
ム、11…目的プログラム。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 ベクトル演算機能を有する電子計算機の
    ために、高級言語で書かれた原始プログラムを入力と
    し、ベクトル化された目的プログラムを出力するコンパ
    イラのベクトル化処理方式において、 前記原始プログラムの構文解析を行って中間テキストを
    生成する構文解析部と、前記中間テキスト中にループを
    検出してベクトル化するベクトル化部と、前記中間テキ
    ストから前記目的プログラムを生成する目的プログラム
    生成部とを備え、前記ベクトル化部は、前記ループ中に
    おいて、増分がコンパイル時には不明である線形添字を
    もつ配列要素参照を検出する増分値解析部と、前記配列
    要素参照の前記ループ中における出現状況を解析し、前
    記増分が0の場合には、前記配列要素参照が総和/累積
    型演算となり、前記増分が0でないときには要素ごとに
    計算を行う通常の演算となることを検出する参照パター
    ン解析部と、当該ループを、当該配列を総和/累積型ベ
    クトル命令を用いてベクトル化する第1のループ、及び
    当該配列を総和/累積以外のベクトル命令を用いてベク
    トル化する第2のループとに分割するループ分割部と、
    前記増分の値を実行時に検査し、前記増分が0の場合に
    は総和/累積型ベクトル命令を用いてベクトル化された
    前記第1のループが実行され、前記増分が0でない場合
    には前記通常のベクトル命令を用いてベクトル化された
    前記第2のループが実行されるための条件分岐を生成す
    る条件分岐生成部とを備え、前記ループ中に、前記増分
    前記コンパイル時には不明である線形添字をもつ配列
    参照がある場合に当該第1及び第2のループをベクトル
    化することを特徴とするコンパイラのベクトル化処理方
    式。
JP3130320A 1991-05-07 1991-05-07 コンパイラのベクトル化処理方式 Expired - Fee Related JP2701246B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3130320A JP2701246B2 (ja) 1991-05-07 1991-05-07 コンパイラのベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3130320A JP2701246B2 (ja) 1991-05-07 1991-05-07 コンパイラのベクトル化処理方式

Publications (2)

Publication Number Publication Date
JPH04332044A JPH04332044A (ja) 1992-11-19
JP2701246B2 true JP2701246B2 (ja) 1998-01-21

Family

ID=15031516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3130320A Expired - Fee Related JP2701246B2 (ja) 1991-05-07 1991-05-07 コンパイラのベクトル化処理方式

Country Status (1)

Country Link
JP (1) JP2701246B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5169322B2 (ja) * 2008-03-05 2013-03-27 日本電気株式会社 変数最適化装置、変数最適化プログラム、コンパイラ、変数最適化方法、及びコンパイル方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6418876A (en) * 1987-07-14 1989-01-23 Nec Corp Production system for vector instruction column

Also Published As

Publication number Publication date
JPH04332044A (ja) 1992-11-19

Similar Documents

Publication Publication Date Title
US4833606A (en) Compiling method for vectorizing multiple do-loops in source program
US4821181A (en) Method for converting a source program of high level language statement into an object program for a vector processor
US6412105B1 (en) Computer method and apparatus for compilation of multi-way decisions
JPH10228382A (ja) コンパイル方式
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
JPH04330527A (ja) プログラムの最適化方法及びコンパイラ・システム
Damouche et al. Intra-procedural optimization of the numerical accuracy of programs
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
JPH05189472A (ja) コンパイラのベクトル化処理方式
Puschner A tool for high-level language analysis of worst-case execution times
JP2701246B2 (ja) コンパイラのベクトル化処理方式
Guilfanov Simple type system for program reengineering
JP3196625B2 (ja) 並列化コンパイル方式
US5437035A (en) Method and apparatus for compiling a program incending a do-statement
JPH09282173A (ja) プログラムの静的解析方法
JPH0440742B2 (ja)
Alblas Optimal incremental simple multi-pass attribute evaluation
JPH06208470A (ja) 目的コード最適化装置
JPH0795272B2 (ja) コンパイル方法
JPS6353646A (ja) 最適目的プログラム生成方式
JP2674489B2 (ja) ベクトル化処理装置
JP3034582B2 (ja) コンパイル処理方式
JP3658771B2 (ja) コンパイラ装置
JPS6367676A (ja) 一般ル−プベクトル化処理方式

Legal Events

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

Free format text: PAYMENT UNTIL: 20071003

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20081003

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20091003

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20091003

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20101003

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees