## The Omega test: a fast and practical integer programming algorithm for dependence analysis (1992)

### Cached

### Download Links

- [www.cs.umd.edu]
- [www.cs.wm.edu]
- [www.cs.wm.edu]
- [www.cs.tamu.edu]
- [www.eng.utah.edu]
- [www.cs.cmu.edu]
- [www.cs.cmu.edu]
- [www-2.cs.cmu.edu]
- DBLP

### Other Repositories/Bibliography

Venue: | Communications of the ACM |

Citations: | 474 - 15 self |

### BibTeX

@ARTICLE{Pugh92theomega,

author = {William Pugh},

title = {The Omega test: a fast and practical integer programming algorithm for dependence analysis},

journal = {Communications of the ACM},

year = {1992},

volume = {8},

pages = {4--13}

}

### Years of Citing Articles

### OpenURL

### Abstract

The Omega test is an integer programming algorithm that can determine whether a dependence exists between two array references, and if so, under what conditions. Conventional wisdom holds that integer programming techniques are far too expensive to be used for dependence analysis, except as a method of last resort for situations that cannot be decided by simpler methods. We present evidence that suggests this wisdom is wrong, and that the Omega test is competitive with approximate algorithms used in practice and suitable for use in production compilers. The Omega test is based on an extension of Fourier-Motzkin variable elimination to integer programming, and has worst-case exponential time complexity. However, we show that for many situations in which other (polynomial) methods are accurate, the Omega test has low order polynomial time complexity. The Omega test can be used to simplify integer programming problems, rather than just deciding them. This has many applications, including accurately and efficiently computing dependence direction and distance vectors. 1

### Citations

450 |
Optimizing Supercompilers for Supercomputers
- Wolfe
- 1982
(Show Context)
Citation Context ...lexity. Dependence analysis is often structured as a decision problem: tests simply answer yes or no. Compilers and other program restructuring tools need to know the data dependence direction vector =-=[Wol82]-=- and data dependence distance vector [KMC72, Mur71] that describes the relation between the iterations in which the conflicting reads/writes occur. The data dependence distance vector describes the di... |

356 | Dependence Analysis for Supercomputing - Banerjee |

306 | Automatic translation of Fortran programs to vector Form - Allen, Kennedy - 1987 |

201 | Scanning polyhedra with DO loop
- Ancourt, Irigoin
- 1991
(Show Context)
Citation Context ...ng Loop Bounds The Omega test can be used to determine appropriate loop bounds when interchanging non-rectangular loops. This use of integer programming and projection to perform this is described by =-=[AI91]-=-. 6 Performance We have implemented the Omega test in Wolfe's tiny tool [Wol91]. We handle min and max expressions in loop bounds and symbolic constants, and compute exact sets of direction vectors (a... |

141 | Practical Dependence Testing
- Goff, Kennedy, et al.
(Show Context)
Citation Context ...ant tests and Banerjee’s Generalized GCD tests. Of the remaining 9% of the cases, they found that their SVPC, Acyclic or Loop Residue tests could be applied in 86% of the unique cases. The Delta tes=-=t [GKT91]-=- works by searching for dependence distances that can be easily determined, and then propagating that information with the intent of making it possible to easily determine other dependence distances p... |

130 | Interprocedural dependence analysis and parallelization - Burke, Cytron - 1986 |

128 |
Fourier-Motzkin elimination and its dual
- Dantzig, Eaves
- 1973
(Show Context)
Citation Context ...imensions and repeat the above process, eventually getting to problems in one dimension. 2.3.1 Detecting real solutions using Fourier-Motzkin variable elimination Fourier-Motzkin variable elimination =-=[DE73] e-=-liminates a variable from a linear programming problem. Intuitively, Fourier-Motzkin variable elimination finds the n − 1 dimensional shadow cast by an n dimensional object. 4sFigure 2: A visual dep... |

122 | Efficient and exact data dependence analysis
- Maydan, Hennessy, et al.
- 1991
(Show Context)
Citation Context ... endfor The flow/anti dependence distances for the example above are all the distances that satisfy {−4 ≤ ∆j ≤ 4; −7 ≤ ∆i − ∆j, ∆i +∆j ≤ 10; ∆i ≤ 9} except for {∆i =9;∆=-=j =0}. Maydan, Hennessy and Lam [MHL91]-=- use memoization to obtain better performance. Memoization could be added to the Omega test. However, the cost of computing a hash key and verifying a cache hit would be about 2-4 times the copying co... |

92 |
Semantical interprocedural parallelization: An overview of the PIPS project
- Irigoin, Jouvelot, et al.
- 1991
(Show Context)
Citation Context ...ng loop bounds. However, they are difficult to use for determining the existence of integer solutions. Ancourt and Irigoin [AI91] do not give any performance data for their algorithm. A recent report =-=[IJT91]-=- on the PIPS project mentions that Fourier-Motzkin variable elimination is used to analyze dependences (based on the work described in [AI91]). The methods used are not fully described, but the basic ... |

90 | Dependence Analysis for Subscripted Variables and Its Application to Program Transformations - Allen - 1993 |

84 | A technique for summarizing data access and its use in parallelism enhancing transformations - Balasundaram, Kennedy |

82 | On the number of operations simultaneously executable in FORTRAN-like programs and their resulting speedup - Kuck, Muraoka, et al. - 1972 |

74 |
Deciding linear inequalities by computing loop residues
- Shostak
- 1981
(Show Context)
Citation Context ... the number of constraints, a process that takes O(mn 2 ) worst-case time. They found [MHL91] that this test could be applied in over 1/4 of the unique cases encountered. The “Loop Residue” algori=-=thm [Sho81] can b-=-e applied in just those cases where each constraint is of the form xi ≥ xj + c, xi ≥ c, orc ≥ xi. In a set of constraints with this property, Fourier-Motzkin variable elimination is exact and pr... |

66 |
The Power Test For Data Dependence
- Wolfe, Tseng
- 1990
(Show Context)
Citation Context ...e constraints. 3Nonlinear subscripts Integer programming dependence analysis methods allow us to properly handle symbolic constants [LT88, HP90] and some types of min and max functions in loop bounds =-=[WT92]-=- and conditional assignments [LC90]. For example, even if we had no information about the value of n, wewouldliketobeabletodecidethat there are no flow dependences in the following program: for i = 1 ... |

65 |
The Tiny loop restructuring research tool
- Wolfe
- 1991
(Show Context)
Citation Context ... when interchanging non-rectangular loops. This use of integer programming and projection to perform this is described by [AI91]. 6 Performance We have implemented the Omega test in Wolfe’s tiny too=-=l [Wol91]-=-. We handle min and max expressions in loop bounds and symbolic constants, and compute exact sets of direction vectors (as opposed to the compressed direction vectors normally generated by tiny). We a... |

45 | Symbolic dependence analysis for high-performance parallelizing compilers - Haghighat, Polychronopoulos - 1990 |

41 |
Uniform techniques for loop optimization
- Pugh
- 1991
(Show Context)
Citation Context ...tion tools. For example, it can be used for determining loop bounds after loop interchange [AI91], and we have made extensive use of it in work that considers loop transformations in a uniform manner =-=[Pug91]-=-. 11 Acknowledgments Thanks to everyone who gave me feedback on this work, especially Michael Wolfe and the anonymous referee who provided detailed comments, as well as to my research group (Dave Wonn... |

23 | Parallelism Exposure and Exploitation in Programs - Muraoka - 1971 |

19 | Experience with Interprocedural Analysis of Array Side Effects - Havlak, Kennedy - 1990 |

17 | Introducing symbolic problem solving techniques in the dependence testing phases of a vectorizer - Lichnewsky, Thomasset - 1988 |

16 |
Interprocedural analysis for program restructuring with parafrase
- Triolet
- 1985
(Show Context)
Citation Context ...orks in practice. Lu and Chen describe [LC90] an integer programming algorithm for dependence analysis. However, their method appears prohibitively expensive for use in a production compiler. Triolet =-=[Tri85]-=- used Fourier-Motzkin techniques for representing affected array regions in interprocedural analysis. Triolet found Fourier-Motzkin techniques to be expensive (22 to 28 times longer than using simpler... |

16 |
Dependence of Multi-dimensional Array References
- Wallace
- 1988
(Show Context)
Citation Context ...d 16sthe Delta test, we expect that it should be able to solve more problems exactly and efficiently than any one of them alone. 8 Related work on Exact Dependence Analysis The Constraint-Matrix test =-=[Wal88]-=- makes use of the simplex algorithm modified for integer programming. The Constraint-Matrix test can fail to terminate and it is not clear how efficiently it works in practice. Lu and Chen describe [L... |

15 | Data dependence analysis on multi-dimensional array references - Li, Yew - 1989 |

7 | Some Results On Exact Data Dependence Analysis - Li, Yew - 1990 |

5 |
Subdomain dependence test for massive parallelism
- Lu, Chen
- 1990
(Show Context)
Citation Context ...s Integer programming dependence analysis methods allow us to properly handle symbolic constants [LT88, HP90] and some types of min and max functions in loop bounds [WT92] and conditional assignments =-=[LC90]-=-. For example, even if we had no information about the value of n, wewouldliketobeabletodecidethat there are no flow dependences in the following program: for i = 1 to n do a[i+n] = a[i] As previous a... |

3 |
Extending the Banerjee-Wolfe test to handle execution conditions
- Klappholz, Kong
- 1991
(Show Context)
Citation Context ... constants that cannot be determined at compile-time, we can produce a predicate that will allow us to determine at run-time if a particular dependence or dependence direction exists (as described by =-=[KK91]-=-). Alternatively, at compile time we could ask the user if the predicate is true. 5.3Summarizing Array References In interprocedural analysis, we need to characterize the portions of an array that may... |

1 | Languages and Compilers for Parallel Computing - Li, Yew, et al. - 1990 |

1 | Dependence Analysis jor Subscripted Variables and Its Application to Program Transjormatio ns - Allen - 1983 |

1 | Dantzig rmd B.C. Eaves. Fourier- Motzkin elirnnation and its dual - B |

1 | R6mi TrioIet. Semanticaf interprocedural parallelizatiorc An overview of the pips project - tigoin, Jouvelot - 1991 |

1 | Some results on exact data dependence anrdysis - Li, Yew - 1990 |

1 | Parallelism EzposuTe and Ezplottatton in Programs - Muraoka - 1971 |

1 | Optimizing Supercompilers jor Supercomput em - Wolfe - 1982 |