JP2001175617A - コンパイラ並列化方法 - Google Patents

コンパイラ並列化方法

Info

Publication number
JP2001175617A
JP2001175617A JP35851699A JP35851699A JP2001175617A JP 2001175617 A JP2001175617 A JP 2001175617A JP 35851699 A JP35851699 A JP 35851699A JP 35851699 A JP35851699 A JP 35851699A JP 2001175617 A JP2001175617 A JP 2001175617A
Authority
JP
Japan
Prior art keywords
loop
reduction
closing price
price calculation
parallelization
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
JP35851699A
Other languages
English (en)
Inventor
Yoshikazu Matsubara
義和 松原
Shinichi Ito
信一 伊藤
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP35851699A priority Critical patent/JP2001175617A/ja
Publication of JP2001175617A publication Critical patent/JP2001175617A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】並列化コンパイラが、ソースプログラム中に現
れるリダクション式を含むループを、リダクション並列
化する際、その終値計算部分の目的コードの時間的な実
行効率は配慮されていなかった。 【解決手段】従来は並列化されていなかった終値計算部
分を並列化することにより、効率的に並列実行が可能な
目的コードを生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
システムに係り、特に高級言語で記述されたソースプロ
グラムを、マルチプロセッサ上で効率的に実行させる目
的コードを生成するためのコンパイラ技術に関する。
【0002】
【従来の技術】従来、特開平5−12033号に記載のよう
に、ループ内部に定義が存在する変数または配列の各々
に対して、総和型の演算の条件、あるいは、最大値・最
小値型の演算の条件を満たす等のリダクション式を含む
ループに対して、並列実行可能なマルチプロセッサ向け
の目的コードを生成するコンパイル方法に、そのループ
を、各プロセッサで並列に実行させる「並列化部分」
と、その各プロセッサの計算結果を用いて、元のループ
に対する最終的な結果を計算する「終値計算部分」に分
割することにより行うものがある。
【0003】ここで、一般に、リダクション式として認
識される計算パターンは、例えば、"X=X .op e"におい
て、.opは可換演算子(+,×,min,max 等)であり、X
は、このパターン以外にループ内で参照されない変数
(リダクション変数)である。
【0004】
【発明が解決しようとする課題】上記、従来例は、並列
化変換対象であるループの、並列化部分を並列に実行す
る目的コードを生成するものであり、その終値計算部分
は逐次的に実行される目的コードとして生成されること
から、後者の部分の目的コードの時間的な実行効率は配
慮されていなかった。
【0005】本発明が解決しようとする課題は、その終
値計算部分においても時間的な実行効率の高い目的コー
ドを生成する手法を提供することである。
【0006】
【課題を解決するための手段】複数のリダクション式を
含むループに対して従来のリダクション並列化が適用さ
れた場合、その終値計算部分には、それぞれのリダクシ
ョン式に対応した終値計算式が生成される。
【0007】本発明では、上記課題を解決するために、
その終値計算部分の各リダクション式に対応した終値計
算式を、それぞれ異なったプロセッサ上で実行させるこ
とにより、終値計算部分を並列に実行する目的コードを
生成する。これにより、生成された目的コードの時間的
な実行効率を向上させる。
【0008】
【発明の実施の形態】以下、発明の実施例について図面
を参照しつつ説明する。
【0009】図1にコンパイラの構成図を示す。(1
2)は、FORTRAN等の逐次型の高級言語で記述されたソ
ースプログラム(11)を入力して、マルチプロセッサ
上で実行可能な目的コード(19)を生成する並列化コ
ンパイラである。並列化の判定および変換は並列化変換
部(13)で実施する。並列化変換部(13)では、プ
ログラム中のループを認識し、それらの各ループに対し
て並列化が可能かどうかの判定を行い、並列化可能と判
定した場合はループを並列実行できるように変換する。
並列化変換部に、リダクション並列化を行うリダクショ
ン変換部(14)が含まれる。
【0010】リダクション変換部(14)は、リダクシ
ョン検出部(15)、リダクションループ変換部(1
6)、および、終値計算部分の並列化変換部(17)か
ら構成される。リダクション検出部においてループから
リダクション式を検出し、リダクションループ変換部
(16)において、検出したリダクション式を元に、当
該ループから、並列計算部分と終値計算部分を生成す
る。ここまでは、従来の技術であり、詳細は、特開平5-
12033号証を参照されたい。その後、終値計算部分の並
列化変換部(17)により、終値計算部分を並列化す
る。終値計算部分の並列化変換部(17)が本発明の提
供する装置が特に備える部分であり、目的コード(1
9)の時間的な実行効率を向上させる。
【0011】図2は、終値計算部分の並列化変換部(1
7)における処理手順を表すフローチャートである。ま
ず、リダクションループ変換部(16)により生成され
た終値計算式について、その演算量を見積もり、終値計
算部分の実行で利用可能なプロセッサの数を調べる(ス
テップ21)。次に、各終値計算式を、利用可能なプロ
セッサに対応付ける処理を行う。この対応付けにより、
あるプロセッサに対応付けられた終値計算式について
は、そのプロセッサ上で実行されるコードが後のステッ
プで生成されることになる。対応付けは、各プロセッサ
について、そのプロセッサが対応付いているすべての終
値計算式の演算量の和が、均一になるように行う(ステ
ップ22)。これは、例えば、以下アルゴリズムのよう
に、各終値計算式について、その演算量の大きいものか
ら順に、プロセッサへの対応付けを行う。
【0012】<アルゴリズム>各終値計算式について、そ
の演算量の大きいものから順にS1、S2、....、Sh、プロ
セッサがn個あるとしてそれらをP1、P2、...、Pn とす
る。またプロセッサPiに対応付け済みの終値計算式の演
算量の総和を保持する変数をΣi とする。
【0013】(a)kの初期値を1、各Σi (1<=i<=n)の初期
値は0とする。
【0014】(b)Σj=min{Σi|1<=i<=n} なるjを一つ選
び 終値計算式SkをプロセッサPjに割り付け、ΣjにSk
の演算量を加える。
【0015】(c)k=K+1 とし、k<h+1 なら(b)、(c)を再
び実行する。
【0016】その後、各プロセッサごとに、対応付けら
れた終値計算式を実行する目的コードを生成する。
【0017】以下では、図3のサンプルプログラム中の
ループ(31)を用いて、終値計算部分の並列化変換部
(17)の具体的な動作について説明する。なお、ここ
では、利用できるプロセッサが3個のマルチプロセッサ
向けの目的コードを生成することを仮定し、その変換過
程を説明する。
【0018】終値計算部分の並列化変換部(17)が動
作する前に、リダクション検出部(15)、と、リダク
ションループ変換部(16)により処理を行なう。ま
ず、リダクション検出部(15)がループ(31)から
リダクション式を検出する。
【0019】ループ(31)においては、演算子+,max,
minがそれぞれ可換演算子であるので、ループ(31)
内の”su1=...”,”ma1=...”,”mi1=...”,”su2
=...”,”ma2=...”,”mi2=...”なる6個の式を、リダ
クション式として検出する。次に、上記のリダクション
式を元に、リダクションループ変換部(16)がループ
(31)に対する並列処理部分と終値計算式部分の作成
を行う。ここでは、対象となるマルチプロセッサのプロ
セッサ数を3と仮定しているので、図4に示す(41)
(42)(43)なる3個の並列実行可能なループと、
(44)の終値計算部分を生成する。なお、図4におい
ては、変換前のループ中の変数”name”が、プロセッサ
番号nのプロセッサについてローカルな変数に置き換え
られた場合に、”$(n)name”という変数名を使用してい
る。例えば、(41)の変数”$(1)su1”は、(31)
の変数”su1”をプロセッサ1についてローカルな変数
に置き換えたものである。また、図4において、”barr
ier”は、同期命令を表す。それは、(41)(42)
(43)を割り当てたプロセッサについて、それらのプ
ロセッサのすべてが、この”barrier”を実行した後で
なければ、(44)の終値計算部分を実行できないこと
を指示している。
【0020】この後、(44)の終値計算部分に対し
て、終値計算部分の並列化変換部(17)が終値計算部
分の並列化変換を図2のフローチャートに基づいて実施
する。
【0021】ループ(31)の場合には、(44)から
6個の終値計算式を検出し、また、利用可能なプロセッ
サ数は、前記のすべてのプロセッサ数である3とする
(ステップ21)。ここで、6個の終値計算式の演算量
がすべて等しいと仮定し、(ステップ22)によって3
つのプロセッサのそれぞれに、2個づつの終値計算式を
対応付ける。
【0022】次に、(ステップ22)の対応付けに従っ
て、各プロセッサごとのコードを生成する(ステップ2
3)。ループ(31)の場合には、3つのプロセッサの
それぞれに、2個づつの終値計算式を対応付けているの
で、図5に示す、(51)(52)(53)なる3つの
各プロセッサごとのコードを生成する。
【0023】以上のように、(44)の終値計算部分
を、図5に示す3個のプロセッサで並列実行可能なコー
ドに変換した。
【0024】また、リダクション式を含むループを並列
化する際に出現した終値計算部分を並列化する場合を例
にとったが、一般にループを並列化する際に出現する種
々の終値計算部分にも本発明を同様に利用可能である。
【0025】最後に、本実施例における並列化コンパイ
ル方法は、コンパイル・プログラムとしてプログラム格
納媒体(10)に格納しておいてもよい。
【0026】
【発明の効果】本発明を用いた並列化コンパイラは、ソ
ースプログラム中に現れるリダクション式を含むループ
を、リダクション並列化する際、従来は並列化されてい
なかった終値計算部分を並列化することにより、効率的
に並列実行可能な目的コードを生成する。そのように生
成された目的コードは、マルチプロセッサ上でより高速
に実行することが可能である。
【図面の簡単な説明】
【図1】本発明に係るコンパイラの構成図である。
【図2】終値計算部分の並列化変換における動作フロー
図である。
【図3】FORTRAN言語で記述されたループを示す図であ
る。
【図4】図3のループから生成された、並列処理部分
と、終値計算式部分を示す図である。
【図5】図4の終値計算部分を並列化した後のコードを
示す図である。
【符号の説明】
10…プログラム格納媒体、11…ソースプログラム、
12…コンパイラ、13…並列化変換部、14…リダク
ション変換部、15…リダクション検出部、16…リダ
クションループ変換部、17…終値計算部分の並列化変
換部、18…目的コード生成部、19…目的コード、3
1…変換対象のループ、41…並列処理部分のループ、
42…並列処理部分のループ、43…並列処理部分のル
ープ、44…終値計算部分、51…並列化後の終値計算
部分、52…並列化後の終値計算部分、53…並列化後
の終値計算部分。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 マルチプロセッサ向けのコンパイラにお
    いて、ループを変換して複数のプロセッサ上で実行する
    目的コードを生成する際、その終値計算部分を並列に実
    行する目的コードを生成することを特徴とするコンパイ
    ル方法。
  2. 【請求項2】 請求項1で述べた機能を実現するプログ
    ラムを格納した記録媒体。
