JP2870218B2 - 並列実行命令列生成方式 - Google Patents

並列実行命令列生成方式

Info

Publication number
JP2870218B2
JP2870218B2 JP12849891A JP12849891A JP2870218B2 JP 2870218 B2 JP2870218 B2 JP 2870218B2 JP 12849891 A JP12849891 A JP 12849891A JP 12849891 A JP12849891 A JP 12849891A JP 2870218 B2 JP2870218 B2 JP 2870218B2
Authority
JP
Japan
Prior art keywords
instruction sequence
vector
loop
parallel
executing
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.)
Expired - Fee Related
Application number
JP12849891A
Other languages
English (en)
Other versions
JPH04329472A (ja
Inventor
義樹 妹尾
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 Corp
Original Assignee
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP12849891A priority Critical patent/JP2870218B2/ja
Publication of JPH04329472A publication Critical patent/JPH04329472A/ja
Application granted granted Critical
Publication of JP2870218B2 publication Critical patent/JP2870218B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は並列実行命令列生成方式
に関し、特に高級言語で記述されたソースプログラムか
らオブジェクトプログラムを生成するコンパイラの自動
ベクトル化技術および自動並列化技術に係わる並列実行
命令列生成方式に関する。
【0002】
【従来の技術】従来のCRAY−XMPに代表されるベ
クトル型のマルチプロセッサにおいては、IF文を含む
ループがあった場合に、ベクトル実行及び並列実行が可
能であるとコンパイラが判断すれば、単一のループを複
数のプロセッサでベクトル実行するオブジェクトコード
をコンパイラが生成する事ができる。この際に、たとえ
ばN回の繰り返しを有するループを2台のプロセッサで
実行させるコードを生成する場合にはNを機械的に2等
分して(Nが奇数の場合には一方が他方より1多い)、
それぞれをベクトル実行するコードを生成する。この際
のベクトル実行は通常のIF文のベクトル化と同様の方
法を用いる。図5に例を示す。Iの値が1から200ま
で実行されるFORTRAN言語で記述されたDOルー
について、Iが1から100までの繰り返しをプロセ
ッサ#1で、Iが101から200までの繰り返しをプ
ロセッサ#2で実行するオブジェクトコードが生成され
る。実行の様子を説明するためにオブジェクトコードの
構成がFORTRAN言語の実行イメージで記述してあ
る。この際に各プロセッサで実行されるコードはそれぞ
れループ長100で実行されるベクトル命令列として生
成される。IF文は通常はマスク命令を用いて実行され
る。機種とIF文の形態によってはベクトル収集/拡散
命令を用いてIF文を実行するオブジェクトコードが生
成される場合もある。IF文がマスク命令により実現さ
れた場合のプロセッサ#1で実行されるオブジェクト命
令列の例を図6に示す。
【0003】
【発明が解決しようとする課題】上記のようなベクトル
化及び並列化を行うオブジェクトコードを生成した場合
には、その実行において、全体の繰り返し回数を2つに
分けて2台のプロセッサで実行するために、各プロセッ
サで実行するベクトル長が短くなるという問題点があ
る。図5の例では、ソースコードにおけるベクトル長が
200であるにもかかわらず、各プロセッサで実行され
るベクトル長は100となっている。
【0004】
【課題を解決するための手段】本発明の並列実行命令列
生成方法は、ベクトル命令の実行が可能な複数のプロセ
ッサを有する電子計算機システムにおいて利用され、高
級言語で記述されたソースプログラムよりオブジェクト
プログラムを生成するコンパイル装置において、ある条
件1が成立すればステートメント集合2を実行し、そう
でなければステートメント集合3を実行するIF〜TH
EN〜ELSE型の条件実行ブロックを含むベクトル実
行可能なループに対して、前記ループに、ループの繰り
返し間にまたがるデータ依存関係がなく、ループの各繰
り返しが並列実行可能であることを判定する並列化判定
手段4と、前記条件1が成立して、前記ステートメント
集合2を実行するループの繰り返しを選択して、ベクト
ル実行するベクトル命令列5を生成するベクトル命令列
生成手段6と、前記条件1が成立せずに、前記ステート
メント集合3を実行するループの繰り返しを選択して、
ベクトル実行するベクトル命令列7を生成するベクトル
命令列生成手段8と、前記ベクトル命令列5と、前記ベ
クトル命令列とを並列に別プロセッサで実行される並
列実行制御命令列9を生成する並列実行制御命令列生成
手段10と、を有する。
【0005】
【作用】ある条件1が成立すればステートメント集合2
を実行し、そうでなければステートメント集合3を実行
するIF〜THEN〜ELSE型の条件実行ブロックを
含むベクトル実行可能なループに対して、前記条件1が
成立する場合のループ繰り返しとそうでない場合の繰り
返しとを別々のプロセッサでベクトル実行する命令列を
生成する。
【0006】
【実施例】次に、本発明について図面を参照して説明す
る。図1は、本発明の並列実行命令列生成方式の一実施
例の構成を示すブロック図である。本実施例の並列実行
命令列生成方式は、IF〜THEN〜ELSEブロック
を有しかつベクトル実行が可能なループを含み高級言語
で記述されたソースプログラム1と、コンパイラ2と、
オブジェクトコードである命令列からなるオブジェクト
プログラム3とから構成されている。
【0007】コンパイラ2はベクトル命令列生成部21
と並列実行可能性判定部22とTHEN節命令列生成部
23とELSE節命令列選択部24と並列実行制御命令
列選択部25とを含んで構成されている。
【0008】またオブジェクトプログラム3は並列実行
制御命令列とTHEN節命令列とELSE節命令列とを
含んで構成される。
【0009】次に、このように構成された本実施例の並
列実行命令列生成方式の動作について説明する。
【0010】コンパイラ2によってソースプログラム1
が読み込まれると、ソースプログラム1中のIF〜TH
EN〜ELSE型の条件実行ブロックを含むベクトル化
可能なループに対して、並列実行可能性判定部22によ
って、ループの繰り返し間にデータ依存関係がなく、ル
ープの各繰り返しが並列実行可能であるかどうかが判定
される。並列実行が可能であれば、ベクトル命令生成部
21によって単一プロセッサのためのコード生成と同様
の方法でベクトル実行命令列が生成される。ただし、こ
のベクトル実行命令列はベクトル実行オブジェクトを生
成する前段階の中間テキストであり、レジスタ割当や各
種最適化はまだ施されていないものであるとする。
【0011】次に、THEN節命令列選択部23によっ
て、上記ベクトル実行命令列を、THEN節を実行し、
ELSE節は実行しないように再構成し、ベクトル化さ
れたTHEN節命令列32が生成される。
【0012】さらに、ELSE節命令列選択部24によ
って、上記ベクトル実効命令列を、ELSE節を実行
し、THEN節は実行しないように再構成し、ベクトル
化されたELSE節命令列33が生成される。
【0013】最後に並列実行制御命令列生成部25によ
って、一方のプロセッサではTHEN節命令列を実行
し、他方のプロセッサではELSE節を実行するための
制御命令を並列に実行するための並列実行制御命令列3
1が生成される。
【0014】例えば、コンパイラ2によって、図2に示
すようなFORTRAN言語で記述されたソースプログ
ラム11(図1ではソースプログラム1に対応する)中
に含まれるループ111からは、図3に示すような構造
オブジェクトプログラムが生成される。このオブジェ
クトプログラムは2つのプロセッサの両方にロードさ
れ、両方のプロセッサで並列に実行される。
【0015】図3において、並列実行制御命令列31
は、同一オブジェクトコードを実行する2つのプロセッ
サにおいて、それぞれのプロセッサに別の処理をさせる
ための制御を行う部分であり、この例ではP#がそれぞ
れのプロセッサの識別番号(1or2)を保持している
ものとする。この並列実行制御命令列31によってP#
の値が1のプロセッサはTHEN節命令列を、P#の値
2のプロセッサはELSE節命令列を実行するように
制御できる。
【0016】図4にTHEN節命令列とELSE節命令
列のオブジェクトプログラムの構造を示す。THEN節
命令列はIF文で示される論理式を評価し、論理式が真
である場合に対応するマスクを生成し、このマスクを用
いてTHEN節の命令列をマスク演算によりベクトル実
行する命令列である。ELSE節命令列はIF文で示さ
れる論理式を評価し、論理式が偽である場合に対応する
マスクを生成し、このマスクを用いてELSE節の命令
列をマスク演算によりベクトル実行する命令列である。
【0017】この例ではループ回転数(ベクトル長)が
200のループに対して、ベクトル長を200に保った
まま並列実行するオブジェクトコードが生成されてい
る。
【0018】
【発明の効果】以上説明したように本発明の並列実行命
令列生成方式は、ベクトル命令の実行が可能な複数のプ
ロセッサを有する電子計算機システムにおいて利用さ
、高級言語で記述されたソースプログラムよりオブジ
ェクトプログラムを生成するコンパイル装置において、
ある条件1が成立すればステートメント集合2を実行
し、そうでなければステートメント集合3を実行するI
F〜THEN〜ELSE型の条件実行ブロックを含むベ
クトル実行可能なループに対して、前記ループに、ルー
プの繰り返し間にまたがるデータ依存関係がなく、ルー
プの各繰り返しが並列実行可能であることを判定する並
列化判定手段4と、前記条件1が成立して、前記ステー
トメント集合2を実行するループの繰り返しを選択し
て、ベクトル実行するベクトル命令列5を生成するベク
トル命令列生成手段6と、前記条件1が成立せずに、前
記ステートメント集合3を実行するループの繰り返しを
選択して、ベクトル実行するベクトル命令列7を生成す
るベクトル命令列生成手段8と、前記ベクトル命令列5
と、前記ベクトル命令列とを並列に別プロセッサで実
行される並列実行制御命令列9を生成する並列実行制御
命令列生成手段10と、を設けることにより、ベクトル
長を短くすることなしにIF〜THEN〜ELSE型の
条件ブロックを並列実行できるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示すブロック図。
【図2】図1中のソースプログラムにおけるループの一
例を示す図。
【図3】図2に示すソースプログラムから図1のコンパ
イラにより生成されるオブジェクトプログラムの構成を
示す図。
【図4】本発明の一実施例により生成されたオブジェク
トコードの構成例を示す図。
【図5】従来方式による並列化例を示す図。
【図6】従来方式によるオブジェクトコードの構成例を
示す図。
【符号の説明】
1,11 ソースプログラム 2 コンパイラ 3 オブジェクトプログラム 21 ベクトル命令列生成部 22 並列実行可能性判定部 23 THEN節命令列生成部 24 ELSE節命令列生成部 25 並列実行制御命令列生成部 31 並列実行制御命令列 32 THEN節命令列 33 ELSE節命令列 111 IF〜THEN〜ELSE条件ブロックを含む
ループ例

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 ベクトル命令の実行が可能な複数のプロ
    セッサを有する電子計算機システムにおいて利用され
    高級言語で記述されたソースプログラムよりオブジェク
    トプログラムを生成するコンパイル装置において、 ある条件1が成立すればステートメント集合2を実行
    し、そうでなければステートメント集合3を実行するI
    F〜THEN〜ELSE型の条件実行ブロックを含むベ
    クトル実行可能なループに対して、 前記ループに、ループの繰り返し間にまたがるデータ依
    存関係がなく、ループの各繰り返しが並列実行可能であ
    ることを判定する並列化判定手段4と、 前記条件1が成立して、前記ステートメント集合2を実
    行するループの繰り返しを選択して、ベクトル実行する
    ベクトル命令列5を生成するベクトル命令列生成手段6
    と、 前記条件1が成立せずに、前記ステートメント集合3を
    実行するループの繰り返しを選択して、ベクトル実行す
    るベクトル命令列7を生成するベクトル命令列生成手段
    8と、 前記ベクトル命令列5と、前記ベクトル命令列とを並
    列に別プロセッサで実行させる並列実行制御命令列9を
    生成する並列実行制御命令列生成手段10と、 を有することによって、 前記条件1が成立する場合のループ繰り返しとそうでな
    い場合の繰り返しとを別々のプロセッサでベクトル実行
    する命令列を生成することを特徴とする並列実行命令列
    生成方式。
JP12849891A 1991-04-30 1991-04-30 並列実行命令列生成方式 Expired - Fee Related JP2870218B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12849891A JP2870218B2 (ja) 1991-04-30 1991-04-30 並列実行命令列生成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12849891A JP2870218B2 (ja) 1991-04-30 1991-04-30 並列実行命令列生成方式

Publications (2)

Publication Number Publication Date
JPH04329472A JPH04329472A (ja) 1992-11-18
JP2870218B2 true JP2870218B2 (ja) 1999-03-17

Family

ID=14986231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12849891A Expired - Fee Related JP2870218B2 (ja) 1991-04-30 1991-04-30 並列実行命令列生成方式

Country Status (1)

Country Link
JP (1) JP2870218B2 (ja)

Also Published As

Publication number Publication date
JPH04329472A (ja) 1992-11-18

Similar Documents

Publication Publication Date Title
US9038042B2 (en) Staged loop instructions
JP4077252B2 (ja) コンパイラプログラムおよびコンパイル処理方法
JP2921190B2 (ja) 並列実行方式
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP3317825B2 (ja) ループ最適化翻訳処理方法
JPH01108638A (ja) 並列化コンパイル方式
JP6913693B2 (ja) ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法
JPH05143332A (ja) 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法
Su et al. Automatic generation of fast BLAS3-GEMM: A portable compiler approach
JP3539613B2 (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
Kazi et al. Coarse-grained speculative execution in shared-memory multiprocessors
Schlansker et al. Control CPR: A branch height reduction optimization for EPIC architectures
Nicolau et al. Using an oracle to measure potential parallelism in single instruction stream programs
Chen et al. MetaFork: a compilation framework for concurrency models targeting hardware accelerators and its application to the generation of parametric CUDA kernels.
US20170206068A1 (en) Program optimization based on directives for intermediate code
JP2870218B2 (ja) 並列実行命令列生成方式
US6631465B1 (en) Method and apparatus for instruction re-alignment using a branch on a falsehood of a qualifying predicate
Kazi et al. Coarse-grained thread pipelining: A speculative parallel execution model for shared-memory multiprocessors
Udupa et al. Synergistic execution of stream programs on multicores with accelerators
Nicolau et al. Realistic scheduling: compaction for pipelined architectures
US10761820B2 (en) Assisting parallelization of a computer program
JP3196625B2 (ja) 並列化コンパイル方式
JPH09282173A (ja) プログラムの静的解析方法
JP3152194B2 (ja) コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体
JP4819442B2 (ja) コンパイル処理方法、コンパイル処理装置及びコンパイル処理プログラム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19981201

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080108

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090108

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100108

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees