## Dataflow Analysis of Array and Scalar References (1991)

Venue: | International Journal of Parallel Programming |

Citations: | 236 - 3 self |

### BibTeX

@ARTICLE{Feautrier91dataflowanalysis,

author = {Paul Feautrier},

title = {Dataflow Analysis of Array and Scalar References},

journal = {International Journal of Parallel Programming},

year = {1991},

volume = {20}

}

### Years of Citing Articles

### OpenURL

### Abstract

Given a program written in a simple imperative language (assignment statements, for loops, affine indices and loop limits), this paper presents an algorithm for analyzing the patterns along which values flow as the execution proceeds. For each array or scalar reference, the result is the name and iteration vector of the source statement as a function of the iteration vector of the referencing statement. The paper discusses several applications of the method: conversion of a program to a set of recurrence equations, array and scalar expansion, program verification and parallel program construction. Keywords dataflow analysis, semantics analysis, array expansion. 1 Introduction It is a well known fact that scientific programs spend most of their running time in executing loops operating on arrays. Hence if a restructuring or optimizing compiler is to do a good job, it must be able to do a thorough analysis of the addressing patterns in such loops. If taken in full generality, ...

### Citations

310 | Automatic translation of FORTRAN programs to vector form
- Allen, Kennedy
- 1997
(Show Context)
Citation Context ...s ] = b[1::N rs ]sT rs : (5) One may notice that operations which stand in the relation OE p to each other have exactly p identical coordinates in their iteration vectors. In Allen and Kennedy's paper=-=[3]-=-, if two such operations give rise to a dependence, one says that this dependence is at depth p+ 1, while if p = N rs , the depth is said to be infinite. With a slight displacement of the origin, we w... |

310 |
Advanced compiler optimizations for supercomputers
- Padua, Wolfe
- 1986
(Show Context)
Citation Context ...igure 5: The product of two polynomials The preceding discussion leads to a spatial description of loops. Such a point of view goes back to the work of Kuck; see also Padua and Wolfe's review article =-=[20]-=-. Usually, loops are explained from a temporal point of view: iteration i is executed just before iteration i + 1. We must seek a way to reconcile those two aspects. This may be done by defining a seq... |

230 |
The parallel execution of Do-Loops
- Lamport
- 1974
(Show Context)
Citation Context ...ce program. One may say that a flow dependence is a very imprecise approximation to the source function. Some more precise descriptions are the dependence direction vectors[28], the dependence vectors=-=[18]-=-, the dependence cone[15] and the direct dependences[10]. Scalar expansion[20] is the particular case of the present problem in which the modified variable is a scalar which is expanded to a vector. I... |

223 |
An Efficient Method for Computing Static Single Assignment Form
- Cytron, Ferrante, et al.
- 1989
(Show Context)
Citation Context ...r of the source functions and removing all informations about iteration vectors. In a similar context, a technique for conversion to static single assignment form has been advocated by Cytron et. al. =-=[11]-=-. Here again, the source 28 program is not required to be structured, and only scalars or arrays taken as a whole are considered. The paper is concerned with the most economical insertion of so-called... |

187 | Parametric integer programming
- Feautrier
- 1988
(Show Context)
Citation Context ...ing. The analysis of addressing patterns in this class may be reduced to the solution of parametric systems of linear inequalities in integers, for which the author has devised an efficient algorithm =-=[14]-=-. The central problem to be solved here is the following: given an array cell, which of several statements is the source of the value contained therein at a given instant in the execution of a program... |

118 |
The Structure of Computers and Computations
- Kuck
- 1978
(Show Context)
Citation Context ...rce language, the only repetitive construct is the for loop. Hence, an operation is uniquely defined by the name of the statement and the values of the surrounding loop counters (the iteration vector =-=[17]-=-). A pair such as (r; a) whose components are a statement name and an integer vector will be called an (operation) coordinate. To denote a statement instance, a coordinate must satisfy two conditions:... |

91 | Array expansion
- Feautrier
- 1988
(Show Context)
Citation Context ...her subroutine calls should probably be inlined. 7 Acknowledgments This work has been supported by DRET under contract 87/280 and by PRC C 3 of the french CNRS. Part of section 2.3 has been reproduced=-=[12]-=- by permission of ACM. 31 A The Parametric Integer Algorithm A.1 The Basic Algorithm A parametric integer program (PIP) may be formulated in the following way. Let F(z) be the set of integer points in... |

79 |
Data dependence and its application to parallel processing
- Wolfe, Banerjee
- 1987
(Show Context)
Citation Context ..., one still has to use the PIP algorithm to check that the obvious solution meets the inequalities constraints of (10). 21 edges. There are fast approximate methods for the calculation of dependences =-=[28]-=-, and more precise methods[26] which are still faster than a PIP computation. Scalar references are analysed in the same fashion as array references, the only difference being that the index equations... |

76 |
the data-flow programming language
- LUCID
- 1985
(Show Context)
Citation Context ...ications 4.1 Conversion to Single Assignment Form Single assignment programs have been proposed by several authors[27, 25] as a mean of specifying algorithms for highly parallel systems. Another point=-=[6, 7] is that s-=-ince a memory cell in such a program is defined only once, its contents may be considered as a "variable" in the mathematical sense and subjected to the familiar algebraic and analytic manip... |

67 |
Automatic loop interchange
- Allen, Kennedy
- 1984
(Show Context)
Citation Context ...from the usual dependence graph[20] by removing output dependences, antidependences and spurious flow dependences. This graph may be submitted to classical parallelization and vectorization algorithms=-=[2]-=-. One still has to expand some variables to reconstruct a correct program. Another approach is to consider the source functions as synchronization constraints (a statement which uses a given value may... |

42 | Uniform techniques for loop optimization - PUGH - 1991 |

24 |
The importance of direct dependences for automatic parallelism
- Brandes
- 1988
(Show Context)
Citation Context ... ::= ? j vector j if forms0 then quast else quast The result of this analysis is the direct dependence between the definition by s j and the use in t. Direct dependences were first defined by Brandes =-=[10]-=-. The presence of a ? sign in a direct dependence indicates that, for some values of the loop counters, the reference in t is not defined by statement s j . Formula (14) is a quast in the above sense ... |

22 | From Control Flow to Dataflow
- Beck, Johnson, et al.
- 1991
(Show Context)
Citation Context ...de a more user-friendly interface, either in the form of a high-level parallel language, or by translating conventional language to dataflow. Our work is certainly relevant to this aim. A recent paper=-=[9]-=- gives an algorithm for translating FORTRAN to dataflow graphs. Here again the problem is with arrays. A dataflow machine has no difficulty in executing the flowgraph equivalents of doall or doacross ... |

21 |
A unified framework for systematic loop transformations
- Lu
- 1991
(Show Context)
Citation Context ...sign of systolic arrays [22], and leads to the consideration of timing functions or schedules. The use of timing functions for the construction of parallel program has been advocated in several papers=-=[13, 21, 19]-=-. The outcome of this research will be reported elsewhere. 5 Related Work This paper is related to work in two different areas: one is standard dataflow analysis[1], which is used as a basic technique... |

13 |
A Unified Semantic Approach for the Vectorization and Parallelization of Generalized Reductions
- Jouvelot, Dehbonei
(Show Context)
Citation Context ...oto's[8] and for the detection of induction variables[1], which then allows one, in favourable cases, to reconstruct unit increment for loops and to delete extraneous variables by forward substitution=-=[5, 4, 16]-=-. We expect that the handling of conditionals (by the familiar device of reducing them to guards on assignment statements) would not be too difficult. Conditionals whose predicate depends only on loop... |

13 |
Pen-Chung Yew. An empirical study on array subscripts and data dependencies
- Shen, Li
- 1989
(Show Context)
Citation Context ...s with fewer restrictions than we introduced in section 2.2 would be highly interesting. Some estimate of the applicability of our technique may be deduced from the statistics of Zhiyu 30 Shen et. al.=-=[23]-=-. The main difficulty is non-linear indices. In this paper, which analyses more than 100 000 lines of code, about 53% of all indices are found to be linear, about 13% are partially linear, and the rem... |

11 |
Mapping recurrences on parallel architectures
- Quinton
- 1988
(Show Context)
Citation Context ...rminated), and to attempt the construction of a parallel program which meets all of them. This approach is reminescent of the methodology for the automatic or semi-automatic design of systolic arrays =-=[22]-=-, and leads to the consideration of timing functions or schedules. The use of timing functions for the construction of parallel program has been advocated in several papers[13, 21, 19]. The outcome of... |

9 |
Irigoin and Remi Triolet. Supernode Partitioning
- Francois
- 1988
(Show Context)
Citation Context ...hat a flow dependence is a very imprecise approximation to the source function. Some more precise descriptions are the dependence direction vectors[28], the dependence vectors[18], the dependence cone=-=[15]-=- and the direct dependences[10]. Scalar expansion[20] is the particular case of the present problem in which the modified variable is a scalar which is expanded to a vector. If one restricts oneself t... |

