Advanced copy propagation for arrays

The focus of this paper is on a data flow-transformation called advanced copy propagation. After an array is assigned, we can, under certain conditions, replace a read from this array by the righthand side of the assignment. If so, the intermediate assignment can be skipped. In case it becomes dead code, it can be eliminated. Where necessary we distinguish between the different elements of arrays as well as the different runtime instances of statements, allowing us to do propagation over global loop and condition scopes. We have formalized two basic operations: non-recursive propagation that operates on two statements and recursive propagation that operates on one statement. A global algorithm uses these two operations to do propagation on code involving any number of statements. Running our prototype implementation on some multimedia kernels shows that we can get a decrease in memory acesses between 22% and 43%.

[1]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[2]  Bart Kienhuis MatParser: An array dataflow analysis compiler , 2000 .

[3]  Henk Corporaal,et al.  Advanced copy propagation for arrays , 2003 .

[4]  Gerda Janssens,et al.  Storage Size Reduction by In-place Mapping of Arrays , 2002, VMCAI.

[5]  Francky Catthoor,et al.  Custom Memory Management Methodology: Exploration of Memory Organisation for Embedded Multimedia System Design , 1998 .

[6]  H. T. Kung,et al.  Systolic Arrays for (VLSI). , 1978 .

[7]  Hugo De Man,et al.  Memory Size Reduction Through Storage Order Optimization for Embedded Parallel Multimedia Applications , 1997, Parallel Comput..

[8]  Lothar Thiele,et al.  ON THE SYNTHESIS OF MASSIVELY PARALLEL ARCHITECTURES , 1993 .

[9]  Monica S. Lam,et al.  Maximizing Multiprocessor Performance with the SUIF Compiler , 1996, Digit. Tech. J..

[10]  Bernhard Steffen,et al.  Partial dead code elimination , 1994, PLDI '94.

[11]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[12]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[13]  Paul Feautrier,et al.  Dataflow analysis of array and scalar references , 1991, International Journal of Parallel Programming.

[14]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[15]  Sanjay V. Rajopadhye,et al.  Optimizing memory usage in the polyhedral model , 2000, TOPL.