Results 11  20
of
20
Hierarchical static analysis of structured systems of affine recurrence equations
 In ASAP
, 1996
"... The Alpha language, based on systems of affine recurrence equations over polyhedral domains, allows the expression of complex algorithms as hierarchical, parameterized structures of such systems. This paper discusses the static analysis of Alpha programs, an extended typechecking process based on t ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
The Alpha language, based on systems of affine recurrence equations over polyhedral domains, allows the expression of complex algorithms as hierarchical, parameterized structures of such systems. This paper discusses the static analysis of Alpha programs, an extended typechecking process based on the single assignment rule. We present techniques ensuring, on one hand, that a system is valid (with respect to this rule) within a certain range of its parameters, and on the other, that no system is used with invalid values of its parameters. These techniques have been implemented in a versatile tool for Alpha which is demonstrated on the example of the Gaussian elimination. 1
From ALPHA to Imperative Alpha to Imperative Code: A Transformational Compiler for an Array Based Functional Language
, 1995
"... Practical parallel programming demands that the details of distributing data to processors and interprocessor communication be managed by the compiler. These tasks quickly become too difficult for a programmer to do by hand for all but the simplest parallel programs. Yet, many parallel languages sti ..."
Abstract
 Add to MetaCart
Practical parallel programming demands that the details of distributing data to processors and interprocessor communication be managed by the compiler. These tasks quickly become too difficult for a programmer to do by hand for all but the simplest parallel programs. Yet, many parallel languages still require the programmer to manage much of the the parallelism. I discuss the synthesis of parallel imperative code from algorithms written in a functional language called Alpha. Alpha is based on systems of affine recurrence equations and was designed to specify algorithms for regular array architectures. Being a functional language, Alpha implicitly supports the expression of both concurrency and communication. Thus, the programmer is freed from having to explicitly manage the parallelism. Using the information derived from static analysis, Alpha can be transformed into a form suitable for generating imperative parallel code through a series of provably correct program transformations. Th...
Scheduling Reductions
, 1994
"... In order to detect more parallelism in scientific programs, one may extract parallelism relative to reductions. This paper presents such a method which schedules programs with explicit computations of reductions. We describe the way the reductions are expressed in our input language (which is in fac ..."
Abstract
 Add to MetaCart
In order to detect more parallelism in scientific programs, one may extract parallelism relative to reductions. This paper presents such a method which schedules programs with explicit computations of reductions. We describe the way the reductions are expressed in our input language (which is in fact the output language of the reductions detector presented in [RF93]). We also give a brief summary of scheduling techniques. In order to simplify the scheduling we suppose that the target parallel computer has an infinite number of processors with infinite fanin. We show that a schedule computed with this model can be adapted to work on real parallel machines. Then we present a scheduling method based on the algorithms from [Fea92a, Fea92b] which works in presence of reductions. This method is applied on an example. Lastly, we show that sideeffects of reductions scheduling are the simplification of the scheduling process and the improvement of the computed schedules. 1 Introduction The ...
Allocating Memory Arrays for Polyhedra
 INRIA Research Report 2059. NT n9401 26 Doran K. Wilde and Andrew Snoddy Irisa
, 1993
"... : We have been investigating problems which arise in compiling single assignment languages (in which memory is not explicitly allocated) into parallel code. Like standard parallelizing compilers, different index space transformations are performed on variables declared over convex polyhedral regions ..."
Abstract
 Add to MetaCart
: We have been investigating problems which arise in compiling single assignment languages (in which memory is not explicitly allocated) into parallel code. Like standard parallelizing compilers, different index space transformations are performed on variables declared over convex polyhedral regions. Polyhedra can be transformed in such a way as to reduce the volume of the bounding box which we use to reduce the amount of memory allocated to a variable. Allocation of memory to variables which are defined over finite convex polyhedral regions requires a tradeoff in the complexity of the memory addressing function versus the amount of memory used. We present a tradeoff in which the memory address function is limited to an affine function of the indices (thus memory is allocated to a rectangular parallelepiped region). Given this constraint, we seek a unimodular transformation which minimizes the volume of the bounding box of the polyhedron. This is a nonlinear programming problem. We pr...
MemoryEfficient Data Structures for . . .
"... : Generating imperative programs from systolic specifications implies the use of a memoryefficient model for representing data used in the original, singleassignment problem. We present a new method of generating data structures, designed for use in systolic program compilers for distributedmemor ..."
Abstract
 Add to MetaCart
