IP Library › Granted Patent US 8,656,347
Granted Patent B2
US 8,656,347 · App. 12/585,957 · Granted Feb 18, 2014

Generation of parallelized program based on program dependence graph

Inventor: Makiko Ito (Kawasaki, JP)
Assignee: Fujitsu Limited
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,656,347
App. No.
12/585,957
Granted
Feb 18, 2014
Kind
B2
Abstract

A method of generating a parallelized program includes calculating an execution order of vertices of a degenerate program dependence graph, generating basic blocks by consolidating vertices including neither branching nor merging, generating procedures each corresponding to a respective one of the vertices, and generating a procedure control program by arranging an instruction to execute a first procedure after an instruction to wait for output data transfer from a second procedure for a dependence relation crossing a border between the basic blocks, generating an instruction to register a dependence relation that a third procedure has on output data transfer from a fourth procedure for a dependence relation within one of the basic blocks, and generating an instruction to perform a given data transfer directly from procedure to procedure for each of a data transfer within one of the basic blocks and a data transfer crossing a border between the basic blocks.

Claims (31)

1. A method of generating a parallelized program, comprising:

generating a program dependence graph from a sequential program, the program dependence graph having vertices representing statements constituting the sequential program and edges between the vertices representing relations between the statements;

merging the vertices of the program dependence graph to generate a degenerate program dependence graph in which a number of vertices is reduced;

calculating an execution order of vertices of the degenerate program dependence graph;

generating basic blocks each of which is made by consolidating vertices including neither branching nor merging and to be executed in sequence among the vertices for which the execution order has been calculated;

generating procedures each corresponding to a respective one of the vertices of the degenerate program dependence graph; and

generating a procedure control program by arranging an instruction to execute a first one of the procedures after an instruction to wait for output data transfer from a second one of the procedures for the first and second ones of the procedures that have a dependence relation crossing a border between the basic blocks, generating an instruction to register dependence of a third one of the procedures on output data transfer from a fourth one of the procedures for the third and fourth ones of the procedures that have a dependence relation within one of the basic blocks, and generating an instruction to perform a given data transfer directly from procedure to procedure and an instruction to register dependence of the given data transfer on a preceding procedure for each of a data transfer within one of the basic blocks and a data transfer crossing a border between the basic blocks, wherein the generated procedure control program is to control execution of the procedures.

2. The method as claimed in claim 1 , wherein the procedure control program is generated to create variables on a processor-specific basis for each processor that executes corresponding one or more of the procedures.

3. The method as claimed in claim 1 , wherein the procedure control program is generated to create variables on a procedure-specific basis for each of the procedures.

4. The method as claimed in claim 1 , wherein the procedure control program is generated to create variables on a processor-specific basis for each processor that executes corresponding one or more of the procedures and to further create variables on a procedure-specific basis for each of the procedures for variables for which dependence relations are to be resolved by creating variables on a procedure-specific basis.

5. The method as claimed in claim 1 , wherein the procedure control program is generated to produce an instruction to cancel a preceding data transfer with respect to a def-order relation.

6. An apparatus for generating a parallelized program, comprising:

a memory configured to store a sequential program and a parallelized-program generating program; and

a computing unit configured to execute the parallelized-program generating program stored in the memory to generate a parallelized program from the sequential program stored in the memory,

wherein the computing unit executes the parallelized-program generating program to perform:

generating a program dependence graph having vertices representing statements constituting the sequential program and edges between the vertices representing relations between the statements;

merging the vertices of the program dependence graph to generate a degenerate program dependence graph in which a number of vertices is reduced;

calculating an execution order of vertices of the degenerate program dependence graph;

generating a basic block by consolidating vertices including neither branching nor merging and to be executed in sequence among the vertices for which the execution order has been calculated;

generating procedures each corresponding to a respective one of the vertices of the degenerate program dependence graph; and

generating a procedure control program by arranging an instruction to execute a first one of the procedures after an instruction to wait for output data transfer from a second one of the procedures for the first and second ones of the procedures that have a dependence relation crossing a border between the basic blocks, generating an instruction to register dependence of a third one of the procedures on output data transfer from a fourth one of the procedures for the third and fourth ones of the procedures that have a dependence relation within one of the basic blocks, and generating an instruction to perform a given data transfer directly from procedure to procedure and an instruction to register dependence of the given data transfer on a preceding procedure for each of a data transfer within one of the basic blocks and a data transfer crossing a border between the basic blocks, wherein the generated procedure control program is to control execution of the procedures.

7. The apparatus as claimed in claim 6 , wherein the computing unit generates the procedure control program to create variables on a processor-specific basis for each processor that executes corresponding one or more of the procedures.

8. The apparatus as claimed in claim 6 , wherein the computing unit generates the procedure control program to create variables on a procedure-specific basis for each one of the procedures.

9. The apparatus as claimed in claim 6 , wherein the computing unit generates the procedure control program to create variables on a processor-specific basis for each processor that executes corresponding one or more of the procedures and to further create variables on a procedure-specific basis for each of the procedures for variables for which dependence relations are to be resolved by creating variables on a procedure-specific basis.

10. A non-transitory computer-readable recording medium having a parallelized-program generating program embodied therein, said parallelized-program generating program comprising program codes for causing a computer to perform:

generating a program dependence graph from a sequential program, the program dependence graph having vertices representing statements constituting the sequential program and edges between the vertices representing relations between the statements;

merging the vertices of the program dependence graph to generate a degenerate program dependence graph in which a number of vertices is reduced;

calculating an execution order of vertices of the degenerate program dependence graph;

generating a basic block by consolidating vertices including neither branching nor merging and to be executed in sequence among the vertices for which the execution order has been calculated;

generating procedures each corresponding to a respective one of the vertices of the degenerate program dependence graph; and

generating a procedure control program by arranging an instruction to execute a first one of the procedures after an instruction to wait for output data transfer from a second one of the procedures for the first and second ones of the procedures that have a dependence relation crossing a border between the basic blocks, generating an instruction to register dependence of a third one of the procedures on output data transfer from a fourth one of the procedures for the third and fourth ones of the procedures that have a dependence relation within one of the basic blocks, and generating an instruction to perform a given data transfer directly from procedure to procedure and an instruction to register dependence of the given data transfer on a preceding procedure for each of a data transfer within one of the basic blocks and a data transfer crossing a border between the basic blocks, wherein the generated procedure control program is to control execution of the procedures.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2009
From: ITO, MAKIKO
To: FUJITSU LIMITED
Reel/Frame 023341/0587 →
Continuity (2)
Continuation PCTJP2007056916 · Mar 29, 2007
Related Publication 20100023731A1 · Jan 28, 2010