• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Allocating memory arrays for polyhedra (1993)

by D Wilde, S Rajopadhye
Add To MetaCart

Tools

Sorted by:
Results 1 - 6 of 6

Memory Reuse Analysis in the Polyhedral Model

by D. Wilde, S. Rajopadhye - 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 single-assignment 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 single-assignment 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...

Derivation of Data Parallel Code from a Functional Program

by Patrice Quinton, Sanjay Rajopadhye, Doran Wilde , 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 re ..."
Abstract - Cited by 12 (6 self) - 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 to improve the efficiency of this naive implementation by orders of magnitude. We present a compilation method which makes incremental transformations on the abstract syntax ...

The Naive Execution of Affine Recurrence Equations

by Sanjay Rajopadhye, Doran Wilde - INTERNATIONAL CONFERENCE ON APPLICATION--SPECIFIC 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 C-code 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...

The ALPHA Compiler and Uncompiler

by Andrew Snoody, Doran K. Wilde, Doran K. Wilde
"... : The Alpha parser translates an Alpha source program into an abstract syntax tree (AST). The Alpha unparser, or pretty printer, does the opposite translation from an Alpha AST back to a source program. These two translators are an integral part of the Alpha environment. This report is both a user's ..."
Abstract - Add to MetaCart
: The Alpha parser translates an Alpha source program into an abstract syntax tree (AST). The Alpha unparser, or pretty printer, does the opposite translation from an Alpha AST back to a source program. These two translators are an integral part of the Alpha environment. This report is both a user's guide and techical documentation for these two programs. Key-words: recurrence equations, systolic arrays, hardward design language (R'esum'e : tsvp) email: wilde@irisa.frThiswork was partially supported by the Esprit Basic Research Action NANA 2, Number 6632 and by NSF Grant No. MIP-910852. 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 Le compilateur et d'ecompilateur de ALPHA Rapport Technique R'esum'e : Le compilateur d'Alpha traduit un programme 'ecrit en Alpha vers un arbre de syntaxe abstract (AST). Le d'ecompilateur d'Alpha fait l'...

From ALPHA to Imperative Alpha to Imperative Code: A Transformational Compiler for an Array Based Functional Language

by Doran K. Wilde , 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...

Using Static Analysis to Derive Imperative . . .

by Patrice Quinton, Sanjay Rajopadhye, Doran Wilde , 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...
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University