Results 1  10
of
20
A Library for Doing Polyhedral Operations
, 1993
"... Polyhedra are geometric representations of linear systems of equations and inequalities. Since polyhedra are used to represent the iteration domains of nested loop programs, procedures for operating on polyhedra are useful for doing loop transformations and other program restructuring transformatio ..."
Abstract

Cited by 107 (13 self)
 Add to MetaCart
Polyhedra are geometric representations of linear systems of equations and inequalities. Since polyhedra are used to represent the iteration domains of nested loop programs, procedures for operating on polyhedra are useful for doing loop transformations and other program restructuring transformations which are needed in parallelizing compilers. Thus a need for a library of polyhedral operations has recently been recognized in the parallelizing compiler community. Polyhedra are also used in the definition of domains of variables in systems of affine recurrence equations (SARE). Alpha is a language which is based on the SARE formalism in which all variables are declared over finite unions of polyhedra. This report describes a library of polyhedral functions which was developed to support the Alpha language environment, and which is general enough to satisfy the needs of researchers doing parallelizing compilers. This report describes the data structures used to represent domains, gives...
Synchronous Kahn Networks
, 1996
"... Synchronous dataflow is a programming paradigm which has been successfully applied in reactive systems. In this context, it can be characterized as some class of static bounded memory dataflow networks. In particular, these networks are not recursively defined, and obey some kind of "synchronous" ..."
Abstract

Cited by 58 (9 self)
 Add to MetaCart
Synchronous dataflow is a programming paradigm which has been successfully applied in reactive systems. In this context, it can be characterized as some class of static bounded memory dataflow networks. In particular, these networks are not recursively defined, and obey some kind of "synchronous" constraints (clock calculus). Based on Kahn's relationship between dataflow and stream functions, the synchronous constraints can be related to Wadler's listlessness, and can be seen as sufficient conditions ensuring listless evaluation. As a byproduct, those networks enjoy efficient compiling techniques. In this paper, we show that it is possible to extend the class of static synchronous dataflow to higher order and dynamical networks, thus giving sense to a larger class of synchronous dataflow networks.
The ALPHA Language
 38330 MONTBONNOT ST MARTIN UNITE DE RECHERCHE INRIA ROCQUENCOURT, DOMAINE DE VOLUCEAU, ROCQUENCOURT, BP 105, 78153 LE CHESNAY CEDEX UNITE DE RECHERCHE INRIA SOPHIAANTIPOLIS, 2004 ROUTE DES LUCIOLES, BP 93, 06902 SOPHIAANTIPOLIS CEDEX EDITEUR INRIA, DOMA
, 1994
"... This report is a formal description of the Alpha language, as it is currently implemented. Alpha is a strongly typed, functional language which embodies the formalism of systems of affine recurrence equations. In this report, Alpha language constructs are described, and denotational and type sema ..."
Abstract

Cited by 15 (1 self)
 Add to MetaCart
This report is a formal description of the Alpha language, as it is currently implemented. Alpha is a strongly typed, functional language which embodies the formalism of systems of affine recurrence equations. In this report, Alpha language constructs are described, and denotational and type semantics are given. The theorems which are the basis for doing transformations on an Alpha program are stated. And finally, the syntax and semantics of Alpha are given.
Memory Reuse Analysis in the Polyhedral Model
 Parallel Processing Letters
, 1996
"... In the context of developing a compiler for a Alpha, a functional dataparallel language based on systems of affine recurrence equations (SAREs), we address the problem of transforming scheduled singleassignment code to multiple assignment code. We show how the polyhedral model allows us to statical ..."
Abstract

Cited by 14 (1 self)
 Add to MetaCart
In the context of developing a compiler for a Alpha, a functional dataparallel language based on systems of affine recurrence equations (SAREs), we address the problem of transforming scheduled singleassignment code to multiple assignment code. We show how the polyhedral model allows us to statically compute the lifetimes of program variables, and thus enables us to derive necessary and sufficient conditions for reusing memory. 1. Introduction The methodology of automatic systolic array synthesis from Systems of Affine Recurrence Equations (SAREs) has a close bearing on parallelizing compilers and on efficient implementation of functional languages. To study this relationship, we are currently developing a compiler for Alpha [9], a functional, data parallel language based on SAREs defined over polyhedral index domains. The language semantics directly lead to sequential code based on demand driven evaluation. However, the resulting context switches can be avoided if the program is tra...
Regular Array Synthesis using ALPHA
 INTERNATIONAL CONFERENCE ON APPLICATIONSPECIFIC ARRAY PROCESSORS
