JPH06175857A - Program generation processor - Google Patents

Program generation processor

Info

Publication number
JPH06175857A
JPH06175857A JP4323512A JP32351292A JPH06175857A JP H06175857 A JPH06175857 A JP H06175857A JP 4323512 A JP4323512 A JP 4323512A JP 32351292 A JP32351292 A JP 32351292A JP H06175857 A JPH06175857 A JP H06175857A
Authority
JP
Japan
Prior art keywords
program
index
division
allocation
range
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
JP4323512A
Other languages
Japanese (ja)
Other versions
JP3304445B2 (en
Inventor
Shuichi Nakamura
修一 中村
Hidetoshi Iwashita
英俊 岩下
Makoto Okada
信 岡田
Naoki Sueyasu
直樹 末安
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP32351292A priority Critical patent/JP3304445B2/en
Publication of JPH06175857A publication Critical patent/JPH06175857A/en
Application granted granted Critical
Publication of JP3304445B2 publication Critical patent/JP3304445B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

PURPOSE:To designating a parallel computer so as to generate a partial charge program for arranging data in the memory of respective processor elements (PE) and allocating the execution range of a program without transferring data between the PEs. CONSTITUTION:A division designation processing part 11 decides the allocation lower limit value and allocation upper limit value of an index to be allocated to each PE and stores those values in a divided index storage part 12 each time the division of respective indexes described in a source program 10 is designated. A partial charge program generation processing part 13 decides the attached character range of arrangement data to be allocated to the respective PEs and the repeating range of the program so as to satisfy the allocation lower and upper limit values of the designated index division each time the division of respective arrangement data in the source program 10 is designated and the division of each program is designated.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は分散メモリを有する複数
のプロセッサエレメントが配列データの演算を分担して
行う並列計算機のプログラムを生成するプログラム生成
処理装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a program generation processing device for generating a program for a parallel computer in which a plurality of processor elements having distributed memories share the operation of array data.

【0002】1つのプログラムを複数台のプロセッサエ
レメント(以下にPEという)で分担して実行し、各P
Eがそれぞれの分散メモリを持つ場合、各PEの命令実
行部がアクセスする配列データが自分の分散メモリに配
置されていない場合は、他のPEのメモリを参照するた
めに演算の処理効率が落ちるので、必要なデータをでき
るだけ各自身の分散メモリに配置することが望まれる
が、同時に冗長な割り当てにならないようにすることが
望まれる。
A single program is shared and executed by a plurality of processor elements (hereinafter referred to as PEs), and each P
When E has its own distributed memory, if the array data accessed by the instruction execution unit of each PE is not located in its own distributed memory, the processing efficiency of the operation decreases because it refers to the memory of another PE. Therefore, it is desirable to arrange the necessary data in each own distributed memory as much as possible, but at the same time, it is desirable to prevent redundant allocation.

【0003】[0003]

【従来の技術】図6は並列計算機システムの構成を示す
ブロック図であって、システムは複数(n台とする)の
プロセッサエレメントPE2-i(i=1,2,3,・・・n)か
らなり、各PEはCPU21と分散メモリとしてメモリ22
を有し、PE間は適当な通信路23で接続されている。
2. Description of the Related Art FIG. 6 is a block diagram showing a configuration of a parallel computer system. The system includes a plurality of (n units) processor elements PE2-i (i = 1, 2, 3, ... N). Each PE consists of CPU21 and memory 22 as distributed memory.
And PEs are connected by an appropriate communication path 23.

【0004】配列データに対する演算を各PEで分担し
て実行する場合、それぞれのPE2-iのメモリ22に該配列
データを配置しておく。もし該演算に必要な配列データ
がPE2-i内のメモリ22に格納されていないときは、通信
路を経由して該配列データが格納されている自分以外の
PEのメモリ22を通信路23経由でアクセスして該配列デ
ータを獲得することになる。
When the PEs share the operations on the array data and execute the array data, the array data are arranged in the memory 22 of each PE2-i. If the array data necessary for the calculation is not stored in the memory 22 in PE2-i, the memory 22 of the PE other than itself storing the array data is transferred via the communication path 23 via the communication path. To access the sequence data.

【0005】図7の繰り返し計算のプログラムの例に示
した配列データA、B(図7(a) のDIMENSION A、Bで
宣言される)に関する演算を3つのプロセッサで均等に
分担する場合を説明する。
Description will be given of a case where the operations concerning the array data A and B (declared by DIMENSION A and B in FIG. 7A) shown in the example of the iterative calculation program in FIG. 7 are equally shared by the three processors. To do.

【0006】並列計算機の利用者は、図7(a)のプログ
ラムを3つのプロセッサ(PE2-1〜3)に分担させるた
めに、図7(b)に示すようにPE2-1〜3がそれぞれ実行
するための分担プログラムを記述して、配列データの各
PEに均等に分割し、分割した配列データに対応して、
配列データの処理対象の添字範囲を制御するDO文の繰り
返しの制御値を調整する。
The user of the parallel computer, in order to share the program of FIG. 7 (a) among the three processors (PE2-1-3), as shown in FIG. 7 (b), PE2-1-3 respectively Write a shared program to be executed, divide it evenly into each PE of the array data, and, corresponding to the divided array data,
Adjust the control value of the repetition of the DO statement that controls the subscript range of the processing target of array data.

【0007】これらの分担プログラムは翻訳されて各PE
2-1〜3のCPU21で実行されるが、その場合に各配列
データは、各分担プログラムで宣言されている添字範囲
のデータが、それぞれPE2-1〜3の各メモリ22に配置さ
れる。
These sharing programs are translated into PEs.
It is executed by the CPU 21 of 2-1 to 2-3, and in this case, as the array data, the data of the subscript range declared in each sharing program is arranged in each memory 22 of PE2-1 to PE2-1.

【0008】即ちPE2-1にはDIMENSION A(1:100)、DIME
NSION B(1:100)が、PE2-2にはDIMENSION A(101:200)、
DIMENSION B(101:200)が、PE2-3にはDIMENSION A(201:
299)、DIMENSION B(201:299)が配置される。
That is, PE2-1 has DIMENSION A (1: 100), DIME
NSION B (1: 100), PE2-2 DIMENSION A (101: 200),
DIMENSION B (101: 200), but PE2-3 has DIMENSION A (201:
299) and DIMENSION B (201: 299) are placed.

【0009】ここで、各分担プログラムから明らかなよ
うに、例えばPE2-2のCPU21が参照する配列Bは、B
(I-1)の場合はB(100)〜B(199)となり、B(I)の場合はB(1
01)〜B(200)となり、B(I+1)の場合はB(102)〜B(201)と
なる。
Here, as is clear from the respective sharing programs, for example, the array B referred to by the CPU 21 of PE2-2 is B
B (100) to B (199) for (I-1), and B (1 for B (I)
01) to B (200), and B (I + 1) to B (102) to B (201).

【0010】従って、PE2-2において、配列要素のB(I-
1)とB(I+1)を参照する場合、PE2-2のメモリ22に配置さ
れた配列B(101)〜B(200)以外の、B(100)とB(201)の参照
が必要になり、その場合には前記のように、通信路23を
経由してそれぞれPE2-1とPE2-3のメモリ22をアクセス
する必要があり、プロセッサ間のデータ転送が発生して
アクセスが遅延する。同様に他PEのメモリにアクセス
する必要は、PE2-1及びPE2-3でも発生する。
Therefore, in PE2-2, the array element B (I-
When referencing 1) and B (I + 1), it is necessary to refer to B (100) and B (201) other than arrays B (101) to B (200) arranged in the memory 22 of PE2-2. In that case, as described above, it is necessary to access the memory 22 of each of PE2-1 and PE2-3 via the communication path 23, which causes data transfer between processors and delays access. . Similarly, the need to access the memory of another PE also occurs in PE2-1 and PE2-3.

【0011】この場合に、例えば図7(c) に示すよう
に、配列Bを分割しないで全PEのメモリに配置すれ
ば、前記ようなPE間のデータ転送を避けることができ
るが、全くアクセスを要しない冗長なデータを多量に各
PEで保持することになり、メモリを有効に利用できな
い。
In this case, for example, as shown in FIG. 7C, if the array B is arranged in the memory of all PEs without being divided, the above-mentioned data transfer between PEs can be avoided, but no access is made at all. A large amount of redundant data that does not require is held in each PE, and the memory cannot be effectively used.

【0012】[0012]

【発明が解決しようとする課題】配列データをプロセッ
サ毎のメモリに分散配置して、1つのプログラムを複数
のプロセッサで分担して実行する場合、図7(b)の例に
ついて前記したB(100)とB(201)のように、配列データの
境界部分でプロセッサ間のデータ転送が発生し、並列計
算機の処理効率を落とすという問題がある。
When the array data is distributed in the memory of each processor and one program is shared and executed by a plurality of processors, B (100) described above in the example of FIG. 7B is used. ) And B (201), there is a problem that data transfer between processors occurs at the boundary of array data, and the processing efficiency of the parallel computer is reduced.

