Results 1  10
of
10
Loop Parallelization in the Polytope Model
 CONCUR '93, Lecture Notes in Computer Science 715
, 1993
"... . During the course of the last decade, a mathematical model for the parallelization of FORloops has become increasingly popular. In this model, a (perfect) nest of r FORloops is represented by a convex polytope in Z r . The boundaries of each loop specify the extent of the polytope in a dis ..."
Abstract

Cited by 94 (23 self)
 Add to MetaCart
. During the course of the last decade, a mathematical model for the parallelization of FORloops has become increasingly popular. In this model, a (perfect) nest of r FORloops is represented by a convex polytope in Z r . The boundaries of each loop specify the extent of the polytope in a distinct dimension. Various ways of slicing and segmenting the polytope yield a multitude of guaranteed correct mappings of the loops' operations in spacetime. These transformations have a very intuitive interpretation and can be easily quantified and automated due to their mathematical foundation in linear programming and linear algebra. With the recent availability of massively parallel computers, the idea of loop parallelization is gaining significance, since it promises execution speedups of orders of magnitude. The polytope model for loop parallelization has its origin in systolic design, but it applies in more general settings and methods based on it will become a part of futur...
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...
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...
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@...
Reduction in PEI
 CONPAR'94, LNCS 854
, 1994
"... Reduction is one of the major issues in data parallel languages : it can be defined as a rule of program refinement. This article presents a theoretical framework, called Pei, the foundation of a formalism for parallel programming, where this rule can easily be expressed and applied. This formal ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Reduction is one of the major issues in data parallel languages : it can be defined as a rule of program refinement. This article presents a theoretical framework, called Pei, the foundation of a formalism for parallel programming, where this rule can easily be expressed and applied. This formalism is founded on a small but powerful set of primitives : they are three operations on data fields and inverse operations.
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...
Une Cat'egorie Cart'esienne Ferm'ee De Structures R'eparties
"... Introduction Les structures de donn'ees concr`etes (on dira aussi: structures concr`etes ou CDS) [3] et les domaines qu'ils engendrent, appel'es domaines concrets [5] servent `a l"etude s'emantique des notions de calcul s'equentiel [3] et de calcul parall`ele d'eterministe [1]. Ces structures permet ..."
Abstract
 Add to MetaCart
Introduction Les structures de donn'ees concr`etes (on dira aussi: structures concr`etes ou CDS) [3] et les domaines qu'ils engendrent, appel'es domaines concrets [5] servent `a l"etude s'emantique des notions de calcul s'equentiel [3] et de calcul parall`ele d'eterministe [1]. Ces structures permettent la construction de nombreuses cat'egories cart'esiennes ferm'ees (CCC), mod`eles th'eoriques des langages fonctionnels typ'es. Dans cet article nous appliquons la th'eorie des CDS g'en'eralis'ees (gCDS) de Bookes et Geva [1] `a la construction d'une CCC dont les objetsdomaines sont des ensembles d"etats de structures de tableaux dont les "cellules", "valeurs" et "'ev'enements" sont 'etiquet'es par des adresses provenant d'un r'eseau fixe d' "indices". La construction utilise la relation d'activation des gCDS comme encodage des d'ependances de donn'ees et donc des communications. Elle engendre des domaines explicitement r'epartis et est pr'eserv'ee par l'exponent
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...