There has been a great amount of recent work toward unifying iteration reordering transformations. Many of these approaches represent transformations as a ne mappings from the original iteration space to a new iteration space. These approaches show a great deal of promise, but they all rely on the ability to generate code that iterates over the points in these new iteration spaces in the appropriate order. This problem has been fairly well-studied in the case where all statements use the same mapping. We have developed an algorithm for the less well-studied case where each statement uses a potentially di erent mapping. Unlike many other approaches, our algorithm can also generate code from mappings corresponding to loop blocking. We address the important trade-o between reducing control overhead and duplicating code. AbstractThere has been a great amount of recent work toward unifying iteration reordering transformations. Many of these approaches represent transformations as a ne mappings from the original iteration space to a new iteration space. These approaches show a great deal of promise, but they all rely on the ability to generate code that iterates over the points in these new iteration spaces in the appropriate order. This problem has been fairly well-studied in the case where all statements use the same mapping. We have developed an algorithm for the less well-studied case where each statement uses a potentially di erent mapping. Unlike many other approaches, our algorithm can also generate code from mappings corresponding to loop blocking. We address the important trade-o between reducing control overhead and duplicating code.
Integer tuple relations can concisely summarize many types of information gathered from analysis of scienti c codes. For example they can be used to precisely describe which iterations of a statement are data dependent of which other iterations. It is generally not possible to represent these tuple relations by enumerating the related pairs of tuples. For example, it is impossible to enumerate the related pairs of tuples in the relation f i] ! i + 2] j 1 i n 2 g. Even when it is possible to enumerate the related pairs of tuples, such as for the relation f i; j] ! i 0 ; j 0 ] j 1 i; j; i 0 ; j 0 100 g, it is often not practical to do so. We instead use a closed form description by specifying a predicate consisting of a ne constraints on the related pairs of tuples. As we just saw, these a ne constraints can be parameterized, so what we are really describing are in nite families of relations (or graphs). Many of our applications of tuple relations rely heavily on an operation called transitive closure. Computing the transitive closure of these \in nite graphs" is very di erent from the traditional problem of computing the transitive closure of a graph whose edges can be enumerated. For example, the transitive closure of the rst relation above is the relation f i] ! i 0 ] j 9 s:t: i 0 i = 2 ^1 i i 0 n g. As we will prove, this computation is not computable in the general case. We have developed algorithms that produce exact results in most commonly occurring cases and produce upper or lower bounds (as necessary) in the other cases. This paper will describe our algorithms for computing transitive closure and some of its applications such as determining which inter-processor synchronizations are redundant.
Program slicing is an analysis that answers questions such as \Which statements might a ect the computation of variable v at statement s?" or \Which statements depend on the value of v computed in statement s?". The answers computed by program slicing are generally a set of statements. We introduce the idea of iteration spacing slicing: we re ne program slicing to ask questions such as \Which iterations of which statements might e ect the computation in iterations I of statement s?" or \Which iterations of which statements depend on the value computed by iterations I of statement s?". One application of this general-purpose technique is optimization of interprocessor communication in data-parallel compilers. For example, we can separate a code fragment into 1) those iterations that must be done before a send, 2) those iterations that don't need to be done before a send and don't depend on non-local data and 3), those iterations that depend on non-local data. We examine applications of iteration space slicing to communication optimizations in parallel executions of programs such as stencil computations and block-cyclic Gaussian elimination with partial pivoting.
Integer tuple relations can concisely summarize many types of information gathered from analysis of scienti c codes. For example they can be used to precisely describe which iterations of a statement are data dependent of which other iterations. It is generally not possible to represent these tuple relations by enumerating the related pairs of tuples. For example, it is impossible to enumerate the related pairs of tuples in the relation f i] ! i + 2] j 1 i n 2 g. Even when it is possible to enumerate the related pairs of tuples, such as for the relation f i; j] ! i 0 ; j 0 ] j 1 i; j; i 0 ; j 0 100 g, it is often not practical to do so. We instead use a closed form description by specifying a predicate consisting of a ne constraints on the related pairs of tuples. As we just saw, these a ne constraints can be parameterized, so what we are really describing are in nite families of relations (or graphs). Many of our applications of tuple relations rely heavily on an operation called transitive closure. Computing the transitive closure of these \in nite graphs" is very di erent from the traditional problem of computing the transitive closure of a graph whose edges can be enumerated. For example, the transitive closure of the rst relation above is the relation f i] ! i 0 ] j 9 s:t: i 0 i = 2 ^1 i i 0 n g. As we will prove, this computation is not computable in the general case. We have developed algorithms that produce exact results in most commonly occurring cases and produce upper or lower bounds (as necessary) in the other cases. This paper will describe our algorithms for computing transitive closure and some of its applications such as determining which inter-processor synchronizations are redundant.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Copyright © 2025 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.