JPH0748205B2 - Vectorization processing method - Google Patents

Vectorization processing method

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
Japanese (ja)
Other versions
JPH02101577A (en
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/en
Publication of JPH02101577A publication Critical patent/JPH02101577A/en
Publication of JPH0748205B2 publication Critical patent/JPH0748205B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はベクトル処理プロセッサに供給する目的プログ
ラムを生成するコンパイラにおけるベクトル化処理方式
に関するものである。
The present invention relates to a vectorization processing method in a compiler that generates an object program to be supplied to a vector processing processor.

〔従来の技術〕[Conventional technology]

ベクトル処理プロセッサは複数の規則的に並んだデータ
列(ベクトルデータ)間の演算をベクトル命令によって
一度に高速に実行できるため、その性能を充分発揮する
ためにもベクトル実行できるプログラム部分はベクトル
命令に置き換えることが好ましく、そのため、コンパイ
ル方式の高級言語(例えばFORTRAN)で記述されたソー
スプログラムをコンパイルしてベクトル処理プロセッサ
に対する目的プログラムを生成する際に、プログラムを
解析してベクトル命令への置き換え(ベクトル化)を行
うようにしている。なお、ベクトル化が可能な部分は、
ソースプログラム上ではループ構造で表現されている。
The vector processor can execute operations between multiple regularly-arranged data strings (vector data) at a high speed by using vector instructions at a time. Since it is preferable to replace the source program written in a high-level compilation language (for example, FORTRAN) and generate an object program for the vector processor, the program is analyzed and replaced with vector instructions (vector )). The part that can be vectorized is
It is expressed as a loop structure in the source program.

また、単純なベクトル演算のみならず、並列実行に矛盾
するデータ依存関係がある場合であっても、スカラ変数
に対する内積・総和あるいは漸化式等の回帰型演算につ
いて適用可能な特別なベクトル命令を備えたベクトル処
理プロセッサが提供されている。
In addition to simple vector operations, even when parallel execution has conflicting data dependencies, special vector instructions applicable to regression type operations such as inner product / summation or recurrence expressions for scalar variables are used. A vector processing processor is provided.

第4図はコンパイラに入力されるソースプログラムの例
を示したものであり、従来のコンパイラでは、このソー
スプログラムを解析して第5図に示すような構造の第1
中間テキストを生成し、その後、第6図に示すような構
造の一部をベクトル化に適した文に変形した第2中間テ
キストを生成し、これをコード化して目的プログラムを
生成するようにしていた。すなわち、第4図に示すソー
スプログラムは、スカラ変数Qの初期値を“1.0"とし、
これに配列要素A(I)の値を1番目の要素から100番
目の要素まで順次加えて行く処理を示しており、順次加
算を行わないと最終結果が得られないため、スカラ変数
Qに対して並列実行に矛盾するデータ依存関係はある
が、前述のスカラ変数Qに対する総和の回帰型演算のベ
クトル命令が適用できるため、データ依存関係の矛盾を
解消してベクトル化を行うことが可能であった。
FIG. 4 shows an example of a source program input to the compiler. In a conventional compiler, this source program is analyzed and the first structure having the structure shown in FIG.
The intermediate text is generated, and then the second intermediate text in which a part of the structure shown in FIG. 6 is transformed into a sentence suitable for vectorization is generated, and this is coded to generate the target program. It was That is, the source program shown in FIG. 4 sets the initial value of the scalar variable Q to "1.0",
This shows the process of sequentially adding the value of array element A (I) from the 1st element to the 100th element, and the final result cannot be obtained unless sequential addition is performed, so for the scalar variable Q Although there is a data dependency that contradicts parallel execution, since the vector instruction of the regression type calculation of the sum for the scalar variable Q described above can be applied, it is possible to resolve the conflict of the data dependency and perform vectorization. It was

〔発明が解決しようとする課題〕[Problems to be Solved by the Invention]

上述したように、従来のコンパイラにあっては、並列実
行に矛盾するデータ依存関係がある場合であっても、ス
カラ変数に対する内積・総和あるいは漸化式等の回帰型
演算についてはベクトル化が可能であったが、ベクトル
化できるのは回帰型演算が独立して使用されている場合
だけであり、同じループ内でその回帰型演算の文の左辺
の値が後に参照されるような場合はベクトル化できない
という欠点があった。
As mentioned above, in the conventional compiler, vectorization is possible for regression-type operations such as inner product / summation or recurrence formulas for scalar variables even when there are conflicting data dependencies in parallel execution. However, vectorization is possible only when the regression operation is used independently, and when the value on the left side of the regression operation statement is referenced later in the same loop, the vector There was a drawback that it could not be realized.

