Reasoning About Program Transformations

From the Publisher: This book details program analyses and transformations that extract the flow of data in computer memory systems. It emphasizes a framework for the optimization of code for imperative programs and greater computer systems efficiency. In addition, it shows that correctness of program transformations is guaranteed by the conservation of data flow. Professionals and researchers in software engineering, computer engineering, program design analysis, and compiler design will benefit from its presentation of data-flow methods and memory optimization of compilers.

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

[2]  M. Wegman,et al.  Global value numbers and redundant computations , 1988, POPL '88.

[3]  Yves Robert,et al.  Scheduling and Automatic Parallelization , 2000, Birkhäuser Boston.

[4]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[5]  Larry Carter,et al.  Predicated static single assignment , 1999, 1999 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00425).

[6]  Robert E. Tarjan,et al.  Fast Algorithms for Solving Path Problems , 1981, JACM.

[7]  William Pugh,et al.  Nonlinear array dependence analysis , 1994 .

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

[9]  Joxan Jaffar,et al.  A framework for combining analysis and verification , 2000, POPL '00.

[10]  Zhiyuan Li,et al.  Symbolic Array Dataflow Analysis for Array Privatization and Program Parallelization , 1995, Proceedings of the IEEE/ACM SC95 Conference.

[11]  David A. Padua,et al.  Gated SSA-based demand-driven symbolic analysis for parallelizing compilers , 1995, ICS '95.

[12]  Jens Knoop,et al.  A Comparative Study of Reaching-definitions Analyses , 1998 .

[13]  Dirk Grunwald,et al.  Data flow equations for explicitly parallel programs , 1993, PPOPP '93.

[14]  William Pugh,et al.  Counting solutions to Presburger formulas: how and why , 1994, PLDI '94.

[15]  Christian Lengauer,et al.  Loop Parallelization in the Polytope Model , 1993, CONCUR.

[16]  Paul Feautrier A Parallelization Framework for Recursive Tree Programs , 1998, Euro-Par.

[17]  Martin Griebl,et al.  On Scanning Space-Time Mapped While Loops , 1994, CONPAR.

[18]  Paul Feautrier,et al.  Automatic Parallelization in the Polytope Model , 1996, The Data Parallel Programming Model.

[19]  Zhiyuan Li,et al.  Experience with efficient array data flow analysis for array privatization , 1997, PPOPP '97.

[20]  Barbara M. Chapman,et al.  Extending Vienna Fortran with task parallelism , 1994, Proceedings of 1994 International Conference on Parallel and Distributed Systems.

[21]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[22]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[23]  Paul Feautrier,et al.  Automatic Storage Management for Parallel Programs , 1998, Parallel Comput..

[24]  Denis Barthou,et al.  Array Dataflow Analysis in Presence of Non-affine Constraints , 1998 .

[25]  Vadim Maslov Enhancing array dataflow dependence analysis with on-demand global value propagation , 1995, ICS '95.

[26]  Monica S. Lam,et al.  Array-data flow analysis and its use in array privatization , 1993, POPL '93.

[27]  Sergei Gorlatch,et al.  A Generic MPI Implementation for a Data-Parallel Skeleton: Formal Derivation and Application to FFT , 1998, Parallel Process. Lett..

[28]  P. Feautrier Array expansion , 1988 .

[29]  Christian Lengauer,et al.  On the Space-Time Mapping of a Class of Divide-and-Conquer Recursions , 1996, Parallel Process. Lett..

[30]  Björn Lisper,et al.  Data Parallelism and Functional Programming , 1996, The Data Parallel Programming Model.

[31]  P. Feautrier Some Eecient Solutions to the Aane Scheduling Problem Part Ii Multidimensional Time , 1992 .

[32]  William Pugh,et al.  Constraint-based array dependence analysis , 1998, TOPL.

[33]  William Pugh,et al.  Iteration Space Slicing for Locality , 1999, LCPC.

[34]  William Pugh,et al.  Eliminating false data dependences using the Omega test , 1992, PLDI '92.

[35]  David G. Wonnacott Extending Scalar Optimizations for Arrays , 2000, LCPC.

[36]  Yves Robert,et al.  Plugging Anti and Output Dependence Removal Techniques Into Loop Parallelization Algorithm , 1997, Parallel Comput..

[37]  Philippe Granger,et al.  Static Analysis of Linear Congruence Equalities among Variables of a Program , 1991, TAPSOFT, Vol.1.

[38]  S. Kung,et al.  VLSI Array processors , 1985, IEEE ASSP Magazine.

[39]  Luca Aceto,et al.  Structural Operational Semantics , 1999, Handbook of Process Algebra.

[40]  Arthur J. Bernstein,et al.  Analysis of Programs for Parallel Processing , 1966, IEEE Trans. Electron. Comput..

[41]  Rastislav Bodík,et al.  Path-sensitive value-flow analysis , 1998, POPL '98.

[42]  Philippe Granger,et al.  Analyses semantiques de congruence , 1991 .

[43]  Xavier Redon Détection et exploitation des récurrences dans les programmes numériques en vue de leur parallélisation , 1995 .

[44]  Eitan M. Gurari,et al.  Introduction to the theory of computation , 1989 .

[45]  Nils Klarlund,et al.  Automatic verification of pointer programs using monadic second-order logic , 1997, PLDI '97.

[46]  J. Ramanujam,et al.  Non-unimodular transformations of nested loops , 1992, Proceedings Supercomputing '92.

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

[48]  Patrick Cousot,et al.  Temporal abstract interpretation , 2000, POPL '00.

[49]  Paul Feautrier,et al.  Some efficient solutions to the affine scheduling problem. I. One-dimensional time , 1992, International Journal of Parallel Programming.

[50]  David A. Padua,et al.  Concurrent Static Single Assignment Form and Constant Propagation for Explicitly Parallel Programs , 1997, LCPC.

[51]  Alexandru Nicolau,et al.  Parallelizing Programs with Recursive Data Structures , 1989, IEEE Trans. Parallel Distributed Syst..

[52]  Philippe Clauss,et al.  Counting solutions to linear and nonlinear constraints through Ehrhart polynomials: applications to analyze and transform scientific programs , 1996 .

[53]  Robert E. Tarjan,et al.  A Unified Approach to Path Problems , 1981, JACM.

[54]  William Pugh,et al.  Iteration space slicing and its application to communication optimization , 1997, ICS '97.

[55]  Corinne Ancourt,et al.  Scanning polyhedra with DO loops , 1991, PPOPP '91.

[56]  William Pugh,et al.  A practical algorithm for exact array dependence analysis , 1992, CACM.

[57]  Paul Feautrier,et al.  Detection of Recurrences in Sequential Programs with Loops , 1993, PARLE.

[58]  Bernhard Steffen,et al.  The Interprocedural Coincidence Theorem , 1992, CC.

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

[60]  Jean-Francois Collard Code Generation in Automatic Parallelizers , 1994, Applications in Parallel and Distributed Computing.

[61]  Cheng-Wen Wu,et al.  Unified VLSI systolic array design for LZ data compression , 2001, IEEE Trans. Very Large Scale Integr. Syst..

[62]  James R. Larus,et al.  Using Paths to Measure, Explain, and Enhance Program Behavior , 2000, Computer.

[63]  Utpal Banerjee,et al.  Dependence analysis for supercomputing , 1988, The Kluwer international series in engineering and computer science.

[64]  David K. Smith Theory of Linear and Integer Programming , 1987 .

[65]  William Pugh,et al.  Transitive Closure of Infinite Graphs and its Applications , 1995, Int. J. Parallel Program..

[66]  Sungdo Moon,et al.  Evaluation of predicated array data-flow analysis for automatic parallelization , 1999, PPoPP '99.

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

[68]  Vadim Maslov Global Value Propagation Through Value Flow Graph and Its Use in Dependence Analysis , 1998 .

[69]  François Irigoin,et al.  Interprocedural Array Region Analyses , 1996, International Journal of Parallel Programming.

[70]  Albert Cohen,et al.  Maximal Static Expansion , 1998, POPL '98.

[71]  Albert Cohen Program Analysis and Transformation: From the Polytope Model to Formal Languages. (Analyse et transformation de programmes: du modèle polyédrique aux langages formels) , 1999 .

[72]  Roy Dz-Ching Ju,et al.  A new algorithm for scalar register promotion based on SSA form , 1998, PLDI '98.

[73]  Michael Gerndt,et al.  SVM-Fortran Reference Manual, Version 1.4 , 1995 .

[74]  Utpal Banerjee,et al.  Loop Transformations for Restructuring Compilers: The Foundations , 1993, Springer US.

[75]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[76]  Jeanne Ferrante,et al.  Computing Communication Sets for Control Parallel Programs , 1994, LCPC.

[77]  Rajiv Gupta,et al.  A practical data flow framework for array reference analysis and its use in optimizations , 1993, PLDI '93.