A practical dynamic single assignment transformation

This paper presents a novel method to construct a dynamic single assignment (DSA) form of array intensive, pointer free C programs. A program in DSA form does not perform any destructive update of scalars and array elements; that is, each element is written at most once. As DSA makes the dependencies between variable references explicit, it facilitates complex analyses and optimizations of programs. Existing transformations into DSA perform a complex data flow analysis with exponential analysis time, and they work only for a limited class of input programs. Our method removes irregularities from the data flow by adding copy assignments to the program, so that it can use simple data flow analyses. The presented DSA transformation scales very well with growing program sizes and overcomes a number of important limitations of existing methods. We have implemented the method and it is being used in the context of memory optimization and verification of those optimizations. Experiments show that in practice, the method scales well indeed, and that added copy operations can be removed in case they are unwanted.

[1]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[2]  Patrice Quinton Automatic synthesis of systolic arrays from uniform recurrent equations , 1984, ISCA '84.

[3]  Hugo De Man,et al.  Reducing storage size for static control programs mapped onto parallel structures , 1996 .

[4]  Gerda Janssens,et al.  An Automatic Verification Technique for Loop and Data Reuse Transformations based on Geometric Modeling of Programs , 2003, J. Univers. Comput. Sci..

[5]  Ed F. Deprettere,et al.  Converting sequential iterative algorithms to recurrent equations for automatic design of systolic arrays , 1988, ICASSP-88., International Conference on Acoustics, Speech, and Signal Processing.

[6]  Paul Feautrier,et al.  Fuzzy array dataflow analysis , 1995, PPOPP '95.

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

[8]  Sven-Bodo Scholz Single Assignment C - Functional Programming Using Imperative Style , 1994 .

[9]  Paul Feautrier,et al.  Array expansion , 1988, ICS '88.

[10]  Luca Benini,et al.  System-level power optimization: techniques and tools , 1999, Proceedings. 1999 International Symposium on Low Power Electronics and Design (Cat. No.99TH8477).

[11]  Gerda Janssens,et al.  Verification of Source Code Transformations by Program Equivalence Checking , 2005, CC.

[12]  Francky Catthoor,et al.  Custom Memory Management Methodology , 1998, Springer US.

[13]  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).

[14]  Arthur B. Maccabe,et al.  The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages , 1990, PLDI '90.

[15]  CatthoorFrancky,et al.  A practical dynamic single assignment transformation , 2007 .

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

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

[18]  Zhiyuan Li Array privatization for parallel execution of loops , 1992, ICS.

[19]  Erik Brockmeyer,et al.  Data and memory optimization techniques for embedded systems , 2001, TODE.

[20]  Ed F. Deprettere,et al.  Compaan: deriving process networks from Matlab for embedded signal processing architectures , 2000, CODES '00.

[21]  Peter Vanbroekhoven,et al.  Transformation to Dynamic Single Assignment Using a Simple Data Flow Analysis , 2005, APLAS.

[22]  Paul Feautrier,et al.  Fuzzy Array Dataflow Analysis , 1997, J. Parallel Distributed Comput..

[23]  Vivek Sarkar,et al.  Array SSA form and its use in parallelization , 1998, POPL '98.

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

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

[26]  P. Feautrier Parametric integer programming , 1988 .

[27]  Richard M. Karp,et al.  The Organization of Computations for Uniform Recurrence Equations , 1967, JACM.