Input: CDFG of Application in C/C++ Output: CDFG with cluster of operations (sub-graph) identified as matrix operations (1) For each Basic Block (2) Perform Dominator Analysis to identify nested loops
(3) For each set of nested loops
(4) Label loops using "Lx" as defined in Section 3.2.1.
In fact, [Lambda]-DB provides only one implementation for the unnest operator: a naive nested loop
between each tuple and its collection component being unnested.
These strategies, however, result in some loss of information, and they do not fully apply to nested loops
. An alternative approach would be to eliminate zero-trip loop paths from the flow graph (do-until-conversion).
Thereafter, the reshaped perfectly nested loop
is converted automatically into the more efficient sparse code shown below (generated in case KX=INCX=1):
The TypeTable holds the identifier string, creates an entry for a quantifier that may be used with this identifier in the PRECOND section, and maintains the type of the identifier (e.g., statement, loop, adjacent loop, or nested loop
Can you reorder the nested loops
that run over the indices of the array to get a better access pattern, for instance, reverse the loop order to change access from column-wise to row-wise?
Feed rates can be adjusted at any time, and programming capabilities include nested loops
and automatic return-to-start.
Affine nested loops
that constitute the application hotspots are analysed for dataflow and are partitioned as a Kahn Process Network (KPN).