すなわち、第7図に示すようなソースプログラムが与え
られた場合には、 Q=Q+A(I) のループ毎の値(評価結果)を同じループ内の C(I)=Q+B(I) で参照するため、スカラ変数Qに対するループ毎の値を
別に格納しておく必要があるため、スカラ変数Qに対す
る総和の回帰型演算に対応するベクトル命令は適用でき
ず、よって、スカラ変数Qが出現している範囲をベクト
ル化不可能な文群として処理し、この部分のみについて
スカラ命令により順次実行することを余儀なくされてい
た。
That is, when a source program as shown in FIG. 7 is given, the value (evaluation result) for each loop of Q = Q + A (I) is referred to by C (I) = Q + B (I) in the same loop. Therefore, since it is necessary to separately store the value for each loop for the scalar variable Q, the vector instruction corresponding to the regression type operation of the summation for the scalar variable Q cannot be applied, and therefore the scalar variable Q appears. It was forced to process the existing range as a group of statements that cannot be vectorized and to execute only this part sequentially by a scalar instruction.

しかして、ベクトル演算機能を有するベクトル処理プロ
セッサにおいては、一般に目的プログラムのうちのベク
トル命令によって実行される部分の割合を大きくすれば
大きくするほど、プログラムの実行時間を短縮すること
ができることから、上述した従来技術では、ベクトル処
理プロセッサの性能を充分に発揮することができないと
いう欠点があった。
In a vector processor having a vector operation function, generally, the larger the ratio of the portion of the target program executed by the vector instruction, the shorter the execution time of the program. However, the conventional technique has a drawback in that the performance of the vector processor cannot be fully exhibited.

また、ベクトル化不可能な文群のみスカラ命令で実行す
るため、ソースプログラム上で1つのループ構造をコン
パイラが内部的にいくつかのループ構造に分割しなけれ
ばならない場合もあり、コンパイル時間が増加するとい
う欠点もあった。
In addition, since only a group of statements that cannot be vectorized are executed with scalar instructions, the compiler may have to internally divide one loop structure into several loop structures in the source program, increasing the compilation time. There was also the drawback of doing so.

本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、回帰型演算の文より後の同一ループ
内でその回帰型演算の文の左辺のスカラ変数に対して参
照がある場合であっても、ベクトル化が可能なベクトル
化処理方式を提供することにある。
The present invention has been proposed in view of the above points, and an object thereof is to refer to a scalar variable on the left side of a regression operation statement in the same loop after the regression operation statement. It is to provide a vectorization processing method capable of vectorization even in some cases.

〔課題を解決するための手段〕[Means for Solving the Problems]

本考案は上記の目的を達成するため、スカラ変数に対す
る内積・総和あるいは漸化式等の回帰型演算についても
適用可能なベクトル命令を有するベクトル処理プロセッ
サに対し高級言語で記述されたソースプログラムを入力
して目的プログラムを生成するコンパイラにおけるベク
トル化処理方式において、 ループ構造を解析して並列実行に矛盾するデータ依存関
係がある場合に起動され、 式の構造を調べてスカラ変数に対する内積・総和の特定
のパターンをもった回帰型演算の文を検出する回帰型演
算パターン認識部と、 検出された文のスカラ変数に対してループ内での定義・
参照位置関係を調査する定義・参照位置関係調査部と、 調査の結果、回帰型演算の文より後でその回帰型演算の
文の左辺のスカラ変数に対して参照がある場合、そのス
カラ変数に対してベクトル作業領域を割り当てて漸化式
の回帰型演算を適用可能な文に変形する回帰型演算ベク
トル化処理部とを有する回帰型演算処理部を備えるよう
にしている。
In order to achieve the above object, the present invention inputs a source program written in a high-level language to a vector processor having vector instructions applicable to regression type operations such as inner product / summation or recurrence expressions for scalar variables. In the vectorization processing method of the compiler that generates the target program, it is activated when the loop structure is analyzed and there is a conflicting data dependency in parallel execution, and the structure of the expression is examined to identify the inner product / sum of scalar variables. The recurrence type operation pattern recognition unit that detects the sentence of the regression type operation with the pattern of, and the definition in the loop for the scalar variable of the detected sentence
Definition / reference position relationship investigation section that investigates the reference position relationship, and if the result of the investigation is that there is a reference to a scalar variable on the left side of the regression operation statement after the regression operation statement, that scalar variable is On the other hand, a regression type operation processing unit having a regression type operation vectorization processing unit that allocates a vector work area and transforms a recurrence type regression type operation into an applicable sentence is provided.

