GIVE-N-TAKE—a balanced code placement framework
- 1 June 1994
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 29 (6) , 107-120
- https://doi.org/10.1145/773473.178253
Abstract
GIVE-N-TAKE is a code placement framework which uses a general producer-consumer concept. An advantage of GIVE-N-TAKE over existing partial redundancy elimination techniques is its concept of production regions, instead of single locations, which can be beneficial for general latency hiding. GIVE-N-TAKE guaranteed balanced production, that is, each production will be started and stopped once. The framework can also take advantage of production coming “for free,” as induced by side effects, without disturbing balance. GIVE-N-TAKE can place production either before or after consumption, and it also provides the option to hoist code out of potentially zero-trip loop (nest) constructs. GIVE-N-TAKE uses a fast elimination method based on Tarjan intervals, with a complexity linear in the program size in most cases.We have implemented GIVE-N-TAKE as part of a Fortran D compiler prototype, where it solves various communication generation problems associated with compiling data-parallel languages onto distributed-memory architectures.Keywords
This publication has 25 references indexed in Scilit:
- An elimination algorithm for bidirectional data flow problems using edge placementACM Transactions on Programming Languages and Systems, 1993
- Practical adaption of the global optimization algorithm of Morel and RenvoiseACM Transactions on Programming Languages and Systems, 1991
- Properties of data flow frameworksActa Informatica, 1990
- Some comments on “A solution to a problem with Morel and Renvoise's 'Global optimization by suppression of partial redundancies'”ACM Transactions on Programming Languages and Systems, 1989
- Register assignment using code placement techniquesComputer Languages, 1988
- A solution to a problem with Morel and Renvoise's “Global optimization by suppression of partial redundancies”ACM Transactions on Programming Languages and Systems, 1988
- Elimination algorithms for data flow analysisACM Computing Surveys, 1986
- Characterization of program loops in code optimizationComputer Languages, 1983
- Global optimization by suppression of partial redundanciesCommunications of the ACM, 1979
- A Fast and Usually Linear Algorithm for Global Flow AnalysisJournal of the ACM, 1976