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

Method and compiler for parallel execution of a program

Assignee: International Business Machines Corp
•
Filing: 1995-06-09
•
Granted: 1998-12-22
•
Expires: 2015-06-09
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract To increase the speed of program execution by decomposing a loop onto a plurality of processors and executing them in parallel. First, a loop in a source program is located which is to be executed in parallel. This loop is then analyzed for data dependence. The result of the analysis is used for calculating data dependence vectors. Then all areas of the index executed in the loop are decomposed and assigned to a number of processors. Further, it is determined whether data needs to be transferred between processors. Based on the array index space, communication vectors are calculated. Data dependence vectors and communication vectors are ANDed to calculate communication dependence vectors. Then, the manner of communication of operands and loop execution are determined based on the values of communication dependence vectors.

Inventors

  • 👤 Hideaki Komatsu
  • 👤 Kazuaki Ishizaki
  • 👤 Osamu Gohda

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 16:33
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: 18
Claim 1
Independent Claim 237 words
In a computer having a plurality of processors, a method for increasing the speed of program execution by decomposing loops in a source program onto the processors and having said processors execute them in parallel, said method comprising the steps of: (a) reading the source program; (b) specifying a loop to be executed in parallel in said source program; (c) determining data dependence vectors indicating true and anti dependences relatives to said loop being specified; (d) decomposing the iteration spaces of said loop and assigning the spaces to said plurality of processors; (e) determining the area of each iteration space assigned to said plurality of processors where data is required to be read from any other processor for parallel processing; (f) calculating communication vectors based on information on the area of said iteration space which has been determined that data is required to be read from any other processor, said vectors are the ones which indicate whether interprocessor communication exists or not for each loop; (g) calculating communication dependence vectors based on said data dependence vectors and said communication vectors, said dependence vectors are calculated by ANDing said communication vectors with said dependence vectors; (h) determining the manner of communication based on the values of said communication dependence vectors; and (i) generating codes for specifying communication and loop execution methods by detecting the method of communication between respective operands, based on said manner of communication being determined.
Claim 2
Dependent Claim 237 words
In a computer having a plurality of processors, a method for increasing the speed of program execution by decomposing loops in a source program onto the processors and having said processors execute them in parallel, said method comprising the steps of: (a) reading the source program; (b) specifying a loop to be executed in parallel in said source program; (c) determining data dependence vectors indicating true and anti dependences relatives to said loop being specified; (d) decomposing the iteration spaces of said loop and assigning the spaces to said plurality of processors; (e) determining the area of each iteration space assigned to said plurality of processors where data is required to be read from any other processor for parallel processing; (f) calculating communication vectors based on information on the area of said iteration space which has been determined that data is required to be read from any other processor, said vectors are the ones which indicate whether interprocessor communication exists or not for each loop; (g) calculating communication dependence vectors based on said data dependence vectors and said communication vectors, said dependence vectors are calculated by ANDing said communication vectors with said dependence vectors; (h) determining the manner of communication based on the values of said communication dependence vectors; and (i) generating codes for specifying communication and loop execution methods by detecting the method of communication between respective operands, based on said manner of communication being determined.
Claim 3
Dependent Claim 35 words
The method for parallel execution of a program according to claim 1, further comprising the step of sequentially applying steps (e) to (i) from outer to inner loops if said loop is a nested loop.
Claim 4
Dependent Claim 60 words
The method for parallel execution of a program according to claim 2, further comprising the step of removing such operand as can be prefetched from a target loop in said nested loop in response to the finding of the loop which can be prefetched and inserting a code outside said nested loop which specifies that the operand can be prefetched.
Claim 5
Dependent Claim 26 words
The method for parallel execution of a program according to claim 1 wherein said method of communication is either prefetch communication, pipeline sending, or pipeline receiving.
Claim 6
Dependent Claim 31 words
The method for parallel execution of a program according to claim 1 wherein said method of loop execution is either parallel operation, pipeline operation, or operation which cannot be made parallel.
Claim 7
Dependent Claim 35 words
The method for parallel execution of a program according to claim 1 wherein said source program includes the number of processors used and a statement for assigning the arrays in the loop to said processors.
Claim 8
Dependent Claim 76 words
The method for parallel execution of a program according to claim 1 wherein said AND operation is performed in accordance with a rule indicated by a truth table: + & 1=+ + & 0=0 0 & 1=0 0 & 0=0 - & 1=- - & 0=0 where +, - and 0 are values which the components of data dependence vectors can assume, and 1 and 0 are values which the components of communication vectors can assume.
Claim 9
Dependent Claim 256 words
In a computer having a plurality of processors, a compiler including a processing unit for increasing the speed of program execution by decomposing loops in a source program onto the processors and having said processors execute them in parallel, said compiler comprising: (a) means for reading the source program; (b) means for specifying a loop to be executed in parallel in said source program; (c) means for determining data dependence vectors indicating true and anti dependences relative to said loop being specified; (d) means for decomposing the iteration spaces of said loop and assigning the spaces to said plurality of processors; (e) means for determining the area of each iteration space assigned to said plurality of processors where data is required to be read from any other processor for parallel processing; (f) means for calculating communication vectors based on information on the area of said iteration space which has been determined that data is required to be read from any other processor, said vectors are the ones which indicate whether interprocessor communication exists or not for each loop; (g) means for calculating communication dependence vectors based on said data dependence vectors and said communication vectors, said dependence vectors are calculated by ANDing said communication vectors with said dependence vectors; (h) means for determining the manner of communication based on the values of said communication dependence vectors; and (i) means for generating codes for specifying communication and loop execution methods by detecting the method of communication between respective operands, based on said manner of communication being determined.
Claim 10
Dependent Claim 256 words
In a computer having a plurality of processors, a compiler including a processing unit for increasing the speed of program execution by decomposing loops in a source program onto the processors and having said processors execute them in parallel, said compiler comprising: (a) means for reading the source program; (b) means for specifying a loop to be executed in parallel in said source program; (c) means for determining data dependence vectors indicating true and anti dependences relative to said loop being specified; (d) means for decomposing the iteration spaces of said loop and assigning the spaces to said plurality of processors; (e) means for determining the area of each iteration space assigned to said plurality of processors where data is required to be read from any other processor for parallel processing; (f) means for calculating communication vectors based on information on the area of said iteration space which has been determined that data is required to be read from any other processor, said vectors are the ones which indicate whether interprocessor communication exists or not for each loop; (g) means for calculating communication dependence vectors based on said data dependence vectors and said communication vectors, said dependence vectors are calculated by ANDing said communication vectors with said dependence vectors; (h) means for determining the manner of communication based on the values of said communication dependence vectors; and (i) means for generating codes for specifying communication and loop execution methods by detecting the method of communication between respective operands, based on said manner of communication being determined.
Claim 11
Dependent Claim 28 words
The compiler according to claim 8, further comprising means for sequentially applying means (e) to (i) from outer to inner loops if said loop is a nested loop.
Claim 12
Dependent Claim 20 words
The compiler according to claim 8 wherein said method of communication is either prefetch communication, pipeline sending, or pipeline receiving.
Claim 13
Dependent Claim 25 words
The compiler according to claim 8 wherein said method of loop execution is either parallel operation, pipeline operation, or operation which cannot be made parallel.
Claim 14
Dependent Claim 70 words
The compiler according to claim 8 wherein said AND operation is performed in accordance with a rule indicated by a truth table: + & 1=+ + & 0=0 0 & 1=0 0 & 0=0 - & 1=- - & 0=0 where +, - and 0 are values which the components of data dependence vectors can assume, and 1 and 0 are values which the components of communication vectors can assume.
Claim 15
Dependent Claim 29 words
The compiler according to claim 8 wherein said source program includes the number of processors used and a statement for assigning the arrays in the loop to said processors.
Claim 16
Dependent Claim 14 words
The compiler according to claim 13 wherein said source program is a FORTRAN code.
Claim 17
Dependent Claim 14 words
The compiler according to claim 14 wherein said source program is a FORTRAN90 code.
Claim 18
Dependent Claim 32 words
The compiler according to claim 15 wherein said means for specifying a loop to be executed in parallel includes means for specifying array representations in the source program and TIF as loops.

References Cited (Backward Citations)

JPS61182161A Cited
JPH04184540A Cited
US5303357A Cited
US5450585A Cited
JPH05158895A Cited
US5274818A Cited
US5367651A Cited
US5522074A Cited
US5485619A Cited
US5491823A Cited
US5457799A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-12-21 2002-06-22 2002-12-22 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-12-21 2006-06-22 2006-12-22 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-12-21 2010-06-22 2010-12-22 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag