High-level loop fusion
First Claim
1. A method comprising the steps of:
- (a) providing a processor with a software program specifying a computation (hereinafter, "the overall computation") including a plurality of operations,each of the operations implying a set of subcomputations without explicitly specifying a control structure for carrying out the subcomputations of said set according to a particular sequencing,the plurality of operations including a first operation and a second operation, the software program further specifying how the first and second operations are combined in the overall computation;
(b) providing a processor with a description of possible sequencings of subcomputations of the first and second operations, to be used in implementing the specified combination of the first and second operations, the description comprising predetermined set of fusibility constraints on the sequencing of subcomputations of the first and second operations; and
(c) generating automatically with a processor a software program including a combined operation, the combined operation implementing the specified combination of the first and second operations, the combined operation having a control structure for carrying out the subcomputations of the first and second operations in accordance with the predetermined set of fusibility constraints.
4 Assignments
0 Petitions
Accused Products
Abstract
A processor is provided with a software program specifying an overall computation that includes operations. Each operation implies a set of subcomputations, without explicitly specifying a control structure for carrying out the subcomputations according to a particular sequencing. The operations include a first and a second operation, and the provided software program further specifies how the first and second operations are combined in the overall computation. For example, the first and second operations can each imply, respectively, a first and a second computational loop, the first loop including the subcomputations of the first operation, the second loop including the subcomputations of the second operation. A description of possible sequencings of subcomputations of the first and second operations is provided, to be used in implementing the specified combination of the first and second operations, the description including a set of constraints on the sequencing of subcomputations of the first and second operations. A software program is automatically generated that includes a combined operation implementing the specified combination of the first and second operations. The combined operation has a control structure for carrying out the subcomputations of the first and second operations in accordance with the constraints. This control structure can be, for example, a computational loop. If the first and second operations imply, respectively, first and second computational loops, the control structure of the combined operation can be, for example, a computational loop including a fusion of the first and second loops.
-
Citations
28 Claims
-
1. A method comprising the steps of:
- (a) providing a processor with a software program specifying a computation (hereinafter, "the overall computation") including a plurality of operations,
each of the operations implying a set of subcomputations without explicitly specifying a control structure for carrying out the subcomputations of said set according to a particular sequencing, the plurality of operations including a first operation and a second operation, the software program further specifying how the first and second operations are combined in the overall computation; (b) providing a processor with a description of possible sequencings of subcomputations of the first and second operations, to be used in implementing the specified combination of the first and second operations, the description comprising predetermined set of fusibility constraints on the sequencing of subcomputations of the first and second operations; and (c) generating automatically with a processor a software program including a combined operation, the combined operation implementing the specified combination of the first and second operations, the combined operation having a control structure for carrying out the subcomputations of the first and second operations in accordance with the predetermined set of fusibility constraints. - View Dependent Claims (2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
- (a) providing a processor with a software program specifying a computation (hereinafter, "the overall computation") including a plurality of operations,
- 8. The method of claim I wherein the description of step (b) is provided as a general set of instructions, the instructions being applicable to various software programs, including but not limited to the software program provided in step (a).
-
23. An article of manufacture comprising an information storage medium wherein is stored information comprising a third software program for facilitating automatic generation by a processor of a second software program from a first software program and a sequencing description,
the first software program specifying a computation (hereinafter, "the overall computation") including a plurality of operations, each of the operations implying a set of subcomputations without explicitly specifying a control structure for carrying out the subcomputations of said set according to a particular sequencing, the plurality of operations including a first operation and a second operation, the software program further specifying how the first and second operations are combined in the overall computation, the sequencing description being a description of possible sequencings of subcomputations of the first and second operations, to be used in implementing the specified combination of the first and second operations, the description comprising a predetermined set of fusibility constraints on the sequencing of subcomputations of the first and second operations, the second software program being generated automatically by the processor under control of the third software program, the second software program including a combined operation, the combined operation implementing the specified combination of the first and second operations, the combined operation having a control structure for carrying out the subcomputations of the first and second operations in accordance with the predetermined set of fusibility constraints.
-
28. A method comprising the steps of:
-
(a) providing a processor with a description of a source code programming language, the language including a plurality of operations, each operation implying a set of subcomputations without explicitly specifying a control structure for carrying out the subcomputations of said set according to a particular sequencing; (b) providing a processor with a description of possible sequencings of the subcomputations of each of the operations of the plurality, to be used in implementing combinations of these operations, the description of this step (b) comprising a predetermined set of fusibility constraints on the sequencing of subcomputations of each of the operations of the plurality; (c) extending the language by providing a processor with a description of an extension to the source code language, the extension comprising an operation not included in the plurality of operations (hereinafter, "the new operation"), the new operation implying a set of subcomputations without explicitly specifying a control structure for carrying out the subcomputations of the new operation according to a particular sequencing; (d) providing a processor with a description of possible sequencings of subcomputations of the new operation of the language, to be used in implementing combinations of the new operation with operations of the plurality, the description not explicitly relating the possible sequencings of subcomputations of the new operation to the possible sequencings of subcomputations of the operations of the plurality, the description of this step (d) comprising the predetermined set of fusibility constraints on the sequencing of subcomputations of the new operation; (e) providing a processor with a software program expressed in the language as extended, the program specifying a computation (hereinafter, "the overall computation") including first and second operations, the first operation being an operation of the plurality of operations, the second operation being the new operation, the software program further specifying how the first and second operations are combined in the overall computation; and (f) from the software program and the descriptions thus provided in the above-recited steps, generating automatically with a processor a software program including a combined operation, the combined operation implementing the specified combination of the first and second operations, the combined operation having a control structure for carrying out the subcomputations of the first and second operations in accordance with the constraints.
-
Specification