JPH0367363A - ベクトル演算列アンローリング処理方式 - Google Patents
ベクトル演算列アンローリング処理方式Info
- Publication number
- JPH0367363A JPH0367363A JP20302189A JP20302189A JPH0367363A JP H0367363 A JPH0367363 A JP H0367363A JP 20302189 A JP20302189 A JP 20302189A JP 20302189 A JP20302189 A JP 20302189A JP H0367363 A JPH0367363 A JP H0367363A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- unrolling
- elements
- division
- processing
- 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
Links
Landscapes
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概 要〕
計算機において、ベクトル化目的プログラムを生成する
コンパイラのアンローリング処理に関し、ベクトル演算
のアンローリングの可能性を拡げて、目的プログラムの
実行効率を改善するベクトル演算列アンローリング処理
方式を目的とし、分割条件判定処理部と、演算列分割処
理部とを有し、該分割条件判定処理部は、ベクトル演算
を含むアンローリング処理対象のループについて、所要
のベクトル演算列を2組のベクトル演算列に展開した場
合に、該ベクトル演算列の一方で参照された後、他方で
定義されるベクトルであって、該参照側の先頭及び該定
義側の末尾の1以上の指定個数の要素を除いて、同一要
素が該参照及び定義されるベクトルを検出し、該演算列
分割処理部は、該ベクトル演算列の該指定個数の要素に
関わる演算部分を、該ベクトル演算列から除いて、スカ
ラ演算列に置き換えるようにアンローリングするように
構成する。
コンパイラのアンローリング処理に関し、ベクトル演算
のアンローリングの可能性を拡げて、目的プログラムの
実行効率を改善するベクトル演算列アンローリング処理
方式を目的とし、分割条件判定処理部と、演算列分割処
理部とを有し、該分割条件判定処理部は、ベクトル演算
を含むアンローリング処理対象のループについて、所要
のベクトル演算列を2組のベクトル演算列に展開した場
合に、該ベクトル演算列の一方で参照された後、他方で
定義されるベクトルであって、該参照側の先頭及び該定
義側の末尾の1以上の指定個数の要素を除いて、同一要
素が該参照及び定義されるベクトルを検出し、該演算列
分割処理部は、該ベクトル演算列の該指定個数の要素に
関わる演算部分を、該ベクトル演算列から除いて、スカ
ラ演算列に置き換えるようにアンローリングするように
構成する。
本発明は、計算機において、原始プログラムからベクト
ル化した目的プログラムを生成するコンパイラの、ベク
トル演算列アンローリング処理方式に関する。
ル化した目的プログラムを生成するコンパイラの、ベク
トル演算列アンローリング処理方式に関する。
〔従来の技術と発明が解決しようとする課題〕計算機で
実行するいわゆるベクトル化コンパイラは、例えばFO
RTRANプログラミング言語で記述された計算機の原
始プログラムを解析して、目的プログラムを生成する場
合に、目的プログラムの所要部分をベクトル演算列とし
て生成する、いわゆるベクトル化を行って、ベクトルプ
ロセッサによって実行できる目的プログラムにする。
実行するいわゆるベクトル化コンパイラは、例えばFO
RTRANプログラミング言語で記述された計算機の原
始プログラムを解析して、目的プログラムを生成する場
合に、目的プログラムの所要部分をベクトル演算列とし
て生成する、いわゆるベクトル化を行って、ベクトルプ
ロセッサによって実行できる目的プログラムにする。
このような、ベクトル化する部分について、ベクトル演
算列を含むループについて、ループの繰り返し回数を減
少するように演算を展開する、公知のいわゆるアンロー
リングを行って実行効率を改善する最適化が行われる。
算列を含むループについて、ループの繰り返し回数を減
少するように演算を展開する、公知のいわゆるアンロー
リングを行って実行効率を改善する最適化が行われる。
第3図は計算機の構成例を示すブロック図であり、コン
パイラ1のプログラム解析部3は原始プログラム2を入
力して解析し、その結果に基づいてベクトル化処理部4
が所定のベクトル化すべき部分をベクトル化し、例えば
所定の中間言語で表されたベクトル化中間テキスト8を
生威する。
パイラ1のプログラム解析部3は原始プログラム2を入
力して解析し、その結果に基づいてベクトル化処理部4
が所定のベクトル化すべき部分をベクトル化し、例えば
所定の中間言語で表されたベクトル化中間テキスト8を
生威する。
アンローリング処理部5は、このベクトル化中間テキス
ト8を処理してベクトル化したプログラムのアンローリ
ングを行って、最適化中間テキスト9を生威し、オブジ
ェクト生成部6がその結果を変換して、目的プログラム
7を出力する。
ト8を処理してベクトル化したプログラムのアンローリ
ングを行って、最適化中間テキスト9を生威し、オブジ
ェクト生成部6がその結果を変換して、目的プログラム
7を出力する。
第4図はベクトル化とアンローリングをプログラム例で
説明する図であり、第4図(a)はFORTRAN言語
で記述された原始プログラムの例であり、二重のDOル
ープの内側ループをベクトル化することにより、(b)
のテキストになる。(b)において、Jを制御変数とす
るDOループの本体部がベクトル演算を示し、A(本、
J)等によって別に指定される*のとる範囲の要素から
なるベクトルを示す。
説明する図であり、第4図(a)はFORTRAN言語
で記述された原始プログラムの例であり、二重のDOル
ープの内側ループをベクトル化することにより、(b)
のテキストになる。(b)において、Jを制御変数とす
るDOループの本体部がベクトル演算を示し、A(本、
J)等によって別に指定される*のとる範囲の要素から
なるベクトルを示す。
このテキストについて展開数を2とするアンローリング
、即ち制御変数Jによる繰り返しを2分の1にする展開
を行った結果が(C)である。
、即ち制御変数Jによる繰り返しを2分の1にする展開
を行った結果が(C)である。
しかし、本例を(C)のように直接展開した場合には、
以下に述べるような問題が生じるので、一般にこのよう
なアンローリングはできない。即ち、第5図(a)は例
えばJ=1の行でA(本、1)で表されるベクトルを表
し、横方向は*で指定されている要素の範囲(原始プロ
グラムのループの■の範囲)に対応する。このように表
すものとすると、第1行と第2行はJ=1における第1
のベクトル演算命令文の演算における、左辺のベクトル
A (*、 J)と右辺のベクトル八(傘−1,J+1
)を示し、図のJ=2の行の要素に8(*、J)の要素
を加えた結果が、J=1の行の1つ右の要素を定義する
ことになる。
以下に述べるような問題が生じるので、一般にこのよう
なアンローリングはできない。即ち、第5図(a)は例
えばJ=1の行でA(本、1)で表されるベクトルを表
し、横方向は*で指定されている要素の範囲(原始プロ
グラムのループの■の範囲)に対応する。このように表
すものとすると、第1行と第2行はJ=1における第1
のベクトル演算命令文の演算における、左辺のベクトル
A (*、 J)と右辺のベクトル八(傘−1,J+1
)を示し、図のJ=2の行の要素に8(*、J)の要素
を加えた結果が、J=1の行の1つ右の要素を定義する
ことになる。
同様に図の第3行と第4行はJ=1における第2のベク
トル演算命令文(以下に文という)の演算における、左
辺と右辺のAベクトルを示し、J=3の行の要素に演算
した結果がその上のJ=2の行の1つ右の要素を定義す
る関係になる。
トル演算命令文(以下に文という)の演算における、左
辺と右辺のAベクトルを示し、J=3の行の要素に演算
した結果がその上のJ=2の行の1つ右の要素を定義す
る関係になる。
こ\で、図に示す各ベクトルの全要素の処理が一括して
行われる場合には、第4図(C)の第1文によるベクト
ル演算が、第5図(a)に示す第1行と第2行のベクト
ルについて実行された後、第2文のベクトル演算が、第
5図(a)に示す第3行(実は、要素の範囲が1要素ず
れているのみで、第2行と同じベクトル)と第4行のベ
クトルについて実行され問題は生しない。
行われる場合には、第4図(C)の第1文によるベクト
ル演算が、第5図(a)に示す第1行と第2行のベクト
ルについて実行された後、第2文のベクトル演算が、第
5図(a)に示す第3行(実は、要素の範囲が1要素ず
れているのみで、第2行と同じベクトル)と第4行のベ
クトルについて実行され問題は生しない。
しかし、実行するベクトルプロセッサが持つベクトルレ
ジスタの容量の制限から、ベクトルの所要の全要素を1
度にベクトルレジスタにロードできない場合等には、ベ
クトルをいくつかの範囲に分割して、ベクトル演算を実
行する必要がある。
ジスタの容量の制限から、ベクトルの所要の全要素を1
度にベクトルレジスタにロードできない場合等には、ベ
クトルをいくつかの範囲に分割して、ベクトル演算を実
行する必要がある。
例えば第5図(a)で表すベクトルの中央付近に縦線で
示すように、その左側と右側の2部分に分けて処理する
必要がある場合には、第1行、第2行の左側の部分につ
いて第1文のベクトル演算、第3行、第4行の左側の部
分について第2文のベクトル演算が先ず実行され、次に
第1行、第2行の右側の部分について第1文のベクトル
演算、第3行、第4行の右側の部分について第2文のベ
クトル演算が行われる。
示すように、その左側と右側の2部分に分けて処理する
必要がある場合には、第1行、第2行の左側の部分につ
いて第1文のベクトル演算、第3行、第4行の左側の部
分について第2文のベクトル演算が先ず実行され、次に
第1行、第2行の右側の部分について第1文のベクトル
演算、第3行、第4行の右側の部分について第2文のベ
クトル演算が行われる。
その結果、第5図(a)に網かけをつけて示す、左と右
の境界部の要素については、最初の左側の第2文のベク
トル演算の結果で定義が更新された後に、右側の第1文
のベクトル演算のために参照されることになる。従って
、原始プログラムに記述された内容とは参照、定義の順
序が逆になり、正しい結果が保証できないという問題が
ある。
の境界部の要素については、最初の左側の第2文のベク
トル演算の結果で定義が更新された後に、右側の第1文
のベクトル演算のために参照されることになる。従って
、原始プログラムに記述された内容とは参照、定義の順
序が逆になり、正しい結果が保証できないという問題が
ある。
この説明の例では参照と定義の要素が1要素ずれている
が、2要素以上ずれている場合にも、ずれている要素数
の範囲で同様のことが起こる。
が、2要素以上ずれている場合にも、ずれている要素数
の範囲で同様のことが起こる。
本発明は、以上のような場合にも、アンローリングが可
能なように、ベクトル演算のアンローリングの可能性を
拡げて、目的プログラムの実行効率を改善するベクトル
演算列アンローリング処理方式を目的とする。
能なように、ベクトル演算のアンローリングの可能性を
拡げて、目的プログラムの実行効率を改善するベクトル
演算列アンローリング処理方式を目的とする。
第1図は、本発明の構成を示すブロック図である。
図はベクトル演算列アンローリング処理方式であって、
分割条件判定処理部10と、演算列分割処理部11とを
有し、分割条件判定処理部10は、ベクトル演算を含む
アンローリング処理対象であるベクトル化中間テキスト
8のループについて、所要のベクトル演算列を2組のベ
クトル演算列に展開した場合に、該ベクトル演算列の一
方で参照された後、他方で定義されるベクトルであって
、該参照側の先頭及び該定義側の末尾の1以上の指定個
数の要素を除いて、同一要素が該参照及び定義されるベ
クトルを検出し、演算列分割処理部11は、該ベクトル
演算列の該指定個数の要素に関わる演算部分を、該ベク
トル演算列から除いて、スカラ演算列に置き換えるよう
にアンローリングして、最適化中間テキスト12を生成
する。
分割条件判定処理部10と、演算列分割処理部11とを
有し、分割条件判定処理部10は、ベクトル演算を含む
アンローリング処理対象であるベクトル化中間テキスト
8のループについて、所要のベクトル演算列を2組のベ
クトル演算列に展開した場合に、該ベクトル演算列の一
方で参照された後、他方で定義されるベクトルであって
、該参照側の先頭及び該定義側の末尾の1以上の指定個
数の要素を除いて、同一要素が該参照及び定義されるベ
クトルを検出し、演算列分割処理部11は、該ベクトル
演算列の該指定個数の要素に関わる演算部分を、該ベク
トル演算列から除いて、スカラ演算列に置き換えるよう
にアンローリングして、最適化中間テキスト12を生成
する。
以上の処理方式により、従来アンローリングできない場
合にも、一部をスカラ演算に置き換えた以外の部分のベ
クトルについてベクトル演算のアンローリングが可能に
なる。
合にも、一部をスカラ演算に置き換えた以外の部分のベ
クトルについてベクトル演算のアンローリングが可能に
なる。
第1図において、分割条件判定処理部10は従来のベク
トル化処理部4の出力するベクトル化中間テキスト8を
入力として、アンローリング対象のループについて以下
のように所定の条件を有するループを検出し、そのルー
プは演算列分割処理部11に渡してアンローリングを実
行させ、その他については例えば従来のアンローリング
処理部5によって処理して、最適化中間テキス目2を生
威し、これを従来と同様にオブジェクト生成部6が目的
プログラムに変換するものとする。
トル化処理部4の出力するベクトル化中間テキスト8を
入力として、アンローリング対象のループについて以下
のように所定の条件を有するループを検出し、そのルー
プは演算列分割処理部11に渡してアンローリングを実
行させ、その他については例えば従来のアンローリング
処理部5によって処理して、最適化中間テキス目2を生
威し、これを従来と同様にオブジェクト生成部6が目的
プログラムに変換するものとする。
第2図は分割条件判定処理部10及び演算列分割処理部
11の処理の流れの一例を示す図であり、処理ステップ
20でアンローリング対象のベクトル演算列のループに
ついて、展開数が2の展開をして、処理ステップ21.
22でその2組のベクトル演算列について、第1のベク
トル演算列で参照された後、第2のベクトル演算列で定
義されるベクトルであって、参照側の先頭及び定義側の
末尾の1以上の指定個数の要素を除く部分では、同一要
素が参照及び定義されるようになるベクトルを検出する
。
11の処理の流れの一例を示す図であり、処理ステップ
20でアンローリング対象のベクトル演算列のループに
ついて、展開数が2の展開をして、処理ステップ21.
22でその2組のベクトル演算列について、第1のベク
トル演算列で参照された後、第2のベクトル演算列で定
義されるベクトルであって、参照側の先頭及び定義側の
末尾の1以上の指定個数の要素を除く部分では、同一要
素が参照及び定義されるようになるベクトルを検出する
。
前記の第4図(C)に示した例は指定個数を1として、
この条件に該当する場合に相当する。
この条件に該当する場合に相当する。
この条件はベクトル演算列の参照側のベクトル(この例
の場合の、第1文右辺の^(*−1,J+1)) と
、定義側のベクトル(第2交友辺のA(*、J+1))
とが、ベクトルを示す添字でのみ異なり、参照側から定
義側のベクトルの要素の範囲を引いた差(例において、
*−1から率を引いた差である−1)が負であることか
ら解析でき、その場合の指定個数は差の絶対値として定
まる。
の場合の、第1文右辺の^(*−1,J+1)) と
、定義側のベクトル(第2交友辺のA(*、J+1))
とが、ベクトルを示す添字でのみ異なり、参照側から定
義側のベクトルの要素の範囲を引いた差(例において、
*−1から率を引いた差である−1)が負であることか
ら解析でき、その場合の指定個数は差の絶対値として定
まる。
以上の条件判定で、条件に該当しなければ通常のアンロ
ーリング処理を行うが、条件に該当する場合には処理ス
テップ23で、分割処理を行って、指定個数の要素に関
わる演算部分を分離して、この部分をスカラ演算に変換
してアンローリングする。即ち、第4図(C)の例の場
合に(d)に示す第1及び第2文のようにスカラ演算に
分離し、ベクトル演算列については、ベクトルから該当
する要素を除くように要素の範囲を変更する。
ーリング処理を行うが、条件に該当する場合には処理ス
テップ23で、分割処理を行って、指定個数の要素に関
わる演算部分を分離して、この部分をスカラ演算に変換
してアンローリングする。即ち、第4図(C)の例の場
合に(d)に示す第1及び第2文のようにスカラ演算に
分離し、ベクトル演算列については、ベクトルから該当
する要素を除くように要素の範囲を変更する。
その結果、第4図(d)の演算を実行する場合を、前記
第5図(a)の場合と同様の様式で示すと、第5図い)
のようになり、網かけを付けて示す第1行と第2行の先
頭要素の参照関係の演算、及び第3行と第4行の末尾要
素の定義関係の演算がスカラ演算として実行され、その
他の要素についてベクトル演算が行われるようになる。
第5図(a)の場合と同様の様式で示すと、第5図い)
のようになり、網かけを付けて示す第1行と第2行の先
頭要素の参照関係の演算、及び第3行と第4行の末尾要
素の定義関係の演算がスカラ演算として実行され、その
他の要素についてベクトル演算が行われるようになる。
従って図の中央付近の縦線で示すようにベクトルが左右
に分割されて2回の演算になる場合にも、第2行の参照
要素の範囲と、第3行の定義要素の範囲にずれが無いの
で、参照と定義の順序の逆転は起゛こらない。
に分割されて2回の演算になる場合にも、第2行の参照
要素の範囲と、第3行の定義要素の範囲にずれが無いの
で、参照と定義の順序の逆転は起゛こらない。
なお、以上のようにしてスカラ演算を追加しても、ベク
トルプロセッサによるベクトル演算と並行して、通常の
プロセッサによってスカラ演算を実行できるので、殆ど
実行時間に影響しない。
トルプロセッサによるベクトル演算と並行して、通常の
プロセッサによってスカラ演算を実行できるので、殆ど
実行時間に影響しない。
以上の説明から明らかなように本発明によれば、計算機
のベクトル化目的プログラムを生成する場合において、
ベクトル演算のアンローリングの可能性を拡げて、目的
プログラムの実行効率を改善するという著しい効果があ
る。
のベクトル化目的プログラムを生成する場合において、
ベクトル演算のアンローリングの可能性を拡げて、目的
プログラムの実行効率を改善するという著しい効果があ
る。
第1図は本発明の構成を示すブロック図、第2図は本発
明の処理の流れ図、 第3図は従来の構成例を示すブロック図、第4図はプロ
グラム例の説明図、 第5図は演算実行状態を説明する図である。 図において、 1はコンパイラ、 2は原始プログラム、3はプ
ログラム解析部、4はベクトル化処理部、5はアンロー
リング処理部、 6はオブジェクト生成部、 7は目的プログラム、 8はベクトル化中間テキスト、 9.12は最適化中間テキスト、 10は分割条件判定処理部、 11は演算列分割処理部、20〜23は処理ステップ本
発明の構成を示すブロック図 第1図 従来の構成例を示すブロック図 第3図 本発明の処理の流れ図 第2図 プログラム例の説明図 第4図
明の処理の流れ図、 第3図は従来の構成例を示すブロック図、第4図はプロ
グラム例の説明図、 第5図は演算実行状態を説明する図である。 図において、 1はコンパイラ、 2は原始プログラム、3はプ
ログラム解析部、4はベクトル化処理部、5はアンロー
リング処理部、 6はオブジェクト生成部、 7は目的プログラム、 8はベクトル化中間テキスト、 9.12は最適化中間テキスト、 10は分割条件判定処理部、 11は演算列分割処理部、20〜23は処理ステップ本
発明の構成を示すブロック図 第1図 従来の構成例を示すブロック図 第3図 本発明の処理の流れ図 第2図 プログラム例の説明図 第4図
Claims (1)
- 【特許請求の範囲】 分割条件判定処理部(10)と、演算列分割処理部(1
1)とを有し、 該分割条件判定処理部(10)は、ベクトル演算を含む
アンローリング処理対象(8)のループについて、所要
のベクトル演算列を2組のベクトル演算列に展開した場
合に、該ベクトル演算列の一方で参照された後、他方で
定義されるベクトルであって、該参照側の先頭及び該定
義側の末尾の1以上の指定個数の要素を除いて、同一要
素が該参照及び定義されるベクトルを検出し、 該演算列分割処理部(11)は、該ベクトル演算列の該
指定個数の要素に関わる演算部分を、該ベクトル演算列
から除いて、スカラ演算列に置き換えるようにアンロー
リングすることを特徴とするベクトル演算列アンローリ
ング処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20302189A JPH0367363A (ja) | 1989-08-04 | 1989-08-04 | ベクトル演算列アンローリング処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20302189A JPH0367363A (ja) | 1989-08-04 | 1989-08-04 | ベクトル演算列アンローリング処理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0367363A true JPH0367363A (ja) | 1991-03-22 |
Family
ID=16467036
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20302189A Pending JPH0367363A (ja) | 1989-08-04 | 1989-08-04 | ベクトル演算列アンローリング処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0367363A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102016006253A1 (de) | 2015-05-28 | 2016-12-01 | Fanuc Corporation | Robotersystem zum Überwachen der Kontaktkraft von Roboter und Mensch |
-
1989
- 1989-08-04 JP JP20302189A patent/JPH0367363A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102016006253A1 (de) | 2015-05-28 | 2016-12-01 | Fanuc Corporation | Robotersystem zum Überwachen der Kontaktkraft von Roboter und Mensch |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6308250B1 (en) | Method and apparatus for processing a set of data values with plural processing units mask bits generated by other processing units | |
| Milik et al. | On translation of LD, IL and SFC given according to IEC-61131 for hardware synthesis of reconfigurable logic controller | |
| US5522074A (en) | Vectorization system for vectorizing loop containing condition induction variables | |
| JPH0367363A (ja) | ベクトル演算列アンローリング処理方式 | |
| JPH05189472A (ja) | コンパイラのベクトル化処理方式 | |
| JPH04293150A (ja) | コンパイル方法 | |
| JPH0377141A (ja) | コンパイル処理装置 | |
| JP2007334563A (ja) | マスク付きベクトル演算処理装置 | |
| JP2018060432A (ja) | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム | |
| JP5170021B2 (ja) | ベクトル演算装置およびベクトル演算方法 | |
| JPS63314675A (ja) | ル−プアンロ−リング処理方法 | |
| JPH0241562A (ja) | ベクトル演算列分割処理方式 | |
| JPS63155264A (ja) | ベクトル計算機用言語チユ−ニング処理方式 | |
| JPH03113505A (ja) | プログラム制御用関数型言語の展開方法 | |
| JPH02181830A (ja) | ループ最適化処理方法 | |
| JPH03110670A (ja) | ベクトル計算機 | |
| JPH02116930A (ja) | 入出力ライブラリにおける配列処理方式 | |
| JPH02110669A (ja) | ベクトル化処理方法 | |
| JP2518504B2 (ja) | 目的プログラム生成装置 | |
| JPH0269867A (ja) | ベクトル化方式 | |
| JP2533938B2 (ja) | ベクトル演算処理方式 | |
| JP2005293080A (ja) | 情報処理装置、プログラム処理方法及びコンパイル処理プログラム | |
| JPS6297031A (ja) | 仮数部のビツト数整合方式 | |
| JPH11212799A (ja) | ループ最適化方式およびそのプログラム記録媒体 | |
| JPS62239236A (ja) | プログラムのコンパイル装置 |