JPH04286031A - プログラムのループ並列実行処理方法 - Google Patents

プログラムのループ並列実行処理方法

Info

Publication number
JPH04286031A
JPH04286031A JP5156191A JP5156191A JPH04286031A JP H04286031 A JPH04286031 A JP H04286031A JP 5156191 A JP5156191 A JP 5156191A JP 5156191 A JP5156191 A JP 5156191A JP H04286031 A JPH04286031 A JP H04286031A
Authority
JP
Japan
Prior art keywords
loop
variable
program
computer
rotation
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.)
Granted
Application number
JP5156191A
Other languages
English (en)
Other versions
JP3269639B2 (ja
Inventor
Koichiro Hotta
耕一郎 堀田
Hiroshi Nagakura
長倉 浩士
Eiji Yamanaka
栄次 山中
Hideki Nozaki
英樹 野崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP05156191A priority Critical patent/JP3269639B2/ja
Publication of JPH04286031A publication Critical patent/JPH04286031A/ja
Application granted granted Critical
Publication of JP3269639B2 publication Critical patent/JP3269639B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,例えばFORTRAN
プログラムなどにおける一つのループを,複数の計算機
で並列実行させるために,ループの各回転をそれぞれの
計算機で実行させるプログラムのループ並列実行処理方
法に関する。
【0002】FORTRANによる科学技術計算などで
は,配列を処理するときなど,DOループを使用するケ
ースが非常に多い。したがって,このDOループの回転
を,複数の計算機に分担させて並列に実行させると,処
理時間を短縮することができる。このような並列処理を
ループスライシング方式という。このループスライシン
グ方式に伴う技術をさらに改善することができれば,も
っと効率的にプログラムを実行することが可能になる。
【0003】
【従来の技術】図4は,従来技術の説明図である。並列
に実行可能な計算機が2台あるとすると,ループスライ
シング方式では,例えば図4の(a) に示すようなF
ORTRANで記述されたプログラム40のループを並
列化して,図4の(b) に示すような手続き41−1
,41−2に分割しし,2つの計算機上で実行させる。
【0004】図4に示す例では,奇数番目の回転を第1
の計算機で実行させ,偶数番目の回転を第2の計算機で
並列に実行させている。ここで,(a) のループの中
で使用されている変数Aは,ループの各回転ごとに一時
的データとして使用されている。これを並列実行する際
には,(b) に示すA1,A2のように,Aの領域を
各計算機ごとに用意し,領域の競合が起こらないようす
る必要がある。第1の計算機による処理中のデータを,
第2の計算機が使用すると,矛盾が生じるからである。 逆の場合も同様である。
【0005】
【発明が解決しようとする課題】一般のプログラムでは
,図4に示すAのような変数は,このループだけで使用
されることは稀であり,通常の場合,プログラム内の様
々な部分で同一の変数が(別々の意味で)使用される。
【0006】このとき,コンパイラの最適化機能による
データフロー解析によって,変数Aの使用がループ内に
閉じている,すなわち他のAの使用とは別個の変数とし
て扱っても構わないことがわかれば,図4に示す例のよ
うに,オリジナル変数Aに値を代入しなくても正しい結
果が得られることがわかるので,並列化が容易に可能で
ある。
【0007】しかし,このループで使用した変数Aの値
を,ループ外で使用する可能性があるときには(たとえ
実際には参照されないとしても),オリジナル変数Aに
値を代入する必要があるため,図4の(b) に示すよ
うな並列化は不可能であり,Aの値を保証するために複
雑な処理を行わなければならない。
【0008】実際に,図4に示す例で,変数Aの値をル
ープ終了後に使用するとすれば,第1の計算機による処
理結果のA1の値と,第2の処理結果のA2の値のどち
らが最終結果であるかを調べ,その値をループ終了時に
オリジナル変数Aに代入する複雑な処理が必要となる。
【0009】本発明は上記問題点の解決を図り,ループ
内で代入した変数の値を,ループ外で使用する可能性が
ある場合でも,並列化を実行でき,かつ無駄な処理を行
わないでも実行できるようにすることを目的としている
【0010】
【課題を解決するための手段】図1は,本発明の原理説
明図である。図1に示すプログラム10のように,DO
ループの中で変数Aに値を代入し,そのループの終了後
に同じ変数Aを参照しているとする。
【0011】コンパイラ11は,並列処理のために,D
Oループの回転を分割したオブジェクトプログラムを出
力する。そのオブジェクトプログラムの実行イメージは
,以下のとおりである。マルチプロセッサ12を構成す
る並列処理可能な計算機がN台あったとする。計算機1
3−1には,DOループの回転を分割した1つのDOル
ープ実行イメージ14−1を割り当て,計算機13−2
には,DOループの回転を分割した他のDOループ実行
イメージ14−2を割り当て,……,計算機13−Nに
は,DOループの回転を分割した他のDOループ実行イ
メージ14−Nを割り当てて,それぞれの計算機で並列
に実行させる。
【0012】ここで,ループの最終回転部分を,計算機
13−Nが担当するようになっていたとすると,計算機
13−NのDOループ実行イメージ14−Nでは,変数
Aの値を格納する場所としてオリジナル変数Aの領域を
そのまま使用する。他の計算機13−1,13−2,…
では,各計算機ごとに用意した変数Aの複製領域A1,
A2,…を使用する。これによって,ループ外での変数
Aの値を保証する。
【0013】
【作用】例えば,従来技術として説明したループスライ
シング方式を採る場合,各計算機での実行順序が元のル
ープでの回転関係を崩していないならば,どれか一つの
計算機での実行終了時のオリジナル変数に対応する変数
(図4の(b)に示すA1またはA2)の値が,オリジ
ナル変数Aの取るべき値に等しい。
【0014】これを利用して,オリジナル変数Aの取る
べき値に等しい方のAの複製(A1またはA2)の代わ
りに,オリジナル変数Aの領域を直接使用する。すなわ
ち,図1に示すように,N台の計算機13−1〜13−
Nがあった場合には,その中の最終回転を司る計算機の
変数を,複製領域ANではなく,オリジナル変数Aとし
てそのまま使用する。これにより全回転の終了時には,
最終結果がそのまま保証され,並列処理を高速に行うこ
とが可能になる。
【0015】
【実施例】図2は本発明を実施するための言語処理シス
テムの例,図3は本発明の実施例を示す。図2において
,20は例えばFORTRANで記述されたソースプロ
グラム,21はCPUおよびメモリなどからなる計算機
,22はFORTRANのコンパイラ11におけるソー
スプログラム解析部,23はプログラムの最適化を行う
最適化部,24はDOループを検出するループ検出部,
24はプログラムにおけるデータの流れを解析するデー
タフロー解析部,25はマルチプロセッサ用のオブジェ
クトプログラムを出力する場合にプログラムのある部分
を並列に実行できるかどうかを解析する並列性解析部,
27は並列に実行できる場合に各計算機用の中間コード
を生成する並列中間コード生成部,28はレジスタの割
り当てや領域の割り当てを行い,オブジェクトプログラ
ムのコードを生成するコード生成部,29はコンパイラ
11の出力結果であるオブジェクトプログラムを表す。
【0016】コンパイラ11が,例えば図3に示すソー
スプログラム20を入力し,それをコンパイルする例に
ついて説明する。コンパイラ11へのパラメタとして,
三重の並列化を行うことが指定されたとする。ソースプ
ログラム解析部22は,ソースプログラム20を解析し
,解析結果を中間テキストの形で最適化部23に渡す。 最適化部23では,まずループ検出部24によって,D
Oループを検出する。この例では,次のような内容のD
Oループである。
【0017】   データフロー解析部25は,ループ内外における各
変数等の関係を調べる。その結果により,並列性解析部
26は,このDOループについての並列実行が可能であ
るかどうかを決定する。並列実行が可能であれば,並列
中間コード生成部27により,DOループの回転を3個
に分割したオブジェクトプログラムを生成するための中
間コードを生成する。
【0018】このプログラムでは,変数Tには,DOル
ープの中で無条件に値の代入が行われている。この場合
には,変数Tの取るべき値は,ループの最終回転時に代
入される値であることは明らかである。そこで,各計算
機に割り当てる並列実行部分をあらかじめ固定的に分割
しておき,ループの最終回転を受け持つ計算機では,オ
リジナル変数Tの領域を使用する。これにより,容易に
変数Tの最終値を保証することが可能になる。
【0019】このことから,並列中間コード生成部27
では,図3の(ロ)に示すように, (a) DOループの回転の最初の1/3,(b) D
Oループの回転の中間の1/3,(c) DOループの
回転の最後の1/3,というように分割する。
【0020】そして,最終回転を含まない(a) およ
び(b) では,それぞれ変数Tの複製領域T1,T2
を使用し,最終回転を含む(c) では,オリジナル変
数Tの領域をそのまま使用する。なお,図3の(ロ)で
は,説明の簡単化のため,実行イメージをソースプログ
ラムの形式で表しているが,プログラムの実行時には,
計算機の扱う機械語コードに展開された内容になってい
る。
【0021】このコードを複数の計算機に分配して実行
させる場合,例えば周知のUNIXシステム(米国AT
&T社ベル研究所が開発したオペレーティング・システ
ム)における“fork”などのプロセス制御機能を利
用すればよい。他にも分配の方法は種々あるが,本発明
の要旨には関係しないため,説明を省略する。
【0022】図3の(ロ)に示す(a) 〜(c) の
実行イメージを実行した後,それの処理結果を“joi
n”などの制御機能によってまとめれば,それ以降に変
数Tの参照があっても,ループの最終回転で代入された
正しい変数値を使用することができることになる。
【0023】特に,FORTRANのDOループでは,
ループ回転数が実行直前に計算されるので,並列実行の
際の回転順序の組み合わせを固定的にすることが可能で
あり,この方法が有効である。ループの最初部分・中間
部分・最終部分というように3分割する代わりに,ルー
プ変数iの値を3で割ったときに1余る場合,ループ変
数iの値を3で割ったときに2余る場合,ループ変数i
の値が3で割り切れる場合というように,ループの回転
を分割し,それぞれの計算機に受け持たせるようにして
もよい。ただし,このように分割する場合には,最終回
転を受け持つ計算機の判定処理が複雑になることがある
【0024】図3に示す例では,ループの回転を3分割
しているが,もちろん並列に実行できる計算機数に応じ
た分割が可能であり,他の分割数でも同様に本発明を実
施することができる。
【0025】
【発明の効果】汎用プログラムを並列実行する場合に,
最も容易に並列化できるのは,ループの各回転の並列実
行である。ループ内で使用されている変数がループ外で
も参照されているように見えるプログラムは数多くあり
,その場合,従来技術では,自動並列化が抑止されるか
,無駄な同期処理などを行う必要があり,実行性能が低
下していた。本発明によれば,ループ内に閉じて変数が
使用されている場合と全く同等の実行時間で並列実行が
可能になるため,実行性能が向上する。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明を実施するための言語処理システムの例
を示す図である。
【図3】本発明の実施例を示す図である。
【図4】従来技術の説明図である。
【符号の説明】
10        プログラム 11        コンパイラ 12        マルチプロセッサ13−1〜13
−N    計算機

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  複数の計算機(13−1 〜13−N
    ) により,プログラム(10)中のループをある回転
    単位で分割して並列に実行するプログラムのループ並列
    実行処理方法において,ループ内で値が代入される変数
    (A) に対して,ループの最終回転を司る計算機以外
    の計算機では,各計算機ごとにその変数の複製領域(A
    1,A2, …) を使用し,ループの最終回転を司る
    計算機では,オリジナルの変数(A) をそのまま使用
    することにより,ループ外での変数の値を保証すること
    を特徴とするプログラムのループ並列実行処理方法。
JP05156191A 1991-03-15 1991-03-15 プログラムのループ並列実行処理方法 Expired - Fee Related JP3269639B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP05156191A JP3269639B2 (ja) 1991-03-15 1991-03-15 プログラムのループ並列実行処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP05156191A JP3269639B2 (ja) 1991-03-15 1991-03-15 プログラムのループ並列実行処理方法

Publications (2)

Publication Number Publication Date
JPH04286031A true JPH04286031A (ja) 1992-10-12
JP3269639B2 JP3269639B2 (ja) 2002-03-25

Family

ID=12890398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05156191A Expired - Fee Related JP3269639B2 (ja) 1991-03-15 1991-03-15 プログラムのループ並列実行処理方法

Country Status (1)

Country Link
JP (1) JP3269639B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325806A (ja) * 1994-06-01 1995-12-12 Nec Corp マルチプロセッサシステムのプロセス割当方法
WO2011158460A1 (ja) * 2010-06-14 2011-12-22 パナソニック株式会社 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325806A (ja) * 1994-06-01 1995-12-12 Nec Corp マルチプロセッサシステムのプロセス割当方法
WO2011158460A1 (ja) * 2010-06-14 2011-12-22 パナソニック株式会社 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ
US8850171B2 (en) 2010-06-14 2014-09-30 Panasonic Corporation Multithreaded parallel execution device, broadcast stream playback device, broadcast stream storage device, stored stream playback device, stored stream re-encoding device, integrated circuit, multithreaded parallel execution method, and multithreaded compiler
JP5945779B2 (ja) * 2010-06-14 2016-07-05 パナソニックIpマネジメント株式会社 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ

Also Published As

Publication number Publication date
JP3269639B2 (ja) 2002-03-25

Similar Documents

Publication Publication Date Title
JPH0475139A (ja) ループ並列化装置
JP2014216021A (ja) バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法
Kessler Scheduling expression DAGs for minimal register need
JPH04286031A (ja) プログラムのループ並列実行処理方法
JPH04293150A (ja) コンパイル方法
Wang et al. An efficient algorithm for irregular redistributions in parallelizing compilers
JPH01199233A (ja) パイプライン処理における条件分岐制御方式
Aggarwal et al. Preemptive scheduling on unrelated machines with fractional precedence constraints
JP2841403B2 (ja) ループ最適化処理方法
JP3006505B2 (ja) 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体
JP2564904B2 (ja) プログラム最適化処理方法
JP2002312167A (ja) 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
JPH03135630A (ja) 命令スケジューリング方式
JP2870218B2 (ja) 並列実行命令列生成方式
JPS62169272A (ja) ベクトル演算列ル−プアンロ−リング処理方式
JP4923288B2 (ja) 非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構
JPH0512033A (ja) 並列化コンパイル方式
JPH0573607A (ja) ベクトル命令生成処理方法
Breshears et al. MIMD versus SIMD computation: Experience with non-numeric parallel algorithms
Koseki et al. A global code scheduling technique using guarded PDG
JP2682206B2 (ja) 目的プログラムの最適化方式
JPS593647A (ja) デ−タ処理システム
JPH0644270B2 (ja) ベクトルプロセッサの制御処理方式
JPH08221276A (ja) コンパイラ
JP2809073B2 (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: 20011225

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

Free format text: PAYMENT UNTIL: 20080118

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090118

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100118

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees