## Array Expansion (1988)

Venue: | In ACM Int. Conf. on Supercomputing |

Citations: | 88 - 10 self |

### BibTeX

@INPROCEEDINGS{Feautrier88arrayexpansion,

author = {Paul Feautrier},

title = {Array Expansion},

booktitle = {In ACM Int. Conf. on Supercomputing},

year = {1988},

pages = {429--441}

}

### Years of Citing Articles

### OpenURL

### Abstract

A common problem in restructuring programs for vector or parallel execution is the suppression of false dependencies which originate in the reuse of the same memory cell for unrelated values. The method is simple and well understood in the case of scalars. This paper gives the general solution for the case of arrays. The expansion is done in two steps: first, modify all definitions of the offending array in order to obtain the single assignment property. Then, reconstruct the original data flow by adapting all uses of the array. This is done with the help of a new algorithm for solving parametric integer programs. The technique is quite general and may be used for other purposes, including program checking, collecting array predicates, etc... 1 Introduction 1.1 Motivation One of the most striking trends in today's computer architecture is the development of special purpose machines for numerical computations. The idea behind this effort is that by capitalizing on the pecul...

### Citations

575 | Automatic discovery of linear restraints among variables of a program
- Cousot, Halbwachs
- 1978
(Show Context)
Citation Context ...ps induction variables and of other integer variables. These auxilliary variables will be treated as constants throughout this paper. This restriction may sometime be lifted by semantic analysis (see =-=[CH78]-=- or [Jou87]). The source program is correct! We will use the fact that in a correct program, array indices are always within the array bounds. Hence, two array references address the same memory locat... |

302 |
Advanced Compiler Optimizations for Supercomputers
- Padua, Wolfe
- 1986
(Show Context)
Citation Context ...eatures from the sequential program text or (worse !) from one's sequential thinking. Many attempts have been made to automate this process by constructing optimizing and restructuring compilers; see =-=[PW86]-=- for an up-to-date review. Broadly speaking, all such compilers start by detecting dependencies in the source code. Two instructions are dependent if the first one compute a value which is used by the... |

167 | Parametric Integer Programming
- Feautrier
- 1988
(Show Context)
Citation Context ...inear equalities and inequalities, Q p (b) is the integer hull of a polyhedron. Finding its lexical maximum is a parametric integer problem, for which the author has devised an efficient algorithm in =-=[Fea88b]-=-. The parameters are the components of b and other integer variables (e.g. the variables which occurs in the array bounds). In the sequel, in the interest of legibility, we will not note explicitly th... |

109 |
The Structure of Computers and Computation
- Kuck
- 1978
(Show Context)
Citation Context ...titive construct is the for loop. Hence, an instruction instance is uniquely defined by the name of the instruction and the values of the surrounding loop induction variables (the iteration vector of =-=[Kuc78]-=-). A pair whose components are an instruction name and an integer list will be called an instruction coordinate. To denote an instruction instance, a coordinate must verify two conditions: ffl the len... |

63 |
Automatic loop interchange
- Allen, Kennedy
(Show Context)
Citation Context ...en, the dependence relation is summarized by a dependency graph. There are several algorithms to extract a parallel or vector program from this graph, the most comprehensive being probably the one of =-=[AK84]-=-. Whatever the algorithm, it is clear that edges in the dependency graph are obstacles to parallelization. Now, any algorithm is susceptible of many different implementations; it is natural to search ... |

14 |
Techniques for improving the inherent parallelism in programs
- Wolfe
- 1978
(Show Context)
Citation Context ...ecution. Replacing the scalar by an array whose index is the loop counter will cut the PP edge and may (in favorable cases) allow parallel execution. This is the well-known scalar expansion technique =-=[Wol78]-=-. The aim of this paper is to extend it to the general case, in which one tries to cut a PP edge on an array; hence the name Array Expansion. 1.2 Outline Paragraph 2 will set the stage for the paper b... |

7 |
Semantic Parallelization: a Practical Exercise in Abstract Interpretation
- Jouvelot
- 1987
(Show Context)
Citation Context ...on variables and of other integer variables. These auxilliary variables will be treated as constants throughout this paper. This restriction may sometime be lifted by semantic analysis (see [CH78] or =-=[Jou87]-=-). The source program is correct! We will use the fact that in a correct program, array indices are always within the array bounds. Hence, two array references address the same memory location if and ... |

6 |
An algorithm for structuring programs
- Baker
- 1977
(Show Context)
Citation Context ... interest of simplicity, the step will always be 1. It is quite easy to implement a preprocessor to reduce all for loops to the above format. It is also possible to eliminate goto's (see for instance =-=[Bak77]-=-), to detect induction variables ([ASU86]) and to detect while loops which are for loops in disguise. Linear indices All indices will be restricted to affine functions of the loops inductions variable... |

1 |
Goto statements considered harmfull
- Dijkstra
- 1968
(Show Context)
Citation Context ...o unstructured programs is apparently impossible, especially since there is no longer a uniform method for specifying a particular instruction instance. This is the gist of the classical arguments of =-=[Dij68]-=- against the use of goto's. In the balance of the paper, we will use the following example: for k := 0 to m+n do --r c[k] = 0. ; for i := 0 to m do --A for j := 0 to n do --s c[i+j] := c[i+j] + a[i] *... |