JPH04358264A - ベクトル化処理方式 - Google Patents
ベクトル化処理方式Info
- Publication number
- JPH04358264A JPH04358264A JP3159556A JP15955691A JPH04358264A JP H04358264 A JPH04358264 A JP H04358264A JP 3159556 A JP3159556 A JP 3159556A JP 15955691 A JP15955691 A JP 15955691A JP H04358264 A JPH04358264 A JP H04358264A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- loop
- processors
- vector length
- maximum
- 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
【0001】
【産業上の利用分野】本発明は、最大ベクトル長が固定
のマルチベクトル演算プロセッサを有する計算機におけ
るベクトル化処理方式に関するものである。
のマルチベクトル演算プロセッサを有する計算機におけ
るベクトル化処理方式に関するものである。
【0002】
【従来の技術】従来、最大ベクトル長が固定のマルチベ
クトル演算プロセッサを有する計算機におけるコンパイ
ラは、図2に示されるソースプログラムに対するベクト
ル化処理において、複数のベクトル演算プロセッサを最
大限利用するための考慮はなく、図5に示す処理フロー
のような単一のベクトル演算プロセッサのみを用いるオ
ブジェクトプログラムを生成していた。
クトル演算プロセッサを有する計算機におけるコンパイ
ラは、図2に示されるソースプログラムに対するベクト
ル化処理において、複数のベクトル演算プロセッサを最
大限利用するための考慮はなく、図5に示す処理フロー
のような単一のベクトル演算プロセッサのみを用いるオ
ブジェクトプログラムを生成していた。
【0003】
【発明が解決しようとする課題】マルチベクトル演算プ
ロセッサを有する計算機において、複数のベクトル演算
プロセッサを最大限利用したオブジェクトプログラムを
生成することは、プログラムの実行時間を効果的に短縮
できる。
ロセッサを有する計算機において、複数のベクトル演算
プロセッサを最大限利用したオブジェクトプログラムを
生成することは、プログラムの実行時間を効果的に短縮
できる。
【0004】ところが、上述した従来技術では、複数の
ベクトル演算プロセッサを有した計算機においても単一
のベクトル演算プロセッサを用いるオブジェクトプログ
ラムしか生成されないため、実行時に使用されないベク
トル演算プロセッサがあり、実行時間を最大限に短縮す
ることができないという欠点がある。
ベクトル演算プロセッサを有した計算機においても単一
のベクトル演算プロセッサを用いるオブジェクトプログ
ラムしか生成されないため、実行時に使用されないベク
トル演算プロセッサがあり、実行時間を最大限に短縮す
ることができないという欠点がある。
【0005】
【課題を解決するための手段】本発明のベクトル化処理
方式は、上記課題を解決するため、最大ベクトル長が固
定のマルチベクトル演算プロセッサを有する計算機にお
いて、ソースプログラムを入力し、構文解析を行って中
間テキストを生成する構文解析手段と、前記中間テキス
トからベクトル化可能なループ構造を検出するベクトル
化可能ループ検出手段と、前記ベクトル化可能ループ検
出手段で検出されたループ構造に対して、ループ回数と
最大ベクトル長とベクトル演算プロセッサ数とから、最
大ベクトル長をベクトル長として、複数のベクトル演算
プロセッサの利用が可能か否か検査するループ回数解析
手段と、前記ループ回数解析手段で、複数のベクトル演
算プロセッサの利用が可能と判定された場合、ループ回
数と最大ベクトル長とベクトル演算プロセッサ数とから
、ループを構成する必要がある場合にはループ構造を再
構成し、複数のベクトル演算プロセッサを用いたベクト
ルテキストを生成するベクトルテキスト生成手段とから
構成され、プログラム中に含まれる各々のループ構造に
対して、一連のベクトル化処理を行うベクトル化処理手
段と、 前記中間テキストを入力し、オブジェクトプ
ログラムを生成するコード生成手段とを有する。
方式は、上記課題を解決するため、最大ベクトル長が固
定のマルチベクトル演算プロセッサを有する計算機にお
いて、ソースプログラムを入力し、構文解析を行って中
間テキストを生成する構文解析手段と、前記中間テキス
トからベクトル化可能なループ構造を検出するベクトル
化可能ループ検出手段と、前記ベクトル化可能ループ検
出手段で検出されたループ構造に対して、ループ回数と
最大ベクトル長とベクトル演算プロセッサ数とから、最
大ベクトル長をベクトル長として、複数のベクトル演算
プロセッサの利用が可能か否か検査するループ回数解析
手段と、前記ループ回数解析手段で、複数のベクトル演
算プロセッサの利用が可能と判定された場合、ループ回
数と最大ベクトル長とベクトル演算プロセッサ数とから
、ループを構成する必要がある場合にはループ構造を再
構成し、複数のベクトル演算プロセッサを用いたベクト
ルテキストを生成するベクトルテキスト生成手段とから
構成され、プログラム中に含まれる各々のループ構造に
対して、一連のベクトル化処理を行うベクトル化処理手
段と、 前記中間テキストを入力し、オブジェクトプ
ログラムを生成するコード生成手段とを有する。
【0006】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
説明する。
【0007】図1は本発明の一実施例に使用する機能ブ
ロック図である。図1において、本発明は高級言語で書
かれたソースプログラム1と、コンパイラ2と、オブジ
ェクトプログラム3から構成される。
ロック図である。図1において、本発明は高級言語で書
かれたソースプログラム1と、コンパイラ2と、オブジ
ェクトプログラム3から構成される。
【0008】コンパイラ2は、構文解析手段21、ベク
トル化処理手段4、コード生成手段25、中間テキスト
26から構成され、ベクトル化処理手段4は、ベクトル
化可能ループ検出手段22、ループ回数解析手段23、
ベクトルテキスト生成手段24とを含んでいる。
トル化処理手段4、コード生成手段25、中間テキスト
26から構成され、ベクトル化処理手段4は、ベクトル
化可能ループ検出手段22、ループ回数解析手段23、
ベクトルテキスト生成手段24とを含んでいる。
【0009】次にコンパイラ2内の動作について、図を
用いて説明する。尚、実施例において、マルチベクトル
演算プロセッサの構成は加算・減算・乗算・除算の各々
二組とし、最大ベクトル長は256要素とする。
用いて説明する。尚、実施例において、マルチベクトル
演算プロセッサの構成は加算・減算・乗算・除算の各々
二組とし、最大ベクトル長は256要素とする。
【0010】構文解析手段21は、ソースプログラム1
を入力し、中間テキスト26を生成する。例えば、図2
で示されたC言語ソースプログラムに対し、図3に示さ
れた形式1中間テキストが生成される。
を入力し、中間テキスト26を生成する。例えば、図2
で示されたC言語ソースプログラムに対し、図3に示さ
れた形式1中間テキストが生成される。
【0011】ベクトル化可能ループ検出手段22は、中
間テキスト26から、配列要素を含んだループを検出し
、ループ構造内の配列要素各々に対し、添字式の初期値
、増分値と、ループの制御変数の初期値、増分値とから
、ベクトル化しても各々の配列要素の定義・参照関係が
正しく保たれるか否か検査し、ベクトル化可能となるル
ープ構造を検出する。例えば、図2に示したループ構造
に着目すると、ループ構造内にある配列要素a,b,c
に対しては、各々別の領域をアクセスするため、ベクト
ル化しても配列要素の定義・参照関係が正しく保たれる
と判定され、ベクトル化可能なループ構造となる。
間テキスト26から、配列要素を含んだループを検出し
、ループ構造内の配列要素各々に対し、添字式の初期値
、増分値と、ループの制御変数の初期値、増分値とから
、ベクトル化しても各々の配列要素の定義・参照関係が
正しく保たれるか否か検査し、ベクトル化可能となるル
ープ構造を検出する。例えば、図2に示したループ構造
に着目すると、ループ構造内にある配列要素a,b,c
に対しては、各々別の領域をアクセスするため、ベクト
ル化しても配列要素の定義・参照関係が正しく保たれる
と判定され、ベクトル化可能なループ構造となる。
【0012】ループ回数解析手段23は、ベクトル化可
能ループ検出手段22で検出されたループ構造に対して
、ループ回数を計算し、ループ回数がコンパイル時に定
数に確定した場合、ループ回数と最大ベクトル長とベク
トル演算プロセッサ数とから、最大ベクトル長をベクト
ル長とした場合に、複数のベクトル演算プロセッサの利
用が可能か否かを検査する。例えば、図2に示したルー
プ構造のループ回数を計算すると1500回と定数で確
定される。また、最大ベクトル長が256で、ベクトル
演算プロセッサ数は2なので、一度に並列実行可能な最
大配列要素数は512となる。よって、この場合複数の
ベクトル演算プロセッサの利用が可能と判定される。
能ループ検出手段22で検出されたループ構造に対して
、ループ回数を計算し、ループ回数がコンパイル時に定
数に確定した場合、ループ回数と最大ベクトル長とベク
トル演算プロセッサ数とから、最大ベクトル長をベクト
ル長とした場合に、複数のベクトル演算プロセッサの利
用が可能か否かを検査する。例えば、図2に示したルー
プ構造のループ回数を計算すると1500回と定数で確
定される。また、最大ベクトル長が256で、ベクトル
演算プロセッサ数は2なので、一度に並列実行可能な最
大配列要素数は512となる。よって、この場合複数の
ベクトル演算プロセッサの利用が可能と判定される。
【0013】ベクトルテキスト生成手段24は、ループ
回数解析手段23で、複数のベクトル演算プロセッサの
使用が可能と判定されたループ構造に対して、以下の処
理を行う。 (1)最大ベクトル長とループ回数から、半端なベクト
ル長を計算し、半端なベクトル長分のベクトル演算を行
う中間テキスト26を生成する。図2のループ構造にお
いて、半端なベクトル長を220として、a〔i〕=b
〔i〕+c〔i〕に対するベクトル演算を行う中間テキ
スト26が生成される。 (2)最大ベクトル長とベクトル演算プロセッサ数をも
とにしたループ回数から、ループを構成する必要があれ
ばループ構成を決め、複数のベクトル演算プロセッサを
用いてベクトル演算を行うための中間テキスト26を生
成する。ここで、ループを構成する場合に、ループ回数
から(1)で計算した半端なベクトル長を引いた値が、
一度に並列実行可能な最大配列要素数の倍数になってい
るか否か検査する。倍数でない場合は、余りの最大ベク
トル長分の配列要素に対してループの直後にベクトル演
算するための中間テキスト26も生成する。図2のルー
プ構造の場合まず、ループ回数1500と一度に並列実
行可能な最大配列要素数512と半端なベクトル長22
0とから、ループを再構成し、a〔i〕=b〔i〕+c
〔i〕に対して二つのベクトル加算プロセッサを用いて
ベクトル演算を行う中間テキスト26が生成される。ま
た、ループ回数1500から半端なベクトル長220を
引いた値1280は、一度に並列実行可能な配列要素数
512の倍数ではないため、ループの直後に余り256
要素分のベクトル演算を行う中間テキスト26も生成さ
れる。
回数解析手段23で、複数のベクトル演算プロセッサの
使用が可能と判定されたループ構造に対して、以下の処
理を行う。 (1)最大ベクトル長とループ回数から、半端なベクト
ル長を計算し、半端なベクトル長分のベクトル演算を行
う中間テキスト26を生成する。図2のループ構造にお
いて、半端なベクトル長を220として、a〔i〕=b
〔i〕+c〔i〕に対するベクトル演算を行う中間テキ
スト26が生成される。 (2)最大ベクトル長とベクトル演算プロセッサ数をも
とにしたループ回数から、ループを構成する必要があれ
ばループ構成を決め、複数のベクトル演算プロセッサを
用いてベクトル演算を行うための中間テキスト26を生
成する。ここで、ループを構成する場合に、ループ回数
から(1)で計算した半端なベクトル長を引いた値が、
一度に並列実行可能な最大配列要素数の倍数になってい
るか否か検査する。倍数でない場合は、余りの最大ベク
トル長分の配列要素に対してループの直後にベクトル演
算するための中間テキスト26も生成する。図2のルー
プ構造の場合まず、ループ回数1500と一度に並列実
行可能な最大配列要素数512と半端なベクトル長22
0とから、ループを再構成し、a〔i〕=b〔i〕+c
〔i〕に対して二つのベクトル加算プロセッサを用いて
ベクトル演算を行う中間テキスト26が生成される。ま
た、ループ回数1500から半端なベクトル長220を
引いた値1280は、一度に並列実行可能な配列要素数
512の倍数ではないため、ループの直後に余り256
要素分のベクトル演算を行う中間テキスト26も生成さ
れる。
【0014】以上の処理により、図3に示した形式1中
間テキストは、図4に示した形式2中間テキストに変換
される。
間テキストは、図4に示した形式2中間テキストに変換
される。
【0015】コード生成手段25は、中間テキスト26
からオブジェクトプログラム3を生成する。
からオブジェクトプログラム3を生成する。
【0016】
【発明の効果】以上説明したように本発明は、最大ベク
トル長が固定のマルチベクトル演算プロセッサを有する
計算機において、複数のベクトル演算プロセッサを最大
限利用することを可能とするため、最大ベクトル長で再
構成されたループに対するオーバヘッドは、従来のルー
プに対するオーバヘッドより減少し、また、各々のベク
トル演算プロセッサの並列実行も可能となることから、
従来の単一ベクトル演算プロセッサのみを使用した実行
時間を短縮できるという効果がある。
トル長が固定のマルチベクトル演算プロセッサを有する
計算機において、複数のベクトル演算プロセッサを最大
限利用することを可能とするため、最大ベクトル長で再
構成されたループに対するオーバヘッドは、従来のルー
プに対するオーバヘッドより減少し、また、各々のベク
トル演算プロセッサの並列実行も可能となることから、
従来の単一ベクトル演算プロセッサのみを使用した実行
時間を短縮できるという効果がある。
【図1】本発明の一実施例に使用するコンパイラの機能
ブロック図、
ブロック図、
【図2】C言語ソースプログラムの一例を示す図、
【図
3】図2のソースプログラムに対応した形式1中間テキ
ストを示す図、
3】図2のソースプログラムに対応した形式1中間テキ
ストを示す図、
【図4】図3の形式1中間テキストを本発明のベクトル
化処理方式によって変換した結果の形式2中間テキスト
を示す図、
化処理方式によって変換した結果の形式2中間テキスト
を示す図、
【図5】図3の形式1中間テキストを従来のベクトル化
処理方式によって変換した結果の形式2中間テキストを
示す図である。尚、図1で、実線は制御の流れを示し、
点線はデータの流れを示す。
処理方式によって変換した結果の形式2中間テキストを
示す図である。尚、図1で、実線は制御の流れを示し、
点線はデータの流れを示す。
1 ソースプログラム、
2 コンパイラ、
3 オブジェクトプログラム、
4 ベクトル化処理手段、
21 構文解析手段、
22 ベクトル化可能ループ検出手段、23
ループ回数解析手段、 24 ベクトルテキスト生成手段、25
コード生成手段、 26 中間テキスト。
ループ回数解析手段、 24 ベクトルテキスト生成手段、25
コード生成手段、 26 中間テキスト。
Claims (1)
- 【請求項1】 最大ベクトル長が固定のマルチべクト
ル演算プロセッサを有する計算機において、ソースプロ
グラムを入力し、構文解析を行って中間テキストを生成
する構文解析手段と、前記中間テキストからベクトル化
可能なループ構造を検出するベクトル化可能ループ検出
手段と、前記ベクトル化可能ループ検出手段で検出され
たループ構造に対して、ループ回数と最大ベクトル長と
ベクトル演算プロセッサ数とから、最大ベクトル長をベ
クトル長として、複数のベクトル演算プロセッサの利用
が可能か否か検査するループ回数解析手段と、前記ルー
プ回数解析手段で、複数のベクトル演算プロセッサの利
用が可能と判定された場合、ループ回数と最大ベクトル
長とベクトル演算プロセッサ数とから、ループを構成す
る必要がある場合にはループ構造を再構成し、複数のベ
クトル演算プロセッサを用いたベクトルテキストを生成
するベクトルテキスト生成手段とから構成され、プログ
ラム中に含まれる各々のループ構造に対して、一連のベ
クトル化処理を行うベクトル化処理手段と、 前記中
間テキストを入力し、オブジェクトプログラムを生成す
るコード生成手段とを有するコンパイラにおける、マル
チベクトル演算プロセッサの利用を可能とすることを特
徴とするベクトル化処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3159556A JPH04358264A (ja) | 1991-06-04 | 1991-06-04 | ベクトル化処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3159556A JPH04358264A (ja) | 1991-06-04 | 1991-06-04 | ベクトル化処理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04358264A true JPH04358264A (ja) | 1992-12-11 |
Family
ID=15696322
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3159556A Pending JPH04358264A (ja) | 1991-06-04 | 1991-06-04 | ベクトル化処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04358264A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018060432A (ja) * | 2016-10-07 | 2018-04-12 | 日本電気株式会社 | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム |
-
1991
- 1991-06-04 JP JP3159556A patent/JPH04358264A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018060432A (ja) * | 2016-10-07 | 2018-04-12 | 日本電気株式会社 | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2001166947A (ja) | コンパイル処理方式 | |
| US7428628B2 (en) | Method and apparatus for management of control flow in a SIMD device | |
| Emami et al. | Manticore: Hardware-accelerated RTL simulation with static bulk-synchronous parallelism | |
| Shin et al. | Pimflow: Compiler and runtime support for cnn models on processing-in-memory dram | |
| US5850551A (en) | Compiler and processor for processing loops at high speed | |
| Pryanishnikov et al. | Pointer alignment analysis for processors with SIMD instructions | |
| JPH04358264A (ja) | ベクトル化処理方式 | |
| Ramamoorthy et al. | A higher level language for micro-programming | |
| JP3196625B2 (ja) | 並列化コンパイル方式 | |
| JPS62204374A (ja) | 2倍演算最適化処理方式 | |
| JPH09282173A (ja) | プログラムの静的解析方法 | |
| JPS63155264A (ja) | ベクトル計算機用言語チユ−ニング処理方式 | |
| JP4819442B2 (ja) | コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム | |
| KR102025694B1 (ko) | 재구성 가능한 프로세서의 검증 방법 | |
| JPS6353646A (ja) | 最適目的プログラム生成方式 | |
| JPH025136A (ja) | 言語処理プログラムのエラー処理方式 | |
| JPH03116241A (ja) | コンパイラ | |
| JPH0512752B2 (ja) | ||
| JPH0241562A (ja) | ベクトル演算列分割処理方式 | |
| JP4579425B2 (ja) | 情報処理装置 | |
| JPS6336337A (ja) | スカラ/ベクトル命令の融合スケジユ−リング処理方式 | |
| JP2865694B2 (ja) | コンパイル方法 | |
| JPH04184676A (ja) | ベクトル化処理方式 | |
| Collesidis et al. | Control of multiprocessor SPS-1000 configurations using principles of data-flow architecture | |
| JPH0452987B2 (ja) |