【0013】本発明は、並列計算でPE間のデータ転送
が発生しないように、各PEのメモリへの配列データの
配置、及びプログラムの実行範囲の割当を行った分担プ
ログラムを生成するように容易に指定することができる
プログラム生成処理装置を目的とする。
According to the present invention, it is easy to generate a shared program in which the array data is arranged in the memory of each PE and the execution range of the program is assigned so that the data transfer between the PEs does not occur in the parallel calculation. The object is a program generation processing device that can be specified.

【0014】[0014]

【課題を解決するための手段】図1は本発明の構成を示
すブロック図である。図はプログラム生成処理装置の構
成であって、分散メモリを有する複数のPEから構成さ
れ、各該PEの該分散メモリに分割配置された配列デー
タについて、当該配列データの演算を該PEで分担して
実行するための各分担プログラム14を、所与の原プログ
ラム10から生成するプログラム生成処理装置であって、
分割指定処理部11と、分割インデクス格納部12と、分担
プログラム生成処理部13とを有する。
FIG. 1 is a block diagram showing the configuration of the present invention. The figure shows the configuration of the program generation processing device, which is composed of a plurality of PEs having a distributed memory, and for the array data divided and arranged in the distributed memory of each PE, the PEs share the operation of the array data. Is a program generation processing device for generating each shared program 14 for execution by a given original program 10,
It has a division designation processing unit 11, a division index storage unit 12, and a sharing program generation processing unit 13.

【0015】分割指定処理部11は、原プログラム10に記
述された所定の各インデクス分割指定ごとに、該インデ
クス分割指定に指定するPE数、インデクス値範囲、左
袖数及び右袖数に基づいて、各該PEに該インデクス範
囲を均等に重複無く分割した場合の、各下限のインデク
ス値より該左袖数だけ小さい値を各割当下限値とし、各
上限のインデクス値より該右袖数だけ大きい値を各割当
上限値として、各該PEに割り当てるインデクスの該割
当下限値及び割当上限値を決定し、該割当下限値及び割
当上限値を分割インデクス格納部12に記憶する。
The division designation processing unit 11 determines, for each predetermined index division designation described in the original program 10, based on the number of PEs specified in the index division designation, the index value range, the number of left sleeves and the number of right sleeves. , When the index range is equally divided into the PEs without overlapping, a value smaller by the number of left sleeves than the index value of each lower limit is set as each allocation lower limit value, and is larger than the index value of each upper limit by the number of right sleeves. Using the value as each allocation upper limit value, the allocation lower limit value and the allocation upper limit value of the index allocated to each PE are determined, and the allocation lower limit value and the allocation upper limit value are stored in the divided index storage unit 12.

【0016】分担プログラム生成処理部13は、原プログ
ラム10の所定の各配列データ分割指定ごとに、該配列デ
ータ分割指定に指定する配列データ及びインデクス分割
指定に従い、該指定配列データの各該PEへの割当添字
範囲を、該指定インデクス分割指定について分割インデ
クス格納部12に保持する該割当下限値及び該割当上限値
を満足し、且つ該配列データの添字範囲を越えない値に
決定する。
For each predetermined array data division designation of the original program 10, the sharing program generation processing unit 13 assigns to each PE of the designated sequence data according to the array data and index division designation designated in the array data division designation. The allocation subscript range is determined to be a value that satisfies the allocation lower limit value and the allocation upper limit value held in the split index storage unit 12 for the specified index division designation and does not exceed the subscript range of the array data.

【0017】又分担プログラム生成処理部13は、原プロ
グラム10の所定の各プログラム分割指定ごとに、該プロ
グラム分割指定に指定するプログラム部分及びインデク
ス分割指定に従い、該指定プログラム部分の繰り返し制
御値の各該PEへの割当制御値範囲を、該指定インデク
ス分割指定について分割インデクス格納部12に保持する
該割当下限値及び該割当上限値を満足し、且つ当該プロ
グラムの該制御値の範囲を越えない値に決定する。
Further, the shared program generation processing unit 13 determines, for each predetermined program division designation of the original program 10, each repeat control value of the designated program portion in accordance with the program division designated in the program division designation and the index division designation. A value that satisfies the allocation lower limit value and the allocation upper limit value held in the split index storage unit 12 for the specified index division designation in the allocation control value range to the PE, and does not exceed the control value range of the program. To decide.

【0018】分担プログラム生成処理部13は、各該PE
ごとについて、該決定した割当添字範囲及び割当制御値
範囲によって原プログラム10を修正して、各該分担プロ
グラム14を生成する。
The sharing program generation processing unit 13
For each of the above, the original program 10 is modified by the determined allocation subscript range and allocation control value range to generate each of the sharing programs 14.

【0019】[0019]

【作用】本発明のプログラム生成処理装置により、各P
Eで実行すべき分担プログラムを原プログラムから生成
するために、1個以上のインデクス分割指定と、それら
のインデクス分割指定を適用する配列データ及びプログ
ラム部分を、原プログラム上で指定することができるよ
うになる。
With the program generation processing device of the present invention, each P
In order to generate a shared program to be executed in E from the original program, it is possible to specify on the original program one or more index division designations and array data and program parts to which those index division designations are applied. become.

【0020】各インデクス分割指定では、配列データの
添字又はプログラム部分の繰り返し制御値に対応させて
分割を行うためのインデクスについて、インデクス値の
範囲、分割するPE数、及び左右袖数を指定し、例えば
各インデクス分割指定を識別する名前を付ける。なお、
左右袖数は0又は正整数とする。
In each index division designation, an index value range, the number of PEs to be divided, and the number of left and right sleeves are designated with respect to an index for division in correspondence with a subscript of array data or a repetition control value of a program part. For example, a name for identifying each index division designation is given. In addition,
The number of left and right sleeves is 0 or a positive integer.

【0021】各配列データ分割指定では、配列データの
配列名と分割に適用するインデクス分割指定名を指定
し、プログラム分割指定では、分担して並列実行するプ
ログラム部分 (例えばDOループ) とインデクス分割指定
名とを指定する。
In each array data division designation, the array name of the array data and the index division designation name applied to the division are designated, and in the program division designation, the program part (for example, DO loop) to be shared in parallel and the index division designation are designated. Specify the name and.

【0022】分割指定処理部11は、このインデクス分割
指定から各PEに割り当てるインデクスの下限と上限を
割当下限値及び割当上限値として、前記のようにして求
め、例えば分割指定名で区分して分割値格納部12に記憶
する。
The division designation processing unit 11 obtains the lower limit and the upper limit of the index to be assigned to each PE from the index division designation as the allocation lower limit value and the allocation upper limit value as described above, and divides them by, for example, the division designation name. The value is stored in the value storage unit 12.

【0023】従って、左右袖数の少なくとも一方に正整
数を指定することにより、各PEの割当下限値と割当上
限値で定まるインデクスの割当範囲を、隣接のPEの割
当範囲と重複させることができる。
Therefore, by assigning a positive integer to at least one of the number of left and right sleeves, the allocation range of the index determined by the allocation lower limit value and the allocation upper limit value of each PE can overlap with the allocation range of the adjacent PE. .

【0024】分担プログラム生成処理部13は、原プログ
ラムの各配列データ分割指定ごとに、指定されたインデ
クス分割指定に従って、配列データの各PEへの割当添
字範囲を決定し、各プログラム分割指定ごとに、指定さ
れたインデクス分割指定に従い、指定プログラム部分の
繰り返し制御値の各該PEへの割当制御値範囲を決定
し、決定した割当添字範囲及び割当制御値範囲によって
原プログラムを修正して、各PEの分担プログラムを生
成する。
The sharing program generation processing unit 13 determines, for each array data division designation of the original program, an assigned subscript range of the array data to each PE according to the designated index division designation, and for each program division designation. According to the designated index division designation, the allocation control value range of the repetition control value of the designated program part to each PE is determined, the original program is modified by the determined allocation subscript range and the allocation control value range, and each PE is modified. To generate a sharing program.

【0025】以上により、配列データ及びプログラムを
一部重複させて分割するための指定を原プログラム上で
容易に行うことができるようになり、例えば前記従来例
の場合に左右袖数を各1に指定して、PE2-2への配列デ
ータBの割当範囲を、B(100)〜B(201)とすることによ
り、配列要素B(100)とB(201)をPE2-1、PE2-3と重複し
て持って、PE間のデータ転送を不要にすることができ
る。
As described above, it becomes possible to easily specify, on the original program, to divide the sequence data and the program by partially overlapping them. For example, in the case of the conventional example, the number of left and right sleeves is 1 for each. By designating and assigning the range of array data B to PE2-2 to B (100) to B (201), array elements B (100) and B (201) are PE2-1, PE2-3. , And data transfer between PEs can be eliminated.

【0026】[0026]

【実施例】メモリ分散型の並列計算機は図6に示したよ
うに、CPU21とメモリ22とを有する複数のPE2-i(i
=1,2,・・・,n)から構成されるが、これらのPE2-iが1
つのプログラムを複数台で分担して実行する場合、利用
者は、原プログラムを分担プログラムへ分割するための
指示情報を、原始プログラムレベルで原プログラムに記
述して本発明のプログラム生成処理装置に入力する。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS As shown in FIG. 6, a memory distributed parallel computer has a plurality of PE2-i (i) having a CPU 21 and a memory 22.
= 1,2, ..., n), but these PE2-i are 1
When a single program is shared and executed by a plurality of units, the user writes instruction information for dividing the original program into shared programs into the original program at the source program level and inputs it to the program generation processing device of the present invention. To do.

【0027】分割の指示には、インデクス分割指定と、
配列データ分割指定と、プログラム分割指定があり、イ
ンデクス分割指定には、分担するPEの数や、プログラ
ムの命令又はデータの分割基準となるインデクスの区間
情報と、左袖数及び右袖数を指定する。
The division instruction includes an index division designation,
There are array data division designation and program division designation. In the index division designation, the number of PEs to be shared, the section information of the index that is the division reference of the program instruction or data, and the number of left sleeves and right sleeves are specified. To do.

【0028】図3により分割の指示情報を付加した原プ
ログラムの例について説明する。図3(a) のプログラム
は、前記の図7に示したプログラムに本発明による分割
の指示情報を加えたものであって、前記説明と同様に3
台のPE2-i(i=1,2,3 )に分担させて実行することを
予定している。
An example of the original program to which the division instruction information is added will be described with reference to FIG. The program shown in FIG. 3 (a) is the program shown in FIG. 7 to which the division instruction information according to the present invention is added.
PE2-i (i = 1,2,3) of each unit is planned to be shared and executed.

【0029】このプログラムを複数のPEに均等に分割
して実行させるための分割の指示情報として、図示のよ
うにインデクス分割指定を記述するための「PARTITION
文」と、インデクス分割指定を適用して配列データを分
割することを記述する「LOCATE文」と、インデクス分割
指定を適用して繰り返し計算の制御値の範囲を分割する
ことを記述するための「PARALLEL DO 文」とがある。
As division instruction information for evenly dividing and executing this program on a plurality of PEs, "PARTITION" for describing the index division designation as shown in the figure.
Statement "and the" LOCATE statement "that describes dividing the array data by applying the index partitioning specification, and the" LOCATE statement "that describes applying the index partitioning specification to partition the range of control values for repeated calculation. PARALLEL DO statement ".

【0030】PARTITION 文のオペランドの等号の左 (図
の例のP、Q) はインデクス分割指定の名前であり、等
号の右はPEの数(=3)と、分割前のインデクスの区
間(1〜300)と、左右袖数とからなる。但し左右袖数の
記述を省略した場合(図のQの場合)は、左右袖数共に
0を指定したものとする。
The left of the equal sign (P, Q in the example in the figure) of the operand of the PARTITION statement is the name of the index split specification, and the right of the equal sign is the number of PEs (= 3) and the index section before split. (1 to 300) and the number of left and right sleeves. However, if the description of the number of left and right sleeves is omitted (in the case of Q in the figure), 0 is specified for both the number of left and right sleeves.

