Control flow and memory management optimization
First Claim
1. A processor-implemented method for optimizing code, including operations on multi-dimensional signals, said method comprising the steps of:
- generating from said code a polyhedral dependency graph description wherein a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs, said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and
mapping each code portion representation to a common representation according to an associated function, wherein a first substep of ordering said node domains for individual mapping and a second substep of placing the ordered node domains are included, said second substep being executed in a non-static way based on the ordering being determined in said first substep.
0 Assignments
0 Petitions
Accused Products
Abstract
Selected code is modeled in a polyhedral dependency graph (PDG). A placement optimizer maps each element of the PDG to an optimally placed PDG. An ordering optimizer maps the placed PDG to an optimally ordered PDG. The PDG, place PDG, and ordered PDG are combined to produce a transformation script. The transformation script is applied to the selected specification description to produce optimized selected code. Optimized selected code is combined with original code to generate a control-flow optimized code. In addition, memory directives are derived from the ordered PDG model. The memory directives and optimized code are used to generate target code for simulation or software compilation.
-
Citations
78 Claims
-
1. A processor-implemented method for optimizing code, including operations on multi-dimensional signals, said method comprising the steps of:
-
generating from said code a polyhedral dependency graph description wherein a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs, said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and mapping each code portion representation to a common representation according to an associated function, wherein a first substep of ordering said node domains for individual mapping and a second substep of placing the ordered node domains are included, said second substep being executed in a non-static way based on the ordering being determined in said first substep. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
-
-
52. A computing system for optimizing a code including operations on multi-dimensional signals, the system comprising:
-
a processor for executing programmed instructions and for storing and retrieving data; a memory unit coupled to the processor for storing program instruction steps and data for execution by the processor; a dependency description generator coupled to the processor for generating a polyhedral dependency graph description in which a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and an optimizer coupled to the processor for optimizing the placement of each code portion representation in a common representation in which the placement of each code portion representation in the common representation is described by a mapping function, wherein a first substep of ordering said node domain for individual mapping and a second substep of placing the ordered node domains are included, said second substep being executed in a non-static way based on the ordering being determined in said first substep. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. In a computing system having a processor for executing programmed instructions, an optimized code generated by the processor in accordance with the method comprising:
-
generating from a code a polyhedral dependency graph description in which a first code portion, a second code portion, and their associated dependencies are represented, wherein the code includes operations on multi-dimensional signals; mapping each code portion representation to a common representation according to an associated function; creating an ordered common representation wherein an ordering vector maps the common representation onto an ordering axis; and generating the optimized code based on the common representation and the ordered common representation. - View Dependent Claims (63, 64)
-
-
65. A processor-implemented method for optimizing a code, the method comprising the steps of:
-
generating from the code a polyhedral dependency graph description in which a first code portion, a second code portion, and their associated dependencies are represented, wherein the code includes operations on multi-dimensional signals; modifying the polyhedral dependency graph description wherein dependencies within a code portion representation are split; mapping each code portion representation to a common representation according to an associated function; mapping each code portion representation to an ordered common representation wherein an ordering vector maps the common representation onto an ordering axis; and creating an optimized code based on the common representation and the ordered common representation. - View Dependent Claims (66, 67, 68)
-
-
69. A processor-implemented method for optimizing code, including operations on multi-dimensional signals, said method comprising the steps of:
-
generating from said code a polyhedral dependency graph description wherein a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs, said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and mapping each code portion representation to a common representation according to an associated function, wherein a first substep of ordering said node domains for individual mapping and a second substep of placing the ordered node domains are included, said second substep being executed in a non-sequential way based on the ordering being determined in said first substep. - View Dependent Claims (70, 71, 72)
-
-
73. A processor-implemented method for optimizing code, including operations on multi-dimensional signals, said method comprising the steps of:
-
generating from said code a polyhedral dependency graph description wherein a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs, said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and mapping each code portion representation to a common representation according to an associated function in a non-heuristic way using a non-linear solver.
-
-
74. A computing system for optimizing a code including operations on multi-dimensional signals, the system comprising:
-
a processor for executing programmed instructions and for storing and retrieving data; a memory unit coupled to the processor for storing program instruction steps and data for execution by the processor; a dependency description generator coupled to the processor for generating a polyhedral dependency graph description in which a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs, said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and an optimizer coupled to the processor for optimizing the placement of each code portion representation in a common representation in which the placement of each code portion representation in the common representation is described by a mapping function, wherein a first substep of ordering said node domain for individual mapping and a second substep of placing the ordered node domains are included, said second substep being executed in a non-sequential way based on the ordering being determined in said first substep. - View Dependent Claims (75, 76, 77)
-
-
78. A computing system for optimizing a code including operations on multi-dimensional signals, the system comprising:
-
a processor for executing programmed instructions and for storing and retrieving data; a memory unit coupled to the processor for storing program instruction steps and data for execution by the processor; a dependency description generator coupled to the processor for generating a polyhedral dependency graph description in which a first code portion, a second code portion, and their associated dependencies are represented, said graph having nodes and arcs, said arcs representing said dependencies, said nodes comprising node domains and representing said first and said second code portions; and an optimizer coupled to the processor for optimizing the placement of each code portion representation in a common representation in which the placement of each code portion representation in the common representation is described by a mapping function, wherein the mapping function is executed in a non-heuristic way using a non-linear solver.
-
Specification