〔作用〕[Action]

本発明のベクトル化処理方式にあっては、コンパイルの
途中でループ構造を解析して並列実行に矛盾するデータ
依存関係がある場合に回帰型演算処理部が起動され、回
帰型演算処理部の回帰型演算パターン認識部が式の構造
を調べてスカラ変数に対する内積・総和の特定のパター
ンをもった回帰型演算の文を検出し、定義・参照位置関
係調査部が検出された文のスカラ変数に対してループ内
での定義・参照位置関係を調査し、調査の結果、回帰型
演算の文より後でその回帰型演算の文の左辺のスカラ変
数に対して参照がある場合、回帰型演算ベクトル化処理
部がそのスカラ変数に対してベクトル作業領域を割り当
てて漸化式の回帰型演算を適用可能な文に変形する。
In the vectorization processing method of the present invention, when the loop structure is analyzed during compilation and parallel execution has a conflicting data dependency, the regression-type arithmetic processing unit is activated, and the regression-type arithmetic processing unit performs the regression. The pattern operation pattern recognition unit examines the structure of the expression and detects a regression type operation sentence with a specific pattern of inner product and sum for the scalar variable, and the definition / reference positional relationship investigation unit detects it as a scalar variable of the detected sentence. In contrast, if the definition / reference position relationship in the loop is investigated, and as a result of the investigation, there is a reference to the scalar variable on the left side of the regression operation statement after the regression operation statement, the regression operation vector The conversion processing unit allocates a vector work area to the scalar variable and transforms it into a sentence to which the recurrence-type regression operation can be applied.

〔実施例〕〔Example〕

以下、本発明の実施例につき図面を参照して説明する。 Embodiments of the present invention will be described below with reference to the drawings.

第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とから構成されている。
FIG. 1 is a block diagram showing an embodiment of a compiler to which the vectorization processing method of the present invention is applied. In FIG. 1, a compiler 2 reads a source program 1 written in a high-level language, performs a syntax analysis to generate a first intermediate text 24, and a first intermediate text 24, and reads the source program 1. The vectorization unit 22 that detects the loop structure in 1 to recognize and process the vectorizable portion and generates the second intermediate text 25, and the second intermediate text 25 are read and coded to obtain the target program 3 And a code generation unit 23 for generating and outputting. Further, the vectorization unit 22 includes a loop structure analysis unit 221 that collects information for the array element of each statement in the loop structure, a scalar variable, and the like to examine a data dependency relationship that contradicts parallel execution, and a loop structure analysis unit. There is a data dependency relationship that contradicts parallel execution by the data dependency relationship determination unit 222 and the data dependency relationship determination unit 222 that determines whether there is a data dependency relationship that conflicts with parallel execution based on the information obtained by the unit 221. A regression type arithmetic processing unit 223 that performs transformation suitable for vectorization when possible for a sentence group that is determined to be true, and a vector text generation unit that generates a second intermediate text including a sentence corresponding to a vector instruction to be applied 224 and. Further, the regression type arithmetic processing unit 223 examines the structure of the expression for the sentence group that is determined to have the data dependency that contradicts the parallel execution, and detects the regression type arithmetic operation having the specific pattern of the inner product / sum for the scalar variable. Regression type calculation pattern recognition unit 2231 and a loop structure analysis unit 221 for the scalar variable of the sentence detected by the regression type calculation pattern recognition unit 2231.
The definition / reference position relationship investigation unit 2232 that investigates the definition / reference position relationship in the loop based on the information obtained in When there is a reference to a scalar variable on the left side of a type operation statement, a vector work area of a one-dimensional array element is assigned to that scalar variable and the regression type operation of recurrence formula is transformed into an applicable statement. Regression type calculation vectorization processing unit
It is composed of 2233 and.

