JPH0512033A - 並列化コンパイル方式 - Google Patents

並列化コンパイル方式

Info

Publication number
JPH0512033A
JPH0512033A JP16265091A JP16265091A JPH0512033A JP H0512033 A JPH0512033 A JP H0512033A JP 16265091 A JP16265091 A JP 16265091A JP 16265091 A JP16265091 A JP 16265091A JP H0512033 A JPH0512033 A JP H0512033A
Authority
JP
Japan
Prior art keywords
loop
variable
parallel
array
processors
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
JP16265091A
Other languages
English (en)
Inventor
Makoto Matsumoto
誠 松本
Eiji Nunohiro
永示 布広
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 JP16265091A priority Critical patent/JPH0512033A/ja
Publication of JPH0512033A publication Critical patent/JPH0512033A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】並列実行可能なDOループの並列化可能な範囲
を拡大し、DOループの実行時間を最小にする目的プロ
グラムを生成する。 【構成】並列実行可能であると判断されたDOループ
は、このDOループ内で定義される各変数または配列に
対して総和型の演算あるいは最大値・最小値型の演算が
行われると判断すると、この変数または配列に対してプ
ロセッサ台数分だけ配列化した作業領域を全てのプロセ
ッサがアクセス可能なメモリ領域にとり、DOループ内
での参照をこの作業領域への参照に替え、並列処理の終
了後、これらの作業領域に記憶された値をもとにしてD
Oループに関する総和値あるいは最大値・最小値を計算
する目的コードを生成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マルチプロセッサシス
テムに係り、特に高級言語で記述されたソースプログラ
ムをマルチプロセッサシステム上で効率的に実行させる
ための目的プログラムを生成する方式に関する。
【0002】
【従来の技術】従来、並列実行可能なDOループの実行
方法については、特開平1−280862号公報に記載
のように、並列実行可能なDOループ内でDOループの
繰返しごとに常に定義された変数がこのDOループ外で
参照される際、この変数をこのDOループのループ長だ
けのサイズの配列に変換した後、DOループ内における
この変数に対するアクセスをDOループの各繰返しに対
応付けられた配列要素に替え、この配列の最終要素の値
を並列実行可能なDOループ内で定義された変数の最終
値としていた。
【0003】
【発明が解決しようとする課題】上記従来技術は、マル
チプロセッサシステムで並列実行可能なDOループを実
行する際、このDOループ内で定義した変数がDOルー
プの外側で参照される場合、繰返しにおけるこの変数の
最終値を保証する方法をのべたものである。
【0004】しかし、並列実行可能なDOループ内で定
義される変数に対してこのDOループの繰返しにおける
総和を計算するような場合には、上記従来技術による方
法で、この変数をDOループのループ長だけのサイズの
配列に変換し、DOループ内における変数に対するアク
セスをDOループの各繰返しに対応付けられた配列要素
に替えたのでは目的通りの総和を計算することができ
ず、並列実行できないという問題点があった。
【0005】また、並列実行可能なDOループ内で定義
される変数に対してこのDOループの繰返しにおける最
大値あるいは最小値を計算するような場合には、並列実
行可能なDOループ内でDOループの繰返しごとに常に
定義されるとは限らないため、上記従来技術による方法
では並列実行出来ないという問題点があった。
【0006】本発明は、上記の問題点を解決し、また、
上記従来技術で適用出来なかった範囲にまで並列化可能
性を拡大し、並列実行可能なDOループに対して実行時
間を最小にする目的プログラムを生成することを目的と
する。
【0007】
【課題を解決するための手段】上記目的を解決するため
に、マルチプロセッサシステムに対して高級言語を機械
語に翻訳して目的プログラムを生成するコンパイラにお
いて、並列実行可能なDOループを分割して実行する
際、このDOループ内で定義が存在する変数または配列
の各々に対して、総和型の演算の条件あるいは最大値・
最小値計算型の演算の条件を満足するかどうかを判定す
る手段と、条件を満足する場合、この変数または配列要
素の各々に対して、プロセッサ台数分だけ配列化した作
業領域を全てのプロセッサがアクセス可能なメモリ領域
に確保する手段と、この変数または配列に対するアクセ
スを各プロセッサに対応付けて上記作業領域に替える手
段と、DOループの処理の終了後、上記満足される条件
が総和型の演算の条件の場合にはこれらの作業領域に記
憶された値の総和を、上記満足される条件が最大値・最
小値計算型の演算の条件の場合にはこれらの作業領域に
記憶された値のうちの最大値あるいは最小値をDOルー
プに関する最終値として保証する手段を備えることで達
成できる。
【0008】
【作用】コンパイラは、並列実行可能なDOループ内で
このDOループの繰返しごとに定義が生じる可能性のあ
る変数や配列に対して、総和型の演算が行われるか否か
及び最大値・最小値計算型の演算が行われるか否かを解
析する。
【0009】コンパイラは、これら変数や配列に対し
て、DOループ繰返しにおいて総和型の演算あるいは最
大値・最小値計算型の演算が行われると判断したとき
は、これら変数または配列要素の各々に対して、プロセ
ッサ台数分だけ配列化した作業領域を全てのプロセッサ
がアクセス可能なメモリ領域に確保し、変数または配列
に対するDOループ内でのアクセスを各プロセッサに対
応付けて上記作業領域に替えることにより、各作業領域
に、総和型の演算であった場合は各プロセッサごとに計
算された部分和を、最大値・最小値計算型の演算であっ
た場合は各プロセッサごとに計算された範囲内での最大
値あるいは最小値を格納する。
【0010】DOループの処理の終了後、総和型の演算
であった場合はこれらの作業領域に記憶された値の総和
を、最大値・最小値計算型の演算であった場合はこれら
の作業領域に記憶された値のうちの最大値あるいは最小
値をこのDOループに関する最終値として保証する。
【0011】
【実施例】以下、本発明の一実施例について図面を参照
しつつ説明する。
【0012】図1にFORTRANコンパイラ全体の構
成を示す。図において、太い矢印は制御の流れを示し、
太い矢印はデータの流れを示す。構文解析部2は、FO
RTRANソースプログラム1を入力して中間語3に変
換する。並列化判定部と最適化部を含む中間部4は、中
間語3を入力して、並列化変換を行った後の中間語5に
変換する。コード生成部6は、中間語5を入力して目的
プログラム7を生成する。本発明は、中間部4にかかわ
り、目的プログラム7の実行性能を向上させるものであ
る。
【0013】図2に中間部4の並列化判定部の生成オブ
ジェクト決定処理の流れを示す。図3に並列実行可能な
DOループの並列実行の概略を示す。
【0014】図4、および図5にFORTRANソース
プログラム1の例を示す。以下、図4、図5、および図
6を例に詳細な動作を説明する。ここでDOループ1
2,18が並列実行可能なDOループとする。
【0015】図4は、並列実行可能なDOループ内で定
義された変数S,T及び配列Uに対して総和型の演算が
行われる例である。図5は、並列実行可能なDOループ
内で定義された変数Aに対して最小値計算型の演算、配
列Bに対して最大値計算型の演算が行われる例である。
【0016】なおコンパイラによる当該DOループの制
御構造や変数、配列の依存関係のみの並列実行可能性の
判定は、公知技術1(特開平1−108638)を参照
されたい。
【0017】公知技術1により当該DOループの制御構
造や変数、配列の依存関係から並列実行可能であると判
断すると(ステップ8)、当該DOループ内で定義され
る各変数または配列に対して総和型の演算あるいは最大
値・最小値型の演算が行われるかどうかを判断する(ス
テップ9)。対象とする変数をSとすると、変数Sに対
して総和型の演算が行われるかどうかは S=S+tmp … の型、またはこの型に置換可能な文(複数箇所存在する
ことも、条件下にあることも許容する)により変数Sに
対する演算が行われるかどうかにより判断する。
【0018】また、変数Mに対して最大値あるいは最小
値計算型の演算が行われるかどうかは、FORTRAN
ソースコードで表現するとき (ただしρは.NE.以外の関係演算子)の型、または
この型に置換可能な文によりこのDOループ繰返しによ
り変化する可能性のあるある値xのDOループ繰返しに
関する最大値あるいは最小値を求める演算が行われるか
どうかにより判断する。
【0019】配列に対して総和型の演算あるいは最大値
・最小値計算型の演算が行われるかどうかは、各配列要
素に対して総和型あるいは最大値・最小値計算型の演算
が行われるかどうかにより判断する。
【0020】図4では、文13,14がの型であるの
で変数Sに対して総和型の演算が行われると判断され
る。また、文15,16はの型に置換可能であるので
変数Tに対して総和型の演算が行われると判断される。
また、文19もの型であるので配列Uに対して総和型
の演算が行われると判断される。
【0021】図5では、文19,20がの型であるの
で変数Aに対して最小値計算型の演算、配列Bに対して
最大値計算型の演算が行われると判断される。
【0022】DOループ内で定義される各変数または配
列に対して総和型の演算あるいは最大値・最小値型の演
算が行われると判断すると、この変数または配列に対し
て、プロセッサ台数分だけ配列化した作業領域を全ての
プロセッサがアクセス可能なメモリ領域にとり、DOル
ープ内での参照をこの作業領域への参照に替え(ステッ
プ10)、DOループの並列処理の終了後、これらの作
業領域に記憶された値をもとにしてこのDOループに関
する総和値を計算する目的コードを以下のようにして生
成する(ステップ11)。
【0023】図6は、図4の総和型の演算が行われる変
数、配列を含む並列実行可能なDOループに対して、ス
テップ10,11がわかる程度にFORTRANライク
に記述したものである。このループを並列に実行するた
めに、プロセスの初期値をINI、終値をENとする。
また、$を付けた配列がプロセッサ台数分だけ配列化し
た作業領域である。プロセッサ総数をMAXIDとす
る。並列実行時は、同一プロセッサで処理されるDOル
−プ中の変数S、T及び配列Uには各々作業配列$S,
$T及び$Uに関する同一の配列要素$S(ID),$
T(ID)及び$U(J,ID)に参照を替える。ここ
で、IDをプロセッサの識別子とする。このDOループ
の並列処理開始前に、文21に示すように、作業配列$
S,$T及び$Uの初期化を行う。このDOループの並
列処理が文22である。DOループの並列処理の終了
後、配列$Sの総和を計算することによりこのループに
おけるSに関する総和値を計算する。同様に、配列$
T,$Uの総和を計算することにより文23に示すよう
にDOループにおけるT,Uに関する総和値を計算す
る。
【0024】図7は、図5の最大値・最小値型の演算が
行われる変数、配列を含む並列実行可能なDOループに
対して、処理10,11がわかる程度にFORTRAN
ライクに記述したものである。このループを並列に実行
するために、プロセスの初期値をINI、終値をENと
する。また、$を付けた配列がプロセッサ台数分だけ配
列化した作業領域である。プロセッサ総数をMAXID
とする。並列実行時は、同一プロセッサで処理されるD
Oループ中の変数A及び配列Bには各々作業配列$A及
び$Bに関する同一の配列要素$A(ID)、及び$B
(J,ID)に参照を替える。ここで、IDをプロセッ
サの識別子とする。このDOループの並列処理開始前
に、文24に示すように作業配列$A,$Bの初期化を
行う。DOループの並列処理が文25である。文26に
示すDOループの並列処理の終了後、配列$Aの最小値
を計算することによりDOループにおけるSに関する最
小値を計算する。同様に、配列$B(J,)の最大値を
計算することによりDOループにおける各配列要素B
(J)に関する最大値を計算する。
【0025】
【発明の効果】(1)本発明によれば、並列実行可能な
DOループの実行において、このDOループ内に定義が
ある変数または配列がDOループの外側で参照される可
能性がある場合、この変数または配列に対してDOルー
プの繰返しにおいて総和型の演算あるいは最大値・最小
値計算型の演算が行われる場合に、並列実行することが
できる。
【0026】(2)本発明によれば、並列実行可能なD
Oループの実行において、このDOループ内に定義があ
る変数または配列に対して総和型の演算あるいは最大値
・最小値計算型の演算が行われる際、この変数または配
列に対するアクセスを各プロセッサごとのアクセスに替
えて行われるため、各プロセッサから同時に変数または
配列要素の値を更新するときのハードウエア上の排他制
御によるオーバヘッドが生じないため、マルチプロセッ
サによる並列処理の効果により、実行性能の向上を図る
ことができる。
【図面の簡単な説明】
【図1】本発明の一実施例によるFORTRANコンパ
イラの全体の構成図である。
【図2】本発明の一実施例による生成オブジェクト決定
処理を示す図である。
【図3】本発明の一実施例によるDOル−プの並列実行
例を示す図である。
【図4】本発明の一実施例によるプログラム例を示す図
である。
【図5】本発明の一実施例によるプログラム例を示す図
である。
【図6】本発明の一実施例による図4のプログラムの並
列実行を示す図である。
【図7】本発明の一実施例による図5のプログラムの並
列実行を示す図である。
【符号の説明】
1…FORTRANソースプログラム、 2…構文解析部、 3…中間語、 4…中間部、 5…中間語、 6…コード生成部、 7…目的プログラム。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】マルチプロセッサに対して、高級言語を機
    械語に翻訳するコンパイラにおいて、並列実行可能と判
    断されたDOループを分割してマルチプロセッサに割り
    当てることが可能な目的コードに変換する際、当該DO
    ループ内で定義された変数または配列の各々に対して、
    総和型の演算の条件を満たすかどうかの解析を行い、条
    件を満たす場合、当該変数または配列に対して、プロセ
    ッサ台数分だけ配列化した作業領域を全てのプロセッサ
    がアクセス可能なメモリ領域にとり、当該DOループ内
    での参照をこの作業領域への参照に替え、当該DOルー
    プの処理の終了後、これらの作業領域に記憶された値を
    もとにして当該DOループに関する総和値を計算する目
    的コードを作成することを特徴とする並列化コンパイル
    方式。
  2. 【請求項2】マルチプロセッサに対して、高級言語を機
    械語に翻訳するコンパイラにおいて、並列実行可能と判
    断されたDOループを分割してマルチプロセッサに割り
    当てることが可能な目的コードに変換する際、当該DO
    ループ内で定義された変数または配列の各々に対して、
    最大値・最小値計算型の演算の条件を満たすかどうかの
    解析を行い、条件を満たす場合、当該変数または配列に
    対して、プロセッサ台数分だけ配列化した作業領域を全
    てのプロセッサがアクセス可能なメモリ領域にとり、当
    該DOループ内での参照をこの作業領域への参照に替
    え、当該DOループの処理の終了後、これらの作業領域
    に記憶された値をもとにして当該DOループに関する最
    大値あるいは最小値を計算する目的コードを作成するこ
    とを特徴とする並列化コンパイル方式。