: Generating imperative programs from systolic specifications implies the use of a memoryefficient model for representing data used in the original, singleassignment problem. We present a new method of generating data structures, designed for use in systolic program compilers for distributedmemory parallel computers. Our method is based on the mathematical properties of systolic programs and consists of a set of algebraically defined elementary transformations. Using these transformations, the total size of data structures can be optimized, allowing very memoryefficient code to be produced. The method has been implemented as a part of an experimental compiler of the Alpha language, currently under development. Keywords: parallel programming, systolic arrays, distributed memory architectures (R'esum'e : tsvp) Centre National de la Recherche Scientifique Institut National de Recherche en Informatique (URA 227) Universit e de Rennes 1  Insa de Rennes et en Automatique  unit e d...
Detection of Scans in Sequential Programs
"... this paper, program A and C will normalize to the same form, but program B will not. This is as it should be, since program A and B are equivalent only if n 1. But even adding this information will not enable us to have program A and B converge to the same normal form, unless we use the powerful tr ..."
Abstract
 Add to MetaCart
this paper, program A and C will normalize to the same form, but program B will not. This is as it should be, since program A and B are equivalent only if n 1. But even adding this information will not enable us to have program A and B converge to the same normal form, unless we use the powerful transformations which are described in Sect. 5.
Extensions of the ALPHA Language. . .
"... : Alpha is a functional language based on systems of affine recurrence equations over polyhedral domains. We present an extension of Alpha to deal with sparse polyhedral domains. Such domains are modeled by Zpolyhedra, namely the intersection of lattices and polyhedra. We summarize the mathematical ..."
Abstract
 Add to MetaCart
: Alpha is a functional language based on systems of affine recurrence equations over polyhedral domains. We present an extension of Alpha to deal with sparse polyhedral domains. Such domains are modeled by Zpolyhedra, namely the intersection of lattices and polyhedra. We summarize the mathematical closure properties of Zpolyhedra, and we show how the important features of Alpha, namely normalization, substitution, change of basis, are preserved in the extension. Keywords: polyhedron, recurrence equation, vlsi, automatic synthesis methodology, regular parallelism (R'esum'e : tsvp) Supported by France Telecom grant from CNET, the French Center for Telecommunications Research (project Cairn). CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE Centre National de la Recherche Scientifique Institut National de Recherche en Informatique (URA 227) Universit e de Rennes 1  Insa de Rennes et en Automatique  unit e de recherche de Rennes Extension du langage Alpha aux r'ecurrences sur dom...
. D'etection de r'eductions
"... tifiques implantent les scans en se servant de variables d'accumulation : s(0)=0 DO i=1,n s(i)=s(i1)+a(i) END DO Cette technique de codage g'en`ere des d'ependances producteurconsommateur entre les op'erations de la boucle sur i. Les parall'eliseurs bas'es sur les conditions de Bernstein ne peuv ..."
Abstract
 Add to MetaCart
tifiques implantent les scans en se servant de variables d'accumulation : s(0)=0 DO i=1,n s(i)=s(i1)+a(i) END DO Cette technique de codage g'en`ere des d'ependances producteurconsommateur entre les op'erations de la boucle sur i. Les parall'eliseurs bas'es sur les conditions de Bernstein ne peuvent donc pas parall'eliser les scans. Pour d'etecter les r'eductions il faut revenir aux techniques de reconnaissance de formes. Une telle m'ethode ne sera efficace que si les programmes sont normalis'es avant d'appliquer la reconnaissance. Les travaux pr'ecurseurs en la mati`ere (cf [4]) sont bas'es sur les symbolic stores. Les symbolic stores sont tr`es efficaces pour les scalaires dans les boucles les plus internes mais ne peuvent pas traiter compl`etement les tableaux ou les nids de boucles. Pour pallier ces inconv'enients, il faut travailler sur le graphe de d'ependances du programme. Ainsi dans [
Using Static Analysis to Derive Imperative . . .
, 1994
"... In this article, we demonstrate a translation methodology which transforms a high level algorithmic specification written in the Alpha language to an imperative data parallel language. Alpha is a functional language which was designed to facilitate the kinds of static analyses needed for doing regul ..."
Abstract
 Add to MetaCart
In this article, we demonstrate a translation methodology which transforms a high level algorithmic specification written in the Alpha language to an imperative data parallel language. Alpha is a functional language which was designed to facilitate the kinds of static analyses needed for doing regular array synthesis. We show that the same methods which are used for solving regular array synthesis problems can be applied to the compilation of Alpha as a functional language. We informally introduce the Alpha language with the aid of examples and explain how it is adapted to doing static analysis and transformation. We first show how an Alpha program can be naively implemented by viewing it as a set of monolithic arrays and their filling functions, implemented using applicative caching. We then show how static analysis can be used to improve the efficiency of this naive implementation by orders of magnitude. We present a compilation method which makes incremental transformations on t...