JPH09319591A - Parallelizing system for loop having conditional jump out of loop - Google Patents
Parallelizing system for loop having conditional jump out of loopInfo
- Publication number
- JPH09319591A JPH09319591A JP8159077A JP15907796A JPH09319591A JP H09319591 A JPH09319591 A JP H09319591A JP 8159077 A JP8159077 A JP 8159077A JP 15907796 A JP15907796 A JP 15907796A JP H09319591 A JPH09319591 A JP H09319591A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- variable
- program
- conditional
- statement
- 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
Links
Landscapes
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、ソースプログラム
をオブジェクトコードに変換するコンパイル技法に関
し、特に条件付き飛び出しがあるループを並列化するコ
ンパイル方法に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a compiling technique for converting a source program into object code, and more particularly to a compiling method for parallelizing a loop having a conditional jump.
【0002】[0002]
【従来の技術】従来のコンパイラ技術を図12に示した
C言語によるプログラム例を参照して以下に説明する。
図12には、従来のコンパイラ技術によって並列化可能
性が判定可能なループを含むプログラム例を示す。2. Description of the Related Art A conventional compiler technique will be described below with reference to a program example in C language shown in FIG.
FIG. 12 shows a program example including a loop whose parallelizability can be determined by a conventional compiler technique.
【0003】従来のプログラム変換技術として例えば特
開平5−250341号公報には、並列計算機で図12
に示されるようなループを含むソースプログラムを並列
に実行するために、ソースプログラムを変換して、並列
実行可能なオブジェクトプログラムを生成する。As a conventional program conversion technique, for example, Japanese Unexamined Patent Publication No. 5-250341 discloses a parallel computer as shown in FIG.
In order to execute a source program including a loop as shown in (1) in parallel, the source program is converted to generate an object program that can be executed in parallel.
【0004】図13は、上記特開平5−250341号
公報に記載される並列化コンパイラ装置のブロック図で
ある。図13を参照して、入力手段102はソースプロ
グラムを外部から入力しメモリ103に格納する。メモ
リ103は、コンパイルを実現するプログラム、入力手
段102から入力されたソースプログラム、コンパイル
結果であるオブジェクトプログラム等を記憶保持する。
プロセッサ101は、メモリ103に保持されているプ
ログラムに従ってコンパイル処理を実行する。出力手段
104は、プロセッサ101により生成されメモリ10
3に保持されたオブジェクトプログラムを出力装置に出
力する。FIG. 13 is a block diagram of the parallelizing compiler device described in the above-mentioned Japanese Patent Laid-Open No. 5-250341. Referring to FIG. 13, input means 102 inputs a source program from the outside and stores it in memory 103. The memory 103 stores and holds a program that realizes compilation, a source program input from the input unit 102, an object program that is a compilation result, and the like.
The processor 101 executes the compiling process according to the program stored in the memory 103. The output means 104 is a memory 10 generated by the processor 101.
The object program held in 3 is output to the output device.
【0005】図14及び図15は、上記従来の並列化コ
ンパイラ装置の機能ブロックを示した図であり、メモリ
103のプログラムに従ってプロセッサ101が実行す
るコンパイル処理を機能別に示したものである。なお、
図14及び図15は図面作成の都合で分図されたもので
ある。FIG. 14 and FIG. 15 are functional block diagrams of the conventional parallelizing compiler apparatus, and show the compile processing executed by the processor 101 according to the program in the memory 103 by function. In addition,
14 and 15 are divided for convenience of drawing.
【0006】図14及び図15を参照して、入力手段1
0は、外部から入力されるソースプログラムを読み込
む。中間コード生成手段11は、高級言語(例えばC言
語など)で記述されたソースプログラムを変換して、中
間コードで記述されたプログラムを生成する。この中間
コードのプログラムは記憶手段15に記憶される。ルー
プ検出手段12は、ソースプログラムに含まれるループ
処理を検出する。Referring to FIGS. 14 and 15, the input means 1
0 reads the source program input from the outside. The intermediate code generation unit 11 converts a source program written in a high-level language (for example, C language) to generate a program written in intermediate code. The program of this intermediate code is stored in the storage means 15. The loop detection means 12 detects the loop processing included in the source program.
【0007】配列検出手段13は、ソースプログラムに
含まれる配列を検出する。変数抽出手段14は、ソース
プログラムに含まれる変数(スカラ変数)を検出する。
記憶手段15は、ループ検出手段12および配列検出手
段13によって検出されたループ及び配列を記憶する。The array detecting means 13 detects an array included in the source program. The variable extraction means 14 detects a variable (scalar variable) included in the source program.
The storage unit 15 stores the loops and sequences detected by the loop detection unit 12 and the sequence detection unit 13.
【0008】シミュレート手段16は、記憶手段15に
格納されたループ、配列に関する情報を参照して中間コ
ードのプログラムをシミュレートする。判定手段17
は、シミュレーション結果及び記憶手段15の記憶内容
に基づいてループの並列化が可能か否かを判定する。オ
ブジェクト生成手段18は、判定手段17が並列化可能
と判定した時、並列実行用のオブジェクトプログラムを
生成し、並列不可と判定した時、通常のオブジェクトプ
ログラムを生成する。The simulating means 16 simulates the program of the intermediate code by referring to the information about the loop and the array stored in the storage means 15. Determination means 17
Determines whether the loop can be parallelized based on the simulation result and the stored contents of the storage unit 15. The object generation means 18 generates an object program for parallel execution when the determination means 17 determines that parallelization is possible, and generates a normal object program when it is determined that parallelization is impossible.
【0009】出力手段19は、オブジェクトプログラム
を出力するもので、例えばプログラムをファイルとして
記憶するファイル装置などである。The output means 19 outputs an object program, and is, for example, a file device for storing the program as a file.
【0010】以上のように構成された従来の並列化コン
パイラ装置について、図16及び図17に示す流れ図を
参照して、その処理動作を説明する。なお、図16及び
図17は図面作成の都合で分図されたものである。The processing operation of the conventional parallelizing compiler apparatus configured as described above will be described with reference to the flowcharts shown in FIGS. 16 and 17. FIGS. 16 and 17 are separated for convenience of drawing.
【0011】まず、コンパイルされる前のソースプログ
ラムは、入力手段10に入力される(ステップ21)。
なお、ソースプログラムとしては例えば図12に示した
ようなプログラムの例である。First, the source program before being compiled is input to the input means 10 (step 21).
Note that the source program is an example of the program as shown in FIG. 12, for example.
【0012】入力手段10によって入力されたソースプ
ログラムは、中間コード生成手段11によって中間コー
ドに変換され、記憶手段15に格納される(ステップ2
2)。中間コードが生成されるとループ検出手段12
は、中間コードに含まれるループ処理を検出する。具体
的には、図12に示したC言語プログラムにおいてはル
ープ検出手段12は、ソースプログラム中の「for
文」をループ処理として検出する(ステップ23)。ル
ープ処理の検出結果は、記憶手段15に記憶される。そ
して、ループ処理の有無に従って、ループ処理が存在す
る場合にはステップ25に進み、一方、ループ処理が存
在しない場合には、ステップ31(図17参照)に分岐
する(ステップ24)。The source program input by the input means 10 is converted into an intermediate code by the intermediate code generation means 11 and stored in the storage means 15 (step 2).
2). When the intermediate code is generated, the loop detection means 12
Detects loop processing included in the intermediate code. Specifically, in the C language program shown in FIG. 12, the loop detection means 12 uses the “for” in the source program.
"Sentence" is detected as a loop process (step 23). The detection result of the loop processing is stored in the storage unit 15. Then, according to the presence / absence of the loop processing, if the loop processing exists, the process proceeds to step 25, while if the loop processing does not exist, the process branches to step 31 (see FIG. 17) (step 24).
【0013】次にループ処理が存在する場合、配列検出
手段13は、抽出されたループ処理における配列式を判
別し、これを検出する。図12に示す例では、配列検出
手段13は、左辺にある配列a[i]と、右辺に存在す
る配列b[i]とを検出する(ステップ25)。これら
の配列の検出結果は、記憶手段15に格納される。Next, when the loop processing is present, the array detecting means 13 determines the array expression in the extracted loop processing and detects it. In the example shown in FIG. 12, the array detection unit 13 detects the array a [i] on the left side and the array b [i] on the right side (step 25). The detection results of these arrays are stored in the storage means 15.
【0014】さらに、変数抽出手段14は、ループに含
まれる変数を検出する。図1に示した例における「fo
r文」のループにおいては、条件分岐で用いられている
配列b[i]を検出し、記憶手段15に格納する(ステ
ップ26)。Further, the variable extraction means 14 detects the variables included in the loop. In the example shown in FIG. 1, “fo
In the "r sentence" loop, the array b [i] used in the conditional branch is detected and stored in the storage means 15 (step 26).
【0015】この後、シミュレート手段16は、記憶手
段15を参照して、配列が格納されているか否かを判定
し、配列が格納されていればステップ28に進み、配列
が格納されていなければステップ29に進む(ステップ
27)。After that, the simulation means 16 refers to the storage means 15 to determine whether or not the array is stored. If the array is stored, the process proceeds to step 28, and the array must be stored. If so, the process proceeds to step 29 (step 27).
【0016】配列がある場合、シミュレート手段16
は、記憶手段15を参照して中間コードのプログラムを
シミュレートし、右辺の配列を記憶手段15の中の配列
変数定義表に登録する。このシミュレーションに際し
て、データ参照関係の判定も行われる。すなわち、シミ
ュレート手段16及び判定手段17とが中間コードの一
文ずつを同時に取り込まれ、各文に対してシミュレーシ
ョンとデータ参照関係の判定とを交互に行われる。If there is an array, the simulation means 16
Refers to the storage means 15 to simulate the intermediate code program, and registers the array on the right side in the array variable definition table in the storage means 15. In this simulation, the data reference relationship is also determined. That is, the simulating means 16 and the determining means 17 simultaneously take in each sentence of the intermediate code, and the simulation and the determination of the data reference relationship are alternately performed for each sentence.
【0017】例えば、図12に示す例では、for文
を、i=0から100までシミュレートし、配列のデー
タ参照関係を配列変数定義表に登録する。For example, in the example shown in FIG. 12, the for statement is simulated from i = 0 to 100, and the array data reference relationship is registered in the array variable definition table.
【0018】i=0の時は条件式(i==0)が成り立
つので、k=1が記憶され、左辺の配列a[1]と右辺
の配列b[0]が配列変数定義表に記憶される。When i = 0, the conditional expression (i == 0) holds, so k = 1 is stored, and the array a [1] on the left side and the array b [0] on the right side are stored in the array variable definition table. To be done.
【0019】i=1の時は条件式(i==0)が不成立
であるので、k=2が記憶され、左辺の配列a[2]と
右辺の配列b[1]が配列変数定義表に記憶される。こ
のようにして、for文をi=0から100まで繰り返
して、シミュレーション及びデータ参照関係の判定が行
われる。Since the conditional expression (i == 0) is not satisfied when i = 1, k = 2 is stored, and the array a [2] on the left side and the array b [1] on the right side are array variable definition tables. Memorized in. In this way, the for statement is repeated from i = 0 to 100, and the simulation and the data reference relationship determination are performed.
【0020】この結果を受けて、判定手段17は並列化
の可否を判断する。上記データ参照関係の判定の際に、
データ参照関係があると判定された場合、判定手段17
で並列化不可となる。On the basis of this result, the judging means 17 judges whether or not parallelization is possible. When determining the above data reference relationship,
When it is determined that there is a data reference relationship, the determination means 17
Will not be parallelizable.
【0021】図12に示すプログラム例では、データ参
照関係がないので、並列化可能と判定する。In the program example shown in FIG. 12, since there is no data reference relationship, it is determined that parallelization is possible.
【0022】この判定結果に従って、オブジェクト生成
手段18は、中間コードに基づいてオブジェクトプログ
ラムを生成する。このプログラム例では、変数iに関す
るfor文のループを並列実行するオブジェクトプログ
ラムを生成する。生成されたプログラムは、出力手段1
9から出力される。According to this determination result, the object generating means 18 generates an object program based on the intermediate code. In this program example, an object program that executes in parallel a loop of for statements related to the variable i is generated. The generated program is output means 1
9 is output.
【0023】[0023]
【発明が解決しようとする課題】しかしながら、上記し
た従来技術においては、並列化の際に並列化可能である
と判定できるのは、コンパイル時に条件文の条件が制御
変数の値によって真偽が判定できる場合に限られるとい
う、問題点を有している。However, in the above-mentioned prior art, it is possible to determine that the condition can be parallelized at the time of parallelization because the condition of the conditional statement is determined to be true or false at the time of compilation by the value of the control variable. It has a problem that it is limited to cases where it is possible.
【0024】すなわち、例えば図18に示すプログラム
例のように、条件文の条件式(b[i]==0)が、制
御変数の値によって要素が変わる配列を含む式の時は、
配列の要求の値をコンパイル時には知ることはできない
ため、コンパイル時においてシミュレートによって条件
文の真偽を判定することはできない。このため上記技術
ではデータ参照関係が存在するかどうか判定できず、結
果として並列化不可能と判定される。なお、図18に示
すプログラム例では、配列b[i]の値が0の時、演算
a[i]=1/b[i]における、ゼロによる除算(ze
ro divide)を回避するため、break文の実行によ
りループから外部への飛び出し制御が行われる。That is, when the conditional expression (b [i] == 0) of the conditional statement is an expression including an array whose elements change according to the value of the control variable, as in the program example shown in FIG.
Since the value of the array request cannot be known at compile time, the truth of the conditional statement cannot be determined by simulation at compile time. Therefore, the above technique cannot determine whether or not there is a data reference relationship, and as a result, it is determined that parallelization is impossible. In the program example shown in FIG. 18, when the value of the array b [i] is 0, division by zero (ze in the operation a [i] = 1 / b [i]
In order to avoid (ro divide), the jump control from the loop to the outside is performed by executing the break statement.
【0025】本発明は、上記事情に鑑みてなされたもの
であって、その目的は、従来の技術で並列化できなかっ
たループの並列化を可能とし、プログラムの実行性能の
向上を図るようにしたコンパイる方法を提供することに
ある。The present invention has been made in view of the above circumstances, and an object thereof is to enable parallelization of a loop which could not be parallelized by the conventional technique and to improve the execution performance of a program. It is to provide a method of compiling.
【0026】ここで、ループとは、ループ内に条件分岐
があり、その条件分岐成立によってループ外への飛び出
しがあり、条件の成立の有無は実行時に初めて判定する
ことができるようなループをいう。Here, a loop means a loop in which there is a conditional branch, and when the conditional branch is taken, the loop is jumped out, and whether or not the condition is met can be judged for the first time at the time of execution. .
【0027】[0027]
【課題を解決するための手段】上記目的を達成するた
め、本発明の並列化コンパイル方法は、条件成立の有無
に応じてループ外への飛び出し命令が実行されるように
プログラムされた条件分岐文をループ内に含むループを
検出した際に、該ループを、前記条件分岐文を含むルー
プと、前記条件分岐文を含まないループと、に分割し、
前記条件分岐文を含むループが先に実行されるように配
置すると共に、前記条件分岐文を含むループの終了時の
ループ制御変数の値から前記条件分岐文を含まないルー
プの終値を得、前記条件分岐を含まないループについて
並列実行可能としたことを特徴とする。In order to achieve the above object, the parallelizing and compiling method of the present invention is a conditional branch statement programmed so that an instruction to jump out of a loop is executed depending on whether a condition is satisfied. When detecting a loop including in the loop, the loop is divided into a loop including the conditional branch statement and a loop not including the conditional branch statement,
The loop including the conditional branch statement is arranged to be executed first, and the final value of the loop not including the conditional branch statement is obtained from the value of the loop control variable at the end of the loop including the conditional branch statement. It is characterized in that a loop not including a conditional branch can be executed in parallel.
【0028】本発明の原理を以下に説明する。本発明に
おいては、従来の方式と同様にしてソースプログラム中
にループを検出して解析した後に、ループ変換手段によ
り、ループを条件付き飛び出しの部分と飛び出しを含ま
ない部分とに分割し、前者のループは、実行時に実際に
飛び出しを実行することによって元のループの制御変数
の終値を調べるようなループに変換され、後者のループ
は前者のループを実行した結果を制御変数の終値とする
ようなループに変換される。The principle of the present invention will be described below. In the present invention, after detecting and analyzing a loop in the source program in the same manner as in the conventional method, the loop converting means divides the loop into a conditional jump portion and a portion not including the jump portion, and The loop is transformed into a loop that checks the closing value of the control variable of the original loop by actually executing a jump at run time, and the latter loop uses the result of executing the former loop as the closing value of the control variable. Converted to a loop.
【0029】上記構成のもと、本発明によれば、ループ
外への条件飛び出しがあるループを、飛び出しがある部
分とそれ以外の部分に分割して、二つのループに変換
し、前者のループは飛び出す時点の制御変数の値を実行
時に調べ、これを後者のループの制御変数の終値とする
ことによって、後者のループは並列実行判定可能とな
る。According to the present invention having the above-mentioned structure, the loop having a conditional jump to the outside of the loop is divided into a part having a jump and a part other than the jump, and converted into two loops. By checking the value of the control variable at the time of jumping at the time of execution and using this as the final value of the control variable of the latter loop, the latter loop can be determined for parallel execution.
【0030】[0030]
【発明の実施の形態】本発明の実施の形態について図面
を参照して以下に説明する。BEST MODE FOR CARRYING OUT THE INVENTION Embodiments of the present invention will be described below with reference to the drawings.
【0031】図1は、本発明の実施の形態に係るコンパ
イラ装置を説明するための図である。図1を参照して、
入力手段2は、ソースプログラムを外部から入力しメモ
リ3に格納する。メモリ3は、コンパイルを実現するプ
ログラム、入力手段2から入力されたソースプログラ
ム、コンパイル結果であるオブジェクトプログラム等を
記憶保持する。プロセッサ1は、メモリ3に保持されて
いるプログラムに従って、コンパイルを実行する。出力
手段4は、プロセッサ1により生成されメモリ3に保持
されたオブジェクトプログラムを出力装置に出力する。FIG. 1 is a diagram for explaining a compiler apparatus according to an embodiment of the present invention. Referring to FIG.
The input means 2 inputs a source program from the outside and stores it in the memory 3. The memory 3 stores and holds a program that realizes compilation, a source program input from the input unit 2, an object program that is a compilation result, and the like. The processor 1 executes compilation according to the program held in the memory 3. The output unit 4 outputs the object program generated by the processor 1 and stored in the memory 3 to the output device.
【0032】図2及び図3は、本発明の実施の形態にお
けるコンパイラ装置の機能をブロック図にて示したもの
であり、メモリ3に格納されたプログラムに従ってプロ
セッサ1が実行するコンパイル処理を機能別に構成した
ものである。なお、図2及び図3は図面作成の都合で分
図されたものである。2 and 3 are block diagrams showing the functions of the compiler device according to the embodiment of the present invention. The compile process executed by the processor 1 according to the program stored in the memory 3 is classified by function. It is composed. It should be noted that FIGS. 2 and 3 are separated for convenience of drawing.
【0033】図2及び図3を参照して、入力手段50
は、外部から入力されるソースプログラムを読み込む。
中間コード生成手段51で、高級言語(例えばC言語な
ど)で記述されたソースプログラムを変換して、中間コ
ードで記述されたプログラムを生成する。この中間コー
ドのプログラムは、記憶手段55に記憶される。ループ
検出手段52で、ソースプログラムに含まれるループ処
理を検出する。Referring to FIGS. 2 and 3, the input means 50
Reads a source program input from the outside.
The intermediate code generation means 51 converts a source program written in a high-level language (for example, C language) to generate a program written in intermediate code. The program of this intermediate code is stored in the storage means 55. The loop detection means 52 detects the loop processing included in the source program.
【0034】配列検出手段53は、ソースプログラムに
含まれる配列を検出する。変数抽出手段54は、ソース
プログラムに含まれる変数(スカラ変数)を検出する。
記憶手段55は、ループ検出手段52および配列検出手
段53によって検出されたループ及び配列を記憶する。The array detecting means 53 detects an array included in the source program. The variable extraction means 54 detects a variable (scalar variable) included in the source program.
The storage unit 55 stores the loops and sequences detected by the loop detection unit 52 and the sequence detection unit 53.
【0035】ループ変換手段56は、記憶手段55に格
納されている、ループ、および配列に関する情報を参照
して、中間コードのプログラムからループ変換できるか
否かを判定し、ループの変換を行う。判定手段57は、
ループ変換の結果及び記憶手段55の記憶内容に基づい
て、ループの並列化が可能であるか否かを判定する。オ
ブジェクト生成手段58は、判定手段57により並列化
可能と判定された時には、並列実行用のオブジェクトプ
ログラムを生成し、一方、並列不可と判定された時に
は、通常のオブジェクトプログラムを生成する。The loop conversion unit 56 refers to the information about the loop and the array stored in the storage unit 55, determines whether or not the loop conversion can be performed from the intermediate code program, and performs the loop conversion. The judging means 57
Based on the result of the loop conversion and the content stored in the storage unit 55, it is determined whether the loop can be parallelized. The object generating means 58 generates an object program for parallel execution when it is determined by the determining means 57 that parallelization is possible, and generates a normal object program when it is determined that parallelization is not possible.
【0036】出力手段59は、オブジェクトプログラム
を出力するものであり、例えばプログラムをファイルと
して記憶するファイル装置などからなる。The output means 59 outputs an object program, and comprises, for example, a file device for storing the program as a file.
【0037】図4に、本発明の実施の形態におけるルー
プ変換手段56の構成をブロック図にて示す。FIG. 4 is a block diagram showing the configuration of the loop converting means 56 in the embodiment of the present invention.
【0038】図4を参照して、ループ変換手段56は、
条件文検出手段56a、ループ外分岐検出手段56b、
変数定義検出手段56c、一時変数導入手段56d、条
件文抽出手段56e、ループ分割手段56f、及びルー
プ補正手段56gを備えて構成される。Referring to FIG. 4, the loop converting means 56 is
Conditional statement detection means 56a, out-of-loop branch detection means 56b,
It comprises variable definition detecting means 56c, temporary variable introducing means 56d, conditional sentence extracting means 56e, loop dividing means 56f, and loop correcting means 56g.
【0039】条件文検出手段56aは、中間コード生成
手段から51から中間コードを一文ずつ入力し、その中
間コードから条件文を検出する。The conditional statement detecting means 56a inputs the intermediate code from the intermediate code generating means 51 one by one, and detects the conditional statement from the intermediate code.
【0040】ループ外分岐検出手段56bは、条件文検
出手段56aで検出された条件文に対して、ループ外分
岐が存在するかどうか判定する。The out-of-loop branch detecting means 56b determines whether or not there is an out-of-loop branch for the conditional statement detected by the conditional statement detecting means 56a.
【0041】変数定義検出手段56cは、ループ外分岐
検出手段56bでループ外分岐があると判定された条件
文に対して、変数に対する定義があるか否かを配列検出
手段53および変数抽出手段54で生成された配列/変
数情報を用いて判定する。The variable definition detecting means 56c determines whether or not there is a definition for a variable with respect to the conditional statement judged by the outside-loop branch detecting means 56b to have an outside-loop branch, and the array detecting means 53 and the variable extracting means 54. Judgment is made using the array / variable information generated in.
【0042】一時変数導入手段56dは、変数定義検出
手段56cの検出結果から、条件文中で変数に対する定
義がなかった場合には、ループ分割のための一時変数を
導入して、中間コードに反映する。条件文抽出手段56
eはループ中の条件文に対して範囲を記憶しておく。If there is no definition for the variable in the conditional statement from the detection result of the variable definition detecting means 56c, the temporary variable introducing means 56d introduces a temporary variable for loop division and reflects it in the intermediate code. . Conditional sentence extraction means 56
The e stores the range for the conditional statement in the loop.
【0043】ループ分割手段56fは、条件文抽出手段
56eで特定した条件文をループの外に出して、現在の
ループと同じループで条件文のみのループを現在のルー
プの直前に挿入する。The loop dividing means 56f puts out the conditional statement specified by the conditional statement extracting means 56e out of the loop, and inserts a loop having only the conditional statement in the same loop as the current loop immediately before the current loop.
【0044】ループ補正手段56gは、ループ分割手段
56fで分割されたループの間に、制御変数の値を一時
変数に代入する中間コードを挿入し、その直後のループ
の終値を一時変数に変更する。The loop correction means 56g inserts an intermediate code for substituting the value of the control variable into the temporary variable between the loops divided by the loop division means 56f, and changes the end value of the loop immediately after that to the temporary variable. .
【0045】以上のように構成された本発明の実施の形
態に係るコンパイラについて、図5及び図6の流れ図を
参照して、その処理動作を以下に説明する。なお、図5
及び図6は図面作成の都合で分図されたものである。The processing operation of the compiler according to the embodiment of the present invention configured as described above will be described below with reference to the flowcharts of FIGS. 5 and 6. Note that FIG.
6 and 6 are divided for convenience of drawing.
【0046】まず、コンパイルされる前のソースプログ
ラムは、入力手段50に入力される(ステップ61)。
入力手段50から入力されたソースプログラムは、中間
コード生成手段51によって中間コードに変換され、記
憶手段55に格納される(ステップ62)。中間コード
が生成されると、ループ検出手段52は、中間コードに
含まれるループ処理を検出し(ステップ63)、ループ
処理の検出結果は、記憶手段55に記憶される。そし
て、ループ処理の有無に従い、ループ処理が存在する場
合にはステップ65に進み、一方、存在しない場合には
ステップ71に進む(ステップ64)。First, the source program before being compiled is input to the input means 50 (step 61).
The source program input from the input means 50 is converted into intermediate code by the intermediate code generation means 51 and stored in the storage means 55 (step 62). When the intermediate code is generated, the loop detection means 52 detects the loop processing included in the intermediate code (step 63), and the detection result of the loop processing is stored in the storage means 55. Then, according to the presence / absence of the loop processing, if the loop processing exists, the process proceeds to step 65, while if not, the process proceeds to step 71 (step 64).
【0047】ループ処理が存在する場合、ステップ65
において、配列検出手段53は抽出されたループ処理に
おける配列式を判別し、これを検出する。これらの配列
の検出結果は、記憶手段55に格納される。さらに、変
数抽出手段54は、ループに含まれる変数を検出する
(ステップ66)。If loop processing exists, step 65
At, the array detecting means 53 determines the array expression in the extracted loop processing and detects it. The detection results of these arrays are stored in the storage means 55. Further, the variable extraction means 54 detects the variables included in the loop (step 66).
【0048】この後、ループ変換手段56は、中間コー
ドを参照して、条件文があるか否かを判定し、条件文が
あればステップ68に、条件分がなければステップ69
に進む(ステップ67)。After that, the loop converting means 56 refers to the intermediate code to judge whether or not there is a conditional statement. If there is a conditional statement, the step 68 is carried out. If there is no conditional statement, the step 69 is carried out.
(Step 67).
【0049】すなわち、条件文がある場合、ステップ6
8にて、ループ変換手段56は、記憶手段55を参照し
てループの変換を行う。That is, if there is a conditional statement, step 6
At 8, the loop conversion unit 56 refers to the storage unit 55 to perform the loop conversion.
【0050】判定手段57は、並列化の可否を判定する
(ステップ69)。この判定結果に従って、オブジェク
ト生成手段58は、中間コードに基づいてオブジェクト
プログラムを生成する(ステップ70、71)。生成さ
れたプログラムは、出力手段59から出力される(ステ
ップ72)。The judging means 57 judges whether or not parallelization is possible (step 69). According to the determination result, the object generating means 58 generates an object program based on the intermediate code (steps 70, 71). The generated program is output from the output means 59 (step 72).
【0051】図7に、本発明の実施の形態におけるルー
プ変換手段56の処理フローを流れ図にて示す。FIG. 7 is a flowchart showing the processing flow of the loop converting means 56 in the embodiment of the present invention.
【0052】図7を参照すると、まず中間コードが条件
文検出手段56aに入力される(ステップ81)。条件
文検出手段56aは、中間コードを調べて、条件文かど
うかを判定する。条件文であればステップ83に進み、
条件文でなければステップ81に進む(ステップ8
2)。Referring to FIG. 7, the intermediate code is first input to the conditional statement detecting means 56a (step 81). The conditional statement detecting means 56a examines the intermediate code to determine whether it is a conditional statement. If it is a conditional statement, proceed to step 83,
If it is not a conditional statement, the process proceeds to step 81 (step 8)
2).
【0053】ループ外分岐検出手段56bで、上記条件
文の中間コードに対して、ループ外分岐があるか否かを
調べ、ループ外分岐がある場合にはステップ84に進
み、条件文でなければ終了に進む(ステップ83)。The out-of-loop branch detection means 56b checks whether or not there is an out-of-loop branch in the intermediate code of the conditional statement. If there is an out-of-loop branch, the process proceeds to step 84, and if it is not a conditional statement. Proceed to the end (step 83).
【0054】変数定義検出手段56cにて、ループ外分
岐検出手段56bでループ外分岐があると判定された条
件文に対して、変数に対する定義があるか否かを配列検
出手段53および変数抽出手段54で生成された配列/
変数情報を用いて判定し、変数に対する定義がある場合
は終了し、なければステップ85に進む(ステップ8
4)。The array definition means 53 and the variable extraction means determine whether or not there is a definition for a variable with respect to the conditional statement which is judged by the variable branch detection means 56c to have a branch outside the loop by the variable definition detection means 56c. Array generated at 54 /
The determination is made using the variable information. If there is a definition for the variable, the process ends, and if not, the process proceeds to step 85 (step 8
4).
【0055】一時変数導入手段56dは、ループ分割の
ための一時変数を導入して、中間コードに反映する(ス
テップ85)。The temporary variable introducing means 56d introduces a temporary variable for loop division and reflects it in the intermediate code (step 85).
【0056】条件文抽出手段56eは、ループ中の条件
文に対して範囲を記憶し、ループ分割手段56fで、そ
の条件文をループの外に出して、現在のループと同じル
ープで条件文のみのループを現在のループの直前に挿入
する(ステップ86)。The conditional statement extracting means 56e stores the range for the conditional statement in the loop, and the loop dividing means 56f outputs the conditional statement to the outside of the loop, and only the conditional statement in the same loop as the current loop. Is inserted immediately before the current loop (step 86).
【0057】ループ補正手段56gは、ループ分割手段
56fで、分割されたループの間に、制御変数の値を一
時変数に代入する中間コードを挿入し、その直後のルー
プの終値を一時変数に変更する(ステップ87)。The loop compensating means 56g inserts an intermediate code for substituting the value of the control variable into the temporary variable between the loops divided by the loop dividing means 56f, and changes the end value of the loop immediately after that to the temporary variable. (Step 87).
【0058】[0058]
【実施例】上記した本発明の実施の形態を更に詳細に説
明すべく、本発明の実施例を以下に説明する。EXAMPLES Examples of the present invention will be described below in order to explain the above-described embodiments of the present invention in more detail.
【0059】本発明の実施例として、C言語のループを
含み条件分岐によりループ外部へ飛び出す(b[i]=
=0が成立した場合のbreak命令)ソースプログラ
ムの例を図8に示す。As an embodiment of the present invention, a C language loop is included and a conditional branch is executed to jump out of the loop (b [i] =
8 shows an example of the source program).
【0060】また、図9に、本発明の実施例により、図
8に示したプログラムのループに一時変数を導入した結
果のプログラムを示す。FIG. 9 shows a program resulting from introducing temporary variables into the loop of the program shown in FIG. 8 according to the embodiment of the present invention.
【0061】図10に、本発明の実施例により、ループ
を分割した結果のプログラムを示す。FIG. 10 shows a program resulting from dividing a loop according to the embodiment of the present invention.
【0062】図11に、本発明の実施例により、図10
のプログラムのループの終値を補正した結果のプログラ
ムを示す。FIG. 11 shows an embodiment of the present invention shown in FIG.
The program obtained as a result of correcting the closing price of the loop of the program is shown.
【0063】まず、コンパイルされる前のソースプログ
ラムは、入力手段50に入力される(図5及び図6のス
テップ61)。First, the source program before being compiled is input to the input means 50 (step 61 in FIGS. 5 and 6).
【0064】入力手段50から入力されたソースプログ
ラムは、中間コード生成手段51によって中間コードに
変換され、記憶手段55に格納される(ステップ6
2)。中間コードが生成されるとループ検出手段52
は、中間コードに含まれるループ処理を検出する。The source program input from the input means 50 is converted into intermediate code by the intermediate code generation means 51 and stored in the storage means 55 (step 6).
2). When the intermediate code is generated, the loop detection means 52
Detects loop processing included in the intermediate code.
【0065】具体的には、図8に示すようなC言語にお
いてはループ検出手段52は、ソースプログラム中の
「for文」をループ処理として検出する(ステップ6
3)。ループ処理の検出結果は、記憶手段55に記憶さ
れる。そして、ループ処理の有無に従って、存在する場
合にはステップ65に進み、存在しない場合にはステッ
プ71に進む(ステップ64)。Specifically, in the C language as shown in FIG. 8, the loop detecting means 52 detects the "for statement" in the source program as a loop process (step 6).
3). The detection result of the loop processing is stored in the storage unit 55. Then, according to the presence / absence of the loop processing, if it exists, the process proceeds to step 65, and if not, the process proceeds to step 71 (step 64).
【0066】次に、ループ処理が存在する場合、配列検
出手段53は抽出されたループ処理における配列式を判
別し、これを検出する。図8では、配列検出手段53は
左辺にある配列a[i]と右辺に存在する配列b[i]
とを検出する(ステップ65)。これらの配列の検出結
果は、記憶手段55に格納される。さらに、変数抽出手
段54は、ループに含まれる変数を検出する。図8に示
すプログラムおける「for文」のループにおいては、
条件分岐で用いられている配列b[i]を検出し、記憶
手段に格納する(ステップ66)。Next, when the loop processing is present, the array detecting means 53 determines the array expression in the extracted loop processing and detects it. In FIG. 8, the array detection means 53 has an array a [i] on the left side and an array b [i] on the right side.
And are detected (step 65). The detection results of these arrays are stored in the storage means 55. Furthermore, the variable extracting means 54 detects the variables included in the loop. In the loop of “for sentence” in the program shown in FIG.
The array b [i] used in the conditional branch is detected and stored in the storage means (step 66).
【0067】この後、ループ変換手段56は、中間コー
ドを参照して条件文があるか否かを判定し、条件文があ
ればステップ68に、なければステップ69に進む(ス
テップ67)。図8に示すプログラムでは、「if文」
が存在するので、ステップ68に進む。条件文がある場
合、ループ変換手段56は、記憶手段55を参照してル
ープの変換を行う(ステップ68)。実施例1ではルー
プ変換手段56で、図16に示すようなプログラムに変
換される。After that, the loop converting means 56 refers to the intermediate code to judge whether or not there is a conditional statement. If there is a conditional statement, the process proceeds to step 68, and if not, the process proceeds to step 69 (step 67). In the program shown in FIG. 8, "if statement"
Exists, the process proceeds to step 68. If there is a conditional statement, the loop conversion means 56 refers to the storage means 55 to convert the loop (step 68). In the first embodiment, the loop converting means 56 converts the program into a program as shown in FIG.
【0068】判定手段57は、並列化の可否を判断する
(ステップ69)。ループ変換手段56で図16に示す
ように、変換されるので、このBのループはa[i]お
よびb[i]の配列の参照関係に依存がないので、並列
化可能と判定される。The judging means 57 judges whether or not parallelization is possible (step 69). Since it is converted by the loop conversion means 56 as shown in FIG. 16, the loop of B does not depend on the reference relationship of the arrays of a [i] and b [i], and thus it is determined that parallelization is possible.
【0069】この判定結果に従って、オブジェクト生成
手段58は、中間コードに基づいてオブジェクトプログ
ラムを生成する(ステップ70,71)。生成されたプ
ログラムは、出力手段59から出力される(ステップ7
2)。According to the determination result, the object generating means 58 generates an object program based on the intermediate code (steps 70, 71). The generated program is output from the output means 59 (step 7).
2).
【0070】図7の流れ図を参照して、ループ変換の詳
細な処理動作を以下に説明する。まず中間コードが条件
文検出手段56aに入力される。The detailed processing operation of the loop transformation will be described below with reference to the flowchart of FIG. First, the intermediate code is input to the conditional statement detecting means 56a.
【0071】図8に示すプログラム例では、「for
文」全体の中間コードが入力される(ステップ81)。
条件文検出手段56aは中間コードを調べて、条件文で
あるか否かを判定し、条件文であればステップ83に進
み、条件文でなければステップ81に進む。In the program example shown in FIG. 8, "for"
The intermediate code of the whole "sentence" is input (step 81).
The conditional statement detecting means 56a examines the intermediate code to determine whether it is a conditional statement. If it is a conditional statement, the process proceeds to step 83, and if it is not a conditional statement, the process proceeds to step 81.
【0072】図8に示すプログラム例では、「for
文」によるループ中に、条件文(「if文」)が存在す
るので、条件文があると判定される(ステップ82)。In the program example shown in FIG. 8, "for"
Since the conditional statement (“if statement”) exists in the loop of “statement”, it is determined that there is a conditional statement (step 82).
【0073】ループ外分岐検出手段56bで、上記の条
件文の中間コードに対して、ループ外分岐があるか否か
を調べ、ループ外分岐がある場合は、ステップ84に進
み、条件文でなければ終了に進む。The out-of-loop branch detecting means 56b checks whether or not there is an out-of-loop branch with respect to the intermediate code of the above-mentioned conditional statement. If there is an out-of-loop branch, the process proceeds to step 84 and the conditional statement If you proceed to the end.
【0074】図8に示すプログラム例では、ループ外分
岐文(break文)が存在するので、ループ外分岐が
あると判定される(ステップ83)。In the program example shown in FIG. 8, since a branch statement outside the loop (break statement) exists, it is judged that there is a branch outside the loop (step 83).
【0075】変数定義検出手段56cにて、ループ外分
岐検出手段56bでループ外分岐が存在すると判定され
た条件文に対して、変数に対する定義があるか否かを配
列検出手段53および変数抽出手段54で生成された配
列/変数情報を用いて判定し、変数に対する定義がある
場合は終了し、なければステップ85に進む。In the variable definition detecting means 56c, the array detecting means 53 and the variable extracting means determine whether or not there is a definition for a variable with respect to the conditional statement judged by the outer loop branch detecting means 56b to have an outer loop branch. The determination is made using the array / variable information generated in 54, and if there is a definition for the variable, the process ends, and if not, the process proceeds to step 85.
【0076】図8に示す例では、条件文に含まれる文は
すべて右辺値であるので、変数に対する定義はないもの
と判定される(ステップ84)。In the example shown in FIG. 8, since all the sentences included in the conditional sentence are right-hand side values, it is determined that there is no definition for the variable (step 84).
【0077】一時変数導入手段56dは、ループ分割の
ための一時変数を導入して、中間コードに反映する。一
時変数は当該原始プログラム中の他の変数と名前が衝突
しないような任意の識別子を付加する。The temporary variable introduction means 56d introduces a temporary variable for loop division and reflects it in the intermediate code. Temporary variables are given arbitrary identifiers so that their names do not conflict with other variables in the source program.
【0078】図8に示すプログラム例では、図9に示す
ように、一時変数nを導入する(ステップ85)。In the program example shown in FIG. 8, a temporary variable n is introduced as shown in FIG. 9 (step 85).
【0079】条件文抽出手段56eはループ中の条件文
に対して範囲を記憶し、ループ分割手段56fで、その
条件文をループの外に出して、現在のループと同じルー
プで条件文のみのループを現在のループの直前に挿入す
る。The conditional statement extracting means 56e stores the range for the conditional statement in the loop, and the loop dividing means 56f outputs the conditional statement to the outside of the loop so that only the conditional statement is present in the same loop as the current loop. Insert a loop just before the current loop.
【0080】図9に示す例においては、図10に示すよ
うに、「if文」を、元の「for文」から取り出し
て、「if文」のみの「for文」と、それ以外の「f
or文」に分割する(ステップ86)。In the example shown in FIG. 9, as shown in FIG. 10, the “if sentence” is extracted from the original “for sentence”, and the “for sentence” of only the “if sentence” and the other “for sentence” are extracted. f
or sentence ”(step 86).
【0081】ループ補正手段56gは、ループ分割手段
56fで、分割されたループの間に、制御変数の値を一
時変数に代入する中間コードを挿入し、その直後のルー
プの終値を一時変数に変更する。The loop compensating means 56g inserts an intermediate code for substituting the value of the control variable into the temporary variable between the loops divided by the loop dividing means 56f, and changes the end value of the loop immediately after that to the temporary variable. To do.
【0082】これによって元のループと結果が同じにな
るように保証される。This ensures that the result is the same as the original loop.
【0083】そして、図10に示す例では、図11に示
すように、分割したループの間に、一時変数nに「if
文」のみの「for文」を実行した後の制御変数の終値
が入るように代入文を挿入し、「if文」のみの「fo
r文」の終値を一時変数nと置き換える(ステップ8
7)。Then, in the example shown in FIG. 10, as shown in FIG. 11, the temporary variable n is set to "if
Statement is inserted so that the closing value of the control variable after executing the “for statement” is entered, and the “fo statement” of the “if statement” only is inserted.
Replace the closing price of "r sentence" with temporary variable n (step 8)
7).
【0084】なお、上記実施例ではC言語によるプログ
ラム例を基に説明したが、本発明はC言語に限定される
ものでなく、他の各種高水準言語に対して適用可能であ
ることは勿論である。Although the above embodiment has been described based on a program example in C language, the present invention is not limited to C language and can be applied to other various high-level languages. Is.
【0085】[0085]
【発明の効果】以上説明したように、本発明によれば、
従来技術では並列化して並列実行させることのできなか
った、条件付き飛び出しのあるループに対して、ループ
を条件分岐の部分とそれ以外の部分に分割するように構
成したことにより、条件分岐を含まないループについて
正しくループを並列実行させることを可能とするという
効果を有する。As described above, according to the present invention,
For conditional loops that could not be parallelized and executed in parallel in the conventional technology, the conditional branch was included because the loop was divided into a conditional branch part and other parts. This has the effect of enabling parallel execution of loops correctly for non-existing loops.
【0086】これは、本発明においては、条件分岐の部
分を先に実行させることによって、条件分岐を含まない
ループの終値を得ることができ、正しく並列実行させる
ようにしたことによる。This is because, in the present invention, by executing the conditional branch part first, the final value of the loop not including the conditional branch can be obtained, and the parallel execution is performed correctly.
【図1】本発明の実施の形態に係る並列化コンパイル装
置のブロック図である。FIG. 1 is a block diagram of a parallelization compiling apparatus according to an embodiment of the present invention.
【図2】本発明の実施の形態に係る並列化コンパイル装
置の機能手段をブロック図にて示したものである。FIG. 2 is a block diagram showing functional means of the parallelizing / compiling device according to the embodiment of the present invention.
【図3】本発明の実施の形態に係る並列化コンパイル装
置の機能手段をブロック図にて示したものである。FIG. 3 is a block diagram showing functional means of a parallelization compiling device according to an embodiment of the present invention.
【図4】本発明の実施の形態に係る並列化コンパイル装
置の機能手段をブロック図にて示したものである。FIG. 4 is a block diagram showing functional means of the parallelizing / compiling device according to the embodiment of the present invention.
【図5】本発明の実施の形態に係る並列化コンパイル装
置の処理動作を説明するための流れ図である。FIG. 5 is a flowchart for explaining the processing operation of the parallelization compiling device according to the embodiment of the present invention.
【図6】本発明の実施の形態に係る並列化コンパイル装
置の処理動作を説明するための流れ図である。FIG. 6 is a flowchart for explaining the processing operation of the parallelization compiling device according to the embodiment of the present invention.
【図7】本発明の実施の形態におけるループ変換手段の
処理動作を説明するための流れ図である。FIG. 7 is a flowchart for explaining the processing operation of the loop conversion means in the embodiment of the present invention.
【図8】本発明の実施例を説明するための図であり、プ
ログラム例を示す図である。FIG. 8 is a diagram for explaining the embodiment of the present invention and is a diagram showing a program example.
【図9】本発明の実施例を説明するための図であり、一
時変数が導入されたプログラム例を示す図である。FIG. 9 is a diagram for explaining the embodiment of the present invention and is a diagram showing an example of a program into which a temporary variable is introduced.
【図10】本発明の実施例を説明するための図であり、
ループを分割したプログラム例を示す図である。FIG. 10 is a diagram for explaining an example of the present invention,
It is a figure which shows the example of the program which divided the loop.
【図11】本発明の実施例を説明するための図であり、
条件分岐を含まないループの経過を補正したプログラム
例を示す図である。FIG. 11 is a diagram for explaining an embodiment of the present invention;
It is a figure which shows the example of a program which corrected the progress of the loop which does not include a conditional branch.
【図12】従来技術を説明するための図であり、従来技
術で並列化可能なループを含むプログラム例を示す図で
ある。FIG. 12 is a diagram for explaining a conventional technique, and is a diagram showing an example of a program including a parallelizable loop in the conventional technique.
【図13】従来の並列化コンパイル装置の構成を示すブ
ロック図である。FIG. 13 is a block diagram showing a configuration of a conventional parallelizing compiling device.
【図14】従来の並列化コンパイル装置の機能手段をブ
ロック図にて示した図である。FIG. 14 is a block diagram showing functional means of a conventional parallelizing compiling device.
【図15】従来の並列化コンパイル装置の機能手段をブ
ロック図にて示した図である。FIG. 15 is a block diagram showing functional means of a conventional parallelizing compiling device.
【図16】従来の並列化コンパイル装置の処理動作を説
明するための図である。FIG. 16 is a diagram for explaining a processing operation of a conventional parallelizing compiling device.
【図17】従来の並列化コンパイル装置の処理動作を説
明するための図である。FIG. 17 is a diagram for explaining a processing operation of a conventional parallelizing compiling device.
【図18】従来技術を説明するための図であり、従来技
術で並列化不可能なループを含むプログラム例を示す図
である。FIG. 18 is a diagram for explaining a conventional technique and is a diagram showing a program example including a loop that cannot be parallelized by the conventional technique.
1 プロセッサ 2 入力手段 3 メモリ 4 出力手段 50 入力手段 51 中間コード生成手段 52 ループ検出手段 53 配列検出手段 54 変数抽出手段 55 記憶手段 56 ループ変換手段 57 判定手段 58 オブジェクト生成手段 59 出力手段 1 Processor 2 Input Means 3 Memory 4 Output Means 50 Input Means 51 Intermediate Code Generating Means 52 Loop Detecting Means 53 Array Detecting Means 54 Variable Extracting Means 55 Storage Means 56 Loop Converting Means 57 Judging Means 58 Object Generating Means 59 Output Means
Claims (3)
出し命令が実行されるようにプログラムされた条件分岐
文をループ内に含むループを検出した際に、該ループ
を、前記条件分岐文を含むループと、前記条件分岐文を
含まないループと、に分割し、前記条件分岐文を含むル
ープが先に実行されるように配置すると共に、前記条件
分岐文を含むループの終了時のループ制御変数の値から
前記条件分岐文を含まないループの終値を得、前記条件
分岐を含まないループについて並列実行可能としたこと
を特徴とする並列化コンパイル方法。1. When a loop including a conditional branch statement programmed so that an instruction for jumping out of the loop is executed depending on whether a condition is satisfied is detected, the loop is set to the conditional branch statement. And a loop not including the conditional branch statement, arranged so that the loop including the conditional branch statement is executed first, and a loop at the end of the loop including the conditional branch statement. A parallel compiling method, wherein a final value of a loop that does not include the conditional branch statement is obtained from the value of a control variable, and the loop that does not include the conditional branch can be executed in parallel.
該ループ外への条件付き飛び出しが存在するループを検
出し、 該検出されたループについて、条件を判定してループ外
へ飛び出す部分のループと、これ以外の部分である他の
ループと、に分割し、 前記ループ外へ飛び出す部分のループに対して、該ルー
プを実行した後の制御変数の値を、前記他のループの制
御変数の終値として設定し、前記他のループを並列に実
行するように変換することを特徴とする並列化コンパイ
ル方法。2. A loop in which a source program is scanned to detect a loop in which a conditional jump out of the loop exists, and a condition of the detected loop is determined and jumped out of the loop. , Other loops other than this, and the loop of the portion that jumps out of the loop, the value of the control variable after executing the loop, the final value of the control variable of the other loop And the other loop is converted so as to be executed in parallel.
文中に変数の定義が含まれているか否かを判定し、変数
の定義が含まれていない場合には、ループ分割のための
一時変数を導入し、分割されたループの間において前記
ループ外へ飛び出す部分のループの制御変数の値を前記
一時変数に代入し、 前記ループ外へ飛び出す部分のループの直後のループの
終値を前記一時変数に変更するように自動で設定するこ
とを特徴とする請求項1記載の並列化コンパイル方法。3. It is determined whether or not a variable definition is included in the conditional statement that is determined to have a branch out of the loop. If the variable definition is not included, a loop split Introduce a temporary variable, assign the value of the control variable of the loop of the portion jumping out of the loop between the divided loops to the temporary variable, the closing value of the loop immediately after the loop of the portion jumping out of the loop 2. The parallelizing compiling method according to claim 1, wherein the setting is automatically made so as to be changed to a temporary variable.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8159077A JP2956591B2 (en) | 1996-05-30 | 1996-05-30 | Method and apparatus for parallelizing a loop having a conditional jump out of the loop |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8159077A JP2956591B2 (en) | 1996-05-30 | 1996-05-30 | Method and apparatus for parallelizing a loop having a conditional jump out of the loop |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09319591A true JPH09319591A (en) | 1997-12-12 |
JP2956591B2 JP2956591B2 (en) | 1999-10-04 |
Family
ID=15685724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8159077A Expired - Lifetime JP2956591B2 (en) | 1996-05-30 | 1996-05-30 | Method and apparatus for parallelizing a loop having a conditional jump out of the loop |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2956591B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487497B2 (en) | 2004-08-26 | 2009-02-03 | International Business Machines Corporation | Method and system for auto parallelization of zero-trip loops through induction variable substitution |
JP2018067167A (en) * | 2016-10-20 | 2018-04-26 | 富士通株式会社 | Code generation device, code generation method, and code generation program |
-
1996
- 1996-05-30 JP JP8159077A patent/JP2956591B2/en not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487497B2 (en) | 2004-08-26 | 2009-02-03 | International Business Machines Corporation | Method and system for auto parallelization of zero-trip loops through induction variable substitution |
US8375375B2 (en) | 2004-08-26 | 2013-02-12 | International Business Machines Corporation | Auto parallelization of zero-trip loops through the induction variable substitution |
JP2018067167A (en) * | 2016-10-20 | 2018-04-26 | 富士通株式会社 | Code generation device, code generation method, and code generation program |
Also Published As
Publication number | Publication date |
---|---|
JP2956591B2 (en) | 1999-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH05257709A (en) | Parallelism discriminating method and parallelism supporting method using the same | |
US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JPH07105012A (en) | Compiling processing system for language processing program | |
JPH06314203A (en) | Method and device for optimizing compiler | |
US5596732A (en) | Method of optimizing instruction sequence of compiler | |
JPH11167492A (en) | Array summary analyzing method for loop containing skip-out sentence | |
JPH09319591A (en) | Parallelizing system for loop having conditional jump out of loop | |
JPH10187461A (en) | Language processing system | |
JPH09282173A (en) | Static analysis method for program | |
JP2621555B2 (en) | Vectorization processing method | |
JP3584204B2 (en) | Automatic source program converter | |
JPH01177165A (en) | Definition-quotation relation checking system for array | |
JPH11195011A (en) | Language translation processor, language translation processing method and record medium recording language translation processing program | |
JP2555011B2 (en) | Vector data processing method | |
JPH07141196A (en) | Loop developing system having out-of-loop branch | |
JP3047418B2 (en) | Vectorization processing method | |
JPH04343140A (en) | Parallelized processing system | |
JP5169322B2 (en) | Variable optimization apparatus, variable optimization program, compiler, variable optimization method, and compilation method | |
JP3367438B2 (en) | Conditional execution processing device | |
JP3018783B2 (en) | Compilation method | |
JPH1083311A (en) | Simulator | |
JPH07192034A (en) | Interpreter type simulation method | |
JPH0231236A (en) | Compiler | |
JPH0795272B2 (en) | Compile method | |
JPH07114471A (en) | Compiler to translate parallel logic language into vliw instruction |
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: 19990622 |