【0031】LOCATE文は、図示のように配列データの名
前Bと、括弧内に分割に適用するインデクス分割指定の
名前とを記述することにより、指定の配列の添字範囲
を、後述のようにして指定のインデクス分割指定に従っ
て各PEに割り当てることを指定する。
In the LOCATE statement, the name B of the array data and the name of the index division designation applied to the division are described in parentheses as shown in the figure, so that the subscript range of the designated array can be set as described later. Specifies to be assigned to each PE according to the designated index division designation.

【0032】PARALLEL DO 文は、図示のように必要な
「DO文」に置き換えて記述し、右端に記述する「:名
前」の指定で、「名前」のインデクス分割指定を指定
し、そのDO文の繰り返しを制御する制御値の範囲を、後
述のようにして指定のインデクス分割指定に従って各P
Eに割り当てることを指定する。
The PARALLEL DO statement is written by replacing it with the necessary "DO statement" as shown in the figure. By specifying ": name" at the right end, the index division specification of "name" is specified, and the DO statement is displayed. The range of control values for controlling the repetition of P is set according to the specified index division specification as described below.
Specifies to be assigned to E.

【0033】図1の分割指定処理部11は、インデクス分
割指定のPARTITION 文に基づいて、i番目のPE(PE2-
i)に割り当てるインデクスの割当下限値xi、及び割当
上限値yi、を次のようにして求めて、インデクス分割指
定名と共に分割インデクス格納部12に記憶する。
The partition designation processing unit 11 in FIG. 1 is based on the PARTITION statement of index partition designation, and the i-th PE (PE2-
The allocation lower limit value x i and the allocation upper limit value y i of the index to be assigned to i) are obtained as follows and stored in the split index storage unit 12 together with the index split designation name.

【0034】割当下限値xi=max(a,ci−e) 割当上限値yi=min(b,di+f) 但し、上式において、 ・ インデクスの全範囲の下限値=a 、上限値=b、 ・ インデクスを重複することなく各PEに分割した場
合のPE2-iのインデクスの下限値=ci、上限値=di、 ・ 左袖数の値=e,右袖数の値=f であり、max(p,q)はpとqのうち大きい方の値を取る関
数、min(p,q)はpとqのうち小さい方の値を取る関数で
ある。
Allocation lower limit value x i = max (a, c i −e) Allocation upper limit value y i = min (b, d i + f) However, in the above equation, the lower limit value of the entire range of the index = a, the upper limit value = b, the lower limit value of the index of PE2-i in the case of dividing into each PE without overlapping the-index = c i, the upper limit value = d i, the number of, left sleeve value = e, the right sleeve number of values = F 2, max (p, q) is a function that takes the larger value of p and q, and min (p, q) is a function that takes the smaller value of p and q.

【0035】従って図3の例のインデクス分割指定Pに
より、3台のPEに割り当てられるインデクスの範囲
は、 P:(1:101),(100:201),(200:300) となり、インデクス分割指定Qでは、 Q:(1:100),(101:200),(201:300) となる。
Therefore, according to the index division designation P in the example of FIG. 3, the range of indexes assigned to the three PEs is P: (1: 101), (100: 201), (200: 300), and the index division is performed. In the designated Q, it becomes Q: (1: 100), (101: 200), (201: 300).

【0036】分担プログラム生成処理部13は、LOCATE文
で配列データの添字範囲を分割し、及び後述のPARALLEL
DO 文によってプログラムの繰り返し制御値の範囲を分
割する場合には、各PE2-iの割当添字範囲又は割当制御
値範囲の下限値sxi 、及び上限値syiを次の式によって
決定する。
The sharing program generation processing unit 13 divides the subscript range of the array data with the LOCATE statement, and PARALLEL described later.
When the range of the repeat control value of the program is divided by the DO statement, the lower limit value sx i and the upper limit value sy i of the assigned subscript range or assigned control value range of each PE2-i are determined by the following formula.

【0037】下限値sxi=max(sa,xi) 上限値syi=min(sb,yi) 但し、上式において、 ・ 添字範囲又は制御値範囲の下限値=sa、上限値=s
b、 ・ 指定のインデクス分割指定よにる、PE2-iの割当下
限値=xi、割当上限値=yi である。
Lower limit value sx i = max (sa, x i ) Upper limit value sy i = min (sb, y i ) However, in the above equation, the lower limit value of the subscript range or the control value range = sa, the upper limit value = s
b, the allocation lower limit value = x i and the allocation upper limit value = y i of PE2-i according to the designated index division specification.

【0038】従って図3(a)の例で、例えばPE2-3への
配列データBの割当添字範囲は、 下限値sx3=max(sa,x3)=max(1,200)=200 上限値sy3=min(sb,y3)=min(300,300)=300 となり、このようにして配列データA、B及びDO文の分
割を行うことにより、図3(b) に示すような分担プログ
ラムを生成する。
Therefore, in the example of FIG. 3A, for example, the assigned subscript range of the array data B to PE2-3 is as follows: lower limit value sx 3 = max (sa, x 3 ) = max (1,200) = 200 upper limit value sy 3 = min (sb, y 3 ) = min (300, 300) = 300. By dividing array data A, B and DO statements in this way, a sharing program as shown in Fig. 3 (b) is generated. To do.

【0039】このようにして、例えばPE2-3には配列デ
ータBがB(201)〜B(300)ではなく、B(200)〜B(300)とい
うように、配列要素B(200)のみをPE2-2と重複するよう
に割り付けることが容易に指定でき、これによって自分
以外のプロセッサのメモリ22をアクセスする状態は生じ
ないことになる。
In this way, for example, in PE2-3, the array data B is not B (201) to B (300) but B (200) to B (300). Can easily be assigned so as to overlap with PE2-2, so that the state of accessing the memory 22 of a processor other than itself does not occur.

【0040】図4は別のプログラムの例であって、(a)
に示すプログラムを10台のPEで分担して並行処理する
場合には、例えば(b) に示すように分割指定の情報を付
加した原プログラムとする。
FIG. 4 shows an example of another program (a)
When the program shown in (4) is shared by 10 PEs and processed in parallel, the original program is added with the information of division designation as shown in (b), for example.

【0041】この原プログラムを入力することにより、
分割指定処理部11が前記のようにインデクス分割指定
P、Qを処理して、インデクスの割当上下限値を決定
し、それに基づいて分担プログラム生成処理部13が、配
列データAにインデクス分割指定P、配列データB、C
にインデクス分割指定Qを適用して、配列データの分割
を図4(c) のとおり決定する。
By inputting this original program,
The division designation processing unit 11 processes the index division designations P and Q as described above to determine the upper and lower limit values of the index allocation, and the sharing program generation processing unit 13 based on this determines the index division designation P for the array data A. , Sequence data B, C
The index division designation Q is applied to and the division of the array data is determined as shown in FIG. 4 (c).

【0042】又、第1のDO文にインデクス分割指定Q、
第2のDO文にインデクス分割指定Pを適用して、繰り返
し範囲の分割を図4(d) のように決定し、これらの分割
結果によって、図5に示す分担プログラムが生成され
る。
Also, the index division designation Q,
The index division designation P is applied to the second DO statement to determine division of the repeating range as shown in FIG. 4 (d), and the division program shown in FIG. 5 is generated according to the division result.

【0043】図2は、本発明の処理の流れの一例を示す
図である。先ず分割指定処理部11が処理ステップ30で原
プログラムのPARTITION 文を検索し、PARTITION 文があ
れば処理ステップ31で、PARTITION 文に指定されている
インデクス範囲を、指定のPE数により均等に分割す
る。
FIG. 2 is a diagram showing an example of the processing flow of the present invention. First, the division designation processing unit 11 searches for the PARTITION statement of the original program in processing step 30, and if there is a PARTITION statement, in processing step 31, the index range specified in the PARTITION statement is divided evenly by the specified number of PEs. .

【0044】処理ステップ32で、分割したインデクス値
の範囲を前記の式により、指定の袖数の値で補正して、
各PEの割当下限値及び割当上限値を決定し、処理ステ
ップ33で決定した割当上下限値を名前と共に分割インデ
クス格納部10に記憶する。
In the processing step 32, the range of the divided index values is corrected by the above expression with the value of the designated number of sleeves,
The allocation lower limit value and the allocation upper limit value of each PE are determined, and the allocation upper and lower limit values determined in processing step 33 are stored in the split index storage unit 10 together with the name.

【0045】以上を原プログラムの全PARTITION 文につ
いて処理すると、次に分担プログラム生成処理部13が、
処理ステップ34で原プログラムのLOCATE文を検索し、LO
CATE文があれば、処理ステップ35で、LOCATE文に指定さ
れているインデクス分割指定の名前により、分割インデ
クス格納部10から該当の割当上下限値を読み出す。
After processing the above for all PARTITION statements of the original program, the sharing program generation processing unit 13 next
In processing step 34, search for the LOCATE statement of the original program, and
If there is a CATE statement, in process step 35, the corresponding allocation upper and lower limit values are read from the partitioned index storage unit 10 by the index partitioning designation name specified in the LOCATE statement.

【0046】処理ステップ36で、読み出した各PEの割
当上下限値を、指定の配列データのDIMENSION 文に定義
されている添字範囲と比較して、前記の式により各PE
の割当添字範囲を決定し、処理ステップ37で割当添字範
囲により各PEの分担プログラムのDIMENSION 文を生成
する。
In processing step 36, the upper and lower allocation limits of each PE read out are compared with the subscript range defined in the DIMENSION statement of the specified array data, and each PE is calculated by the above equation.
The assigned subscript range of each PE is determined, and in the processing step 37, the DIMENSION statement of the sharing program of each PE is generated according to the assigned subscript range.

【0047】以上を原プログラムの全LOCATE文について
処理すると、次に分担プログラム生成処理部13は、処理
ステップ38で原プログラムのPARALLEL DO 文を検索し、
PARALLEL DO文があれば、処理ステップ39で、そのPARAL
LEL DO文に指定されているインデクス分割指定の名前に
より、分割インデクス格納部10から該当の割当上下限値
を読み出す。
When all the LOCATE statements of the original program have been processed, the sharing program generation processing unit 13 next searches the PARALLEL DO statement of the original program in processing step 38,
If there is a PARALLEL DO statement, the PARALEL DO
The corresponding allocation upper and lower limit values are read from the partitioned index storage unit 10 by the index partitioning specification name specified in the LEL DO statement.

