JPS6367676A - 一般ル−プベクトル化処理方式 - Google Patents

一般ル−プベクトル化処理方式

Info

Publication number
JPS6367676A
JPS6367676A JP21191286A JP21191286A JPS6367676A JP S6367676 A JPS6367676 A JP S6367676A JP 21191286 A JP21191286 A JP 21191286A JP 21191286 A JP21191286 A JP 21191286A JP S6367676 A JPS6367676 A JP S6367676A
Authority
JP
Japan
Prior art keywords
loop
intermediate text
vector
text
control
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
JP21191286A
Other languages
English (en)
Inventor
Shoichi Sakon
彰一 左近
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 JP21191286A priority Critical patent/JPS6367676A/ja
Publication of JPS6367676A publication Critical patent/JPS6367676A/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

【発明の詳細な説明】 〔産業上の利用分腎〕 本発明は貰級言語で書かれたソースプログラムに含まれ
るループをベクトル化するベクトル化処理方式に関し、
特にベクトル化の対象とするループの種類を拡大する技
術に関する。
〔従来の技術〕
従来、ベクトル演算機能を有するベクトルプロセッサに
実行させる目的プログラムを、高級言語で書かれたソー
スプログラムを翻訳して得るコンパイラが、ソースプロ
グラムに対しベクトル化処理の対象としていたのは、D
O文によって形成されるループだけであり、IF文と0
070文で形成されるループなど、DO文以外によるル
ープはベクトル化の対象となっていなかった。
〔発明が解決しようとする問題点〕
ベクトル演算機能を有するベクトルプロセッサにおいて
は、−aに、目的プログラムのうちベクトル命令によっ
て実行される部分の割合を太き(すればするほど、実行
時間を短くすることができる。ところが、上述の従来技
術では、ベクトル化の対象がDoループのみであるため
、IF文と0070文で作られたループはベクトル化の
対象とならず、スカラ命令で実行されるため性能が悪く
なるという欠点がある。
また従来のコンパイラでベクトル化するために、人手に
てIF文と0070文をDo文に書き直すことも行なわ
れているが、人手によるため、対象ループの発見と四き
直しに多大な時間を必要とし、さらに書き直し時に誤り
を生むおそれがある。
本発明はこのような従来の欠点を解決したものであり、
Do文によって形成されるループのみならず、IF文と
0070文で形成されるループなど、DO文以外による
ループもベクトル化し得るようにすることを目的とする
〔問題点を解決するための手段〕
本発明における一般ベクトル化処理方式は、上記目的を
達成するため、 高級言語で書かれたソースプログラムを翻訳してベクト
ル演算機能を有するベクトルプロセッサに対する目的プ
ログラムを生成するコンパイラのベクトル化処理方式に
おいて、 高級言語で書かれたソースプログラムを読み込み、構文
解析を行なって第1の中間テキストを生成する構文解析
部と、 第1の中間テキストを、先頭に制御が来たら終わりまで
一直線に制御が進み且つ途中から分岐による飛び出しが
なく然も途中に制御が飛び込むこともない幾つかの第1
の中間テキストの列である基本ブロックにまとめ、該基
本ブロック間の制御の流れを解析する制御構造解析部と
、 該制御構造解析部で解析された基本ブロック間の制御の
流れをもとにループを検出するループ検出部と、 該ループ検出部によって検出されたループ内の第1の中
間テキストに対してインデックス変数を検出するインデ
ックス検出部と、 ゛ 前記検出されたループ内の第1の中間テキストの並
列実行可能性を判断するベクトル化判定部と、該ベクト
ル化判定部によってベクトル化可能と判定されたとき、
第1の中間テキストからベクトル化処理を施した第2の
中間テキストを生成するベクトルテキスト生成部と、 第2の中間テキストから目的プログラムを生成して出力
するコード生成部とを有する。
〔作用〕
構文解析部によって、ソースプログラムから第1の中間
テキストが生成され、制御′8構造解析部は、この第1
の中間テキストを基本ブロックにまとめ、基本ブロック
間の制御の流れを解析する。ループ検出部は、上記制御
の流れをもとにループを検出し、インデックス検出部は
検出されたループ内の第1の中間テキストに対して、ル
ープの繰返しごとに一定数だけ増減する変数であるイン
デックス変数を検出する。そして、これらの情報をもと
に、前記検出されたループ内の第1の中間テキストの並
列実行可能性がベクトル化判定部で判定され、ベクトル
テキスト生成部によってベクトル化処理を施した第2の
中間テキストが生成され、この第2の中間テキストから
コード生成部で目的プログラムが生成される。
C実施例〕 次に本発明の実施例について図面を参照して詳細に説明
する。
第1図は本発明の実施例に使用するコンパイラの機能ブ
ロック図であり、1はソースプログラム、2はコンパイ
ラ、3は目的プログラム、281 は第1の中間テキス
ト、282は基本ブロック、2B3は第2の中間テキス
トである。コンパイラ2は構文解析部21.制御構造解
析部22.ループ(★山部23゜インデックス検出部2
4.ベクトル化判定部25.ベクトルテキスト生成部2
6およびコード生成部27を含んでいる。
第1図において、コンパイラ2内の構文解析部21は、
高級言語で書かれたソースプログラム1を読み込み、第
1の中間テキスト281を生成する。
例えば、ソースプログラム1が第2図に示すようなソー
スプログラムとすると、第3図に示すような第1の中間
テキストを生成する。この第1の中間テキストは、次の
制御構造解析部22へ渡される。
制御構造解析部22では、第1の中間テキストを基本ブ
ロック282に分割し、基本ブロック間の制御の移行を
調べる。この様子を第4図に示す。なお、第4図におい
て81〜B4は基本ブロックであり、ここで基本ブロッ
クとは、先頭に制御が来たら終わりまで一直線に制御が
進み且つ途中から分岐による飛び出しがなく然も途中に
制御が飛び込むこともない幾つかの第1の中間テキスト
の列である。
次のループ検出部23では、プログラム中のループを検
出する0本明細書ではループを、強連拮な基本ブロック
の集まり、すなわちループに属する任意の基本ブロック
から他のブロックへループ内の基本ブロックのみを通っ
て制御を移すことができ、しかも入口ブロック(ループ
外からループ内の基本プロ7りに制御を渡す場合通る基
本ブロック)が1つであるものと定義する。また、2つ
の基本ブロックB1と基本ブロックB2について、プロ
グラムの入口から基本ブロックB2に達するどの路も必
ず基本ブロックB1を通るとき、基本ブロックBlは基
本ブロックB2の支配ブロックであると定義する。この
とき、基本ブロックB1は基本ブロックB2を支配する
ともいう。また、基本ブロックB1が基本プロ・ツクB
2に直接制御を渡しているとき基本ブロックB2は基本
ブロックB1の直後続ブロックであると定義する。これ
らの定義から、ループの入口ブロックは、ループ内のす
べての基本ブロックの支配ブロックになる。
しかも、入口ブロックはループ内の基本ブロックである
から、ループ内のある基本ブロックの直後続ブロックに
なっている。
この事実を用いて、ループ検出部23は、ループの入口
ブロックを、自分が支配しているある基本ブロックの直
後続ブロックが自分自身であるものを探すことによって
求める。第4図では基本ブロックB2は基本ブロックB
4を支配し、しかも基本ブロックB2は基本ブロックB
4の直後続ブロックであるから、基本ブロックB2はル
ープの入口ブロックである。またループ検出部23は、
ループを、入口ブロックを含む強連結ブロック全体とし
て求める。第4図では基本ブロックB2.B3゜B4が
一つのループとして検出される。
ループの繰返しごとに一定数だけ増減する変数を、本明
細書ではインデックス変数と呼ぶ。インデックス検出部
24では、ループ内の第1の中間テキストをスキャンし
インデックス変数を検出する。
第3図では■がインデックス変数となる。インデックス
変数は一つのループ内に複数個あってもよい。
ベクトル化判定部25では、第1の中間テキストのうち
、インデックス変数を定義するテキストを除いたものに
ついて、インデックス変数の初期値。
増分値情報をもとに、すべての変数の定義参照関係を調
べ並列実行可能かどうかをチェックする。
ベクトルテキスト生成部26では、ベクトル化判定部2
5の判定結果を考慮し、第1の中間テキスト281から
ベクトル化処理を施した第2の中間テキスト283を以
下のようにして生成する。第3図の場合のように、ルー
プの脱出条件がインテ・7クス変数と定数との比較にな
っている場合等、制御がループに入る前にループ長の計
算が可能な場合、ベクトルテキスト生成部26は、ベク
トル長VLをそのループ長として第2の中間テキストを
生成する。第3図から作られる第2の中間テキストの一
例を示せば、第5図に示すものとなる。なお、第5図中
、VMIはヘクトルマスクである。他方、ベクトルテキ
スト生成部26は、第6図のソースプログラムのように
ループ長がループの実行にともなって定まるときには、
ベクトル長は、配列宣言やコンパイラに対するオプショ
ン等から求まる長さで中間テキストを作成し、変数や配
列のストアについてのみ実行時にループ長を求めて、求
めたループ長をベクトル長としてストアする中間テキス
トを加える。第6図に対する第2の中間テキストの一例
を示せば第7図に示すものとなる。なお、第7図中、L
eading zero  V M 1は、ベクトルマ
スクVMIO中で先頭位置を0として最初に0要素がく
る位置を求める中間テキストである。
最後に、コード生成部27は、第2の中間テキストから
目的プログラム3を生成し、出力する。
以上、ループの飛び出しがループの最後尾にある場合に
ついて説明したが、飛び出しがループの始めや途中にあ
るときにも同様の処理が可能である。
〔発明の効果〕
以上説明したように、本発明においては、ベクトル化処
理前にプログラムの制御構造を解析してループを見出す
ため、Do文で作られるループだけでなく、IF文とG
OTO文で作られるなど、各種のループをベクトル化す
ることができ、従来ベクトル化していなかったループを
ベクトル化するため、ベクトルプロセッサにおいてプロ
グラムの実行速度を短縮し得るという効果がある。
【図面の簡単な説明】
第1図は本発明の実施例に使用するコンパイラの機能ブ
ロック図、 第2図はソースプログラム1の一例を示す図、第3図は
第2図のソースプログラムに対応する第1の中間テキス
トの一例を示す図、 第4図は第3図の第1の中間テキストを基本ブロックに
まとめた状態を示す図、 第5図は第3図に対応する第2の中間テキストの一例を
示す図、 第6図はソースプログラムの他の例を示す図および。 第7図は第6図に対応する第2の中間テキストの一例を
示す図である。 図において、工・・・ソースプログラム、2・・・コン
パイラ、3・・・目的プログラム、21・・・構文解析
部、22・・・制御構造解析部、23・・・ループ検出
部、24・・・インデックス検出部、25・・・ベクト
ル化判定部、26・・・ベクトルテキスト生成部、27
・・・コード生成部、281・・・第1の中間テキスト
、282・・・基本ブロック、283・・・第2の中間
テキスト。

Claims (1)

  1. 【特許請求の範囲】 高級言語で書かれたソースプログラムを翻訳してベクト
    ル演算機能を有するベクトルプロセッサに対する目的プ
    ログラムを生成するコンパイラのベクトル化処理方式に
    おいて、 高級言語で書かれたソースプログラムを読み込み、構文
    解析を行なって第1の中間テキストを生成する構文解析
    部と、 第1の中間テキストを、先頭に制御が来たら終わりまで
    一直線に制御が進み且つ途中から分岐による飛び出しが
    なく然も途中に制御が飛び込むこともない幾つかの第1
    の中間テキストの列である基本ブロックにまとめ、該基
    本ブロック間の制御の流れを解析する制御構造解析部と
    、 該制御構造解析部で解析された基本ブロック間の制御の
    流れをもとにループを検出するループ検出部と、 該ループ検出部によって検出されたループ内の第1の中
    間テキストに対してインデックス変数を検出するインデ
    ックス検出部と、 前記検出されたループ内の第1の中間テキストの並列実
    行可能性を判断するベクトル化判定部と、該ベクトル化
    判定部によってベクトル化可能と判定されたとき、第1
    の中間テキストからベクトル化処理を施した第2の中間
    テキストを生成するベクトルテキスト生成部と、 第2の中間テキストから目的プログラムを生成して出力
    するコード生成部とを有することを特徴とする一般ルー
    プベクトル化処理方式。
JP21191286A 1986-09-09 1986-09-09 一般ル−プベクトル化処理方式 Pending JPS6367676A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21191286A JPS6367676A (ja) 1986-09-09 1986-09-09 一般ル−プベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21191286A JPS6367676A (ja) 1986-09-09 1986-09-09 一般ル−プベクトル化処理方式

Publications (1)

Publication Number Publication Date
JPS6367676A true JPS6367676A (ja) 1988-03-26

Family

ID=16613713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21191286A Pending JPS6367676A (ja) 1986-09-09 1986-09-09 一般ル−プベクトル化処理方式

Country Status (1)

Country Link
JP (1) JPS6367676A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007170235A (ja) * 2005-12-20 2007-07-05 Try:Kk 定量ポンプヘッドおよびその製作方法
KR101107809B1 (ko) * 2004-05-13 2012-01-25 미쓰비시덴키 가부시키가이샤 상태 파악 장치 및 이 상태 파악 장치를 사용한 전력 개폐 기기의 개폐 제어 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101107809B1 (ko) * 2004-05-13 2012-01-25 미쓰비시덴키 가부시키가이샤 상태 파악 장치 및 이 상태 파악 장치를 사용한 전력 개폐 기기의 개폐 제어 장치
JP2007170235A (ja) * 2005-12-20 2007-07-05 Try:Kk 定量ポンプヘッドおよびその製作方法

Similar Documents

Publication Publication Date Title
US4821181A (en) Method for converting a source program of high level language statement into an object program for a vector processor
US20190265955A1 (en) Method and system for comparing sequences
JPH06314203A (ja) コンパイラの最適化方法および装置
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
US20230116546A1 (en) Method for compilation, electronic device and storage medium
Cummins Deep learning for compilers
Ferrante et al. A program form based on data dependency in predicate regions
US7496889B2 (en) Whitespace keywords
JPS6367676A (ja) 一般ル−プベクトル化処理方式
US20060064681A1 (en) Method and system for verifying makefile accuracy
Paduraru et al. Automatic test data generation for a given set of applications using recurrent neural networks
JP2701246B2 (ja) コンパイラのベクトル化処理方式
JPH09282173A (ja) プログラムの静的解析方法
Chennupati et al. Automatic evolution of parallel recursive programs
US20210125103A1 (en) Computer system, learning method, and program
Marazzi Bytecode-based detection of inline functions in binary executables
Gómez Obtaining High-Level Semantic Information from Binary Code
JP3235462B2 (ja) whileループ構造変換装置
Lepper et al. Visitor Optimization Revisited-Realizing Traversal Graph Pruning by Runtime Bytecode Generation
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JPH03220669A (ja) 多重ループベクトル化コンパイル方式
White Deep Learning Software Repositories
JP2864589B2 (ja) 関数値差異出力システム
CN116974946A (zh) 一种源代码分析方法、装置、电子设备及存储介质
JPH0795272B2 (ja) コンパイル方法