JP35851699A 1999-12-17 1999-12-17 コンパイラ並列化方法 Pending JP2001175617A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35851699A JP2001175617A (ja) 1999-12-17 1999-12-17 コンパイラ並列化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35851699A JP2001175617A (ja) 1999-12-17 1999-12-17 コンパイラ並列化方法

Publications (1)

Publication Number Publication Date
JP2001175617A true JP2001175617A (ja) 2001-06-29

Family

ID=18459731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35851699A Pending JP2001175617A (ja) 1999-12-17 1999-12-17 コンパイラ並列化方法

Country Status (1)

Country Link
JP (1) JP2001175617A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013117790A (ja) * 2011-12-01 2013-06-13 Canon Inc 情報処理装置、情報処理方法、及びプログラム
JP2016224882A (ja) * 2015-06-04 2016-12-28 富士通株式会社 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013117790A (ja) * 2011-12-01 2013-06-13 Canon Inc 情報処理装置、情報処理方法、及びプログラム
JP2016224882A (ja) * 2015-06-04 2016-12-28 富士通株式会社 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム

Similar Documents

Publication Publication Date Title
JP2921190B2 (ja) 並列実行方式
Cifuentes Structuring decompiled graphs
Hall et al. Interprocedural analysis for parallelization
JP2004038225A (ja) コンパイラプログラムおよびコンパイル処理方法
Sato et al. Automatic parallelization via matrix multiplication
JPH0814817B2 (ja) 自動ベクトル化方法
JP5810316B2 (ja) コンパイル装置、コンパイルプログラム及びループ並列化方法
Rocha et al. Vectorization-aware loop unrolling with seed forwarding
JPH06324881A (ja) メモリデータの重なり判定機能を備えたコンパイラ装置
US8117604B2 (en) Architecture cloning for power PC processors
JPH07110800A (ja) 最適化並列コンパイル装置及び最適化並列コンパイル方法
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JP2001175617A (ja) コンパイラ並列化方法
Masten et al. Function/kernel vectorization via loop vectorizer
Mosaner et al. Compilation Forking: A Fast and Flexible Way of Generating Data for Compiler-Internal Machine Learning Tasks
Liu et al. Combining Run-Time Checks and Compile-Time Analysis to Improve Control Flow Auto-Vectorization
Hoefler et al. Automatic complexity analysis of explicitly parallel programs
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
JPH04307624A (ja) ループ最適化方法及び装置
JPH09160784A (ja) 並列化コンパイル方式
McFarlin et al. Library function selection in compiling Octave
JP2682215B2 (ja) 並列処理時の手続き呼出し方式
Matos et al. Data flow analysis applied to optimize generic workflow problems
JPH04332044A (ja) コンパイラのベクトル化処理方式
JPH0512033A (ja) 並列化コンパイル方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040316

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040517

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040810