以下、上記の実施例の動作について説明する。なお、従
来のコンパイラでベクトル化できなかった第7図のソー
スプログラムを具体例として用いる。
The operation of the above embodiment will be described below. The source program shown in FIG. 7, which could not be vectorized by the conventional compiler, is used as a specific example.

先ず、構文解析部21はソースプログラム1を読み込み、
第1中間テキスト24を生成する。すなわち、第7図のソ
ースプログラムに対して、第8図のような構造の第1中
間テキストを生成する。
First, the syntactic analysis unit 21 reads the source program 1,
The first intermediate text 24 is generated. That is, the first intermediate text having the structure shown in FIG. 8 is generated for the source program shown in FIG.

次いで、ベクトル化部22は第1中間テキスト24を読み込
み、ループ構造解析部221において第1中間テキスト24
からループ構造を検出し、ループ構造内の各文に対し
て、並列実行に矛盾するデータ依存関係を調べるための
情報収集を行う。
Next, the vectorization unit 22 reads the first intermediate text 24, and the loop structure analysis unit 221 reads the first intermediate text 24.
The loop structure is detected from this, and information is collected for each statement in the loop structure to investigate the data dependency that contradicts the parallel execution.

次いで、データ依存関係判定部222において、ループ構
造解析部221で得た情報を基に、並列実行に矛盾するデ
ータ依存関係があるか否かを判定する。第7図のソース
プログラム(第8図の第1中間テキスト)に対しては、
代入文 Q=Q+A(I) の左辺のスカラ変数Qに対して並列実行に矛盾するデー
タ依存関係ありと判定する。そして、並列実行に矛盾す
るデータ依存関係ありと判定した場合は、回帰型演算処
理部223に制御を渡す。
Next, the data dependency relationship determination unit 222 determines whether or not there is a data dependency relationship that contradicts parallel execution, based on the information obtained by the loop structure analysis unit 221. For the source program in Figure 7 (the first intermediate text in Figure 8),
Assignment statement Q = Q + A (I) It is determined that there is a data dependency relationship inconsistent with parallel execution for the scalar variable Q on the left side. Then, when it is determined that there is a data dependency that contradicts parallel execution, control is passed to the regression-type arithmetic processing unit 223.

回帰型演算処理部223においては、回帰型演算パターン
認識部2231で式の構造を調べ、スカラ変数に対する内積
・総和の特定のパターンをもった回帰型演算の文を検出
する。
In the regression-type calculation processing unit 223, the regression-type calculation pattern recognition unit 2231 examines the structure of the expression and detects a regression-type calculation statement having a specific pattern of inner product / sum for scalar variables.

次いで、定義・参照位置関係調査部2232は、ループ構造
解析部221で得た情報を基に、回帰型演算パターン認識
部2231で検出された文につき、左辺のスカラ変数Qに対
してループ内での定義・参照位置関係を調査する。この
とき、第7図のソースプログラムに対しては、回帰型演
算の文 Q=Q+A(I) より後でその回帰型演算の文の左辺のスカラ変数Qに対
して C(I)=Q+B(I) において参照があることが判明する。
Next, the definition / reference positional relationship investigation unit 2232, based on the information obtained by the loop structure analysis unit 221, in the loop for the scalar variable Q on the left side of the sentence detected by the regression type operation pattern recognition unit 2231. Investigate the definition and reference position relationship of. At this time, for the source program of FIG. 7, after the regression type operation statement Q = Q + A (I), C (I) = Q + B (for the scalar variable Q on the left side of the regression type operation statement. It turns out that there is a reference in I).

回帰型演算ベクトル化処理部2233はそのスカラ変数に対
してベクトル作業領域を割り当て、漸化式の回帰型演算
を適用可能な文に変形する。第7図のソースプログラム
に対しては、具体的に次の処理を行う。
The regression type operation vectorization processing unit 2233 allocates a vector work area to the scalar variable and transforms it into a sentence to which the recurrence type regression type operation can be applied. The following processing is specifically performed on the source program shown in FIG.

