JPH04184540A - Parallelized compilation systems - Google Patents

Parallelized compilation systems

Info

Publication number
JPH04184540A
JPH04184540A JP31483190A JP31483190A JPH04184540A JP H04184540 A JPH04184540 A JP H04184540A JP 31483190 A JP31483190 A JP 31483190A JP 31483190 A JP31483190 A JP 31483190A JP H04184540 A JPH04184540 A JP H04184540A
Authority
JP
Japan
Prior art keywords
loop
parallel
node
program
extraction unit
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
JP31483190A
Other languages
Japanese (ja)
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 JP31483190A priority Critical patent/JPH04184540A/en
Publication of JPH04184540A publication Critical patent/JPH04184540A/en
Pending legal-status Critical Current

Links

Abstract

PURPOSE:To prepare an executable object program with parallel computer systems even when a scalar variable or branching instruction exists in a DO loop by providing a parallelism extracting section which extracts parts which can be executed in parallel by detecting a loop structure in a program. CONSTITUTION:A compiler 101 converts a source program 100 into an object program 106. At the time of conversion, a sentence structure analyzing section 103 confirms a sentence structure from the word and phrase analyzed results of a word and phrase analyzing section 102 and generates an intermediate code. A parallelism extracting section 104 detects a loop structure in the program from the intermediate code and, when the detected loop is multiple loops, generates a parallel executing instruction on the loops which do not cause any data referring relation between loops by analyzing the data referring relation on each loop. Therefore, the processing capacity of the compiler is improved, since the parallel executing instruction can be generated even when a scalar variable or branching instruction exists in a DO loop.

Description

【発明の詳細な説明】 産業上の利用分野 本発明は6、複数の並列実行可能なブロモ・yすから成
る並列計算機システムに対して、与えられたソースプロ
グラムからオブジェクトプログラムを生成して供給する
コンパイラにおいて、プログラム中のループ構造を検出
し、並列実行命令を生成する並列化コンパイル方式に関
するものである。
DETAILED DESCRIPTION OF THE INVENTION Field of Industrial Application The present invention is directed to 6. Generating and supplying an object program from a given source program to a parallel computer system consisting of a plurality of parallel executable programs. The present invention relates to a parallel compilation method in which a compiler detects loop structures in a program and generates parallel execution instructions.

従来の技術 第3図に示された、行列aとベクトルbの積を求めてそ
の結果をベクトルCに格納するFORTRANプログラ
ムか、並列実行される場合を考える。
BACKGROUND OF THE INVENTION Consider the case where a FORTRAN program shown in FIG. 3, which calculates the product of matrix a and vector b and stores the result in vector C, is executed in parallel.

第3図に示されたプログラムにおいて、外側のdO小ル
ープ00はインデックス変数iについて並列に実行する
ことが可能であり、したがって、dO小ループ00の内
側にある代入文301、do/レープ302に現れるイ
ンデックス変数iを固定して、並列に実行することが可
能である。8台のプロセッサを用いて、第3図に示され
たプログラムを並列に実行する様子を第4図に示す。
In the program shown in FIG. 3, the outer dO small loop 00 can be executed in parallel for index variable i, and therefore the assignment statement 301 and do/rape 302 inside the dO small loop 00 can be executed in parallel. It is possible to fix the index variable i that appears and execute in parallel. FIG. 4 shows how the program shown in FIG. 3 is executed in parallel using eight processors.

第4図(1)では前記インテ・ンクスi=1と固定して
、第一のプロセッサで代入文301、do/レープ30
2を実行することを表しており、同様に第4図(k)で
は第にのプロセッサで前記インテ・yクス変数i=にと
固定して代入文301、doループ302を実行するこ
とを表している。ただし、k−2、・・・、8である。
In FIG. 4(1), the above-mentioned index i=1 is fixed, and the first processor executes the assignment statement 301 and the do/rape 30.
Similarly, in FIG. 4(k), the assignment statement 301 and the do loop 302 are executed with the inte x variable i= fixed in the second processor. ing. However, they are k-2, . . . , 8.

第3図に示されたようなFORTRANプログラムを並
列実行させるには、たとえば8台のプロセッサを用いて
、第4図に示したように、doルーズのインデックス変
数を各プロセフすで固定して実行させることになる。
To execute a FORTRAN program in parallel as shown in Figure 3, for example, use eight processors and fix the do loose index variable in each processor as shown in Figure 4. I will let you do it.

