← Back to Patent Explorer
US5634059A Expired / Lapsed US ⏱️ 0.0 years remaining

Device and method for parallelizing compilation optimizing data transmission

Assignee: Panasonic Holdings Corp
•
Filing: 1994-10-13
•
Granted: 1997-05-27
•
Expires: 2014-10-13
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention relates to an optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes the number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, composed of a loop retrieval unit for retrieving the loop processes from a program, a data transmission calculation unit for calculating the data transmission count generated when each of the loop processes is parallelized, a parallelization determination unit for determining the loop to be parallelized as the loop, out of all the loops in a multiple loop, with the lowest data transmission count and a code generation unit for generating parallelized object code for the determined loop. The data transmission calculation unit is made up of a right side variable retrieval unit for retrieving the variables on the right side of an equation in the loop retrieved by the loop retrieval unit, a variable information storage unit for storing information relating to array variables which should be distributed among every processing element for the part of the program which comes before the loop retrieved by the loop retrieval unit and a calculation unit for calculating the data transmission count based on the variable information for the retrieved right side variable.

Inventors

  • 👤 Koji Zaiki

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 23:12
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/43; G06F8/433; G06F8/45; G06F8/451; G06F8/452

Claims Analysis

Total Claims: 24
Claim 1
Independent Claim 232 words
An optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising: intermediate code generation means for converting a source program into intermediate code; loop retrieval means for retrieving loops from the intermediate code; variable retrieval means for retrieving array variables on the left side and on the right side of the equation in each of the loops; data dependency detection means for detecting whether there is data dependency which extends over iterations of the loop, based on the retrieved left side variable and right side variable; left side variable storage means for storing information relating to array variables on a left side of an equation, being the array variables which should be distributed to every programming element for a program part coming before a loop, for a loop determined to have no data dependency; data transmission count calculation means for calculating a data transmissions count generated when parallelizing the loop, based on the information for each right side variable, for the loop determined to have no data dependency; parallelization determination means for determining a loop to be parallelized as a loop with the lowest data transmission count; and code generation means for generating the object code which parallelizes the determined loop.
Claim 2
Dependent Claim 232 words
An optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising: intermediate code generation means for converting a source program into intermediate code; loop retrieval means for retrieving loops from the intermediate code; variable retrieval means for retrieving array variables on the left side and on the right side of the equation in each of the loops; data dependency detection means for detecting whether there is data dependency which extends over iterations of the loop, based on the retrieved left side variable and right side variable; left side variable storage means for storing information relating to array variables on a left side of an equation, being the array variables which should be distributed to every programming element for a program part coming before a loop, for a loop determined to have no data dependency; data transmission count calculation means for calculating a data transmissions count generated when parallelizing the loop, based on the information for each right side variable, for the loop determined to have no data dependency; parallelization determination means for determining a loop to be parallelized as a loop with the lowest data transmission count; and code generation means for generating the object code which parallelizes the determined loop.
Claim 3
Dependent Claim 44 words
The optimizing compiler apparatus of claim 1, wherein the left side variable information storage means stores information which includes an array variable name, dimensions of an array and distribution information which shows with regard to which subscript distribution to every processing element is performed.
Claim 4
Dependent Claim 35 words
The optimizing compiler apparatus of claim 2, wherein the left side variable information storage means stores the information relating to an array variable passed over as an argument between a main routine and a subroutine.
Claim 5
Dependent Claim 53 words
The optimizing compiler apparatus of claim 2, wherein the left side variable information storage means includes: information retrieval means for retrieving the information relating to a left side variable in the loop, for every loop determined to be parallelized by the parallelization determination means; and information storage means for storing the retrieved information.
Claim 6
Dependent Claim 47 words
The optimizing compiler apparatus of claim 4, wherein the calculation means calculates a data transmission count for a right side variable when a variable name stored by the information storage means is the same as the right side variable retrieved by the right side variable retrieval means.
Claim 7
Dependent Claim 71 words
The optimizing compiler apparatus of claim 5, wherein the calculation means calculates as being 0 a data transmission count for the right side variables of the same variable name, when, for the variables, a subscript showing distribution direction and a subscript shown by distribution information coincide, and, when the subscripts do not coincide, calculates the data transmission count based on the number of processing elements and array dimensions (size of subscripts).
Claim 8
Dependent Claim 51 words
The optimizing compiler apparatus of claim 6, wherein the calculation means calculates the data transmission count using one of the following equations when the 2 subscripts do not coincide: i. data transmission count=(number of processing elements)*(sizes of array dimensions) ii. data transmission count=(number of processing elements)* (sizes of array dimensions -1).
Claim 9
Dependent Claim 244 words
An optimizing compiler method for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising the following steps: an intermediate code generation step for converting a source program into intermediate code; a loop retrieval step for retrieving loops from the intermediate code; a variable retrieval step for retrieving array variables on the left side and on the right side of the equation in each of the loops; a data dependency detection step for detecting whether there is data dependency which extends over iterations of the loop, based on the retrieved left side variable and right side variable; a left side variable retrieval step for retrieving information relating to array variables on a left side of an equation, being the array variables which should be distributed to every programming element for a program part coming before a loop, for a loop determined to have no data dependency; a data transmission count calculation step for calculating a number of data transmissions generated when parallelizing the loop, based on the information for each right side variable, for the loop determined to have no data dependency; a parallelization determination step for determining a loop to be parallelized as a loop with the lowest data transmission count; and a code generation step for generating the object code which parallelizes the determined loop.
Claim 10
Dependent Claim 244 words
An optimizing compiler method for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising the following steps: an intermediate code generation step for converting a source program into intermediate code; a loop retrieval step for retrieving loops from the intermediate code; a variable retrieval step for retrieving array variables on the left side and on the right side of the equation in each of the loops; a data dependency detection step for detecting whether there is data dependency which extends over iterations of the loop, based on the retrieved left side variable and right side variable; a left side variable retrieval step for retrieving information relating to array variables on a left side of an equation, being the array variables which should be distributed to every programming element for a program part coming before a loop, for a loop determined to have no data dependency; a data transmission count calculation step for calculating a number of data transmissions generated when parallelizing the loop, based on the information for each right side variable, for the loop determined to have no data dependency; a parallelization determination step for determining a loop to be parallelized as a loop with the lowest data transmission count; and a code generation step for generating the object code which parallelizes the determined loop.
Claim 11
Dependent Claim 44 words
The optimizing compiler method of claim 8, wherein the left side variable information retrieval step retrieves information which includes an array variable name, dimensions of an array and distribution information which shows with regard to which subscript distribution to every processing element is performed.
Claim 12
Dependent Claim 34 words
The optimizing compiler method of claim 9, wherein the left side variable retrieval step retrieves the information relating to an array variable passed over as an argument between a main routine and a subroutine.
Claim 13
Dependent Claim 58 words
The optimizing compiler method of claim 9 wherein the left side variable information storage step includes: an information retrieval step for retrieving the information relating to a left side variable in the loop, for every loop determined to be parallelized by the parallelization determination step; and an information storage step for storing the retrieved information in a table.
Claim 14
Dependent Claim 50 words
The optimizing compiler method of claim 11, wherein the calculation step calculates a data transmission count for a right side variable when a variable name stored in the table by the information storage step is the same as the right side variable retrieved by the right side variable retrieval step.
Claim 15
Dependent Claim 71 words
The optimizing compiler method of claim 12, wherein the calculation step calculates as being 0 a data transmission count for the right side variables of the same variable name when, for the variables, a subscript showing distribution direction and a subscript shown by distribution information coincide, and, when the subscripts do not coincide, calculates the data transmission count based on the number of processing elements and array dimensions (size of subscripts).
Claim 16
Dependent Claim 50 words
The optimizing compiler apparatus of claim 13, wherein the calculation step calculates the data transmission count using one of the following equations when the 2 subscripts do not coincide: i. data transmission count=(number of processing elements)*(sizes of array dimensions) ii. data transmission count=(number of processing elements)* (sizes of array dimensions-1).
Claim 17
Dependent Claim 308 words
An optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising: loop retrieval means for retrieving loop processes from a program; data transmission calculation means for calculating a data transmission count generated when each of the loop processes is parallelized including: right side variable retrieval means for retrieving a variable on a right side of an equation in each of the loops retrieved by the loop retrieval means; variable information storage means for storing information relating to array variables which should be distributed among every processing element for a part of the program which comes before the loop from which the right side variable retrieval means has retrieved the right side variable, including information retrieval means for retrieving the information relating to a left side variable in the loop, for every loop determined to be parallelized by the parallelization determination means, and information storage means for storing the retrieved information, wherein the variable information storage means stores information which includes an array variable name, dimensions of an array, and distribution information which shows with regard to which subscript distribution to every processing element is performed; and calculation means for calculating a data transmission count based on the variable information for the retrieved right side variable when a variable name stored by the information storage means is the same as the right side variable retrieved by the right side variable retrieval means; parallelization determination means for determining a loop to be parallelized as a loop with a lowest data transmission count, out of all of the loops contained in each of the multiple loops; and code generation means for generating a parallelized object code for the determined loop.
Claim 18
Dependent Claim 308 words
An optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising: loop retrieval means for retrieving loop processes from a program; data transmission calculation means for calculating a data transmission count generated when each of the loop processes is parallelized including: right side variable retrieval means for retrieving a variable on a right side of an equation in each of the loops retrieved by the loop retrieval means; variable information storage means for storing information relating to array variables which should be distributed among every processing element for a part of the program which comes before the loop from which the right side variable retrieval means has retrieved the right side variable, including information retrieval means for retrieving the information relating to a left side variable in the loop, for every loop determined to be parallelized by the parallelization determination means, and information storage means for storing the retrieved information, wherein the variable information storage means stores information which includes an array variable name, dimensions of an array, and distribution information which shows with regard to which subscript distribution to every processing element is performed; and calculation means for calculating a data transmission count based on the variable information for the retrieved right side variable when a variable name stored by the information storage means is the same as the right side variable retrieved by the right side variable retrieval means; parallelization determination means for determining a loop to be parallelized as a loop with a lowest data transmission count, out of all of the loops contained in each of the multiple loops; and code generation means for generating a parallelized object code for the determined loop.
Claim 19
Dependent Claim 71 words
The optimizing compiler apparatus of claim 15, wherein the calculation means calculates as being 0 a data transmission count for the right side variables of the same variable name when, for the variables, a subscript showing distribution direction and a subscript shown by the distribution information coincide, and, when the subscripts do not coincide, calculates the data transmission count based on a number of processing elements and sizes of array dimensions.
Claim 20
Dependent Claim 50 words
The optimizing compiler apparatus of claim 16, wherein the calculation means calculates the data transmission count using one of the following equations when the 2 subscripts do not coincide: i. data transmission count=(number of processing elements)*(sizes of array dimensions) ii. data transmission count=(number of processing elements)* (sizes of array dimensions-1).
Claim 21
Dependent Claim 50 words
The optimizing compiler apparatus of claim 17, wherein the calculation means calculates the data transmission count using one of the following equations when the 2 subscripts do not coincide: i. data transmission count=(number of processing elements)*(sizes of array dimensions) ii. data transmission count=(number of processing elements)* (sizes of array dimensions)-1).
Claim 22
Dependent Claim 314 words
An optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising: multiple loop retrieval means for retrieving multiple loops of two or more overlapping loop processes in a program; data transmission count calculation means for calculating a data transmission count created when parallelizing a loop process for each of the loop processes contained in each of the retrieved multiple loops including: right side variable retrieval means for retrieving a variable on a right side of an equation in each of the multiple loops; variable information storage means for storing information relating to array variables which should be distributed among every processing element for a part of the program which comes before the multiple loop from which the right side variable retrieval means has retrieved the right side variable, including information retrieval means for retrieving the information relating to a left side variable in the loop, for every loop determined to be parallelized by the parallelization determination means, and information storage means for storing the retrieved information, wherein the variable information storage means stores information which includes an array variable name, dimensions of an array, and distribution information which shows with regard to which subscript distribution to every processing element is performed; and calculation means for calculating a data transmission count based on the variable information for the retrieved right side variable when a viable name stored by the information storage means is the same as the right side variable retrieved by the right side variable retrieval means; parallelization determination means for determining a loop to be parallelized having a lowest data transmission count out of the loops in each multiple loop; and code generation means for generating object code parallelizing the determined loop.
Claim 23
Dependent Claim 314 words
An optimizing compiler apparatus for converting a source program into an object program for use by a parallel computer, which optimizes a number of data transmissions between processing elements for a parallel computer made up of a plurality of processing elements, comprising: multiple loop retrieval means for retrieving multiple loops of two or more overlapping loop processes in a program; data transmission count calculation means for calculating a data transmission count created when parallelizing a loop process for each of the loop processes contained in each of the retrieved multiple loops including: right side variable retrieval means for retrieving a variable on a right side of an equation in each of the multiple loops; variable information storage means for storing information relating to array variables which should be distributed among every processing element for a part of the program which comes before the multiple loop from which the right side variable retrieval means has retrieved the right side variable, including information retrieval means for retrieving the information relating to a left side variable in the loop, for every loop determined to be parallelized by the parallelization determination means, and information storage means for storing the retrieved information, wherein the variable information storage means stores information which includes an array variable name, dimensions of an array, and distribution information which shows with regard to which subscript distribution to every processing element is performed; and calculation means for calculating a data transmission count based on the variable information for the retrieved right side variable when a viable name stored by the information storage means is the same as the right side variable retrieved by the right side variable retrieval means; parallelization determination means for determining a loop to be parallelized having a lowest data transmission count out of the loops in each multiple loop; and code generation means for generating object code parallelizing the determined loop.
Claim 24
Dependent Claim 71 words
The optimizing compiler apparatus of claim 19, wherein the calculation means calculates as being 0 a data transmission count for the right side variables of the same variable name when, for the variables, a subscript showing distribution direction and a subscript shown by the distribution information coincide, and, when the subscripts do not coincide, calculates the data transmission count based on the number of processing elements and sizes of array dimensions.

References Cited (Backward Citations)

US5067068A Cited
US5151991A Cited
US5146594A Cited
US5088034A Cited
US5274812A Cited
US5230053A Cited
US5317743A Cited
JPH04293150A Cited
US5437034A Cited
US5396631A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-05-26 2000-11-25 2001-05-27 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-05-26 2004-11-25 2005-05-27 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-05-26 2008-11-25 2009-05-27 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag