JPH02110669A - ベクトル化処理方法 - Google Patents

ベクトル化処理方法

Info

Publication number
JPH02110669A
JPH02110669A JP63263181A JP26318188A JPH02110669A JP H02110669 A JPH02110669 A JP H02110669A JP 63263181 A JP63263181 A JP 63263181A JP 26318188 A JP26318188 A JP 26318188A JP H02110669 A JPH02110669 A JP H02110669A
Authority
JP
Japan
Prior art keywords
processing
combination
instruction
dependence
program
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
JP63263181A
Other languages
English (en)
Inventor
Ryoichi Narita
成田 良一
Hiroyuki Izumi
泉 寛幸
Hideki Sato
秀樹 佐藤
Fumiyo Suenaga
末永 富美代
Yasuhiro Iijima
飯島 泰裕
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP63263181A priority Critical patent/JPH02110669A/ja
Publication of JPH02110669A publication Critical patent/JPH02110669A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 (4I!  要) 計算機のベクトルプロセッサで実行するプログラムの生
成のためのベクトル化処理に関し、添字式が任意の一次
式で表されている配列データの処理のベクトル化処理方
法を目的とし、順次指定する配列の要素データの演算を
実行する繰り返し手順のプログラムを、ベクトル演算命
令のプログラムに変換する処理において、該繰り返し手
順中から、同一の配列について要素データを一方の命令
文で定義し、他方の命令文で定義又は参照する関係を有
する2命令文の組合わせをすべて抽出し、膝組合わせご
とに、該繰り返し処理の過程で当該要素データを指定す
る両添字式の大小関係が交代する点がある場合に、膝組
合わせを該交代点に着目して分割した組合わせに置き換
え、該置き換え処理をした膝組合わせに基づいて、該各
命令文の実行順序と繰り返し範囲を決定し、それぞれに
対応するベクトル演算命令に変換するように構成する。
〔産業上の利用分野〕
本発明は、計算機において、原始プログラムからベクト
ルプロセッサで実行する目的プログラムを生成するため
に、プログラムをベクトル処理命令からなるプログラム
に変換するベクトル化処理方法に関する。
ベクトル演算を特に高速に実行する、いわゆるベクトル
プロセッサを持つ計算機では、原始プログラムを翻訳し
て目的プログラムを生成するコンパイラの処理において
、所要部分のプログラムをベクトル化することにより、
ベクトルプロセッサで実行するようにする。
〔従来の技術〕
第6図に示すようにコンパイラ50は原始プログラム5
1を解析部52で解析して中間言語プログラム53に変
換し、中間言語のプログラムから所定の機械語による目
的プログラムをコード生成部56で生成する。その過程
において中間言語のプログラムを最適化部54で処理し
7て、プログラムの実行効率や記憶効率を改善するが、
必要な場合には更にベクトル化部55によるベクトル化
処理を行う。
プログラムのベクトル化とは、例えばPOIITRAN
プログラミング言語等で記述された原始プログラムにお
ける、公知のいわゆるDOループ等として記述された配
列データの処理を、ベクトル演算命令のプログラムに変
換することである。
ベクトル化処理は各Do小ループおいて、DOループの
制御変数の関数である添字式で指定される配列変数に関
する各演算命令の文に対応して、その命令文の演算を繰
り返し実行されるのと等価なベクトル演算命令の文に置
き換えることによって行われる。
従って、一つのベクトル演算命令は1以上の配列データ
間の各要素についての同一種類の演算を、指定の範囲の
要素について連続して実行する命令であり、他方DOル
ープは1回の繰り返しごとの中で、要素データ単位の各
種演算が混合して実行されるように記述されているので
、−iにベクトル化した場合とDo小ループ場合とで演
算順序が異なる部分が生しる。
そのために以下に述べるようにデータ依存関係を有する
命令について、例えげ第4図に示すように処理すること
により、演算順序が変わっても結果に影響しないように
する必要がある。
即ち、ベクトル化の対象は、130ループのプログラム
における配列データの添字式が、繰り返しの制御変数を
Iとして、I+cの形の単純な一次式で指定される場合
に限るものとして、先ず処理ステップ1でDOループ内
のデータ依存関係に基づくデータ依存集合を生成する。
これはDOループ内のすべての2命令文の組合わせのう
ち、両命令文間に次に述べるデータ依存関係のある組み
合わせの集合である。
こ\でデータ依存関係とは、当咳両命令文をr、gとし
て、同文で共通に引用している変数についての、次の3
種類の関係の何れかである。
■ 文fで定義してから文gで参照する■ 文fで参照
してから文gで定義する■ 文fで定義してから文gで
定義するなお、定義とは変数に値を設定する処理、参照
とは変数に設定されている値を読む処理であり、両文と
も参照のみの場合はデータ依存は無い。
組み合わせの2文のうち先に実行される文をf、他方の
文をg、共をする変数をXで表して、データ依存集合S
= ((f、  g、 X) 1とする。
次に処理ステップ2はデータ依存集合の各元<r、  
g、  x>ごとに、配列変数Xについて、fに現れる
添字式からgに現れる添字式を引いた差を求め、概念的
に、 その差が正又はOであれば f−Og その差が負であれば    g =Ofのように矢線が
引かれるものとして、矢線の始点に現れる命令文が、先
頭になるように各元の[、εの順序を入れ換える。
処理ステップ3で、所要の各2命令文間の実行順序が、
各元で示される順序に反しないように、すべての命令文
を整列し、処理ステップ4でそれらの各文ごとに単独で
繰り返し実行するようにD0ループを各文に分割する。
このようにDO小ループ構成を変更しても、処理ステッ
プ3による整列によりこのプログラムが原プログラムと
同一の結果を得ることは明らかである。
このようにすると、各DO小ループそれぞれ1ベクトル
処理命令に対応させることができるようになるので、処
理ステップ5において、各DO小ループ対応するベクト
ル処理命令に置き換えてベクトル化を終わる。
以上の処理を第5図(a)に示す簡単な例について説明
すると、このDOループ内の2命令文は配列変数Aにつ
いて前記■のデータ依存関係があるので、処理ステップ
1でデータ依存集合の元となり、処理ステップ2で、 f−g  ↑青幸肢=   (I+3)   −1=3
>0であるので、f =Ogと判定する。
従って処理ステップ3では元のま\の順序で命令文を配
列し、処理ステップ4で00ループを分割して第5図(
blを得る。これが前記(alのプログラムと等価なこ
とは一見して明らかである。処理ステップ6で各DO小
ループベクトル処理命令に置き換えて第5図fclとす
る。なお、ベクトル処理命令の各文においてオペランド
の配列変数は、配列名(添字式の下限:上限:増分) の形式で表され、増分が1のときは省略されるものとす
る。
〔発明が解決しようとする課題〕
以上の処理方法によれば、ベクトル化できる場合を、前
記のようにDO小ループ操り返し制御変数■について、
ループ内のすべての配列の添字式が1+cの形の単純な
場合に限定しなければならなず、この処理方法を添字式
がal+bの形の一般形の任意の一次式で表される場合
に拡張して適用することはできない。
本発明は、対象プログラムの配列データの添字式が任意
の一次式で表されていてもベクトル化が可能なベクトル
化処理方法を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図はコンパイラによるベクトル化処理の流れを示し10
〜12は処理ステップを示す。
〔作 用〕
順次指定する配列の要素データの演算を実行する繰り返
し手順のプログラムを、ベクトル演算命令のプログラム
に変換する場合に、先ず処理ステップ10で、繰り返し
手順中から、同一の配列について要素データを一方の命
令文で定義し、他方の命令文で定義又は参照する関係を
有する2命令文の組合わせをすべて抽出する。
次に処理ステップ11で、各組合わせごとに、操り返し
処理の過程で、当該要素データを指定する両添字式の大
小関係が交代する点である依存交代点を検出し、依存交
代点がある場合に、その組合わせを依存交代点に着目し
て分割した2つのff:[1合わせに置き換え、処理ス
テップ10で求めたすべての組み合わせについてこの処
理を行う。
処理ステップ12で、以上の置き換え処理をした組合わ
せに基づいて、各命令文の実行順序と繰り返し範囲を決
定し、それぞれに対応するベクトル演算命令に変換する
処理を行う。
以上の処理方法により、任意の一次式で表された添字式
を持つ配列を処理するプログラムをベクトル化すること
ができる。
〔実施例〕
添字式にa I+bの形でaが任意の値をとる一次式を
含む配列演算のDO小ループプログラムをベクトル化す
る場合には、第1図の処理ステップ10において先ず従
来と同様に、データ依存関係に基づく2命令文の組合わ
せを求め、そのようなすべての組合わせを元とする、 データ依存集合S= ((f、  g、  X) 1を
求める。
次に処理ステップ11において、データ依存関係集合に
ついて、8元(r、  g、  X)ごとに、命令文f
と命令文gにおける配列Xの要素データを指定する両添
字式の大小関係が反転する繰り返し処理点である依存交
代点(例えばDo小ループ制御変数を■として、反転の
起こる■の値で表す)を検出し、依存交代点のある組合
わせをその点に着目して2つの組合わせに分割する処理
を行う。
この処理はデータ依存関係集合の8元ごとに、例えば第
2図(alに示すようにする。即ち、命令文rにおける
データの添字式をal+b、gにおける添字式をcr+
dとして、先ず処理ステップ20で識別して、a=cで
あれば、処理ステップ21で前記従来の処理のように添
字式の差をとり、その符号によってその元の2命令文の
順序を次のように判定して入れ換える。
a、cが正の場合、 その差が正又は0であれば r =Ogその差が負であ
れば    g=o[ a、cが負の場合、 その差が正であれば    g =Ofその差が負又は
Oであれば f ==Ogafbの場合には処理ステッ
プ22において、添字式から特性方程式 a X + 
b = c Y −1−d  を作り、特性方程式が整
数解を持つか否かをテストするために、aとCの最大公
約数がd−bの約数になるかテストする。公知のように
このテストでaとCの最大公約数がd−bの約数であれ
ば(テスト成功)上記の特性方程式は整数解を持つので
、後述のように処理を進める。
しかし、テスト不成功の場合は、上記の特性方程式が整
数解を持たない場合であり、両添字式が同じ値をとるこ
とが無いことを示す。従って、この元の両命令文の間に
は、実はデータ依存関係が無いことになるので、処理ス
テップ31でこの元をデータ依存関係集合Sから除去し
て、データ依存関係のある命令文のヘクトル化処理から
除く。
処理ステップ22の最大公約数テストに成功したときは
、処理ステップ23で依存交代点を求める。
依存交代点とは、原DOループの繰り返し実行の各回に
おける両添字弐の値の大小関係に途中で反転がある場合
の境界点であり、従って添字式の2直線U、=al+b
とU2=cr+dとの交点の■の値として求まる。
次に処理ステップ24で、前記添字式のaとCの符号が
同じか異なるか判定し、同符号の場合には処理ステップ
25でaとCとの絶対値を比較し、次のように、元にお
ける命令文fとgの順序を入れ換える。
aの絶対値〈bの絶対値のとき f =6 gaの絶対
値〉bの絶対値のとき g−81f次の処理ステップ2
6で、先に求めた依存交代点と、DO小ループ指定され
た制御変数Iの下限から上限までの範囲(以下において
インデクス範囲という)との相対位置を識別し、範囲内
にあれば、処理ステップ27で次のように命令文のブロ
ック分けを行う。即ち、命令文f、gを下限から依存交
代点までのインデクス範囲で実行すべきブロックfb、
 、 gb、と、依存交代点より上限までのインデクス
範囲のブロックfb2、gb2に分けて、左右に分割し
たインデクス範囲に対応して、左のインデクス範囲につ
いて、もとのデータ依存関係集合の元の命令文の順序を
保持する元、右のインデクス範囲について命令文の順序
を逆にした元を、例えば次のように生成して、もとの1
個の元と置き換える。
(rbl、gbl、x)、  (gbz、fbz、X)
又、依存交代点がインデクス範囲の下限以下である場合
には、処理ステップ28でもとの元の命令文f、gの順
序を交換し、インデクス範囲の上限以上の場合にはもと
の元のま\とする。
処理ステップ24でa、cが異符号であった場合には、
処理ステップ29に進んで、依存交代点がインデクス範
囲内か判別し、範囲内であれば処理ステップ30で前記
処理ステップ27で説明したと同様に、依存交代点を境
界として命令文をブロック分けし、次のようなデータ依
存関係の2元を生成し、もとの元と置き換える。
<fbxP、bz、 X) 、  (gbl、fbz、
 X)又、処理ステップ29で依存交代点がインデクス
範囲外と判別した場合には、この元の両命令文が扱う添
字式に同じ値が現れることがないので、実はデータ依存
関係が存在しないことになり、この元を集合から除く。
以上のようにして、データ依存関係集合のすべての元に
ついてインデクス範囲の分割処理をした後、第1図の処
理ステップI2において、各ベクトル演算命令への変換
処理を行う。この詳細を第2図(blに例示する処理の
流れによって説明する。
先ず処理ステップ40において、各命令文について、そ
の属する8元のインデクス範囲の分割点のインデクスを
小さい順に並べて、それらのインデクスで区切られる区
間をそれぞれ細分化された各命令文のブロックのインデ
クス範囲とする。
その結果、データ依存関係集合の1つの元のみに属する
命令文のインデクス範囲はこの処理によって変わらない
が、複数の元に属する命令文(複数の命令文とデータ依
存関係を持つ命令文)のインデクス範囲が分割されてい
る場合は、一般にその命令文が関係する依存交代点の数
に応じてインデクス範囲が細分される。
次に処理ステップ41において、前記命令文のブロック
についてインデクス範囲の小さいブロックを大きいプロ
・ツクより先行させ、且つデータ依存関係集合の8元に
示す命令文の順序に従うように命令文を整列し、処理ス
テップ42で上記で整列した各命令文に対応するインデ
クス範囲に従ったDO半ループ構成するように00文を
付ける。この際隣接する同じ命令文のインデクス範囲が
連続する場合には、それを1つのインデクス範囲に結合
して1個のDO半ループするものとし、なるべくこのよ
うな結合ができるように考慮して、処理ステップ41の
整列を行うようにすることが望ましい。
次に、処理ステップ43で従来と同様に、各り。
ループを対応するベクトル処理命令に置き換えることに
よりベクトル化処理を完了する。
第3図は(a)に示す簡単なプログラム例について、以
上のベクトル化処理を適用した場合の処理を説明する図
である。
第3図falのプログラムについて、Doループ内の各
命令文をr、g、hとして、データ依存関係集合((f
、g、A)、  (f、h、A))が得られ、f(!:
g及びfとh両者ともに、各々の両添字式の係数が等し
くないので、(blに示すように特性方程式を作る。
それらの特性方程式について、最大公約数テストを行う
と、両者とも最大公約数が1であって当然テスト成功で
あるので、特性方程式〇X、YをIで置き換えて方程式
を解くことにより、(blに示す依存交代点が求まる。
f、gについては、添字式の係数が同符号の場合の処理
が実行され、fの方の係数が小さいので(f、  g、
 A)はそのま\次の処理に渡され、原のDO半ループ
インデクス範囲を参照して、依存交代点が範囲内である
から、インデクス範囲の分割処理に進み、 インデクス範囲 下限  1:上限 300下限 30
1:上限1000 に対して、(ft)+、gb+、 A)と(gbz、f
bz、 A )を生成して、元Cf、g+ A)を置き
換える。
又、r、hについては、添字式の係数が異符号の場合の
処理が実行され、依存交代点はこの場合もインデクス範
囲内であるので、 (f、h、A)に対して インデクス範囲 下限  1:上限 566下限 56
7:上限1000 に対し7、(fb:+、hbz、 A)と(hb+If
balA )を生成して、元(r、h、A)を置き換え
る。
次にインデクス範囲を細分すると、インデクス範囲は、
rについて 下限  1:上限 300 下1@301:上限 566 下限 567:上限1000 に細分され、fはfb+ 、fbzz、fb、の3ブロ
ツクになる。第3図(C)は以上の処理の意味を添字式
の直線で説明する図である。
そこで、データ依存関係集合を参照して、命令文を整列
し、対応する00ループを付けると(d+のプログラム
となり、それらのOO小ループ対応するベクトル演算命
令に変換して第3図(elのプログラムを得る。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、計算機
のベクトルプロセッサで実行するプログラムの生成のた
めのベクトル化処理において、添字式が任意の一次式で
表されている配列データを処理するプログラムのベクト
ル化ができるので、ベクトル化可能の範囲が拡大される
という著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、第2図は本
発明の実施例の処理の流れ図、第3図は本発明による処
理例の説明図、第4図は従来の処理の流れ図、 第5図は従来の処理例の説明図 第6図はコンパイラの構成例ブロック図である。 図において、 1〜5.10〜12.20〜31.40〜43は処理ス
テップ、50はコンパイラ、    54は最適化部、
(a) 本発明の実施例の処理の流れ図 第 2 図(その1) 本発明の構成を示す処理の流れ図 第1図 a)) 本発明の実施例の処理の流れ図 第 2 図(その2) (O) 本発明による処理例の説明図 第 3 図(そのl) (山 本発明による処理例の説明図 第 図(その2) (e) 本発明による処理例の説明図 第 図(その3) 従来の処理の流れ図 第 図

Claims (1)

  1. 【特許請求の範囲】 順次指定する配列の要素データの演算を実行する繰り返
    し手順のプログラムを、ベクトル演算命令のプログラム
    に変換する処理において、 該繰り返し手順中から、同一の配列について要素データ
    を一方の命令文で定義し、他方の命令文で定義又は参照
    する関係を有する2命令文の組合わせをすべて抽出し(
    10)、 該組合わせごとに、該繰り返し処理の過程で当該要素デ
    ータを指定する両添字式の大小関係が交代する点がある
    場合に、該組合わせを該交代点に着目して分割した組合
    わせに置き換え(11)、該置き換え処理をした該組合
    わせに基づいて、該各命令文の実行順序と繰り返し範囲
    を決定して、それぞれに対応するベクトル演算命令に変
    換する(12)ことを特徴とするベクトル化処理方法。
JP63263181A 1988-10-19 1988-10-19 ベクトル化処理方法 Pending JPH02110669A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63263181A JPH02110669A (ja) 1988-10-19 1988-10-19 ベクトル化処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63263181A JPH02110669A (ja) 1988-10-19 1988-10-19 ベクトル化処理方法

Publications (1)

Publication Number Publication Date
JPH02110669A true JPH02110669A (ja) 1990-04-23

Family

ID=17385895

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63263181A Pending JPH02110669A (ja) 1988-10-19 1988-10-19 ベクトル化処理方法

Country Status (1)

Country Link
JP (1) JPH02110669A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021018585A (ja) * 2019-07-19 2021-02-15 富士通株式会社 情報処理装置及び情報処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021018585A (ja) * 2019-07-19 2021-02-15 富士通株式会社 情報処理装置及び情報処理方法

Similar Documents

Publication Publication Date Title
Xue Fractional-order control systems: fundamentals and numerical implementations
Bruynooghe et al. Compiling control
Armadillo et al. Evaluation of Feynman integrals with arbitrary complex masses via series expansions
JPH08508838A (ja) 有限要素法の新しい解析法及び解析器
CA2135214C (en) Autonomous evolution type hardware design system
JPS6267634A (ja) 入力デ−タを出力デ−タ構造に一致させるオブジエクト・コ−ドを生成する方法
JPH02110669A (ja) ベクトル化処理方法
JPH05189472A (ja) コンパイラのベクトル化処理方式
Garbey et al. Massively parallel computation of conservation laws
JP3057904B2 (ja) ベクトル化方式
Margenstern Decidability and undecidability of the halting problem on Turing machines, a survey
JPH0594470A (ja) ベクトル化方式
JPH06214777A (ja) プログラム開発方法及び装置
JPS6266371A (ja) テキスト分離型学習システム
CN109800332A (zh) 处理字段名的方法、装置、计算机存储介质及终端
JPH0291766A (ja) 制御依存解析方式
CN108984168A (zh) 一种适用软件开发人员的效率工作台
JPH02163833A (ja) プログラム繰り返し構造のブロック分割方法並びに同期処理位置決定方法及びプログラム変換装置
JPS6162141A (ja) 論理型情報処理装置
Spencer et al. A unified approach to hypernumbers
Clint et al. A family of intermediate forms
Goos Software as Science? Commentary on Michael S. Mahoney,“Software as Science”
JPS61216085A (ja) ベクトル処理プログラム生成方式
JPH0554057A (ja) 非線形最適化方法及びその装置
Steier et al. Schorr-Waite Graph Marking