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

並列化コンパイル方式

Info

Publication number
JPH04184540A
JPH04184540A JP2314831A JP31483190A JPH04184540A JP H04184540 A JPH04184540 A JP H04184540A JP 2314831 A JP2314831 A JP 2314831A JP 31483190 A JP31483190 A JP 31483190A JP H04184540 A JPH04184540 A JP H04184540A
Authority
JP
Japan
Prior art keywords
loop
node
parallel
extraction unit
code
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
JP2314831A
Other languages
English (en)
Inventor
Kouji Zaiki
材木 幸治
Shigeru Kuroda
茂 黒田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2314831A priority Critical patent/JPH04184540A/ja
Publication of JPH04184540A publication Critical patent/JPH04184540A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】 産業上の利用分野 本発明は6、複数の並列実行可能なブロモ・yすから成
る並列計算機システムに対して、与えられたソースプロ
グラムからオブジェクトプログラムを生成して供給する
コンパイラにおいて、プログラム中のループ構造を検出
し、並列実行命令を生成する並列化コンパイル方式に関
するものである。
従来の技術 第3図に示された、行列aとベクトルbの積を求めてそ
の結果をベクトルCに格納するFORTRANプログラ
ムか、並列実行される場合を考える。
第3図に示されたプログラムにおいて、外側のdO小ル
ープ00はインデックス変数iについて並列に実行する
ことが可能であり、したがって、dO小ループ00の内
側にある代入文301、do/レープ302に現れるイ
ンデックス変数iを固定して、並列に実行することが可
能である。8台のプロセッサを用いて、第3図に示され
たプログラムを並列に実行する様子を第4図に示す。
第4図(1)では前記インテ・ンクスi=1と固定して
、第一のプロセッサで代入文301、do/レープ30
2を実行することを表しており、同様に第4図(k)で
は第にのプロセッサで前記インテ・yクス変数i=にと
固定して代入文301、doループ302を実行するこ
とを表している。ただし、k−2、・・・、8である。
第3図に示されたようなFORTRANプログラムを並
列実行させるには、たとえば8台のプロセッサを用いて
、第4図に示したように、doルーズのインデックス変
数を各プロセフすで固定して実行させることになる。
次に、第5図に示されたような、dOループ500内に
スカラー変数X、分岐命令503が含まれるようなFO
RTRANプログラムを考える。従来、第5図に示した
ように、内側のdOルーズ502内に、代入文504の
ようにスカラー変数Xが回帰的に現れていたり、分岐命
令503があると、並列実行させないコンパイル方式が
とられている。
発明が解決しようとする課題 しかしながら上記のような方式では、実際には並列実行
させることが可能なプログラムでも、並列実行命令を生
成できない場合が生じ、コンパイラの能力が低下する。
本発明はかかる問題を解決するもので、doループ内に
スカラー変数または分岐命令が存在する場合でも並列計
算機システムで実行可能なオブジェクトプログラムを生
成する並列化コンパイル方式を提供することを目的とす
るものである。
課題を解決するための手段 上記課題を解決するために、本発明の並列化コンパイル
方式は、複数の並列実行可能な10七ツサから成る並列
計算機システムに対して、4えられたソースプログラム
からオブジェクトプログラムを生成して供給するコンパ
イラにおいて、前記ソースコードを字句に分解する字句
解析部と、前記字句解析部で字句解析された結果から構
文を認識し中間コードを生成する構文解析部と、前記中
間コードからループ構造を検出して並列実行可能部分の
抽出を行う並列性抽出部と、前記並列性抽出部の指示に
よって起動されるコード生成部とを備え、前記並列性抽
出部は、ループの構造を検出し、前記ループが多重ルー
プである場合に、各ループに関してデータ参照関係を解
析して、ループ間でデータ参照関係の生じないループに
関して並列実行命令を生成する機能を有するものである
。
そして本発明の中間コードは、ソースプログラム中でル
ープを構成する構文に相当する部分を他ノードとのリン
ク情報をもつ親ノードとし、前記ループ内の実行文に相
当する部分を他ノードとのリンク情報をもつ子ノードと
するリスト補遺として表現され、前記子ノードに相当す
る実行文が分岐命令である場合には、その分岐先の実行
文に相当するノードとリンクするように表現されるもの
である。
また本発明の並列性抽出部は、中間コードの第一ノード
から、その子ノードに相当する第二ノードへのリンクを
辿り、さらに、そのリンクを順次辿っていき、2つ以上
の子ノードをもつ第nノードまできたとき、前記第一ノ
ードから前記第nノードに相当するループに関して並列
実行命令を生成する機能を有するものである。
また、本発明の並列性検出部は、スカラー変数がループ
内に現れた場合に、前記スカラー変数が最初に代入文の
左辺に現れている場合に、並列実行命令を生成する機能
を有するものである。
実に、本発明の並列性抽出部は、ループ内に分岐命令が
現れた場合、前記分岐命令の分岐先にリンクされたノー
ドの親ノードに相当するループから外側のループに関し
て並列実行命令を生成する機能を有するものである。
作用 本発明は前記した方式により、従来のプログラミング言
語で記述されたプログラムからデータ参照関係を解析し
、そのデータ参照関係を崩さな1)ように並列実行命令
を生成する。その際、dOループ中にスカラー変数およ
び分岐命令が存在していても、スカラー変数のデータ依
存関係および分岐命令の分岐先を解析することで、並列
実行命令を生成することができる。
実施例 以下本発明の一実施例を図面に基づいて説明する。
第′1図は本発明の一実施例におけるコンノ(イラの構
成図である。第1図において、100はソースプログラ
ム、101はソースコードを字句に分解する字句解析部
102と、字句解析部102で字句解析された結果から
構文を認識し中間コードを生成する構文解析部103と
、前記中間コードからループ構造を検出して並列実行可
能部分の抽出を行う並列性抽出部104と、並列性抽出
部104の指示によって起動されるコード生成部105
とを備えたコンパイラ、106はオブジェクトプログラ
ムをそれぞれ表している。
第1図において、コンパイラ101はソースプログラム
100をオブジェクトプログラム106に変換するが、
この変換処理は第1図に示した字句解析部102、構文
解析部103、並列性抽出部104、コード生成部10
5で行われる。そして、並列性抽出部104でプログラ
ム中のループ構造が認識され並列実行可能部分の抽出が
行われる。
第2図は並列性抽出部104の詳細な処理手順を示す流
れ図である。第2図において、まずプログラム中のルー
プ構造の検出手続き200を行い、次にループの構造を
調べる手続き201を行って、並列化可能なループが存
在するかどうかの判断202を行い、並列化可能なルー
プが存在する場合、各ループに関してデータ参照関係を
調べる手続き203を行って、並列化可能かどうかの判
断205を行い、並列化可能な場合には、並列化できる
場合のコード生成手続き206を行う、並列化可能かど
うかの判断205の結果、並列化不可能な場合には、並
列化できない場合のコード生成手続き204を行う。ま
た、並列化可能ループが存在するかどうかの判断202
を行った結果、並列化可能ループが存在しない場合には
、並列化できない場合のコード生成手続き204を行う
。
第2図中のループ構造を調べる手続き201について、
第5図のプログラムを例に用いて説明する。
第5図に示されたプログラムが、コン/<イラ101の
構文解析部103により、第6図に示されるような中間
コードに変換される場合を考える。
第6図において、600,602はそれぞれdOループ
を構成するための第一の60文、第二の60文を表して
おり、第5図の外側のdOループ500中の実行文は、
それぞれ子ノードである第一の代入文601、第二の6
0文602、第二の代入文603、第一のcant 1
nue文604で表され、それぞれ第一のリンク608
によって親ノードである第一の60文600とつながっ
ている。同様に、第5図の内側のdOルーグ502中の
実行文は、それぞれ子ノードである第三の代入文605
、条件分岐文606、第二のcontinue文607
で表され、それぞれ第二のリンク609によって第二の
do文602とつながっている。さらに、条件分岐文6
06は、分岐先の実行文に相当するノードである第二の
代入文603にリンク610でつながっている。
第6図で、第一の60文600から第1のリンク608
を辿っていくと、複数の実行文601.602.603
があり、また、条件分岐文606の分岐先である第二の
代入文603は、第一の60文600に第1のリンク6
08でつながっている。したがって、この中間コードか
ら、ループの構造を調べる手続き201は、外側のルー
プ500に関して並列化可能であると判断する0次に、
各ループに関してデータ参照関係を調べる手続き203
は、外側のdOループ500中の実行文について、イン
デックスiに関して、並列実行できるかを調べる。内側
のdoルーグ502では、第三の代入文504でスカラ
ー変数Xが回帰的に出現しているが、このスカラー変数
Xは第一の代入文501で左辺にあるなめに、前記イン
デックス変数量について、データの参照関係が生じない
ので、並列化可能であると判断できる。
したがって、8台のプロセッサで並列実行する場合、第
7図に示すように、外Qll d oループ500を、
前記インデックス変数iを各プロセッサで固定すること
で、並列に実行できる。
第7図(1)では前記インデックス変数i=1と固定し
て、第一のプロセッサで第一の代入文501、内側のd
Oルー1502、第二の代入文505を実行することを
表しており、残りのプロセッサでも同様に前記インデッ
クス変数iの値を固定して、第一の代入文501、内側
のdOルー1502、第二の代入文505を実行するこ
とを表している。このように、外側のdoループ500
について並列実行可能な命令が生成できる。
発明の詳細 な説明したように、本発明によれば、doループ中にス
カラー変数および分岐命令が存在していても、スカラー
変数のデータ依存関係および分岐命令の分岐先を解析す
ることで、並列実行命令を生成することができ、コンパ
イラの処理能力の向上が図れ、その実用的効果は大きい
。
【図面の簡単な説明】
第1図は本発明の一実施例のコンパイラの構成図、第2
図はコンパイラの並列性抽出部の詳細な処理手順を示し
た流れ図、第3図はFORTRANプログラムの一例図
、第4図は第3図のプログラムが並列計算機システムで
実行される様子を示した図、第5図はFORTRANプ
ログラムの他の一例図、第6図は第5図のプログラムが
構文解析によって作られた中間コードを示す図、第7図
は第5図のプログラムが並列計算機システムで実行され
る様子を示した図である。 100・・・ソースプログラム、101・・・コンパイ
ラ、102・・・字句解析部、103・・・構文解析部
、104・・・並列性抽出部、105・・・コード生成
部、106・・・オブジェクトプログラム、200・・
・ループの検出手続き、201・・・ループ構造を調べ
る手続き、202・・・並列化可能ループが存在するか
どうかを判断する手続き、203・・・各ルーズに関し
てデータ参照関係を調べる手続き、204・・・並列化
できない場合のコード生成手続き、205・・・並列化
可能かどうかを判断する手枕き、206・・・並列化で
きる場合のコード生成手続き。 代理人   森  本  義  弘 第1図 第 2 図 −:j3図 麹マ N QN N

Claims (1)

  1. 【特許請求の範囲】 1、複数の並列実行可能なプロセッサから成る並列計算
    機システムに対して、与えられたソースプログラムから
    オブジェクトプログラムを生成して供給するコンパイラ
    において、前記ソースコードを字句に分解する字句解析
    部と、前記字句解析部で字句解析された結果から構文を
    認識し中間コードを生成する構文解析部と、前記中間コ
    ードからループ構造を検出して並列実行可能部分の抽出
    を行う並列性抽出部と、前記並列性抽出部の指示によつ
    て起動されるコード生成部とを備え、前記並列性抽出部
    は、ループの構造を検出し、前記ループが多重ループで
    ある場合に、各ループに関してデータ参照関係を解析し
    て、ループ間でデータ参照関係の生じないループに関し
    て並列実行命令を生成する機能を有することを特徴とす
    る並列化コンパイル方式。 2、中間コードは、ソースプログラム中でループを構成
    する構文に相当する部分を他ノードとのリンク情報をも
    つ親ノードとし、前記ループ内の実行文に相当する部分
    を他ノードとのリンク情報をもつ子ノードとするリスト
    構造として表現され、前記子ノードに相当する実行文が
    分岐命令である場合には、その分岐先の実行文に相当す
    るノードとリンクするように表現されることを特徴とす
    る請求項1記載の並列化コンパイル方式。 3、並列性抽出部は、中間コードの第一ノードから、そ
    の子ノードに相当する第二ノードへのリンクを辿り、さ
    らに、そのリンクを順次辿っていき、2つ以上の子ノー
    ドをもつ第nノードまできたとき、前記第一ノードから
    前記第nノードに相当するループに関して並列実行命令
    を生成する機能を有することを特徴とする請求項1記載
    の並列化コンパイル方式。 4、並列性抽出部は、スカラー変数がループ内に現れた
    場合に、前記スカラー変数が最初に代入文の左辺に現れ
    ている場合に、並列実行命令を生成する機能を有するこ
    とを特徴とする請求項1記載の並列化コンパイル方式。 5、並列性抽出部は、ループ内に分岐命令が現れた場合
    、前記分岐命令の分岐先にリンクされたノードの親ノー
    ドに相当するループから外側のループに関して並列実行
    命令を生成する機能を有することを特徴とする特許請求
    の範囲第1項記載の並列化コンパイル方式。
JP2314831A 1990-11-20 1990-11-20 並列化コンパイル方式 Pending JPH04184540A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2314831A JPH04184540A (ja) 1990-11-20 1990-11-20 並列化コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2314831A JPH04184540A (ja) 1990-11-20 1990-11-20 並列化コンパイル方式

Publications (1)

Publication Number Publication Date
JPH04184540A true JPH04184540A (ja) 1992-07-01

Family

ID=18058123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2314831A Pending JPH04184540A (ja) 1990-11-20 1990-11-20 並列化コンパイル方式

Country Status (1)

Country Link
JP (1) JPH04184540A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0691607A2 (en) 1994-07-06 1996-01-10 International Business Machines Corporation Data processing system and method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0691607A2 (en) 1994-07-06 1996-01-10 International Business Machines Corporation Data processing system and method
US5852734A (en) * 1994-07-06 1998-12-22 International Business Machines Corporation Method and compiler for parallel execution of a program

Similar Documents

Publication Publication Date Title
Schardl et al. Tapir: Embedding fork-join parallelism into LLVM's intermediate representation
JP4931978B2 (ja) 並列化処理方法、システム、及びプログラム
Raman et al. Efficient data race detection for async-finish parallelism
CN104536898B (zh) C程序并行区域的检测方法
Schardl et al. Tapir: Embedding recursive fork-join parallelism into llvm’s intermediate representation
Cann The optimizing SISAL compiler: version 12.0
De Roover et al. The SOUL tool suite for querying programs in symbiosis with Eclipse
Yip et al. The ForeC synchronous deterministic parallel programming language for multicores
Xu et al. Efficient parallel determinacy race detection for two-dimensional dags
US20170206068A1 (en) Program optimization based on directives for intermediate code
Finlayson et al. Introducing tetra: an educational parallel programming system
Kalinov et al. Using AËМ specification for automatic test suite generation for mpC parallel programming language compiler
CN118092931A (zh) 基于指导语句的函数向量化方法及系统
Wasser et al. Modeling Non-deterministic C Code with Active Objects
JPH09282173A (ja) プログラムの静的解析方法
de Ruiter Optimizing sglr parser performance
Moses How should compilers represent fork-join parallelism?
JPS62204374A (ja) 2倍演算最適化処理方式
US20080282237A1 (en) Method and Apparatus For Generating Execution Equivalence Information
Layeghi Cross-Paradigm Compilation across Programming Models: from Imperative to Asynchronous Graph
Colaneri Design and Evaluation of a Compiler Architecture for First-Class Pattern Matching
Sanju Compiling with MultiCores
Kasyanov et al. Methods and Tools for Constructing Specialized Versions of General-Purpose Cloud Sisal Programs
Johnstone et al. Reverse compilation for digital signal processors: A working example
Dai Code parallelization for the LGDG large-grain dataflow computation