, 1994
"... We report our current research in a computer assisted methodology for synthesizing regular array processors using the Alpha language and design environment. The design process starts from an algorithmic level description of the function and finishes with a netlist of an array processor which perfo ..."
Abstract

Cited by 13 (1 self)
 Add to MetaCart
We report our current research in a computer assisted methodology for synthesizing regular array processors using the Alpha language and design environment. The design process starts from an algorithmic level description of the function and finishes with a netlist of an array processor which performs the specified function. To illustrate the proposed approach, we present the design of an array processor to do polynomial division.
Detection of Recurrences in Sequential Programs with Loops
 In PARLE 93, Springer LNCS
, 1993
"... . To improve the performances of parallelizing compilers, one must detect recurrences in scientific programs and subject them to special parallelization methods. We present a method for detecting recurrences which is based on the analysis of Systems of Recurrence Equations. This method identifies re ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
. To improve the performances of parallelizing compilers, one must detect recurrences in scientific programs and subject them to special parallelization methods. We present a method for detecting recurrences which is based on the analysis of Systems of Recurrence Equations. This method identifies recurrences on arrays, recurrences of arbitrary order and multiequations recurrences. We explain how to associate a SRE to a restricted class of imperative programs. We present a normalization of such SRE that allows the detection of recurrences by simple inspection of equations. When detected, a recurrence may be replaced by a symbolic expression of its solution. To iterate the process can lead to the identification of multidimensional recurrences. 1 Introduction One of the most important challenges in present day computer science is the efficient compilation of programs for the newly emerging massively parallel architectures. In contrast of the situation for the last generation of superco...
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

Cited by 8 (7 self)
 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...
The Naive Execution of Affine Recurrence Equations
 INTERNATIONAL CONFERENCE ON APPLICATIONSPECIFIC ARRAY PROCESSORS
, 1995
"... In recognition of the fundamental relation between regular arrays and systems of affine recurrence equations, the Alpha language was developed as the basis of a computer aided design methodology for regular array architectures. Alpha is used to initially specify algorithms at a very high algorith ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
In recognition of the fundamental relation between regular arrays and systems of affine recurrence equations, the Alpha language was developed as the basis of a computer aided design methodology for regular array architectures. Alpha is used to initially specify algorithms at a very high algorithmic level. Regular array architecures can then be derived from the algorithmic specification using a transformational approach supported by the Alpha environment. This design methodology guarantees the final design to be correct by construction, assuming the initial algorithm was correct. In this paper, we address the problem of validating an initial specification. We demonstrate a translation methodolody which compiles Alpha into the imperative sequential language C. The Ccode may then be compiled and executed to test the specification. We show how an Alpha program can be naively implemented by viewing it as a set of monolithic arrays and their filling functions, implemented usin...
Deriving Imperative Code From Functional Programs
 In 7th Conference on Functional Programming Languages and Computer Architecture
, 1995
"... : Alpha is a data parallel functional language which has the capability of specifying algorithms at a very high level. Our ultimate objective is to generate efficient parallel imperative code from an Alpha program. In this paper, we discuss the related problem of generating efficient single processo ..."
Abstract

Cited by 6 (6 self)
 Add to MetaCart
: Alpha is a data parallel functional language which has the capability of specifying algorithms at a very high level. Our ultimate objective is to generate efficient parallel imperative code from an Alpha program. In this paper, we discuss the related problem of generating efficient single processor imperative code. Analysis techniques that were developed for the synthesis of systolic arrays are extended and adapted for the compilation of functional programming languages. We also demonstrate how a transformational methodology can be used as a compilation engine to transform an Alpha program to a sequential form. Ccode is then generated using a straightforward pretty printer from the sequential form Alpha program. The Ccode may then be compiled to efficiently execute the program. Keywords: parallelizing compilers, functional languages (R'esum'e : tsvp) Supported by NSF grant MIP910852 and Esprit Basic Research Action NANA2, Number 6632 email: quinton@irisa.fr email: rajopadh@...
On deriving HPF code from Pei programs
, 1998
"... The paper presents some solutions for the generation of HPF code from Pei specifications. We delimit the class of specifications that can be translated and we discuss the operational semantics given to these specifications. In ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
The paper presents some solutions for the generation of HPF code from Pei specifications. We delimit the class of specifications that can be translated and we discuss the operational semantics given to these specifications. In