次に、第5図に示されたような、dOループ500内に
スカラー変数X、分岐命令503が含まれるようなFO
RTRANプログラムを考える。従来、第5図に示した
ように、内側のdOルーズ502内に、代入文504の
ようにスカラー変数Xが回帰的に現れていたり、分岐命
令503があると、並列実行させないコンパイル方式が
とられている。
Next, as shown in FIG. 5, the FO loop 500 includes a scalar variable X and a branch instruction 503
Consider the RTRAN program. Conventionally, as shown in FIG. 5, if a scalar variable X recursively appears in an inner dO loose 502 as in an assignment statement 504 or a branch instruction 503 exists, a compilation method that does not allow parallel execution has been used. It is being

発明が解決しようとする課題 しかしながら上記のような方式では、実際には並列実行
させることが可能なプログラムでも、並列実行命令を生
成できない場合が生じ、コンパイラの能力が低下する。
Problems to be Solved by the Invention However, in the above-mentioned system, even if a program can actually be executed in parallel, parallel execution instructions may not be generated, and the compiler's performance is degraded.

本発明はかかる問題を解決するもので、doループ内に
スカラー変数または分岐命令が存在する場合でも並列計
算機システムで実行可能なオブジェクトプログラムを生
成する並列化コンパイル方式を提供することを目的とす
るものである。
The present invention solves this problem, and aims to provide a parallelization compilation method that generates an object program that can be executed on a parallel computer system even when a scalar variable or branch instruction exists in a do loop. It is.

課題を解決するための手段 上記課題を解決するために、本発明の並列化コンパイル
方式は、複数の並列実行可能な10七ツサから成る並列
計算機システムに対して、4えられたソースプログラム
からオブジェクトプログラムを生成して供給するコンパ
イラにおいて、前記ソースコードを字句に分解する字句
解析部と、前記字句解析部で字句解析された結果から構
文を認識し中間コードを生成する構文解析部と、前記中
間コードからループ構造を検出して並列実行可能部分の
抽出を行う並列性抽出部と、前記並列性抽出部の指示に
よって起動されるコード生成部とを備え、前記並列性抽
出部は、ループの構造を検出し、前記ループが多重ルー
プである場合に、各ループに関してデータ参照関係を解
析して、ループ間でデータ参照関係の生じないループに
関して並列実行命令を生成する機能を有するものである
Means for Solving the Problems In order to solve the above problems, the parallel compilation method of the present invention compiles objects from four obtained source programs for a parallel computer system consisting of a plurality of 107 computers that can be executed in parallel. A compiler that generates and supplies a program includes a lexical analysis unit that decomposes the source code into words, a syntax analysis unit that recognizes syntax from the result of lexical analysis in the lexical analysis unit and generates intermediate code, and The parallelism extraction unit includes a parallelism extraction unit that detects a loop structure from code and extracts a part that can be executed in parallel, and a code generation unit that is activated by an instruction from the parallelism extraction unit. The present invention has a function of detecting the above-mentioned loops, analyzing data reference relationships for each loop when the loops are multiple loops, and generating parallel execution instructions for loops in which no data reference relationship occurs between loops.

そして本発明の中間コードは、ソースプログラム中でル
ープを構成する構文に相当する部分を他ノードとのリン
ク情報をもつ親ノードとし、前記ループ内の実行文に相
当する部分を他ノードとのリンク情報をもつ子ノードと
するリスト補遺として表現され、前記子ノードに相当す
る実行文が分岐命令である場合には、その分岐先の実行
文に相当するノードとリンクするように表現されるもの
である。
In the intermediate code of the present invention, the part corresponding to the syntax constituting the loop in the source program is set as a parent node that has link information with other nodes, and the part corresponding to the executable statement in the loop is set as a parent node with link information with other nodes. It is expressed as a list addendum that is a child node with information, and if the executable statement corresponding to the child node is a branch instruction, it is expressed so as to be linked to the node corresponding to the executable statement at the branch destination. be.

