JPH0573607A - ベクトル命令生成処理方法 - Google Patents
ベクトル命令生成処理方法Info
- Publication number
- JPH0573607A JPH0573607A JP23067191A JP23067191A JPH0573607A JP H0573607 A JPH0573607 A JP H0573607A JP 23067191 A JP23067191 A JP 23067191A JP 23067191 A JP23067191 A JP 23067191A JP H0573607 A JPH0573607 A JP H0573607A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- vector instruction
- instruction sequence
- program
- vector
- 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
Links
Landscapes
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 計算機における、コンパイラ処理に関し、ベ
クトル化並列処理プログラムを効率よく生成できる、ベ
クトル命令生成処理方法を目的とする。 【構成】 所定の原始プログラムから、並列処理化した
ベクトル命令列を有する目的プログラムを生成する計算
機の処理において、第1処理段階1で、該原始プログラ
ムの所要部分について、単一処理としてベクトル命令列
を生成し、第2処理段階2で、該ベクトル命令列を複写
して、所要の並列処理数のベクトル命令列とし、処理対
象のデータを分割して、該並列処理数のベクトル命令列
に配分し、各該ベクトル命令列のオペランドを、それぞ
れ該配分したデータに対応するオペランドに変更して並
列処理プログラムとするように構成する。
クトル化並列処理プログラムを効率よく生成できる、ベ
クトル命令生成処理方法を目的とする。 【構成】 所定の原始プログラムから、並列処理化した
ベクトル命令列を有する目的プログラムを生成する計算
機の処理において、第1処理段階1で、該原始プログラ
ムの所要部分について、単一処理としてベクトル命令列
を生成し、第2処理段階2で、該ベクトル命令列を複写
して、所要の並列処理数のベクトル命令列とし、処理対
象のデータを分割して、該並列処理数のベクトル命令列
に配分し、各該ベクトル命令列のオペランドを、それぞ
れ該配分したデータに対応するオペランドに変更して並
列処理プログラムとするように構成する。
Description
【0001】
【産業上の利用分野】本発明は、計算機のプログラム生
成処理において、複数のベクトル処理装置で並列処理す
るように、ベクトル化した並列処理プログラムを生成す
るためのベクトル命令生成処理方法に関する。
成処理において、複数のベクトル処理装置で並列処理す
るように、ベクトル化した並列処理プログラムを生成す
るためのベクトル命令生成処理方法に関する。
【0002】
【従来の技術と発明が解決しようとする課題】原始プロ
グラムから、並列処理化した目的プログラムを生成する
ための、自動並列化コンパイラの処理においては、いわ
ゆるループスライスの手法により、ループをなすプログ
ラム部分を、複数のループに分割して、複数の処理装置
で並列に各ループを実行するようにする。
グラムから、並列処理化した目的プログラムを生成する
ための、自動並列化コンパイラの処理においては、いわ
ゆるループスライスの手法により、ループをなすプログ
ラム部分を、複数のループに分割して、複数の処理装置
で並列に各ループを実行するようにする。
【0003】即ち、ループスライス法では図5に示すよ
うに、原始プログラムに、例えば制御変数Iについて1
からNまで繰り返すループがある場合に、これを例えば
2つのループに分割して、1からN/2までのループ
と、N/2+1からNまでのループにする。
うに、原始プログラムに、例えば制御変数Iについて1
からNまで繰り返すループがある場合に、これを例えば
2つのループに分割して、1からN/2までのループ
と、N/2+1からNまでのループにする。
【0004】なおこの場合に、並列化によって単一シー
ケンシャル処理の場合と処理順序の変化が生じるので、
並列化に先立って、公知のいわゆるデータ依存関係解析
処理を行って、チェック及び必要な処置をする。
ケンシャル処理の場合と処理順序の変化が生じるので、
並列化に先立って、公知のいわゆるデータ依存関係解析
処理を行って、チェック及び必要な処置をする。
【0005】データ依存関係解析処理では、その処理順
序の変化によって、元のプログラム論理との矛盾(更新
内容が参照されるべきなのに、更新前に参照が行われる
ように順序が変わる等)を生じないかをチェックし、矛
盾を生じない場合、あるいは矛盾発生を除くように処置
した上で、以上のようなスライス処理を行う。
序の変化によって、元のプログラム論理との矛盾(更新
内容が参照されるべきなのに、更新前に参照が行われる
ように順序が変わる等)を生じないかをチェックし、矛
盾を生じない場合、あるいは矛盾発生を除くように処置
した上で、以上のようなスライス処理を行う。
【0006】又、いわゆるベクトル処理装置で実行され
るためのベクトル命令列を生成する、いわゆる自動ベク
トル化コンパイラの処理では、公知のように原始プログ
ラムの各最内ループを、ループに代わる処理を行うベク
トル命令の列に置き換えることができる。
るためのベクトル命令列を生成する、いわゆる自動ベク
トル化コンパイラの処理では、公知のように原始プログ
ラムの各最内ループを、ループに代わる処理を行うベク
トル命令の列に置き換えることができる。
【0007】従って、図5に示すように、ループスライ
スで分割された各ループを、自動ベクトル化コンパイラ
で処理することにより、複数のベクトル処理装置で並列
処理するベクトル化プログラムが生成できる。
スで分割された各ループを、自動ベクトル化コンパイラ
で処理することにより、複数のベクトル処理装置で並列
処理するベクトル化プログラムが生成できる。
【0008】しかし、この自動ベクトル化処理は、比較
的多量の翻訳時間を要する処理であり、以上の方法によ
れば並列化とベクトル化を行う場合には、このベクトル
化処理時間が更に並列数倍され、コンパイラ処理の時間
を非常に増大する。
的多量の翻訳時間を要する処理であり、以上の方法によ
れば並列化とベクトル化を行う場合には、このベクトル
化処理時間が更に並列数倍され、コンパイラ処理の時間
を非常に増大する。
【0009】本発明は、ベクトル化並列処理プログラム
を効率よく生成できる、ベクトル命令生成処理方法を目
的とする。
を効率よく生成できる、ベクトル命令生成処理方法を目
的とする。
【0010】
【課題を解決するための手段】図1は、本発明の構成を
示すブロック図である。図はベクトル命令生成処理方法
の構成であって、所定の原始プログラムから、並列処理
化したベクトル命令列を有する目的プログラムを生成す
る計算機の処理である。
示すブロック図である。図はベクトル命令生成処理方法
の構成であって、所定の原始プログラムから、並列処理
化したベクトル命令列を有する目的プログラムを生成す
る計算機の処理である。
【0011】第1処理段階1で、該原始プログラムの所
要部分について、単一処理としてベクトル命令列を生成
する。第2処理段階2で、該ベクトル命令列を複写し
て、所要の並列処理数のベクトル命令列とし、処理対象
のデータを分割して、該並列処理数のベクトル命令列に
配分し、各該ベクトル命令列のオペランドを、それぞれ
該配分したデータに対応するオペランドに変更して並列
処理プログラムとする。
要部分について、単一処理としてベクトル命令列を生成
する。第2処理段階2で、該ベクトル命令列を複写し
て、所要の並列処理数のベクトル命令列とし、処理対象
のデータを分割して、該並列処理数のベクトル命令列に
配分し、各該ベクトル命令列のオペランドを、それぞれ
該配分したデータに対応するオペランドに変更して並列
処理プログラムとする。
【0012】
【作用】本発明の処理方法により、比較的長い翻訳時間
を要する自動ベクトル化処理が、処理の並列数に関わら
ず1回にまとめられ、その後でベクトル化プログラムを
並列処理数に複写して、オペランドを所要の値に置き換
えることによって、並列処理プログラムを生成するの
で、ベクトル化並列処理プログラムの生成処理時間を大
幅に減少することができる。
を要する自動ベクトル化処理が、処理の並列数に関わら
ず1回にまとめられ、その後でベクトル化プログラムを
並列処理数に複写して、オペランドを所要の値に置き換
えることによって、並列処理プログラムを生成するの
で、ベクトル化並列処理プログラムの生成処理時間を大
幅に減少することができる。
【0013】
【実施例】図2は本発明の実施例の処理の流れを示す図
であり、処理段階1において、先ず処理ステップ10で自
動ベクトル化処理により、単一のシーケシャル処理のま
ゝベクトル化して、ベクトル命令列を生成する。
であり、処理段階1において、先ず処理ステップ10で自
動ベクトル化処理により、単一のシーケシャル処理のま
ゝベクトル化して、ベクトル命令列を生成する。
【0014】次に処理ステップ11で、このベクトル命令
列についてデータ依存関係解析処理を行い、ベクトル演
算範囲に現れるデータについて、前記のような意味の依
存関係を求める。
列についてデータ依存関係解析処理を行い、ベクトル演
算範囲に現れるデータについて、前記のような意味の依
存関係を求める。
【0015】処理ステップ12で、データ依存関係の結果
等に基づいてベクトル命令の検査処理を行い、並列化不
可能部分を可能な限り小部分にまとめて分離することに
より、並列化可能部分を大きくして取り出し、又並列の
処理間で同一のデータにアクセスが生じる場合には、必
要な同期及び排他制御のための命令を挿入する位置を指
定しておく。
等に基づいてベクトル命令の検査処理を行い、並列化不
可能部分を可能な限り小部分にまとめて分離することに
より、並列化可能部分を大きくして取り出し、又並列の
処理間で同一のデータにアクセスが生じる場合には、必
要な同期及び排他制御のための命令を挿入する位置を指
定しておく。
【0016】処理ステップ13で識別して、以上で並列化
可能なベクトル命令列が得られた場合には、ベクトル命
令列及び必要な制御情報を第2処理段階へ渡すので、第
2処理段階の処理ステップ14で並列化可能部分のベクト
ル命令列を所定の並列数になるように複写する。
可能なベクトル命令列が得られた場合には、ベクトル命
令列及び必要な制御情報を第2処理段階へ渡すので、第
2処理段階の処理ステップ14で並列化可能部分のベクト
ル命令列を所定の並列数になるように複写する。
【0017】処理ステップ15で、各並列処理にデータを
分割して割り当てるように、複写したベクトル命令のオ
ペランドの内容を置き換える。処理ステップ16で、それ
らの分担するデータに対応して、必要な同期処理、排他
制御処理のための命令を、指定の位置に挿入し、処理ス
テップ17で各並列処理部分の前後に並列処理の開始及び
終了の手続きを付加する。
分割して割り当てるように、複写したベクトル命令のオ
ペランドの内容を置き換える。処理ステップ16で、それ
らの分担するデータに対応して、必要な同期処理、排他
制御処理のための命令を、指定の位置に挿入し、処理ス
テップ17で各並列処理部分の前後に並列処理の開始及び
終了の手続きを付加する。
【0018】図3及び図4は、以上の処理をプログラム
例について説明する図であり、図3(a)は原始プログラ
ムのループの例であり、(b)はそれを目的プログラムに
より近い表現の中間命令に変換した、いわゆる中間表現
のプログラムである。なお、図の中の、等は両プロ
グラムの対応を示している。
例について説明する図であり、図3(a)は原始プログラ
ムのループの例であり、(b)はそれを目的プログラムに
より近い表現の中間命令に変換した、いわゆる中間表現
のプログラムである。なお、図の中の、等は両プロ
グラムの対応を示している。
【0019】図3(b)のプログラムについて、公知のベ
クトル化処理により、ベクトル化不可部分を分離し
て、その他のベクトル化可能部分をベクトル命令列に変
換した結果が図3(c)である。
クトル化処理により、ベクトル化不可部分を分離し
て、その他のベクトル化可能部分をベクトル命令列に変
換した結果が図3(c)である。
【0020】図3(c)において、「SVCT」と「EVCT」と
は、それぞれベクトル演算の開始及び終了を示すために
挿入された命令であり、又「VSUM」は総和の演算を行う
ベクトル命令、「VRC 」は一次回帰演算のベクトル命令
であり、その他「VLOAD 」等のように、「V 」を冠した
ものがベクトル命令で、それぞれV に続く名前で示す
「LOAD」等をベクトルデータについて実行する命令を表
している。
は、それぞれベクトル演算の開始及び終了を示すために
挿入された命令であり、又「VSUM」は総和の演算を行う
ベクトル命令、「VRC 」は一次回帰演算のベクトル命令
であり、その他「VLOAD 」等のように、「V 」を冠した
ものがベクトル命令で、それぞれV に続く名前で示す
「LOAD」等をベクトルデータについて実行する命令を表
している。
【0021】又、各ベクトル命令のオペランドにおい
て、「A(1:N)」のように表現されたものがベクトルデー
タを指示するオペランドであり、この例はベクトルデー
タA(1)からA(N)までを表す。
て、「A(1:N)」のように表現されたものがベクトルデー
タを指示するオペランドであり、この例はベクトルデー
タA(1)からA(N)までを表す。
【0022】なお、との部分は、データ依存関係に
よって、単純にはベクトル化できないので、特殊な変換
処理をしてベクトル化している。以上のようにして、単
一処理の場合のベクトル化を行った結果について、デー
タ依存関係解析の結果により、並列化が不可能な部分
を分離し、並列化可能な、、を複写して2並列処
理とし、オペランドを置き換え、同期、排他制御を追加
して図4の命令列を生成する。
よって、単純にはベクトル化できないので、特殊な変換
処理をしてベクトル化している。以上のようにして、単
一処理の場合のベクトル化を行った結果について、デー
タ依存関係解析の結果により、並列化が不可能な部分
を分離し、並列化可能な、、を複写して2並列処
理とし、オペランドを置き換え、同期、排他制御を追加
して図4の命令列を生成する。
【0023】図4において、の部分に挿入されている
「SMUTEX」と「EMUTEX」は排他制御の開始と終了の命令
であり、並列の両処理で同一の変数SUM に値を代入して
いるので、排他制御が必要になる。
「SMUTEX」と「EMUTEX」は排他制御の開始と終了の命令
であり、並列の両処理で同一の変数SUM に値を代入して
いるので、排他制御が必要になる。
【0024】又の部分で左側の処理に挿入されている
「POST」と、右側の「WAIT」とは同期制御の命令であ
り、左側の処理による配列データEへのロード (POSTの
直前のVLOAD 命令) を、右側の処理によるEのストア
(WAITの直後のVSTORE命令) より先に実行する必要があ
るために同期をとる。
「POST」と、右側の「WAIT」とは同期制御の命令であ
り、左側の処理による配列データEへのロード (POSTの
直前のVLOAD 命令) を、右側の処理によるEのストア
(WAITの直後のVSTORE命令) より先に実行する必要があ
るために同期をとる。
【0025】なお、本発明の方法は一重ループの場合に
特に有効であり、多重ループの部分については、その最
内ループを先ずベクトル化した後、外側のループについ
てループスライス法を適用すればよい。
特に有効であり、多重ループの部分については、その最
内ループを先ずベクトル化した後、外側のループについ
てループスライス法を適用すればよい。
【0026】
【発明の効果】以上の説明から明らかなように本発明に
よれば、計算機のコンパイラ処理において、ベクトル化
並列処理プログラムを効率よく生成できるという著しい
工業的効果がある。
よれば、計算機のコンパイラ処理において、ベクトル化
並列処理プログラムを効率よく生成できるという著しい
工業的効果がある。
【図1】 本発明の構成を示す処理の流れ図
【図2】 本発明の実施例の処理の流れ図
【図3】 プログラム例を説明する図
【図4】 プログラム例を説明する図
【図5】 ループスライスの例を説明する図
1 第1処理段階 2 第2処理段階 10〜17 処理ステップ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 野崎 英樹 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内
Claims (1)
- 【請求項1】 所定の原始プログラムから、並列処理化
したベクトル命令列を有する目的プログラムを生成する
計算機の処理において、 該原始プログラムの所要部分について、単一処理として
ベクトル命令列を生成し(1)、 該ベクトル命令列を複写して、所要の並列処理数のベク
トル命令列とし、 処理対象のデータを分割して、該並列処理数のベクトル
命令列に配分し、 各該ベクトル命令列のオペランドを、それぞれ該配分し
たデータに対応するオペランドに変更して並列処理プロ
グラムとする(2)ように構成されていることを特徴とす
るベクトル命令生成処理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23067191A JPH0573607A (ja) | 1991-09-11 | 1991-09-11 | ベクトル命令生成処理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23067191A JPH0573607A (ja) | 1991-09-11 | 1991-09-11 | ベクトル命令生成処理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0573607A true JPH0573607A (ja) | 1993-03-26 |
Family
ID=16911479
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP23067191A Withdrawn JPH0573607A (ja) | 1991-09-11 | 1991-09-11 | ベクトル命令生成処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0573607A (ja) |
-
1991
- 1991-09-11 JP JP23067191A patent/JPH0573607A/ja not_active Withdrawn
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4833606A (en) | Compiling method for vectorizing multiple do-loops in source program | |
| JP2921190B2 (ja) | 並列実行方式 | |
| JP3032031B2 (ja) | ループ最適化方法及び装置 | |
| EP0400328B1 (en) | Program parallelizing apparatus | |
| US7793278B2 (en) | Systems and methods for affine-partitioning programs onto multiple processing units | |
| JPH0475139A (ja) | ループ並列化装置 | |
| US4807126A (en) | Method for converting a source program having a loop including a control statement into an object program | |
| US5349665A (en) | Compiler vectorizing system | |
| KR20140131200A (ko) | 멀티스레드 프로그램 코드의 변환 장치 및 방법 | |
| JPH0573607A (ja) | ベクトル命令生成処理方法 | |
| JPH04293150A (ja) | コンパイル方法 | |
| JP3032030B2 (ja) | ループ最適化方法及び装置 | |
| JP3269639B2 (ja) | プログラムのループ並列実行処理方法 | |
| JP3114884B2 (ja) | ファジィ推論処理コンパイルシステム | |
| JP2841403B2 (ja) | ループ最適化処理方法 | |
| JPS62169272A (ja) | ベクトル演算列ル−プアンロ−リング処理方式 | |
| JPH08115220A (ja) | ループ最適化方法 | |
| JP2000163266A (ja) | 命令実行方式 | |
| JP2518504B2 (ja) | 目的プログラム生成装置 | |
| JPH0235349B2 (ja) | Ruupunaihairetsushoribekutorukashorihoshiki | |
| JP2682206B2 (ja) | 目的プログラムの最適化方式 | |
| JP2722493B2 (ja) | レジスタ割り付け処理方法 | |
| JPH0512033A (ja) | 並列化コンパイル方式 | |
| JPH0377141A (ja) | コンパイル処理装置 | |
| JPH0644270B2 (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: 19981203 |