スカラ変数Qに対し、ベクトル作業領域を用いた1
次元の仮の配列要素Q′(I)を設ける処理を行う。こ
のとき、配列の大きさはベクトル長+1要素分とする。
1 using vector work area for scalar variable Q
A process of providing a temporary array element Q '(I) of dimension is performed. At this time, the size of the array is the vector length + 1 element.

漸化式の回帰型演算に対応するベクトル命令が実行
される直前にスカラ変数Qの初期値を仮の配列要素Q′
(I)の第1番目の要素に格納する文を生成する処理を
行う。
Immediately before the vector instruction corresponding to the recurrence-type regression operation is executed, the initial value of the scalar variable Q is set to the temporary array element Q ′.
Processing for generating a sentence to be stored in the first element of (I) is performed.

総和の回帰型演算の代入文のスカラ変数Qの代わり
に、仮の配列要素Q′(I)を使用(左辺をQ′(I+
1)、右辺をQ′(I))し、更に漸化式の回帰型演算
に対応するベクトル命令を適用するための処理を行う。
A temporary array element Q ′ (I) is used instead of the scalar variable Q in the assignment statement of the sum total regression type operation (the left side is Q ′ (I +
1), Q ′ (I)) on the right side, and then a process for applying a vector instruction corresponding to the recurrence type regression operation is performed.

総和の回帰型演算の代入文の後で、スカラ変数Qを
参照している文に対して、仮の配列要素Q′(I)を使
用するための処理を行う。この時、仮の配列要素Q′
(I)は、第2要素目のQ′(I+1)から参照する。
After the sum total regression type assignment statement, processing for using the temporary array element Q ′ (I) is performed on the statement that refers to the scalar variable Q. At this time, the temporary array element Q ′
(I) is referred to from the second element Q ′ (I + 1).

上記の回帰型演算ベクトル化処理部2233の処理により変
形されたプログラムの概念を第2図に示す。
FIG. 2 shows the concept of the program modified by the processing of the regression calculation vectorization processing unit 2233 described above.

その後、ベクトルテキスト生成部224は回帰型演算ベク
トル化処理部2233での処理結果を基に、第2中間テキス
ト25を生成する。第2図のプログラムに対して第3図に
示されるような構造の第2中間テキストを生成する。
After that, the vector text generation unit 224 generates the second intermediate text 25 based on the processing result of the regression calculation vectorization processing unit 2233. A second intermediate text having a structure as shown in FIG. 3 is generated for the program of FIG.

最後に、コード生成部23はベクトルテキスト生成部224
で生成した第2中間テキスト25を読み込み、コード化し
て目的プログラム3を生成し、出力を行ってコンパイラ
2の処理を終了する。
Finally, the code generation unit 23 uses the vector text generation unit 224.
The second intermediate text 25 generated in step 2 is read, coded to generate the target program 3, output is performed, and the processing of the compiler 2 ends.

〔発明の効果〕〔The invention's effect〕

以上説明したように、本発明のベクトル化処理方式にあ
っては、従来ベクトル化不可能だった文群のベクトル化
が可能となるため、ベクトル処理プロセッサにおける、
プログラムの実行速度を向上することができる効果があ
る。また、ベクトル化不可能な部分を分割する処理も減
少することから、コンパイル時間の短縮化も図れる効果
がある。
As described above, in the vectorization processing method of the present invention, since it is possible to vectorize a sentence group that was conventionally impossible to vectorize, in the vector processing processor,
There is an effect that the execution speed of the program can be improved. Further, since the processing for dividing the non-vectorizable portion is also reduced, there is an effect that the compilation time can be shortened.

【図面の簡単な説明】[Brief description of drawings]

