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

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

Info

Publication number
JPH04332044A
JPH04332044A JP13032091A JP13032091A JPH04332044A JP H04332044 A JPH04332044 A JP H04332044A JP 13032091 A JP13032091 A JP 13032091A JP 13032091 A JP13032091 A JP 13032091A JP H04332044 A JPH04332044 A JP H04332044A
Authority
JP
Japan
Prior art keywords
loop
increment
vector
array
vectorization
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
JP13032091A
Other languages
English (en)
Other versions
JP2701246B2 (ja
Inventor
Akiyoshi Endo
明芳 遠藤
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)

Abstract

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

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】K=1 DO  10I=1,N A(K)=A(K)+I 10K=K+KD 構文解析部3は、次のような中間テキストを生成する。
【0014】K=1 dc  I=1,N A(K)=A(K)+I K=K+KD end  do ベクトル化部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+ID)+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】 上記テキスト中、ベクトル命令に相当するテキストは、
(V)印で示してある。目的プログラム生成部5は、上
記中間テキストからベクトル化された目的プログラムを
生成する。
【0020】
【発明の効果】以上説明したように、本発明のベクトル
化処理方式によれば、添字式の増分が不明なパターンの
配列参照に対して、総和/累積等のベクトル命令を用い
たベクトルコードと、総和/累積以外のベクトル命令を
用いたベクトルコードの両方を作成しておき、実行時に
、増分の値により実行可能なコードを選択して実行する
ことで、従来のコンパイラではベクトル化されなかった
ループがベクトル化されるので、目的プログラムの実行
時間を短縮することのできるコンパイラのベクトル化処
理方式を得ることができる。
【図面の簡単な説明】
【図1】本発明の一実施の概略構成を示すブロック図。
【符号の説明】
1…コンパイラ、2…コンパイラの制御部、3…構文解
析部、4…ベクトル化部、5…目的プログラム生成部、
6…増分値解析部、7…参照パターン解析部、8…ルー
プ分割部、9…条件分岐生成部、10…原子プログラム
、11…目的プログラム。

Claims (1)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211458A (ja) * 2008-03-05 2009-09-17 Nec Corp コンパイラ、変数最適化装置、方法、及び、プログラム

Citations (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

Patent Citations (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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211458A (ja) * 2008-03-05 2009-09-17 Nec Corp コンパイラ、変数最適化装置、方法、及び、プログラム

Also Published As

Publication number Publication date
JP2701246B2 (ja) 1998-01-21

Similar Documents

Publication Publication Date Title
Zhang et al. Using hammock graphs to structure programs
JP2921190B2 (ja) 並列実行方式
JPH0814817B2 (ja) 自動ベクトル化方法
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
Norris et al. Generating empirically optimized composed matrix kernels from MATLAB prototypes
US20170206068A1 (en) Program optimization based on directives for intermediate code
CN118092931A (zh) 基于指导语句的函数向量化方法及系统
JP2701246B2 (ja) コンパイラのベクトル化処理方式
Jiang et al. Boosting the performance of multimedia applications using SIMD instructions
JPH0795272B2 (ja) コンパイル方法
JPH0440742B2 (ja)
JP3034582B2 (ja) コンパイル処理方式
JP2001175617A (ja) コンパイラ並列化方法
JP2853604B2 (ja) 無限ループのベクトル化処理方式
JPH04184540A (ja) 並列化コンパイル方式
JPH04135244A (ja) コンパイル処理方式
JPH0269867A (ja) ベクトル化方式
JP2000222369A (ja) 並列/ベクトル化方法およびその手順が記録された記録媒体
JPH04152464A (ja) コンパイル処理方式
Kwiatkowski et al. Automatic program parallelization for multicore processors
Matos et al. Data Flow Analysis applied to optimize generic workflow problems
Koseki et al. A global code scheduling technique using guarded PDG
Komatsu et al. Performance Evaluation of Compiler-Assisted OpenMP Codes on Various HPC Systems
JPH10326193A (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