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

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

Info

Publication number
JPH04295960A
JPH04295960A JP3084605A JP8460591A JPH04295960A JP H04295960 A JPH04295960 A JP H04295960A JP 3084605 A JP3084605 A JP 3084605A JP 8460591 A JP8460591 A JP 8460591A JP H04295960 A JPH04295960 A JP H04295960A
Authority
JP
Japan
Prior art keywords
variable
fact
generated
generation unit
intermediate text
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
JP3084605A
Other languages
English (en)
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 JP3084605A priority Critical patent/JPH04295960A/ja
Publication of JPH04295960A publication Critical patent/JPH04295960A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ベクトル演算の実行が
可能な計算機システム(以下、ベクトル計算機という)
において高級言語で記述された原始プログラムからベク
トル化された目的プログラムを生成するコンパイラのベ
クトル化処理方式に関する。
【0002】
【従来の技術】ベクトル計算機においては、ベクトル演
算はスカラ演算に比べて極めて高速な実行が可能となる
。このようなベクトル計算機の能力を最大限に引き出す
ために、ベクトル計算機に係るコンパイラでは、目的プ
ログラム中のベクトル演算により実行される部分の割合
(ベクトル化率)を高めることが重要である。このため
に、コンパイラのベクトル化処理方式が存在する。
【0003】従来、この種のコンパイラのベクトル化処
理方式では、ループ中に定義/引用されている変数が1
回の繰り返し中に確実に定義されている場合には当該変
数を配列化することによりベクトル化することができた
が、ループ中に条件分岐が存在して変数が定義されるか
否かが繰り返し毎の条件の成否(成立/不成立)に依存
している場合には当該ループをベクトル化することはで
きなかった。
【0004】
【発明が解決しようとする課題】上述した従来のコンパ
イラのベクトル化処理方式では、ループ中に条件分岐が
存在して変数が定義されるか否かが繰り返し毎の条件の
成否に依存している場合には当該ループをベクトル化す
ることができないので、ベクトル計算機に対する目的プ
ログラムのベクトル化率が低くなるという欠点があった
【0005】本発明の目的は、上述の点に鑑み、ループ
中に条件分岐が存在して変数が定義されるか否かが繰り
返し毎の条件の成否に依存しているという事実(ある変
数が特定の条件下でのみ定義されているという事実。以
下、変数定義条件依存事実という)をベクトル化を不可
とする要因から取り除き、ベクトル計算機に対する目的
プログラムのベクトル化率を高め、目的プログラムの実
行時間の短縮を図るコンパイラのベクトル化処理方式を
提供することにある。
【0006】
【課題を解決するための手段】本発明のコンパイラのベ
クトル化処理方式は、ベクトル計算機のために高級言語
で記述された原始プログラムからベクトル化された目的
プログラムを生成するコンパイラにおいて、構文解析部
により生成された中間テキストプログラム中のループに
おいて変数定義条件依存事実を検出する依存関係解析部
と、この依存関係解析部により検出された変数定義条件
依存事実に係る条件の成否を反映した1次係数を生成す
る係数処理部と、前記依存関係解析部により検出された
変数定義条件依存事実に係る条件の成否を反映した定数
項を生成する定数項処理部と、前記依存関係解析部によ
り検出された変数定義条件依存事実に係る変数に対応す
る作業配列を生成する作業配列生成部と、前記係数処理
部により生成された1次係数,前記定数項処理部により
生成された定数項および前記作業配列生成部により生成
された作業配列を有する1次漸化式を生成し変数定義条
件依存事実に係る条件が成立した場合における変数定義
条件依存事実に係る変数の定義を当該1次漸化式で置換
する漸化式生成部と、変数定義条件依存事実に係るルー
プ中の変数定義条件依存事実に係る変数へのアクセスを
前記作業配列生成部により生成された作業配列の要素へ
のアクセスで置換する変数置換部と、前記作業配列生成
部により生成された作業配列の先頭要素に変数定義条件
依存事実に係るループの実行直前の変数定義条件依存事
実に係る変数の値を代入する中間テキストを生成し当該
ループの直前に当該中間テキストを挿入する初期値代入
生成部と、変数定義条件依存事実に係る変数に前記作業
配列生成部により生成された作業配列の最後に定義され
た要素の値を代入する中間テキストを生成し変数定義条
件依存事実に係るループの直後に当該中間テキストを挿
入する終値保証生成部と、中間テキストに対するベクト
ル化処理を行いベクトル中間テキストを生成するベクト
ルテキスト生成部とを有する。
【0007】
【作用】本発明のコンパイラのベクトル化処理方式では
、依存関係解析部が構文解析部により生成された中間テ
キストプログラム中のループにおいて変数定義条件依存
事実を検出し、係数処理部が依存関係解析部により検出
された変数定義条件依存事実に係る条件の成否を反映し
た1次係数を生成し、定数項処理部が依存関係解析部に
より検出された変数定義条件依存事実に係る条件の成否
を反映した定数項を生成し、作業配列生成部が依存関係
解析部により検出された変数定義条件依存事実に係る変
数に対応する作業配列を生成し、漸化式生成部が係数処
理部により生成された1次係数,定数項処理部により生
成された定数項および作業配列生成部により生成された
作業配列を有する1次漸化式を生成し変数定義条件依存
事実に係る条件が成立した場合における変数定義条件依
存事実に係る変数の定義を当該1次漸化式で置換し、変
数置換部が変数定義条件依存事実に係るループ中の変数
定義条件依存事実に係る変数へのアクセスを作業配列生
成部により生成された作業配列の要素へのアクセスで置
換し、初期値代入生成部が作業配列生成部により生成さ
れた作業配列の先頭要素に変数定義条件依存事実に係る
ループの実行直前の変数定義条件依存事実に係る変数の
値を代入する中間テキストを生成し当該ループの直前に
当該中間テキストを挿入し、終値保証生成部が変数定義
条件依存事実に係る変数に作業配列生成部により生成さ
れた作業配列の最後に定義された要素の値を代入する中
間テキストを生成し変数定義条件依存事実に係るループ
の直後に当該中間テキストを挿入し、ベクトルテキスト
生成部が中間テキストに対するベクトル化処理を行いベ
クトル中間テキストを生成する。
【0008】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0009】図1は、本発明のコンパイラのベクトル化
処理方式の一実施例の構成を示すブロック図である。本
実施例のコンパイラのベクトル化処理方式は、コンパイ
ラ1と、原始プログラム15と、目的プログラム16と
を含んで構成されている。
【0010】コンパイラ1は、制御部2と、構文解析部
3と、ベクトル化部4と、目的プログラム生成部5と、
依存関係解析部6と、係数処理部7と、定数項処理部8
と、作業配列生成部9と、漸化式生成部10と、変数置
換部11と、初期値代入生成部12と、終値保障生成部
13と、ベクトルテキスト生成部14とを含んで構成さ
れている。
【0011】図2は、原始プログラム15に存在するル
ープの一例を示す図である。なお、図中のIおよびNは
正整数である。
【0012】図3は、図2に示す原始プログラム15中
のループに基づいて構文解析部3により生成される中間
テキスト列を示す図である。なお、図中のiおよびnは
正整数である(図4および図5においても同様)。
【0013】図4は、図3に示す中間テキスト列に基づ
いてベクトル化部4の制御により生成されるベクトル化
の可能な中間テキスト列を示す図である。
【0014】図5は、図4に示す中間テキスト列に基づ
いてベクトル化部4の制御により生成されるベクトル中
間テキスト列(ベクトル化された中間テキスト列)を示
す図である。
【0015】次に、このように構成された本実施例のコ
ンパイラのベクトル化処理方式の動作について説明する
。なお、ここでは図2に示すループが存在する原始プロ
グラム15のコンパイルが行われる場合の動作について
説明する。
【0016】コンパイラ1内の制御部2は、以下に示す
コンパイラ1における一連の処理において、統括的な制
御を行う(以下の説明では制御部2には言及しない)。
【0017】構文解析部3は、原始プログラム15の構
文解析を行って図3に示す中間テキスト列(ループ)を
含む中間テキストプログラムを生成する。
【0018】構文解析部3から制御を移されたベクトル
化部4は、構文解析部3によって生成された中間テキス
トプログラム中のループを検出し、検出した各ループを
順次ベクトル化する。以下の説明では、図3に示すルー
プを対象とするベクトル化について述べる。
【0019】ベクトル化部4は、当該ループのベクトル
化に際して、まず依存関係解析部6を呼び出す。
【0020】依存関係解析部6は、当該ループ中の変数
および配列の定義/引用状況を解析し、当該ループのベ
クトル化の可能性を調べる。その解析において、当該ル
ープにおいて変数定義条件依存事実が存在するか否かを
判断する。当該ループにおいては、「変数xが特定の条
件「y(i)>0」下でのみ定義されている」という変
数定義条件依存事実が存在するので、依存関係解析部6
はその変数定義条件依存事実を検出する。
【0021】依存関係解析部6により変数定義条件依存
事実が検出されたので、ベクトル化部4は係数処理部7
,定数項処理部8,作業配列生成部9,漸化式生成部1
0,変数置換部11,初期値代入生成部12および終値
保障生成部13を順次呼び出し、当該ループをベクトル
化の可能な図4に示す中間テキスト列に変形する。その
過程において、各部は以下に示すような処理を行う。
【0022】係数処理部7は、条件「y(i)>0」が
成立した場合に0となり成立しない場合に1となる1次
係数「1−s(i)」を生成する(そのために、s(i
)を定義する中間テキスト17を生成する)。
【0023】定数項処理部8は、条件「y(i)>0」
が成立した場合に変数xに本来代入されるべき値となり
成立しない場合に0となる定数項「t(i)」を生成す
る(そのために、配列要素t(i)を定義する中間テキ
スト18を生成する)。
【0024】なお、本実施例では、係数処理部7および
定数項処理部8による処理において、配列tおよびsの
全ての要素が目的プログラム16の実行前に0に初期化
されていることを仮定している。
【0025】作業配列生成部9は、変数xに対応する作
業配列xxを生成する。
【0026】漸化式生成部10は、「1−s(i)」を
1次係数とし配列要素t(i)を定数項とする作業配列
xxに関する1次漸化式「xx(i+1)=(1−s(
i))*xx(i)+t(i)」を示す中間テキスト1
9を生成し、当該ループにおける変数xの定義を示す中
間テキストをその中間テキスト19で置換する。
【0027】変数置換部11は、当該ループ中の変数x
へのアクセスを示す中間テキストを、作業配列xxの要
素へのアクセスを示す中間テキスト20で置換する。
【0028】初期値代入生成部12は、作業配列xxの
先頭要素xx(1)に当該ループ実行直前の変数xの値
を代入する中間テキスト21を生成し、当該ループの直
前にその中間テキスト21を挿入する。
【0029】終値保障生成部13は、変数xに作業配列
xxの最後に定義された要素xx(n+1)の値を代入
する中間テキスト22(終値保障のための中間テキスト
)を生成し、当該ループの直後にその中間テキスト22
を挿入する。
【0030】以上のような中間テキスト列の変形処理(
図3に示す中間テキスト列から図4に示す中間テキスト
列への変形処理)の後に、ベクトル化部4はベクトルテ
キスト生成部14を呼び出す。
【0031】ベクトルテキスト生成部14は、図4に示
す中間テキスト列に対してベクトル化処理を施し、図5
に示すベクトル中間テキスト列を生成する。図5に示す
ベクトル中間テキスト列においては、図4中の一次漸化
式を示す中間テキスト19がベクトル漸化式命令を示す
ベクトル中間テキスト23で置換されている。
【0032】ベクトル化部4は、以上のような図3に示
すループのベクトル化を含む中間テキストプログラム中
の各ループのベクトル化を可能な限り行い、目的プログ
ラム生成部5に制御を渡す。
【0033】目的プログラム生成部5は、図5に示すベ
クトル中間テキスト列を含む中間テキストプログラムか
ら、ベクトル化された目的プログラム16を生成する。
【0034】
【発明の効果】以上説明したように本発明は、依存関係
解析部,係数処理部,定数項処理部,作業配列生成部,
漸化式生成部,変数置換部,初期値代入生成部,終値保
障生成部およびベクトルテキスト生成部を設けることに
より、従来のコンパイラのベクトル化処理方式ではベク
トル化できなかったループをベクトル化することができ
、ベクトル計算機に対する目的プログラムのベクトル化
率を高めることができ、目的プログラムの実行時間を短
縮することができるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示すブロック図であ
る。
【図2】図1中の原始プログラムに存在するループの一
例を示す図である。
【図3】図2に示すループに基づいて図1中の構文解析
部により生成される中間テキスト列を示す図である。
【図4】図3に示す中間テキスト列に基づいて図1中の
ベクトル化部の制御により生成されるベクトル化の可能
な中間テキスト列を示す図である。
【図5】図4に示す中間テキスト列に基づいて図1中の
ベクトル化部の制御により生成されるベクトル中間テキ
スト列を示す図である。
【符号の説明】
1  コンパイラ 2  制御部 3  構文解析部 4  ベクトル化部 5  目的プログラム生成部 6  依存関係解析部 7  係数処理部 8  定数項処理部 9  作業配列生成部 10  漸化式生成部 11  変数置換部 12  初期値代入生成部 13  終値保障生成部 14  ベクトルテキスト生成部 15  原始プログラム 16  目的プログラム 17〜22  中間テキスト 23  ベクトル中間テキスト

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  ベクトル計算機のために高級言語で記
    述された原始プログラムからベクトル化された目的プロ
    グラムを生成するコンパイラにおいて、構文解析部によ
    り生成された中間テキストプログラム中のループにおい
    て変数定義条件依存事実を検出する依存関係解析部と、
    この依存関係解析部により検出された変数定義条件依存
    事実に係る条件の成否を反映した1次係数を生成する係
    数処理部と、前記依存関係解析部により検出された変数
    定義条件依存事実に係る条件の成否を反映した定数項を
    生成する定数項処理部と、前記依存関係解析部により検
    出された変数定義条件依存事実に係る変数に対応する作
    業配列を生成する作業配列生成部と、前記係数処理部に
    より生成された1次係数,前記定数項処理部により生成
    された定数項および前記作業配列生成部により生成され
    た作業配列を有する1次漸化式を生成し変数定義条件依
    存事実に係る条件が成立した場合における変数定義条件
    依存事実に係る変数の定義を当該1次漸化式で置換する
    漸化式生成部と、変数定義条件依存事実に係るループ中
    の変数定義条件依存事実に係る変数へのアクセスを前記
    作業配列生成部により生成された作業配列の要素へのア
    クセスで置換する変数置換部と、前記作業配列生成部に
    より生成された作業配列の先頭要素に変数定義条件依存
    事実に係るループの実行直前の変数定義条件依存事実に
    係る変数の値を代入する中間テキストを生成し当該ルー
    プの直前に当該中間テキストを挿入する初期値代入生成
    部と、変数定義条件依存事実に係る変数に前記作業配列
    生成部により生成された作業配列の最後に定義された要
    素の値を代入する中間テキストを生成し変数定義条件依
    存事実に係るループの直後に当該中間テキストを挿入す
    る終値保証生成部と、中間テキストに対するベクトル化
    処理を行いベクトル中間テキストを生成するベクトルテ
    キスト生成部とを有することを特徴とするコンパイラの
    ベクトル化処理方式。
JP3084605A 1991-03-25 1991-03-25 コンパイラのベクトル化処理方式 Pending JPH04295960A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3084605A JPH04295960A (ja) 1991-03-25 1991-03-25 コンパイラのベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3084605A JPH04295960A (ja) 1991-03-25 1991-03-25 コンパイラのベクトル化処理方式

Publications (1)

Publication Number Publication Date
JPH04295960A true JPH04295960A (ja) 1992-10-20

Family

ID=13835321

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3084605A Pending JPH04295960A (ja) 1991-03-25 1991-03-25 コンパイラのベクトル化処理方式

Country Status (1)

Country Link
JP (1) JPH04295960A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189472A (ja) * 1992-01-16 1993-07-30 Nec Corp コンパイラのベクトル化処理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189472A (ja) * 1992-01-16 1993-07-30 Nec Corp コンパイラのベクトル化処理方式

Similar Documents

Publication Publication Date Title
KR930008769B1 (ko) 소프트웨어 프로그램 발생용 장치 및 방법
US5355494A (en) Compiler for performing incremental live variable analysis for data-parallel programs
JPH0814817B2 (ja) 自動ベクトル化方法
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
US6567976B1 (en) Method for unrolling two-deep loops with convex bounds and imperfectly nested code, and for unrolling arbitrarily deep nests with constant bounds and imperfectly nested code
US5692196A (en) System and method for conditionally compiling a software compilation unit
JP3539613B2 (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH05189472A (ja) コンパイラのベクトル化処理方式
US5778232A (en) Automatic compiler restructuring of COBOL programs into a proc per paragraph model
Alias et al. On the recognition of algorithm templates
McKinley Dependence analysis of arrays subscriptecl by index arrays
JPH04295960A (ja) コンパイラのベクトル化処理方式
Mossin Partial evaluation of general parsers
CN118092931A (zh) 基于指导语句的函数向量化方法及系统
Ruf et al. Opportunities for online partial evaluation
Silber et al. The Nestor library: A tool for implementing fortran source to source transfromations
Girault Elimination of redundant messages with a two-pass static analysis algorithm
JP2701246B2 (ja) コンパイラのベクトル化処理方式
Acharya Principle of Programming Language
JPH0269867A (ja) ベクトル化方式
JP2674489B2 (ja) ベクトル化処理装置
Behera Principle of Programming Language
Dow et al. Undoing Code Transformations in an Independent Order
JP2533938B2 (ja) ベクトル演算処理方式
Tarhio A compiler generator for attribute evaluation during LR parsing