JP16265091A 1991-07-03 1991-07-03 並列化コンパイル方式 Pending JPH0512033A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP16265091A JPH0512033A (ja) 1991-07-03 1991-07-03 並列化コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP16265091A JPH0512033A (ja) 1991-07-03 1991-07-03 並列化コンパイル方式

Publications (1)

Publication Number Publication Date
JPH0512033A true JPH0512033A (ja) 1993-01-22

Family

ID=15758657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16265091A Pending JPH0512033A (ja) 1991-07-03 1991-07-03 並列化コンパイル方式

Country Status (1)

Country Link
JP (1) JPH0512033A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995026530A1 (fr) * 1994-03-28 1995-10-05 Sony Corporation Procede de compilation de programmes a execution parallele, imageur et procede de traitement d'image
US9934036B2 (en) 2015-02-25 2018-04-03 Fujitsu Limited Compiler method, parallel processing method, and compiler apparatus

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995026530A1 (fr) * 1994-03-28 1995-10-05 Sony Corporation Procede de compilation de programmes a execution parallele, imageur et procede de traitement d'image
US5721883A (en) * 1994-03-28 1998-02-24 Sony Corporation System and method for implementing parallel image processing
US6029001A (en) * 1994-03-28 2000-02-22 Sony Corporation Method of compiling a computer program for performing parallel image processing
US9934036B2 (en) 2015-02-25 2018-04-03 Fujitsu Limited Compiler method, parallel processing method, and compiler apparatus

Similar Documents

Publication Publication Date Title
JP3664473B2 (ja) プログラムの最適化方法及びこれを用いたコンパイラ
US4833606A (en) Compiling method for vectorizing multiple do-loops in source program
JP2921190B2 (ja) 並列実行方式
JPH04307625A (ja) ループ最適化方法及び装置
JP5810316B2 (ja) コンパイル装置、コンパイルプログラム及びループ並列化方法
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH0512033A (ja) 並列化コンパイル方式
JPH04293150A (ja) コンパイル方法
JP3196625B2 (ja) 並列化コンパイル方式
JP2000020482A (ja) ループ並列化方法
JPH04307624A (ja) ループ最適化方法及び装置
JP2518504B2 (ja) 目的プログラム生成装置
JP3551352B2 (ja) ループ分割方法
JPH04343140A (ja) コンパイラの最適化処理方法
Gao et al. Design and Implementation of A Multi-Core CPU Compilation Optimization Framework Based on MLIR
JPH08221276A (ja) コンパイラ
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JP2682215B2 (ja) 並列処理時の手続き呼出し方式
JPH07234794A (ja) マルチプロセッサシステムにおける目的プログラム生成方法
JP2564904B2 (ja) プログラム最適化処理方法
JPS62169272A (ja) ベクトル演算列ル−プアンロ−リング処理方式
JPS63120369A (ja) プログラム変換装置
JP2809073B2 (ja) 配列のメモリ割り付け方式
JPH09128245A (ja) コンパイル処理システム
JP2001175617A (ja) コンパイラ並列化方法