第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……目的プログラム
FIG. 1 is a configuration diagram showing an embodiment of a compiler to which the vectorization processing method of the present invention is applied, and FIG. 2 is a conceptual diagram of a program modified by a regression type operation vectorization processing unit in the embodiment of FIG. , FIG. 3 is a conceptual diagram of a second intermediate text corresponding to the program of FIG. 2, FIG. 4 is a diagram showing an example of a source program, and FIG. 5 is a first intermediate text corresponding to the source program of FIG. 6 is a conceptual diagram of a second intermediate text corresponding to the first intermediate text of FIG. 5, FIG. 7 is a diagram showing an example of a source program, and FIG. 8 is a source program of FIG. It is a conceptual diagram of the 1st intermediate text corresponding to. In the figure, 1 ... Source program 2 ... Compiler 21 ... Syntax analysis unit 22 ... Vectorization unit 221 ... Loop structure analysis unit 222 ... Data dependency relationship determination unit 223 ... Regression type arithmetic processing unit 2231 ... Recurrence-type operation pattern recognition unit 2232 …… Definition / reference position relationship investigation unit 2233 …… Regression-type operation vectorization processing unit 224 …… Vector text generation unit 23 …… Code generation unit 24 …… First intermediate text 25 …… No. 2 Intermediate text 3 ... Objective program

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】スカラ変数に対する内積・総和あるいは漸
化式等の回帰型演算についても適用可能なベクトル命令
を有するベクトル処理プロセッサに対し高級言語で記述
されたソースプログラムを入力して目的プログラムを生
成するコンパイラにおけるベクトル化処理方式におい
て、 ループ構造を解析して並列実行に矛盾するデータ依存関
係がある場合に起動され、 式の構造を調べてスカラ変数に対する内積・総和の特定
のパターンをもった回帰型演算の文を検出する回帰型演
算パターン認識部と、 検出された文のスカラ変数に対してループ内での定義・
参照位置関係を調査する定義・参照位置関係調査部と、 調査の結果、回帰型演算の文より後でその回帰型演算の
文の左辺のスカラ変数に対して参照がある場合、そのス
カラ変数に対してベクトル作業領域を割り当てて漸化式
の回帰型演算を適用可能な文に変形する回帰型演算ベク
トル化処理部とを有する回帰型演算処理部を備えたこと
を特徴とするベクトル化処理方式。
1. A target program is generated by inputting a source program described in a high-level language to a vector processor having a vector instruction applicable to regression type operations such as inner product / summation or recurrence expression for scalar variables. In the vectorization processing method of the compiler, it is activated when the loop structure is analyzed and there is a conflicting data dependency in parallel execution, and the structure of the expression is examined and regression with a specific pattern of inner product / sum for scalar variables Regression type operation pattern recognition part to detect the sentence of type operation and definition in the loop for the scalar variable of the detected sentence
Definition / reference position relationship investigation section that investigates the reference position relationship, and if the result of the investigation is that there is a reference to a scalar variable on the left side of the regression operation statement after the regression operation statement, that scalar variable is On the other hand, a vectorization processing method characterized by comprising a regression-type operation processing section having a regression-type operation vectorization processing section for allocating a vector work area to transform a recursive regression-type operation into an applicable sentence .
JP25559788A 1988-10-11 1988-10-11 Vectorization processing method Expired - Lifetime JPH0748205B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25559788A JPH0748205B2 (en) 1988-10-11 1988-10-11 Vectorization processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25559788A JPH0748205B2 (en) 1988-10-11 1988-10-11 Vectorization processing method

Publications (2)

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

Family

ID=17280935

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25559788A Expired - Lifetime JPH0748205B2 (en) 1988-10-11 1988-10-11 Vectorization processing method

Country Status (1)

Country Link
JP (1) JPH0748205B2 (en)

Also Published As

Publication number Publication date
JPH02101577A (en) 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
JP2921190B2 (en) Parallel execution method
JPH10228382A (en) Compiling system
JPH11167492A (en) Array summary analyzing method for loop containing skip-out sentence
JPH07152576A (en) In-line expansion method for programming language having array function
JPH0748205B2 (en) Vectorization processing method
JP5227646B2 (en) Compiler and code generation method thereof
JP3032030B2 (en) Loop optimization method and apparatus
JP3196625B2 (en) Parallel compilation method
Van der Cruysse et al. Latent Idiom Recognition for a Minimalist Functional Array Language using Equality Saturation
JPH03257579A (en) Parallel arrangement system for compilers
JP2701246B2 (en) Compiler vectorization method
JPH0468664B2 (en)
JP3057904B2 (en) Vectorization method
JPH02214974A (en) Vectorization processing system
JP3047418B2 (en) Vectorization processing method
JPH03220669A (en) Multiple loop vectorization compiling system
JPH0512033A (en) Parallel compiling system
JP3311775B2 (en) Pointer vectorization method
JPH0713962A (en) Compiler device
JPS63187365A (en) Under-if text stipulated variable vectorizing compilation system
JPS6367676A (en) Processing system for vector formation from general loop