6 |
An algorithm for structuring programs
- Baker
- 1977
(Show Context)
Citation Context ...element as an index, which account for about 7% of all cases. Before being submitted to a dataflow analysis, a program must be put in structured form. There are technique for the elimination of goto's=-=[8]-=- and for the detection of induction variables[1], which then allows one, in favourable cases, to reconstruct unit increment for loops and to delete extraneous variables by forward substitution[5, 4, 1... |

5 |
Asymptotically efficent algorithms for parallel architectures
- Feautrier
- 1989
(Show Context)
Citation Context ...sign of systolic arrays [22], and leads to the consideration of timing functions or schedules. The use of timing functions for the construction of parallel program has been advocated in several papers=-=[13, 21, 19]-=-. The outcome of this research will be reported elsewhere. 5 Related Work This paper is related to work in two different areas: one is standard dataflow analysis[1], which is used as a basic technique... |

3 |
Normalization of Program Control Flow
- Ammarguellat
- 1989
(Show Context)
Citation Context ...oto's[8] and for the detection of induction variables[1], which then allows one, in favourable cases, to reconstruct unit increment for loops and to delete extraneous variables by forward substitution=-=[5, 4, 16]-=-. We expect that the handling of conditionals (by the familiar device of reducing them to guards on assignment statements) would not be too difficult. Conditionals whose predicate depends only on loop... |

3 |
Restructuration des programmes FORTRAN en vue de leur parall'elisation
- Ammarguellat
- 1988
(Show Context)
Citation Context ...oto's[8] and for the detection of induction variables[1], which then allows one, in favourable cases, to reconstruct unit increment for loops and to delete extraneous variables by forward substitution=-=[5, 4, 16]-=-. We expect that the handling of conditionals (by the familiar device of reducing them to guards on assignment statements) would not be too difficult. Conditionals whose predicate depends only on loop... |

3 |
PAF: un Paralleliseur Automatique pour FORTRAN," Rapport Interne de
- Tawbi, Dumay, et al.
- 1987
(Show Context)
Citation Context ... algorithm to check that the obvious solution meets the inequalities constraints of (10). 21 edges. There are fast approximate methods for the calculation of dependences [28], and more precise methods=-=[26]-=- which are still faster than a PIP computation. Scalar references are analysed in the same fashion as array references, the only difference being that the index equations f i (u) = g(b) in (9) now dis... |

3 |
A language design for concurrent processes
- Tesler, Enea
- 1968
(Show Context)
Citation Context ...a consequence, we use the general algorithm whatever the rank of the reference. 4 Applications 4.1 Conversion to Single Assignment Form Single assignment programs have been proposed by several authors=-=[27, 25] as a mean-=- of specifying algorithms for highly parallel systems. Another point[6, 7] is that since a memory cell in such a program is defined only once, its contents may be considered as a "variable" ... |

2 |
La construction de programmes structur'es
- Arsac
- 1977
(Show Context)
Citation Context ...r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r Figure 7: Computing the source function for the program of Figure 5 The problem is finding the source of c[3] at iteration (2; 1) and of c=-=[6]-=- at iteration (2; 4) (circled points). Square boxes enclose the corresponding Q sets. 15 K s 2 s 2 (i; j) = if (is1sj ! n) then (i + 1; j \Gamma 1) else ?: (14) The case of the other candidate is simp... |

1 |
Verification decidability of Pressburger array programs
- Suzuki, Jefferson
- 1977
(Show Context)
Citation Context ...programming practice to debug a program before submitting it to an optimizing or restructuring compiler, and also that the methods of this paper may be used as a highly efficient array access checker =-=[24]-=-. This hypothesis will allow us to ignore array declarations. As a consequence, our technique will be equally applicable to languages which enforce constant array bounds -- Fortran, Pascal, C, ... -- ... |

1 |
Pipelining, parallelism and asynchronism
- Syre, Comte, et al.
- 1977
(Show Context)
Citation Context ...a consequence, we use the general algorithm whatever the rank of the reference. 4 Applications 4.1 Conversion to Single Assignment Form Single assignment programs have been proposed by several authors=-=[27, 25] as a mean-=- of specifying algorithms for highly parallel systems. Another point[6, 7] is that since a memory cell in such a program is defined only once, its contents may be considered as a "variable" ... |