JPH06251054A - If文下ベクトル演算最適化方法 - Google Patents

If文下ベクトル演算最適化方法

Info

Publication number
JPH06251054A
JPH06251054A JP3770893A JP3770893A JPH06251054A JP H06251054 A JPH06251054 A JP H06251054A JP 3770893 A JP3770893 A JP 3770893A JP 3770893 A JP3770893 A JP 3770893A JP H06251054 A JPH06251054 A JP H06251054A
Authority
JP
Japan
Prior art keywords
vector
processing
text
intermediate text
loop
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.)
Withdrawn
Application number
JP3770893A
Other languages
English (en)
Inventor
Takayuki Nakatomi
孝幸 中富
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 Solution Innovators Ltd
Original Assignee
NEC Solution Innovators Ltd
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 Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP3770893A priority Critical patent/JPH06251054A/ja
Publication of JPH06251054A publication Critical patent/JPH06251054A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】ベクトル処理プロセッサのコンパイラにおい
て、DOループの異なる条件下にある同一の演算を条件
なしの演算として処理するIF文下ベクトル演算方法の
提供。 【構成】コンパイラ2のベクトル処理部22にDOルー
プの制御の流を解析する構文解析手順221と、IF文
の条件を解析するIF文化条件解析手順222と、デー
タ依存関係を解析するデータ依存関係判定手順223
と、並列実行可能なループをベクトル化するベクトルテ
キスト生成手順224と、共通式削除処理を行うベクト
ル演算最適化処理手順225を含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、ベクトル処理プロセ
ッサにおけるプログラムの並列実行可能部分の最適化に
関し、IF文下ベクトル演算最適化方法に関する。
【0002】
【従来の技術】記憶域上に規則的に並んでいるデータに
対して並列演算を行うベクトル命令をもつベクトル処理
プロセッサにおいては、目的プログラムのうちのベクト
ル命令によって実行される部分の割合を大きくすればす
るほどプログラムの実行時間を短縮することができる。
したがって、このようなベクトル処理プロセッサに対す
るコンパイラにおいては、与えられた原始プログラムを
可能な限り並列実行可能な形で目的プログラムに変換す
ることが望まれる。
【0003】ところで、ベクトル命令を有するベクトル
処理プロセッサに対する従来のコンパイラは、高級言語
で記述された原始プログラムを読み込み構文解析を行っ
て第1中間テキストを生成する構文解析部と、第1中間
テキストから原始プログラム中のループ構造を検出して
ベクトル化可能部分の認識を行い、ベクトル処理用の第
2中間テキストを生成するベクトル化処理部と、第2中
間テキストから目的プログラムを生成して出力するコー
ド生成部と、を含んで構成される。
【0004】このような従来の自動並列化コンパイラ
は、例えば図2に例示する原始プログラムが与えられた
場合には、構文解析部がこの原始プログラムを読み込ん
で図2の流れ図に例示する第1中間テキスト(ステップ
31〜34)を生成し、ベクトル化処理部が第1中間テ
キストを変更した図4の流れ図に例示する第2中間テキ
スト(41および42)を生成し、コード生成部が第2
中間テキストを読み込み並列実行可能部分がベクトル化
されている目的プログラムを生成する。
【0005】ところが、図5に例示する原始プログラム
が与えられた場合には、実行文51および52をそれぞ
れ異なる条件下の演算としてそれぞれベクトル化を行っ
ている。このため異なる条件下にある同一の演算を別々
の演算として2回の演算が行われている。そのため、並
列化による時間の短縮が十分に発揮されていない。
【0006】
【発明が解決しようとする課題】上述した従来のコンパ
イラでは、DOループ内の異なる条件のもとに同一の演
算がある場合、その演算は別々の異なる条件下の演算と
してベクトル化を行っていた。このため異なる条件下に
ある同一の演算は常に2回演算が行われる。従って、ベ
クトル処理プロセッサにおいては、プログラムの実行時
間をさらに短縮することができない。
【0007】この発明の目的は、上述の点に関し、DO
ループ内の異なる条件下に現われる同一の演算は条件に
関係なしに演算を行っても、条件を満たす部分に対する
演算結果は変わらず、引用時に条件を満たしている所の
みを引用できるようにすれば正しく処理出来る。つま
り、マスクなしで一度に演算し、その結果をマスク付き
(条件を満足する部分のみ)で引用することによって、
ベクトル処理プロセッサにおけるプログラムの実行時間
を短縮できるIF文下ベクトル演算最適化方法を提供す
ることにある。
【0008】
【課題を解決するための手段】この発明のIF文下ベク
トル演算最適化方法における、記憶域上に規則的に並ん
でいるデータに対して並列演算を行うベクトル命令を有
し、前記命令がマスクのオンあるいはオフによって、前
記マスクに対応する要素の処理を行うかあるいは行わな
いかを制御する機能を有するベクトル処理プロセッサに
よって実行される目的プログラムを与えられた原始プロ
グラムから生成し出力するコンパイラには、前記原始プ
ログラムを読み込み構文解析を行って第1中間テキスト
を生成する構文解析手段と、前記第1中間テキストから
前記原始プログラムのループ中の制御の流れを解析する
構造解析手段と前記ループ中のIF文の条件を解析する
IF文化条件解析手段と前記ループ中に並列実行を矛盾
するデータ依存関係があるか否かを判定するデータ依存
関係判定手段と前記IF文化条件解析手段および前記デ
ータ依存関係判定手段によって並列実行可能と判定され
た前記ループ中の部分のベクトル処理用の第2中間テキ
ストを生成するベクトルテキスト生成手段と前記IF文
化条件解析手段によってマスク付きベクトルテキストの
共通式削除処理を行うベクトル演算最適化処理手段とを
備えるベクトル化処理手段と、前記ベクトル化処理部に
より生成された前記第2中間テキストから目的プログラ
ムを生成して出力するコード生成手段と、を含むことを
特徴とするIF文下ベクトル演算最適化方法。
【0009】
【作用】この発明のIF文下ベクトル化最適化方法で
は、構文解析部が原始プログラムを読み込み構文解析を
行って第1中間テキストを生成し、ベクトル化処理部が
第1中間テキストから原始プログラムのループ中の制御
の流れを解析する構造解析手段と、ループ中のIF文の
条件を解析するIF文下条件解析手段と、ループ中に並
列実行に矛盾するデータ依存関係があるか否かを判定す
るデータ依存関係判定手段と、IF文下条件解析手段お
よび前記データ依存関係判定手段により並列実行可能と
判定された部分のベクトル処理用の第2中間テキストを
生成するベクトルテキスト生成手段とIF文下条件解析
手段よりマスク付きベクトルテキストの共通式削除処理
を行うベクトル演算最適化手段と、を含む。そして前記
ベクトル演算最適化処理手段によって、異なる条件下の
同一の演算が別々の演算としてマスク付きで2度ベクト
ル演算を行っていた部分を条件なしとして一度に演算を
行うように第2中間テキストに変形することで並列実行
可能部分を広げ、最適化するベクトル化処理手段と、こ
のベクトル化処理手段により生成された前記第2中間テ
キストからコード生成手段によって目的プログラムを生
成して出力する。
【0010】
【実施例】次にこの発明の実施例について図面を参照し
て詳細に説明する。
【0011】図1は、この発明の一実施例のIF文下ベ
クトル演算最適化方法が適用されているコンパイラ2を
示す機能ブロック図である。コンパイラ2は、記憶域上
に規則的に並んでいるデータに対して一度に並列演算を
行うベクトル命令を有するベクトル処理プロセッサに対
して、与えられた高級言語で記述された原始プログラム
1から目的プログラム3を生成して出力するコンパイラ
であり、原始プログラム1を読み込んで構文解析を行い
第1中間テキスト24を生成する構文解析手順21と、
第1中間テキスト24から原始プログラム1中のループ
構造を検出してベクトル化可能部分の認識を行いベクト
ル処理用の第2中間テキスト25を生成するベクトル化
処理手順22と、第2中間テキスト25から目的プログ
ラム3を生成して出力するコード生成手順23とを含み
構成されている。
【0012】ベクトル化処理手順22は、第1中間テキ
スト24を読み込んで原始プログラム1のループ中の制
御の流れを解析する構造解析手順221と、ループ中の
IF文の条件を解析するIF文下条件解析手順222
と、ループ中に並列実行に矛盾するデータ依存関係があ
るか否かを判定するデータ依存関係判定手段223と、
IF文下条件解析手順222およびデータ依存関係判定
手順223によって並列実行可能と判定された部分のベ
クトル処理用の第2中間テキスト25を生成するベクト
ルテキスト生成手順224と、IF文下条件解析手順に
よってマスク付きベクトルテキストの共通式削除処理を
行うベクトル演算最適化処理手順225とを含んで構成
されている。
【0013】図9を参照すると、IF文下条件解析手順
222で作成され、データ依存関係判定手順223およ
びベクトルテキスト生成手順224で参照される条件テ
ーブル910は、次の条件テーブルへのポインタ911
と、IF文下THEN節のマスク情報テーブルへのポイ
ンタ912と、ELSE節のマスク情報テーブルへのポ
インタ913と、条件式へのポインタ914とを含んで
構成されている。
【0014】また、マスク情報テーブル920は、次の
マスク情報テーブルへのポインタ921と、条件テーブ
ルへのポインタ922とマスクテーブルへのポインタ9
23を含んで構成されている。
【0015】次に、この実施例のIF文下ベクトル演算
最適化方法の動作について説明する。なお、図5に例示
するような配列要素の引用を行っている原始プログラム
1が与えられた場合に、通常は図11に例示されるよう
な第2中間テキストを作成することで、ベクトル化の処
理部を終了するが、原始プログラム1のIF文下のTH
EN節およびELSE IF節の両方で演算される式の
部分を共通式として処理でき、図7に示すようなループ
群として処理することが可能となる。その結果、マスク
なしのベクトル演算1回で処理を行うことができ、図1
2の流れ図に示すような第2中間テキスト25(ステッ
プ1201〜1208)を生成する。図5に例示する原
始プログラムおよび図2から図12を参照し説明する。
【0016】原始プログラム1が与えられてコンパイラ
2が起動されると、まず構文解析部21が原始プログラ
ム1を読み込んで図8の流れ図に例示するような第1中
間テキスト24を生成する。
【0017】次に、ベクトル化処理手順22が第1中間
テキスト24を入力すると、構造解析手順221が起動
される。構造解析手順221は、まず第1中間テキスト
24を分岐を単位としたブロックに分割する。そして、
対象となるループ部分を文単位のブロックに分割する。
続いて、第1中間テキスト24からプログラム全体の制
御の流れを解析して各ブロックの関係を求める。最後に
各々のブロックで定義参照されている配列および変数に
対して、参照後の生死情報を収集する。
【0018】次に、IF文下条件解析手順222が起動
される。IF文下条件解析手順222は、まずループ中
のIF文を検索し、条件テーブル910を作成する。そ
して、THEN節のマスク情報テーブル920および存
在する場合、ELSE節のマスク情報テーブル920を
作成する。また、それぞれのマスク情報テーブル920
と条件テーブル910の間のチェーンをはる。さらに、
検索したIF文が他のIF文のTHEN節またはELS
E節配下にある場合、他のIF文に対して作成された条
件テーブル910へ検索した条件テーブル910へのチ
ェーン(上位条件テーブルへのポインタ914)をは
る。更に、次に、データ依存関係判定手順223が起動
され、ループ中に並列実行に矛盾するデータ依存関係が
あるか否かを判定する。続いて、ベクトルテキスト生成
手順224が起動される。
【0019】ベクトルテキスト生成手順224は、ま
ず、並列実行可能部分をベクトル処理するために必要と
なるベクトル長設定用の第2中間テキスト25を生成す
る。図11に例示する第2中間テキスト25の場合に
は、ループの繰り返し数をベクトル長として設定するv
l=100(ステップ1101)が生成される。そし
て、並列実行可能部分に対してベクトル処理用の第2中
間テキスト25を生成する。図11の第2中間テキスト
25の場合にはステップ1102〜1109が取り出さ
れる。さらに、並列実行可能部分をベクトル処理するた
めに必要となる後処理用の第2中間テキスト25を生成
するステップ1110が取り出される。
【0020】更に続いて、ベクトル演算最適化手順22
5が起動される。
【0021】まず、通常の演算テキストの共通式削除処
理と同様に第2中間テキスト25から共通式を捜す。こ
の時、マスク部分が異なっているものを取り出す。図1
1の第2中間テキスト25の場合にはステップ1103
と1107ならびにステップ1105と1109が取り
出される。そして、マスク情報テーブル920より条件
テーブル910を取り出し、対応するマスク情報テーブ
ル910(先のマスク情報テーブルがTHEN節であれ
ば、ELSE節のマスク情報テーブル、ELSE節であ
ればTHEN節のマスク情報テーブル)を取り出す。図
11の第2中間テキストの場合にはステップ1107,
1109からM2が取り出され、対応するマスク情報テ
ーブル920は、図9が示すようにM1が取り出され
る。さらに、共通式のいずれかがマスク情報テーブル9
20をもった場合、共通式処理可能として、相手方のテ
キストをマスクなしの演算に変更する。また、共通式の
結果領域がプログラム中に記述された配列の場合、相手
方の第2中間テキスト25の前に、内部的に作成した結
果領域に演算結果を代入するマスク情報のテキストが設
定される(ステップ1204)。あるいは結果領域がプ
ログラム中に記述されていない中間的な領域の場合、相
手方の第2中間テキスト25を条件なしで演算するよう
に変更する(ステップ1203)。第2中間テキスト2
5の結果領域を、第2中間テキスト25の演算の変わり
に利用し、先述のテキストを代入テキストに変更する
(ステップ1206,1209)。
【0022】図11の第2中間テキスト25の場合、
(ステップ1103,1105,1207,1209)
は条件を満足するため、変換が行われる。この結果、図
12で示すような第2中間テキストが生成される。ベク
トル化処理手順22のベクトルテキスト生成手順224
における処理が終了すると、コード生成手順23が起動
され第2中間テキスト25に基づいて目的プログラム3
が生成される。この結果、ベクトル処理プロセッサは、
従来マスク付きの状態で2回ベクトル演算を行っていた
ものが、マスクなしで1回ベクトル演算を行えばよくな
り、プロクラムの実行時間が短縮される。
【0023】
【発明の効果】以上説明したように、この発明によれば
異なる条件下の演算としてそれぞれ別に行われている演
算を、そのうちの1回以上が異なる条件配下で行われて
いるものであっても、それらのベクトル演算を1回の演
算にまとめることによって、ベクトル処理プロセッサに
おけるベクトル演算を行う部分を広げることができる。
そして、プログラムの実行時間を短縮できる。
【図面の簡単な説明】
【図1】この発明の一実施例のIF文下ベクトル演算最
適化方法が適用されるコンパイラの機能ブロック図であ
る。
【図2】図1中の原始プログラムの一例を示す図であ
る。
【図3】図2に例示した第1中間テキストの一例を示す
流れ図である。
【図4】図3に例示した第1中間テキストから生成され
る第2中間テキストの一例を示す流れ図である。
【図5】図1中の原始プログラムの例を示す図である。
【図6】従来、IF文がある場合に原始プログラムを並
列実行可能として処理する場合にコンパイラが第2中間
テキスト作成時に行う変形を原始プログラムの形式で例
示した図である。
【図7】図5に例示した原始プログラムを並列実行可能
として処理する場合にコンパイラが行う変形にIF文ベ
クトル演算最適化方式を適用した場合に行われる変形を
原始プログラムの形式で例示した図である。
【図8】図5に例示した原始プログラムから生成される
第1中間テキストの一例を示す流れ図である。
【図9】この実施例のIF文下ベクトル演算最適化方式
において用いられる条件テーブルの分図(a)およびマ
スク情報テーブルの分図(b)のそれぞれの構成を示す
図である。
【図10】本実施例のIF文下ベクトル演算最適化方式
で図5に例示した原始プログラムを処理したときの条件
テーブルおよびマスク情報テーブルの内容を例示する図
である。
【図11】図8に例示した第1中間テキストから生成さ
れる第2中間テキストを示す流れ図である。
【図12】図11に例示した第2中間テキストからIF
文下ベクトル演算最適化方法によって変形を行った第2
中間テキストを示す流れ図である。
【符号の説明】
1 原始プログラム 2 コンパイラ 3 目的プログラム 21 構文解析手順 22 ベクトル化処理手順 23 コード生成手順 24 第1中間テキスト 25 第2中間テキスト 221 構造解析手順 222 IF文下条件解析手順 223 データ依存関係判定手順 224 ベクトルテキスト生成手順 225 ベクトル演算最適化処理手順 910 条件テーブル 911 次の条件テーブルへのポインタ 912 IF文下THEN節マスク情報テーブルへの
ポインタ 913 IF文下ELSE節マスク情報テーブルへの
ポインタ 914 上位条件テーブルへのポインタ 915 条件式のトライァド 920 マスク情報テーブル 921 次のマスク情報テーブルへのポインタ 922 条件テーブルへのポインタ 923 マスクテーブルへのポインタ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 記憶域上に規則的に並んでいるデータに
    対して並列演算を行うベクトル命令を有し、前記命令が
    マスクのオンあるいはオフによって、前記マスクに対応
    する要素の処理を行うかあるいは行わないかを制御する
    機能を有するベクトル処理プロセッサによって実行され
    る目的プログラムを与えられた原始プログラムから生成
    し出力するコンパイラには、 前記原始プログラムを読み込み構文解析を行って第1中
    間テキストを生成する構文解析手段と、 前記第1中間テキストから前記原始プログラムのループ
    中の制御の流れを解析する構造解析手段と前記ループ中
    のIF文の条件を解析するIF文化条件解析手段と前記
    ループ中に並列実行に矛盾するデータ依存関係があるか
    否かを判定するデータ依存関係判定手段と前記IF文化
    条件解析手段および前記データ依存関係判定手段によっ
    て並列実行可能と判定された前記ループ中の部分のベク
    トル処理用の第2中間テキストを生成するベクトルテキ
    スト生成手段と前記IF文化条件解析手段によってマス
    ク付きベクトルテキストの共通式削除処理を行うベクト
    ル演算最適化処理手段とを備えるベクトル化処理手段
    と、 前記ベクトル化処理部により生成された前記第2中間テ
    キストから目的プログラムを生成して出力するコード生
    成手段と、 を含むことを特徴とするIF文下ベクトル演算最適化方
    法。
JP3770893A 1993-02-26 1993-02-26 If文下ベクトル演算最適化方法 Withdrawn JPH06251054A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3770893A JPH06251054A (ja) 1993-02-26 1993-02-26 If文下ベクトル演算最適化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3770893A JPH06251054A (ja) 1993-02-26 1993-02-26 If文下ベクトル演算最適化方法

Publications (1)

Publication Number Publication Date
JPH06251054A true JPH06251054A (ja) 1994-09-09

Family

ID=12505030

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3770893A Withdrawn JPH06251054A (ja) 1993-02-26 1993-02-26 If文下ベクトル演算最適化方法

Country Status (1)

Country Link
JP (1) JPH06251054A (ja)

Similar Documents

Publication Publication Date Title
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPH06103463B2 (ja) コード生成方法
JPH0721033A (ja) 言語処理装置及びその方法
JPH06251054A (ja) If文下ベクトル演算最適化方法
JPH07141192A (ja) 翻訳処理方法
JPH05120323A (ja) If文下ベクトル演算最適化方式
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JPH05134882A (ja) 言語翻訳処理装置および方法
JP2019139675A (ja) ソースコード最適化装置、プログラムおよび方法
JP2008015665A (ja) プログラム解析方法及びプログラム解析装置
JPH04343140A (ja) コンパイラの最適化処理方法
JP2002082811A (ja) コンパイル方法および記録媒体
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP3734658B2 (ja) コンパイラ装置およびコンパイラプログラムを記録したコンピュータ読取可能な記録媒体
JPH04252336A (ja) プログラム最適化処理装置
JP3047418B2 (ja) ベクトル化処理方式
JPH09319591A (ja) ループ外への条件付き飛び出しがあるループの並列化方式
JP3226172B2 (ja) インライン展開システム
JP2674489B2 (ja) ベクトル化処理装置
JPH02253443A (ja) プログラム生成方法
Nagornaya Syntactically correct multilevel structured program design
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPH0950429A (ja) コンパイラにおけるポインタベクトル化システム
JPH0561687A (ja) コンパイラの処理方式
JPH06208470A (ja) 目的コード最適化装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20000509