【0048】処理ステップ40で、読み出した各PEの割
当上下限値を、PARALLEL DO 文に定義されている繰り返
し制御値の範囲と比較して、前記の式により各PEの割
当制御値範囲を決定し、処理ステップ41で割当制御値範
囲により各PEの分担プログラムのDO文を生成する。
At processing step 40, the read allocation upper and lower limit values of each PE are compared with the range of the repetition control value defined in the PARALLEL DO statement, and the allocation control value range of each PE is determined by the above formula. Then, in a processing step 41, a DO statement of the sharing program of each PE is generated according to the allocation control value range.

【0049】以上を原プログラムの全PARALLEL DO 文に
ついて処理すると、次に分担プログラム生成処理部13
は、処理ステップ42で原プログラムの変更の無い部分を
そのまゝ分担プログラムに写して各分担プログラムを生
成する。
When all the PARALLEL DO statements of the original program are processed as described above, next, the sharing program generation processing unit 13
In process step 42, the unchanged part of the original program is copied to the assortment program to generate each of the assortment programs.

【0050】[0050]

【発明の効果】以上の説明から明らかなように本発明に
よれば、複数のプロセッサエレメントの並列計算機にお
いて、並列計算でプロセッサエレメント間のデータ転送
が発生しないように、各プロセッサエレメントのメモリ
への配列データの配置、及びプログラムの実行範囲の割
当を行った分担プログラムを生成するように容易に指定
することができるようになるという著しい工業的効果が
ある。
As is apparent from the above description, according to the present invention, in a parallel computer having a plurality of processor elements, data transfer between processor elements is prevented from occurring in the memory of each processor element in parallel computation. There is a remarkable industrial effect that it becomes possible to easily specify to generate a shared program in which the arrangement of the array data and the execution range of the program are assigned.

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

【図1】 本発明の構成を示すブロック図FIG. 1 is a block diagram showing the configuration of the present invention.

【図2】 本発明の処理の流れ図FIG. 2 is a flow chart of processing of the present invention.

【図3】 プログラム例により分割処理を説明する図FIG. 3 is a diagram for explaining division processing by a program example.

【図4】 他のプログラム例により分割処理を説明する
FIG. 4 is a diagram for explaining division processing by another program example.

【図5】 分担プログラムを説明する図FIG. 5 is a diagram explaining a sharing program.

【図6】 メモリ分散型並列計算機の構成例ブロック図FIG. 6 is a block diagram of a configuration example of a memory distributed parallel computer.

【図7】 プログラムを並列分担する例を説明する図FIG. 7 is a diagram illustrating an example in which programs are shared in parallel.

【符号の説明】[Explanation of symbols]

2-1、2-2、2-n PE(プロセッサエレメント) 10 原プログラム 11 分割指定処理部 12 分割インデクス格納部 13 分担プログラム生成処理部 14 分担プログラム 21 CPU 22 メモリ 23 通信路 30〜42 処理ステップ 2-1, 2-2, 2-n PE (processor element) 10 Original program 11 Partition designation processing unit 12 Partition index storage unit 13 Shared program generation processing unit 14 Shared program 21 CPU 22 Memory 23 Communication path 30 to 42 Processing steps

