Parallel program generation method
AssigneeAtostek Oy
InventorJuhana Helovuo
Life of this patent
Estimating the term…
Abstract
A method for producing parallel computer programs by using a compilation method that produces executable computer programs having an undefined execution order. The execution order is defined during execution of the program depending on the execution architecture. This allows the best possible level of concurrent execution in different architectures. The compilation method includes producing data dependency and data flow graphs that are used for executable code generation.
Claims14
A method for compiling a computer program from a source code into an executable code, the method comprising the steps of:
- parsing the source code for defining an abstract parse tree;
- synthesizing said abstract parse tree for defining data flow and data dependency graphs;
- refining said graphs into machine data flow graph in order to form ordering constraints;
- defining a partial execution order with a first portion of the ordering constraints, wherein the first portion of the ordering constraints consists of the ordering constraints necessary to satisfy the dependencies in said data flow and dependency graphs;
- grouping the instructions in said machine data flow graph into parallel executable code by adding a second portion of ordering constraints, wherein the second portion of the ordering constraints consists of ordering constraints necessary to map said machine data flow graph to a computation device;
- and
- producing an executable form from said parallel executable code.
A computer program product for compiling a computer program from a source code into an executable code, which computer program product is arranged to execute the following steps when executed in a computing device:
- parsing the source code for defining an abstract parse tree;
- synthesizing said abstract parse tree for defining data flow and data dependency graphs;
- refining said graphs into machine data flow graph in order to form ordering constraints;
- defining a partial execution order with a first portion of the ordering constraints, wherein the first portion of the ordering constraints consists of the ordering constraints necessary to satisfy the dependencies in said data flow and dependency graphs;
- and
- grouping the instructions in said machine data flow graph into parallel executable code by adding a second portion of ordering constraints, wherein the second portion of the ordering constraints consists of ordering constraints necessary to map said machine data flow graph to a computation device;
- and
- producing an executable fault from said machine data flow graph.
An apparatus comprising computer program product for compiling a computer program from a source code into an executable code, which apparatus is arranged to perform the following steps when executing said computer program product:
- parsing the source code for defining an abstract parse tree;
- synthesizing said abstract parse tree for defining data flow and data dependency graphs;
- refining said graphs into machine data flow graph in order to form ordering constraints;
- defining a partial execution order with a first portion of the ordering constraints, wherein the first portion of the ordering constraints consists of the ordering constraints necessary to satisfy the dependencies in said data flow and dependency graphs;
- grouping the instructions in said machine data flow graph into parallel executable code by adding a second portion of ordering constraints, wherein the second portion of the ordering constraints consists of ordering constraints necessary to map said machine data flow graph to a computation device;
- and
- producing an executable form from said machine data flow graph.
Dependencies are inferred from the claim text.