また本発明の並列性抽出部は、中間コードの第一ノード
から、その子ノードに相当する第二ノードへのリンクを
辿り、さらに、そのリンクを順次辿っていき、2つ以上
の子ノードをもつ第nノードまできたとき、前記第一ノ
ードから前記第nノードに相当するループに関して並列
実行命令を生成する機能を有するものである。
Further, the parallelism extraction unit of the present invention traces a link from a first node of the intermediate code to a second node corresponding to its child node, and further traces the link sequentially to It has a function of generating parallel execution instructions regarding the loop corresponding to the n-th node from the first node when the n-th node is reached.

また、本発明の並列性検出部は、スカラー変数がループ
内に現れた場合に、前記スカラー変数が最初に代入文の
左辺に現れている場合に、並列実行命令を生成する機能
を有するものである。
Further, the parallelism detection unit of the present invention has a function of generating a parallel execution instruction when a scalar variable appears in a loop and the scalar variable first appears on the left side of an assignment statement. be.

実に、本発明の並列性抽出部は、ループ内に分岐命令が
現れた場合、前記分岐命令の分岐先にリンクされたノー
ドの親ノードに相当するループから外側のループに関し
て並列実行命令を生成する機能を有するものである。
In fact, when a branch instruction appears in a loop, the parallelism extraction unit of the present invention generates parallel execution instructions for the outer loop from the loop corresponding to the parent node of the node linked to the branch destination of the branch instruction. It has a function.

作用 本発明は前記した方式により、従来のプログラミング言
語で記述されたプログラムからデータ参照関係を解析し
、そのデータ参照関係を崩さな1)ように並列実行命令
を生成する。その際、dOループ中にスカラー変数およ
び分岐命令が存在していても、スカラー変数のデータ依
存関係および分岐命令の分岐先を解析することで、並列
実行命令を生成することができる。
Operation The present invention uses the method described above to analyze data reference relationships from a program written in a conventional programming language, and generate parallel execution instructions in a manner that does not disrupt the data reference relationships. At this time, even if a scalar variable and a branch instruction exist in the dO loop, a parallel execution instruction can be generated by analyzing the data dependence of the scalar variable and the branch destination of the branch instruction.

実施例 以下本発明の一実施例を図面に基づいて説明する。Example An embodiment of the present invention will be described below based on the drawings.

第′1図は本発明の一実施例におけるコンノ(イラの構
成図である。第1図において、100はソースプログラ
ム、101はソースコードを字句に分解する字句解析部
102と、字句解析部102で字句解析された結果から
構文を認識し中間コードを生成する構文解析部103と
、前記中間コードからループ構造を検出して並列実行可
能部分の抽出を行う並列性抽出部104と、並列性抽出
部104の指示によって起動されるコード生成部105
とを備えたコンパイラ、106はオブジェクトプログラ
ムをそれぞれ表している。
FIG. 1 is a configuration diagram of a computer in an embodiment of the present invention. In FIG. a syntactic analysis unit 103 that recognizes syntax from the result of lexical analysis and generates intermediate code; a parallelism extraction unit 104 that detects a loop structure from the intermediate code and extracts a part that can be executed in parallel; Code generation unit 105 activated by instructions from unit 104
and a compiler, 106 each representing an object program.

第1図において、コンパイラ101はソースプログラム
100をオブジェクトプログラム106に変換するが、
この変換処理は第1図に示した字句解析部102、構文
解析部103、並列性抽出部104、コード生成部10
5で行われる。そして、並列性抽出部104でプログラ
ム中のループ構造が認識され並列実行可能部分の抽出が
行われる。
In FIG. 1, a compiler 101 converts a source program 100 into an object program 106.
This conversion process is carried out by the lexical analyzer 102, syntactic analyzer 103, parallelism extractor 104, and code generator 10 shown in FIG.
It will be held at 5. Then, the parallelism extraction unit 104 recognizes the loop structure in the program and extracts parts that can be executed in parallel.

第2図は並列性抽出部104の詳細な処理手順を示す流
れ図である。第2図において、まずプログラム中のルー
プ構造の検出手続き200を行い、次にループの構造を
調べる手続き201を行って、並列化可能なループが存
在するかどうかの判断202を行い、並列化可能なルー
プが存在する場合、各ループに関してデータ参照関係を
調べる手続き203を行って、並列化可能かどうかの判
断205を行い、並列化可能な場合には、並列化できる
場合のコード生成手続き206を行う、並列化可能かど
うかの判断205の結果、並列化不可能な場合には、並
列化できない場合のコード生成手続き204を行う。ま
た、並列化可能ループが存在するかどうかの判断202
を行った結果、並列化可能ループが存在しない場合には
、並列化できない場合のコード生成手続き204を行う
FIG. 2 is a flowchart showing the detailed processing procedure of the parallelism extraction unit 104. In FIG. 2, first a procedure 200 for detecting a loop structure in a program is performed, then a procedure 201 for examining the loop structure is performed, and a judgment 202 is made as to whether or not there is a loop that can be parallelized. If there are loops, a procedure 203 for checking data reference relationships is performed for each loop, and a judgment 205 is made as to whether or not it can be parallelized. If parallelization is possible, a code generation procedure 206 is performed when parallelization is possible. As a result of the judgment 205 to determine whether parallelization is possible, if parallelization is not possible, a code generation procedure 204 for when parallelization is not possible is performed. Also, determining whether a parallelizable loop exists 202
As a result of performing this, if there is no loop that can be parallelized, a code generation procedure 204 for when parallelization cannot be performed is performed.

第2図中のループ構造を調べる手続き201について、
第5図のプログラムを例に用いて説明する。
Regarding the procedure 201 for checking the loop structure in FIG.
This will be explained using the program shown in FIG. 5 as an example.

第5図に示されたプログラムが、コン/<イラ101の
構文解析部103により、第6図に示されるような中間
コードに変換される場合を考える。
Consider a case where the program shown in FIG. 5 is converted into intermediate code as shown in FIG. 6 by the syntax analysis unit 103 of the controller 101.

第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でつながっている。
In FIG. 6, 600 and 602 respectively represent the first 60 statements and the second 60 statements for configuring the dO loop, and the executable statements in the dO loop 500 outside of FIG.
The first assignment statement 601 and the second assignment statement 601 are child nodes, respectively.
0 statement 602, second assignment statement 603, first cant 1
Nue statement 604, each first link 608
It is connected to the first 60 sentences 600 which is the parent node. Similarly, each executable statement in the inner dO route 502 in FIG.
, conditional branch statement 606, second continue statement 607
are each connected to the second do statement 602 by a second link 609. Furthermore, conditional branch statement 6
06 is connected by a link 610 to a second assignment statement 603, which is a node corresponding to the branch destination executable statement.

第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で左辺にあるなめに、前記イン
デックス変数量について、データの参照関係が生じない
ので、並列化可能であると判断できる。
In FIG. 6, the first link 608 from the first 60 sentences 600
As you follow, you will find multiple executable statements 601, 602, 603.
The second assignment statement 603, which is the branch destination of the conditional branch statement 606, has the first link 60 in the first 60 statement 600.
They are connected by 08. Therefore, from this intermediate code, the procedure 201 that examines the structure of the loop determines that the outer loop 500 is parallelizable.
Procedure 203 for checking data reference relationships for each loop
checks whether the executable statements in the outer dO loop 500 can be executed in parallel with respect to index i. In the inner do route 502, a scalar variable X recursively appears in the third assignment statement 504, but this scalar variable , since there is no data reference relationship, it can be determined that parallelization is possible.

したがって、8台のプロセッサで並列実行する場合、第
7図に示すように、外Qll d oループ500を、
前記インデックス変数iを各プロセッサで固定すること
で、並列に実行できる。
Therefore, when executing in parallel with eight processors, as shown in FIG. 7, the outer Qll do loop 500 is
By fixing the index variable i in each processor, parallel execution is possible.

第7図(1)では前記インデックス変数i=1と固定し
て、第一のプロセッサで第一の代入文501、内側のd
Oルー1502、第二の代入文505を実行することを
表しており、残りのプロセッサでも同様に前記インデッ
クス変数iの値を固定して、第一の代入文501、内側
のdOルー1502、第二の代入文505を実行するこ
とを表している。このように、外側のdoループ500
について並列実行可能な命令が生成できる。
In FIG. 7(1), the index variable i is fixed to 1, and the first assignment statement 501 and the inner d
1502, the second assignment statement 505 is executed, and the remaining processors similarly fix the value of the index variable i, and execute the first assignment statement 501, the inner dO routine 1502, and the second assignment statement 505. This indicates that the second assignment statement 505 is to be executed. In this way, the outer do loop 500
It is possible to generate instructions that can be executed in parallel.

発明の詳細 な説明したように、本発明によれば、doループ中にス
カラー変数および分岐命令が存在していても、スカラー
変数のデータ依存関係および分岐命令の分岐先を解析す
ることで、並列実行命令を生成することができ、コンパ
イラの処理能力の向上が図れ、その実用的効果は大きい
As described in detail, according to the present invention, even if a scalar variable and a branch instruction exist in a do loop, by analyzing the data dependence of the scalar variable and the branch destination of the branch instruction, parallel processing can be performed. It is possible to generate executable instructions, improve the processing power of the compiler, and have great practical effects.

【図面の簡単な説明】[Brief explanation of the drawing]

第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
FIG. 1 is a configuration diagram of a compiler according to an embodiment of the present invention, and FIG.
The figure is a flowchart showing the detailed processing procedure of the parallelism extraction section of the compiler, Figure 3 is an example of a FORTRAN program, and Figure 4 is a diagram showing how the program in Figure 3 is executed on a parallel computer system. , Figure 5 is another example of a FORTRAN program, Figure 6 is a diagram showing the intermediate code created by syntax analysis of the program in Figure 5, and Figure 7 is a diagram showing the program in Figure 5 executed on a parallel computer system. FIG. 100... Source program, 101... Compiler, 102... Lexical analysis section, 103... Syntax analysis section, 104... Parallelism extraction section, 105... Code generation section, 106... Object program, 200...
- Loop detection procedure, 201... Procedure to check loop structure, 202... Procedure to judge whether a parallelizable loop exists, 203... Procedure to check data reference relationship for each loose, 204. . . . Code generation procedure when parallelization is not possible, 205 . . . A check to determine whether parallelization is possible, 206 . . . Code generation procedure when parallelization is possible. Agent Yoshihiro Morimoto Figure 1 Figure 2 -: Figure j3 Kojima N QN N

Claims (1)

【特許請求の範囲】 1、複数の並列実行可能なプロセッサから成る並列計算
機システムに対して、与えられたソースプログラムから
オブジェクトプログラムを生成して供給するコンパイラ
において、前記ソースコードを字句に分解する字句解析
部と、前記字句解析部で字句解析された結果から構文を
認識し中間コードを生成する構文解析部と、前記中間コ
ードからループ構造を検出して並列実行可能部分の抽出
を行う並列性抽出部と、前記並列性抽出部の指示によつ
て起動されるコード生成部とを備え、前記並列性抽出部
は、ループの構造を検出し、前記ループが多重ループで
ある場合に、各ループに関してデータ参照関係を解析し
て、ループ間でデータ参照関係の生じないループに関し
て並列実行命令を生成する機能を有することを特徴とす
る並列化コンパイル方式。 2、中間コードは、ソースプログラム中でループを構成
する構文に相当する部分を他ノードとのリンク情報をも
つ親ノードとし、前記ループ内の実行文に相当する部分
を他ノードとのリンク情報をもつ子ノードとするリスト
構造として表現され、前記子ノードに相当する実行文が
分岐命令である場合には、その分岐先の実行文に相当す
るノードとリンクするように表現されることを特徴とす
る請求項1記載の並列化コンパイル方式。 3、並列性抽出部は、中間コードの第一ノードから、そ
の子ノードに相当する第二ノードへのリンクを辿り、さ
らに、そのリンクを順次辿っていき、2つ以上の子ノー
ドをもつ第nノードまできたとき、前記第一ノードから
前記第nノードに相当するループに関して並列実行命令
を生成する機能を有することを特徴とする請求項1記載
の並列化コンパイル方式。 4、並列性抽出部は、スカラー変数がループ内に現れた
場合に、前記スカラー変数が最初に代入文の左辺に現れ
ている場合に、並列実行命令を生成する機能を有するこ
とを特徴とする請求項1記載の並列化コンパイル方式。 5、並列性抽出部は、ループ内に分岐命令が現れた場合
、前記分岐命令の分岐先にリンクされたノードの親ノー
ドに相当するループから外側のループに関して並列実行
命令を生成する機能を有することを特徴とする特許請求
の範囲第1項記載の並列化コンパイル方式。
[Claims] 1. In a compiler that generates and supplies an object program from a given source program to a parallel computer system consisting of a plurality of parallel-executable processors, a lexical unit that decomposes the source code into lexical units. an analysis unit; a syntax analysis unit that recognizes syntax from the results of lexical analysis in the lexical analysis unit and generates intermediate code; and a parallelism extraction unit that detects loop structures from the intermediate code and extracts parts that can be executed in parallel. and a code generation unit activated by an instruction from the parallelism extraction unit, the parallelism extraction unit detects a structure of a loop, and when the loop is a multiple loop, generates a code for each loop. A parallel compilation method characterized by having a function of analyzing data reference relationships and generating parallel execution instructions for loops in which no data reference relationships occur between loops. 2. In the intermediate code, the part corresponding to the syntax that constitutes the loop in the source program is set as a parent node that has link information with other nodes, and the part corresponding to the executable statement in the loop is set as a parent node that has link information with other nodes. If the executable statement corresponding to the child node is a branch instruction, it is expressed as a list structure in which the executable statement corresponding to the child node is a branch instruction. 2. The parallel compilation method according to claim 1. 3. The parallelism extraction unit traces a link from the first node of the intermediate code to a second node corresponding to its child node, and further traces the link sequentially to find the n-th node that has two or more child nodes. 2. The parallel compilation method according to claim 1, further comprising a function of generating a parallel execution instruction for a loop corresponding to the n-th node from the first node when reaching a node. 4. The parallelism extraction unit has a function of generating a parallel execution instruction when a scalar variable appears in a loop and the scalar variable first appears on the left side of an assignment statement. A parallel compilation method according to claim 1. 5. When a branch instruction appears in a loop, the parallelism extraction unit has a function of generating parallel execution instructions for the outer loop from the loop corresponding to the parent node of the node linked to the branch destination of the branch instruction. A parallel compilation method according to claim 1, characterized in that:
JP31483190A 1990-11-20 1990-11-20 Parallelized compilation systems Pending JPH04184540A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31483190A JPH04184540A (en) 1990-11-20 1990-11-20 Parallelized compilation systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31483190A JPH04184540A (en) 1990-11-20 1990-11-20 Parallelized compilation systems

Publications (1)

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

Family

ID=18058123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31483190A Pending JPH04184540A (en) 1990-11-20 1990-11-20 Parallelized compilation systems

Country Status (1)

Country Link
JP (1) JPH04184540A (en)

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
JP4931978B2 (en) Parallelization processing method, system, and program
JPH04211830A (en) Parallel compiling system
Yuki et al. Array dataflow analysis for polyhedral X10 programs
Cann The optimizing SISAL compiler: version 12.0
Schardl et al. Tapir: Embedding recursive fork-join parallelism into llvm’s intermediate representation
US20170206068A1 (en) Program optimization based on directives for intermediate code
Kalinov et al. Using AËМ specification for automatic test suite generation for mpC parallel programming language compiler
JPH04184540A (en) Parallelized compilation systems
Wang et al. A platform-specific code smell alert system for high performance computing applications
Komatsu et al. Xevolver: A code transformation framework for separation of system‐awareness from application codes
Wasser et al. Modeling Non-deterministic C Code with Active Objects
Zima et al. Automatic Restructuring for Parallel and Vector Computers
Han et al. Genetic algorithm based parallelization planning for legacy real-time embedded programs
JPH09282173A (en) Static analysis method for program
El-Zawawy Frequent statement and de-reference elimination for distributed programs
Mey et al. Using semantics-aware composition and weaving for multi-variant progressive parallelization
Pahade et al. Introduction to Compiler and its Phases
Mulik et al. Comparison of Parsing Techniques For Formal Languages
JPS62204374A (en) Processing system for double arithmetic optimization
Nyznar et al. Generating source code templates on the basis of unit tests
Ichikawa et al. Parallelizable Loop Detection using Pre-trained Transformer Models for Code Understanding
Sanju Compiling with MultiCores
Latifis et al. A Retargetable MATLAB-to-C Compiler Exploiting Custom Instructions and Data Parallelism
Deelman et al. Integrating data and task parallelism in scientific programs
Dai Code parallelization for the LGDG large-grain dataflow computation