───────────────────────────────────────────────────── フロントページの続き (72)発明者 末安 直樹 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 ─────────────────────────────────────────────────── ─── Continuation of the front page (72) Inventor Naoki Sueyasu 1015 Kamiodanaka, Nakahara-ku, Kawasaki-shi, Kanagawa Fujitsu Limited

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 分散メモリを有する複数のプロセッサエ
レメントから構成され、各該プロセッサエレメントの該
分散メモリに分割配置された配列データについて、当該
配列データの演算を該プロセッサエレメントで分担して
実行するための各分担プログラムを、所与の原プログラ
ムから生成するプログラム生成処理装置であって、 分割指定処理部(11)と、分割インデクス格納部(12)と、
分担プログラム生成処理部(13)とを有し、 該分割指定処理部(11)は、該原プログラム(10)に記述さ
れた所定の各インデクス分割指定ごとに、該インデクス
分割指定に指定するプロセッサエレメント数、インデク
ス値範囲、左袖数及び右袖数に基づいて、各該プロセッ
サエレメントに該インデクス範囲を均等に重複無く分割
した場合の、各下限のインデクス値より該左袖数だけ小
さい値を各割当下限値とし、各上限のインデクス値より
該右袖数だけ大きい値を各割当上限値として、各該プロ
セッサエレメントに割り当てるインデクスの該割当下限
値及び割当上限値を決定し、 該割当下限値及び割当上限値を該分割インデクス格納部
(12)に記憶し、 該分担プログラム生成処理部(13)は、該原プログラム(1
0)の所定の各配列データ分割指定ごとに、該配列データ
分割指定に指定する配列データ及びインデクス分割指定
に従い、該指定配列データの各該プロセッサエレメント
への割当添字範囲を、該指定インデクス分割指定につい
て該分割インデクス格納部(12)に保持する該割当下限値
及び該割当上限値を満足し、且つ該配列データの添字範
囲を越えない値に決定し、 該原プログラムの所定の各プログラム分割指定ごとに、
該プログラム分割指定に指定するプログラム部分及びイ
ンデクス分割指定に従い、該指定プログラム部分の繰り
返し制御値の各該プロセッサエレメントへの割当制御値
範囲を、該指定インデクス分割指定について該分割イン
デクス格納部に保持する該割当下限値及び該割当上限値
を満足し、且つ当該プログラムの該制御値の範囲を越え
ない値に決定し、 各該プロセッサエレメントごとについて、該決定した割
当添字範囲及び割当制御値範囲によって該原プログラム
(10)を修正して、各該分担プログラム(14)を生成するよ
うに構成されていることを特徴とするプログラム生成処
理装置。
1. For array data composed of a plurality of processor elements having a distributed memory and divided and arranged in the distributed memory of each processor element, the processor elements share and execute the operation of the array data. Is a program generation processing device for generating each shared program of a given original program, the division designation processing unit (11), the division index storage unit (12),
A divisional program generation processing unit (13), and the division designation processing unit (11) is a processor for designating the index division designation for each predetermined index division designation described in the original program (10). Based on the number of elements, the range of index values, the number of left sleeves, and the number of right sleeves, a value smaller than the lower limit index value by the number of left sleeves when the index range is evenly divided into each processor element without duplication The allocation lower limit value and the allocation upper limit value of the index to be allocated to each processor element are determined by setting each allocation lower limit value and a value that is larger than the index value of each upper limit by the number of right sleeves as the allocation upper limit value. And the allocation upper limit value for the divided index storage unit
(12), and the shared program generation processing unit (13) stores the original program (1
For each predetermined array data division designation of (0), according to the array data and index division designation specified in the array data division designation, the assigned index range of the designated array data to each processor element is designated by the designated index division designation. Is determined to satisfy the allocation lower limit value and the allocation upper limit value held in the division index storage unit (12) and not exceed the subscript range of the array data, and specify each predetermined program division of the original program. Every
In accordance with the program portion and index division designation specified in the program division designation, the allocation control value range of the repeat control value of the designated program portion to each processor element is held in the division index storage unit for the designated index division designation. A value that satisfies the allocation lower limit value and the allocation upper limit value and does not exceed the range of the control value of the program is determined, and the value is determined according to the determined allocation subscript range and allocation control value range for each processor element. Original program
A program generation processing device, characterized in that (10) is modified to generate each of the sharing programs (14).
JP32351292A 1992-12-03 1992-12-03 Program generation processing device Expired - Fee Related JP3304445B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32351292A JP3304445B2 (en) 1992-12-03 1992-12-03 Program generation processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32351292A JP3304445B2 (en) 1992-12-03 1992-12-03 Program generation processing device

Publications (2)

Publication Number Publication Date
JPH06175857A true JPH06175857A (en) 1994-06-24
JP3304445B2 JP3304445B2 (en) 2002-07-22

Family

ID=18155520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32351292A Expired - Fee Related JP3304445B2 (en) 1992-12-03 1992-12-03 Program generation processing device

Country Status (1)

Country Link
JP (1) JP3304445B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305580A (en) * 1995-05-01 1996-11-22 Nec Corp Language processing unit for parallel program
JP2007133620A (en) * 2005-11-10 2007-05-31 Fujitsu Ltd Task distribution program and task distribution apparatus for processor apparatus having multiprocessor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305580A (en) * 1995-05-01 1996-11-22 Nec Corp Language processing unit for parallel program
JP2007133620A (en) * 2005-11-10 2007-05-31 Fujitsu Ltd Task distribution program and task distribution apparatus for processor apparatus having multiprocessor

Also Published As

Publication number Publication date
JP3304445B2 (en) 2002-07-22

Similar Documents

Publication Publication Date Title
US5345588A (en) Thread private memory storage of multi-thread digital data processors using access descriptors for uniquely identifying copies of data created on an as-needed basis
US6505227B1 (en) Method and apparatus for distributing work granules among processes based on the location of data accessed in the work granules
US5566321A (en) Method of managing distributed memory within a massively parallel processing system
US4511964A (en) Dynamic physical memory mapping and management of independent programming environments
JP2826028B2 (en) Distributed memory processor system
US6256704B1 (en) Task management for data accesses to multiple logical partitions on physical disk drives in computer systems
EP0700000A2 (en) System and method combining a global object identifier with a local object address in a single object pointer
JPH04268927A (en) Apparatus and method for controlling memory
JPS6027964A (en) Memory access control circuit
US5584042A (en) Dynamic I/O data address relocation facility
JPH0764853A (en) Variable-accuracy indirect addressing method for simd multiprocessor and apparatus for execution of it
JPH05225153A (en) Apparatus and method for parallel processing of high-level instruction
US6600493B1 (en) Allocating memory based on memory device organization
US6009272A (en) Register allocation via selective spilling
US5369750A (en) Method and apparatus for configuring multiple absolute address spaces
JPH06175857A (en) Program generation processor
Nodine et al. Paradigms for optimal sorting with multiple disks
JPS59116982A (en) Data transfer system of memory system
JPH03105452A (en) Weight holding system for network constitution data processor
JP2943401B2 (en) External storage device allocation processing method for virtual machine
Unger Modelling “system independent” software resource demands
JPS5918787B2 (en) TLB partition method
JPS6336021B2 (en)
Chondhary Accessing Sections of Out-of-Core Arrays Using an Extended Two-Phase Method
JPH02171831A (en) Data access system for compiler

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: 20020409

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080510

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090510

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090510

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100510

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees