JPH04104330A - Procedure calling system at parallel processing time - Google Patents

Procedure calling system at parallel processing time

Info

Publication number
JPH04104330A
JPH04104330A JP22172090A JP22172090A JPH04104330A JP H04104330 A JPH04104330 A JP H04104330A JP 22172090 A JP22172090 A JP 22172090A JP 22172090 A JP22172090 A JP 22172090A JP H04104330 A JPH04104330 A JP H04104330A
Authority
JP
Japan
Prior art keywords
procedure
argument
generates
argument list
citation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP22172090A
Other languages
Japanese (ja)
Other versions
JP2682215B2 (en
Inventor
Akikazu Abe
安部 曉一
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP22172090A priority Critical patent/JP2682215B2/en
Publication of JPH04104330A publication Critical patent/JPH04104330A/en
Application granted granted Critical
Publication of JP2682215B2 publication Critical patent/JP2682215B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To reduce the overhead of calling a procedure at the time of a parallel processing by generating a procedure quotation instruction string storing an address in an argument list at the time of calling the procedure as against an argument which the address decides at the time of executing a program. CONSTITUTION:When a source program 1 is given, a procedure quotation detection part 211 in a syntax analysis part 21 detects the procedure quotation 'CALLSUB(X(1), Y, Z(1), 1.0)' in a compiler 2. An argument list analysis part 212 judges that the addresses of array elements X(I) and Z(I) among arguments X(1), Y, Z(1) and 1.0 are decided at the time of execution and the addresses of a variable Y and a constant 1.0 are statically decided before the start of execution, and outputs them as an argument list information 25. A procedure quotation text generation part 213 calculates the addresses of the array elements X(1) and Z(1) among the arguments and generates an intermediate text 24. A paralleling part 22 converts the intermediate text 24 so that the calculation of addresses are executed in parallel on plural processors.

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は並列化機能を有するコンパイラに関し、特に手
続き引用を含むプログラムの実行時性能を向」ニさせる
コンパイラに関スる。
DETAILED DESCRIPTION OF THE INVENTION [Field of Industrial Application] The present invention relates to a compiler having a parallelization function, and particularly to a compiler that improves the runtime performance of a program including procedure references.

〔従来の技術〕[Conventional technology]

近年、計算機の性能向上のために複数個のプロセッサを
並列に動作させる技術が進歩しているが、並列処理が可
能な構造を持つプログラムにおいては、そのプログラム
中で行う処理を複数個の並列実行される単位(以下、タ
スクという)に分割し、タスクを複数個のプロセッサ上
で並列に処理することによりプログラムの処理時間を短
縮している。
In recent years, technology has advanced in which multiple processors operate in parallel to improve computer performance, but in programs that have a structure that allows parallel processing, it is necessary to execute the processes in the program in parallel. The processing time of the program is shortened by dividing the program into units (hereinafter referred to as tasks) and processing the tasks in parallel on multiple processors.

このような構造を持つプログラムにおいては、そのプロ
グラム中の手続きは、各プロセッサで共有されて使用さ
れるため、該手続きで他の手続きを呼び出しているよう
な場合、該手続きのりエンドラント性を保証するために
、呼び出す手続きに渡す引数リストをスタックと呼ばれ
るような手続きの呼出しごとに手続きの入口で動的に確
保される領域に配置し、手続きを呼び出す際に各引数の
アドレスを引数リスト中にセットして手続き呼出しを行
うような命令列(以下、手続き引用命令列という)を生
成していた。
In a program with such a structure, the procedures in the program are shared and used by each processor, so if the procedure calls another procedure, endruntness of the procedure cannot be guaranteed. In order to An instruction sequence (hereinafter referred to as a procedure-quoting instruction sequence) that calls a procedure by setting it was generated.

例えば、第2図に示すようなソースプログラムが与えら
れた場合、従来のコンパイラでは、ソースプログラム中
の手続き引用r CA L L  S U B(X (
I)、Y、Z (1)、1.0)Jに対して第3図に示
すような引数の個数、  X (1)のアドレス、Yの
アドレス、  Z (1)のアドレスおよび1.0のア
ドレスからなる引数リストを作成するために、第4図に
示すようなXN)のアドレスを引数リストにセットする
命令列、Yのアドレスを引数リストにセットする命令列
、  Z (+)のアドレスを引数リストにセントする
命令列、1.0のアドレスを引数リストにセントする命
令列および手続き(SUB)を呼び出す命令列の5つの
命令列からなる手続き引用命令列を生成していた。
For example, when a source program as shown in FIG.
I), Y, Z (1), 1.0) Number of arguments as shown in Figure 3 for J, address of X (1), address of Y, address of Z (1) and 1.0 In order to create an argument list consisting of the addresses of , as shown in Figure 4, an instruction sequence sets the address of A procedure quoting instruction sequence was generated that consisted of five instruction sequences: an instruction sequence that placed 1.0 in the argument list, an instruction sequence that placed an address of 1.0 in the argument list, and an instruction sequence that called a procedure (SUB).

第2図におイテ、rGLOBAL  X (100)Y
、Z (100)Jは、100個の要素を持つ配列Xお
よびZと変数Yとを並列処理されるタスク間で共有され
る静的なデータ領域に配置することを宣言するものであ
る。したがって、手続き引用rCALL  SUB  
(X  N)、Y、Z  (1)1.0)Jにおける引
数リストにおいて、変数Yおよび定数1.0は静的にア
ドレスが決定するため、本来引数リストの実行時にアド
レスを設定しなくてもよいはずであるが、第4図に示す
手続き引用命令列では無条件にすべての引数アドレスの
設定がなされていた。
As shown in Figure 2, rGLOBAL X (100)Y
, Z (100)J declares that arrays X and Z having 100 elements and variable Y are to be placed in a static data area shared between tasks to be processed in parallel. Therefore, the procedure citation rCALL SUB
(X N), Y, Z (1) 1.0) In the argument list for J, the addresses of variable Y and constant 1.0 are determined statically, so originally the addresses do not need to be set when executing the argument list. However, in the procedure citation instruction sequence shown in FIG. 4, all argument addresses were set unconditionally.

〔発明が解決しようとする課題〕[Problem to be solved by the invention]

上述した従来の並列処理時の手続き呼出し方式では、手
続き呼出しごとにその引数アドレスを引数リスト中にセ
ントする必要があったので、例えば、そのアドレスがプ
ログラムの実行開始前に決定するような引数(タスク間
で共有されるデータや手続き引数等)に対しても、手続
き呼出し実行時にそのアドレスを引数リスト中に格納す
るような手続き引用命令列を実行する必要が生じ、手続
き呼出しのオーハーヘソドが大きいという欠点がある。
In the conventional procedure calling method for parallel processing described above, it was necessary to insert the argument address into the argument list for each procedure call. Even for data shared between tasks, procedure arguments, etc., it is necessary to execute a procedure reference instruction sequence that stores the address in the argument list when executing a procedure call, and the overhead of a procedure call is large. There are drawbacks.

本発明の目的は、上述の点に鑑み、手続き呼出し時に渡
す引数リストを並列実行される各タスクごとのローカル
な領域に配置し、プログラムの実行前にアドレスが決定
する引数に対してはそのアドレスを初期値としてプログ
ラムまたは各タスクの開始時に引数リスト中に設定する
とともに、プログラムの実行時にアドレスが決定する引
数に対してのみ手続き呼出し時にそのアドレスを引数リ
スト中に格納するような手続き引用命令列を生成するよ
うにした並列処理時の手続き呼出し方式を提供すること
にある。
In view of the above-mentioned points, an object of the present invention is to place an argument list to be passed when a procedure is called in a local area for each task executed in parallel, and for arguments whose addresses are determined before program execution, is set as an initial value in the argument list at the start of a program or each task, and only for arguments whose addresses are determined during program execution, the address is stored in the argument list when the procedure is called. The purpose of this invention is to provide a procedure calling method during parallel processing that generates .

〔課題を解決するための手段〕[Means to solve the problem]

本発明の並列処理時の手続き呼出し方式は、高級言語で
記述されたソースプログラムを読み込み構文解析を行っ
て中間テキストを生成する構文解析部と、前記中間テキ
ストからソースプログラム中の並列処理可能部分を検出
して前記中間テキストを複数個のプロセッサで並列に処
理する構造をもった中間テキストに変換する並列化部と
、この並列化部により変換された中間テキストからオブ
ジェクトプログラムを生成して出力するコード生成部と
を備えたコンパイラにおいて、ソースブログラム中の手
続き引用を検出する手続き引用検出部と、この手続き引
用検出部により検出された手続き引用時における引数を
解析しプログラムの実行時にアドレスが決定する引数か
プログラムの実行前にアドレスが決定する引数かを判定
して判定結果を含む引数リスト情報を生成する引数リス
ト解析部と、プログラムの実行時にアドレスが決定する
引数に対してはその引数アドレスを計算し引数リスト中
に格納するような中間テキストを生成する手続き引用テ
キスト生成部とを含む前記構文解析部と、前記引数リス
ト情報をもとに手続き引用時の引数リストを複数個のプ
ロセッサ上で並列実行される単位であるタスクごとに割
り当てられるタスクローカルデータとして記憶域に割り
当てるとともにプログラムの実行前にアドレスが決定す
る引数に対してはそのアドレスを引数リストの初期値と
して持つようなオブジェクトプログラムを生成するタス
クローカルデータ生成部と、手続き引用の中間テキスト
に対して手続き引用の命令列を生成する手続き引用命令
列生成部とを含む前記コード生成部とを有する。
The procedure calling method during parallel processing of the present invention includes a syntax analysis unit that reads a source program written in a high-level language, performs syntax analysis, and generates intermediate text, and extracts parallel processable parts of the source program from the intermediate text. a parallelization unit that detects and converts the intermediate text into an intermediate text having a structure that is processed in parallel by a plurality of processors, and a code that generates and outputs an object program from the intermediate text converted by the parallelization unit. A procedure citation detection unit that detects procedure citations in a source program in a compiler equipped with a generation unit, and a procedure citation detection unit that analyzes arguments at the time of procedure citation detected by the procedure citation detection unit and determines an address when the program is executed. An argument list analysis unit that determines whether the address is an argument or an argument whose address is determined before program execution and generates argument list information including the determination result, and an argument list analysis unit that determines whether the address is an argument whose address is determined before program execution and generates argument list information including the determination result. The syntax analysis unit includes a procedure citation text generation unit that generates intermediate text that is calculated and stored in the argument list, and the argument list at the time of procedure citation is generated on a plurality of processors based on the argument list information. An object program that is allocated to a storage area as task local data that is allocated to each task, which is a unit of parallel execution, and that has the address of an argument whose address is determined before program execution as the initial value of the argument list. The code generation section includes a task local data generation section that generates task local data, and a procedure citation instruction string generation section that generates a procedure citation instruction string from an intermediate text of the procedure citation.

〔作用〕[Effect]

本発明の並列処理時の手続き呼出し方式では、構文解析
部の手続き引用検出部がソースプログラム中の手続き引
用を検出し、引数リスト解析部が手続き引用検出部によ
り検出された手続き引用時における引数を解析しプログ
ラムの実行時にアドレスが決定する引数かプログラムの
実行前にアドレスが決定する引数かを判定して判定結果
を含む引数リスト情報を生成し、手続き引用テキスト生
成部がプログラムの実行時にアドレスが決定する引数に
対してはその引数アドレスを計算し引数リスト中に格納
するような中間テキストを生成し、コード生成部のタス
クローカルデータ生成部が引数リスト情報をもとに手続
き引用時の引数リストを複数個のプロセッサ上で並列実
行される単位であるタスクごとに割り当てられるタスク
ローカルデータとして記憶域に割り当てるとともにプロ
グラムの実行前にアドレスが決定する引数に対してはそ
のアドレスを引数リストの初期値として持つようなオブ
ジェクトプログラムを生成し、手続き引用命令列生成部
が手続き引用の中間テキストに対して手続き引用の命令
列を生成する。
In the procedure calling method during parallel processing of the present invention, the procedure citation detection section of the syntax analysis section detects procedure citations in the source program, and the argument list analysis section extracts the arguments at the time of procedure citation detected by the procedure citation detection section. It analyzes and determines whether the address is determined during program execution or the address is determined before program execution, generates argument list information including the determination result, and the procedure quotation text generation unit determines whether the address is determined when the program is executed. For the argument to be determined, the argument address is calculated and intermediate text is generated to be stored in the argument list.The task local data generation part of the code generation part generates the argument list when citing the procedure based on the argument list information. is allocated to the storage area as task local data for each task, which is a unit that is executed in parallel on multiple processors, and for arguments whose addresses are determined before program execution, the addresses are used as the initial values of the argument list. An object program having the following is generated, and a procedure citation instruction string generation unit generates a procedure citation instruction string for the procedure citation intermediate text.

(実施例〕 次に、本発明について図面を参照して詳細に説明する。(Example〕 Next, the present invention will be explained in detail with reference to the drawings.

第1図は、本発明の一実施例に係る並列処理時の手続き
呼出し方式が適用されたコンパイラ2の構成を示すブロ
ック図である。このコンパイラ2は、FORTRAN等
の高級言語で記述されたソースプログラム1を入力して
オブジェクトプログラム3を生成出力するもので、その
処理の過程で中間テキスト24を生成する構文解析部2
1と、中間テキスト24からソースプログラム1中の並
列処理可能部分を検出して中間テキスト24を複数個の
プロセッサで並列に処理する構造をもった中間テキスト
24に変換する並列化部22止、変換された中間テキス
ト24からオブジェクトプログラム3を生成して出力す
るコード生成部23とから、その主要部が構成されてい
る。
FIG. 1 is a block diagram showing the configuration of a compiler 2 to which a procedure calling method during parallel processing according to an embodiment of the present invention is applied. This compiler 2 inputs a source program 1 written in a high-level language such as FORTRAN and generates and outputs an object program 3. In the process, a syntax analysis unit 2 generates intermediate text 24.
1, and a parallelization unit 22 that detects parallel processable portions in the source program 1 from the intermediate text 24 and converts the intermediate text 24 into an intermediate text 24 having a structure that can be processed in parallel by a plurality of processors. The main part thereof consists of a code generation section 23 that generates and outputs the object program 3 from the generated intermediate text 24.

構文解析部21は、ソースプログラム1中の手続き引用
を検出する手続き引用検出部211と、手続き引用時に
おける引数を解析しプログラムの実行時にアドレスが決
定する引数がプログラムの実行前にアドレスが決定する
引数かを判定して判定結果を含む引数リスト情報25を
生成する引数リスト解析部212と、プログラムの実行
時にアドレスが決定する引数に対してはその引数アドレ
スを計算し引数リスト中に格納するような中間テキスト
24を生成する手続き引用テキスト生成部213とを備
えている。
The syntax analysis unit 21 includes a procedure citation detection unit 211 that detects procedure citations in the source program 1, and a procedure citation detection unit 211 that analyzes arguments at the time of procedure citation and whose addresses are determined when the program is executed. An argument list analysis unit 212 that determines whether the argument is an argument and generates argument list information 25 including the determination result, and an argument list analysis unit 212 that determines whether the argument is an argument and generates argument list information 25 including the determination result, and for arguments whose addresses are determined during program execution, calculates the argument address and stores it in the argument list. The procedure citation text generation unit 213 generates an intermediate text 24.

コード生成部23は、引数リスト情報25をもとに手続
き引用時の引数リスト311を複数個のプロセンナ上で
並列実行されるタスクごとに割り当てられるデータ(以
下、タスクローカルデータという)31として記憶域に
割り当てるとともに、プログラムの実行前にアドレスが
決定する引数に対してはそのアドレスを引数リスト31
1の初期値として持つようなオブジェクトプログラム3
を生成するタスクローカルデータ生成部231と、手続
き引用の中間テキスト24に対して手続き引用命令列を
生成する手続き引用命令列生成部232とを有している
The code generation unit 23 generates an argument list 311 at the time of procedure citation based on the argument list information 25 as data (hereinafter referred to as task local data) 31 allocated to each task executed in parallel on a plurality of processors in a storage area. In addition, for arguments whose addresses are determined before program execution, the addresses are assigned to the argument list 31.
Object program 3 that has as the initial value of 1
, and a procedure citation instruction string generation section 232 that generates a procedure citation instruction string for the intermediate text 24 of the procedure citation.

次に、このように構成された本実施例の並列処理時の手
続き呼出し方式の動作について説明する。
Next, the operation of the procedure call method during parallel processing in this embodiment configured as described above will be explained.

コンパイラ2では、第2図に示すようなソースプログラ
ム1が与えられた場合、構文解析部21中の手続き引用
検出部211は、まずDOループ中の手続き引用rCA
LL  SUB (X (1)y、z (1)、1.0
)Jを検出する。
In the compiler 2, when the source program 1 as shown in FIG.
LL SUB (X (1)y, z (1), 1.0
) Detect J.

次に、引数リスト解析部212は、引数X(1)、 Y
、  Z (T)および1.0のうちの配列要素X(1
)およびZ (+)のアドレスが実行時に決定すること
と、変数Yおよび定数1.0のアドレスが実行開始前に
静的に決定することとを判定し、引数リスト情報25と
して出力する。
Next, the argument list analysis unit 212 calculates the arguments X(1), Y
, Z (T) and array element X(1
) and Z (+) are determined during execution, and that the addresses of variable Y and constant 1.0 are statically determined before the start of execution, and are output as argument list information 25.

続いて、手続き引用テキスト生成部213は、引数のう
ちの配列要素X (1)およびZ (1)に対してその
アドレスを計算し、引数リスト中に格納して手続き引用
を行うような中間テキスト24を生成する。
Next, the procedure citation text generation unit 213 calculates the addresses of array elements X (1) and Z (1) among the arguments, stores them in the argument list, and generates an intermediate text that performs procedure citation. 24.

次に、並列化部22は、例えば、DO小ループ各繰返し
を1つのタスクとして複数個のプロセッサ上で並列実行
させるように中間テキスト24を変換する。
Next, the parallelization unit 22 converts the intermediate text 24 so that, for example, each repetition of the DO small loop is executed in parallel on a plurality of processors as one task.

続いて、コード生成部23中のタスクローカルデータ生
成部231は、構文解析部21から出力された引数リス
ト情報25をもとに、第5図に示すように、第6図に示
すような引数の個数、Yのアドレスおよび1.0のアド
レスがすでに設定された初期イメージを持つ引数リスl
−311を手続き(SUB)を引用し異なるプロセ・ノ
サ(#1#2.・・・)上で並列実行される各タスク(
i、 (i→−1)、・・・)ごとのローカルな領域に
タスクローカルデータ31として静的に割り当てるよう
なオブジェクトプログラム3を生成する。このため、タ
スクローカルデータ31は、プログラムまたは各タスク
の開始時に第6図のイメージで1回だけ初期化される。
Next, the task local data generation section 231 in the code generation section 23 generates arguments as shown in FIG. 6 based on the argument list information 25 output from the syntax analysis section 21, as shown in FIG. An argument list l with an initial image in which the number of objects, the address of Y, and the address of 1.0 are already set.
-311 is cited as the procedure (SUB), and each task (
An object program 3 is generated that statically allocates task local data 31 to a local area for each i, (i→-1), . . . ). Therefore, the task local data 31 is initialized only once in the image shown in FIG. 6 at the start of a program or each task.

すなわち、プログラムまたは各タスクの実行開始前に静
的に決定される変数Yおよび定数1.0のアドレスと引
数の個数4とは、プログラムまたは各タスクの実行途中
で再び値が設定されることはない。
In other words, the address of the variable Y, the constant 1.0, and the number of arguments 4, which are statically determined before the start of execution of the program or each task, will not be set again during the execution of the program or each task. do not have.

最後に、手続き引用命令列生成部232は、構文解析部
21中の手続き引用テキスト生成部213で生成された
中間テキスト24を入力し、引数リスト311中に、第
7図に示すようなX (1)のアドレスを引数リストに
セントする命令列、Z(1)のアドレスを引数リストに
セットする命令列および手続き(SUB)を呼び出す命
令列の3つの命令列からなる手続き引用命令列を生成す
る。
Finally, the procedure citation instruction sequence generation unit 232 inputs the intermediate text 24 generated by the procedure citation text generation unit 213 in the syntax analysis unit 21, and writes an X ( Generate a procedure reference instruction sequence consisting of three instruction sequences: an instruction sequence that places the address of 1) in the argument list, an instruction sequence that sets the address of Z(1) in the argument list, and an instruction sequence that calls the procedure (SUB). .

なお、コンパイラ2から出力されたオブジェクトプログ
ラムは、並列処理可能な実行形式プログラムを出力する
リンカ(図示せず)によって結合され、リンカから出力
された実行形式プロゲラ1、は、複数個のプロセッサで
並列に実行する並列実行制御手段を備えた計算機ソステ
ムにより実行される。したがって、プログラムの実行時
にアドレスが決定する引数X (1)およびZ (1)
に対してのみ、手続き呼出し時Gこそのアドレスが引数
リスト中に格納される。
The object programs output from the compiler 2 are combined by a linker (not shown) that outputs an executable program that can be processed in parallel, and the executable progera 1 output from the linker can be processed in parallel by multiple processors. It is executed by a computer system equipped with a parallel execution control means. Therefore, the arguments X (1) and Z (1) whose addresses are determined when the program is executed
Only when the procedure is called, the address of G is stored in the argument list.

〔発明の効果〕〔Effect of the invention〕

以上説明したように本発明は、手続き呼出し時に渡す引
数リストを並列実行される各タスクごとのローカルな領
域に配置し、プログラムの実行前にアドレスが決定する
引数に対してはそのアドレスを初期値としてプログラム
または各タスクの開始時に引数リスト中に設定するとと
もに、プログラムの実行時にアドレスが決定する引数に
対してのみ手続き呼出し時にそのアドレスを引数リスト
中に格納するような手続き引用命令列を生成するように
したことにより、並列処理時における手続き呼出しのオ
ーバーヘッドを削減できるという効果がある。
As explained above, the present invention places the argument list to be passed when calling a procedure in a local area for each task executed in parallel, and sets the address to the initial value for arguments whose addresses are determined before program execution. is set in the argument list at the start of the program or each task, and generates a procedure reference instruction sequence that stores the address in the argument list when calling the procedure only for arguments whose addresses are determined when the program is executed. This has the effect of reducing the overhead of procedure calls during parallel processing.

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

第1図は本発明の一実施例に係る並列処理時の手続き呼
出し方式が適用されたコンパイラの構成を示すブロック
図、 第2図は手続き引用を含んで並列化されるソースプログ
ラムの一例を示す図、 第3図は従来の並列処理時の手続き呼出し方式による手
続き引用時の引数リストの一例を示す図、第4図は従来
の並列処理時の手続き呼出し方式により生成される手続
き引用命令列の一例を示す図、 第5図はタスクローカルデータの割当てを例示する図、 第6図は本実施例の並列処理時の手続き呼出し方式によ
る引数リストの初期イメージの一例を示す図、 第7図は本実施例の並列処理時の手続き呼出し方式によ
り生成される手続き引用命令列の一例を示す図である。 図において、 1・・・ソースプログラム、 2・・・コンパイラ、 3・・・オブジェクトプログラム、 21・・構文解析部、 22・・並列化部、 23・・コード生成部、 24・・中間テキスト、 25・・引数リスト情報、 31・・タスクローカルデータ、 211・手続き引用検出部、 212・引数リスト解析部、 213・手続き引用テキスト生成部、 23トタスクロ一カルデータ生成部、 232・手続き引用命令列生成部、 311・引数リストである。
Figure 1 is a block diagram showing the configuration of a compiler to which a procedure calling method during parallel processing according to an embodiment of the present invention is applied, and Figure 2 shows an example of a source program that is parallelized and includes procedure references. Figure 3 shows an example of an argument list when citing a procedure using the conventional procedure calling method during parallel processing. Figure 5 is a diagram illustrating assignment of task local data; Figure 6 is a diagram illustrating an example of an initial image of an argument list using the procedure call method during parallel processing in this embodiment; FIG. 3 is a diagram illustrating an example of a procedure citation instruction sequence generated by the procedure call method during parallel processing according to the present embodiment. In the figure, 1... source program, 2... compiler, 3... object program, 21... syntax analysis section, 22... parallelization section, 23... code generation section, 24... intermediate text, 25. Argument list information, 31. Task local data, 211. Procedure citation detection unit, 212. Argument list analysis unit, 213. Procedure citation text generation unit, 23. Task local data generation unit, 232. Procedure citation instruction string. Generation part, 311-Argument list.

Claims (1)

【特許請求の範囲】 高級言語で記述されたソースプログラムを読み込み構文
解析を行って中間テキストを生成する構文解析部と、前
記中間テキストからソースプログラム中の並列処理可能
部分を検出して前記中間テキストを複数個のプロセッサ
で並列に処理する構造をもった中間テキストに変換する
並列化部と、この並列化部により変換された中間テキス
トからオブジェクトプログラムを生成して出力するコー
ド生成部とを備えたコンパイラにおいて、 ソースプログラム中の手続き引用を検出する手続き引用
検出部と、この手続き引用検出部により検出された手続
き引用時における引数を解析しプログラムの実行時にア
ドレスが決定する引数かプログラムの実行前にアドレス
が決定する引数かを判定して判定結果を含む引数リスト
情報を生成する引数リスト解析部と、プログラムの実行
時にアドレスが決定する引数に対してはその引数アドレ
スを計算し引数リスト中に格納するような中間テキスト
を生成する手続き引用テキスト生成部とを含む前記構文
解析部と、 前記引数リスト情報をもとに手続き引用時の引数リスト
を複数個のプロセッサ上で並列実行される単位であるタ
スクごとに割り当てられるタスクローカルデータとして
記憶域に割り当てるとともにプログラムの実行前にアド
レスが決定する引数に対してはそのアドレスを引数リス
トの初期値として持つようなオブジェクトプログラムを
生成するタスクローカルデータ生成部と、手続き引用の
中間テキストに対して手続き引用の命令列を生成する手
続き引用命令列生成部とを含む前記コード生成部と を有することを特徴とする並列処理時の手続き呼出し方
式。
[Scope of Claims] A syntax analysis unit that reads a source program written in a high-level language and performs syntax analysis to generate an intermediate text; a parallelization unit that converts the text into an intermediate text having a structure to be processed in parallel by a plurality of processors, and a code generation unit that generates and outputs an object program from the intermediate text converted by the parallelization unit. In the compiler, there is a procedure quotation detection unit that detects procedure quotations in a source program, and an argument at the time of procedure quotation detected by this procedure quotation detection unit is analyzed. An argument list analysis unit that determines whether an address is a determined argument and generates argument list information including the determination result, and for arguments whose addresses are determined during program execution, calculates the argument address and stores it in the argument list. and a procedure citation text generation unit that generates an intermediate text such as the following: a syntax analysis unit that generates an intermediate text such as A task local data generation unit that generates an object program that is allocated to a storage area as task local data that is allocated for each task, and that has the address as the initial value of the argument list for arguments whose addresses are determined before program execution. and a procedure citation instruction string generation section that generates a procedure citation instruction sequence from an intermediate text of the procedure citation.
JP22172090A 1990-08-23 1990-08-23 Procedure call method during parallel processing Expired - Lifetime JP2682215B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22172090A JP2682215B2 (en) 1990-08-23 1990-08-23 Procedure call method during parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22172090A JP2682215B2 (en) 1990-08-23 1990-08-23 Procedure call method during parallel processing

Publications (2)

Publication Number Publication Date
JPH04104330A true JPH04104330A (en) 1992-04-06
JP2682215B2 JP2682215B2 (en) 1997-11-26

Family

ID=16771207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22172090A Expired - Lifetime JP2682215B2 (en) 1990-08-23 1990-08-23 Procedure call method during parallel processing

Country Status (1)

Country Link
JP (1) JP2682215B2 (en)

Also Published As

Publication number Publication date
JP2682215B2 (en) 1997-11-26

Similar Documents

Publication Publication Date Title
JP2738692B2 (en) Parallel compilation method
US6292939B1 (en) Method of reducing unnecessary barrier instructions
JP4077252B2 (en) Compiler program and compile processing method
US20020069302A1 (en) Method and system for passing messages between threads
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
JP2921190B2 (en) Parallel execution method
JPS6184740A (en) Generating system of general-use object code
US20030126589A1 (en) Providing parallel computing reduction operations
JPH04104330A (en) Procedure calling system at parallel processing time
Kazi et al. Coarse-grained thread pipelining: A speculative parallel execution model for shared-memory multiprocessors
Griebler et al. Towards a domain-specific language for patterns-oriented parallel programming
JP2871693B2 (en) Critical section optimization method
EP4270177A1 (en) Multi-level graph programming interfaces for controlling image processing flow on ai processing unit
EP4270298A1 (en) Enhanced computer vision application programming interface
JP2518504B2 (en) Target program generator
JP3072772B2 (en) Compiling device
JP2560491B2 (en) Parallelized procedure execution method
US5335351A (en) Method for optimizing source program including variables necessary for synchronous/exclusive control
JP2001184320A (en) Distributed executing device and recording medium
Smith Parallel Computing in C/C++
JP3239963B2 (en) Multi-processor computer system
JPS63120367A (en) Program transformation device
Oyama et al. Fusion of concurrent invocations of exclusive methods
JPH0240721A (en) Parallel compiling system
JP3079090B2 (en) Processor and program conversion device