| P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In 9 th Int. Parallel Processing Symp, IPPS'95, Santa Barbara, CA, April 1995. IEEE. |
....x ] Output deallocate arrays Front[ t mid Gamma z 1 ] till Front[ t mid ] Output return ToBeReturned 5 Related Work Very similar to our aims are the Alpha and PEI projects. Alpha [21] is a first order functional language based on affine recurrences on finite domains. Its compilation [22] is similar to the techniques presented in this paper, except that no extent analysis is needed in Alpha and no provision is made for higher order recurrences. The PEI project [23] defines an equational style framework for data parallel programming. It lies on a small but powerful set of ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In 9 th Int. Parallel Processing Symp, IPPS'95, Santa Barbara, CA, April 1995. IEEE.
....can be combined using constructors for product, direct sum, function space, and restriction. The functions are explicitly typed with their index domains. A similar language is Alpha [42] where restrictions which ensure the efficient compilation are posed on the definition of recursive arrays [54, 55]. A similar view, but for more unstructured data, appears in the data parallel language Connection Machine Lisp [62] Here, the parallel data type is the xapping, which is a set of pairs of lisp objects where the first component of a pair cannot occur in another pair. Thus, xappings are really ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In 9th International Parallel Processing Symposium, pages 1--15, 1995.
....information. 2.2 The tools We now present MmAlpha, a Mathematica based program transformation environment which allows us to derive implementation level descriptions from high level Alpha programs. We focus here on hardware synthesis, although imperative code [13] and data parallel programs [12] may also be generated. The reader is referred to [9] for a detailed description of the synthesis flow. A program like that of Prog.2 is first analyzed (type checked) to ensure the consistency of the domains and expressions. Then it is uniformized [14, 16] to remove the data broadcasts and ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In IPPS, Santa Barbara, USA, April 1995.
.... of ane recurrence equations (SARE) may be transformed, through a range of (semi )automatic, provably correct, re nement steps, into an implementation level description such as a VLSI regular array [5] imperative code [10] or a collection of loop nests aimed at a massively parallel architecture [9]. This paper addresses more speci cally the polyhedral model, in which the SARE variables are data arrays with polyhedral domains. The results presented here have been implemented in the Alpha environment [8, 12] which is based on polyhedral SAREs [13] One of the strong points of data parallel ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In IPPS, Santa Barbara, USA, April 1995.
....g Output g Output deallocate arrays Front[ t mid Gamma z 1 ] till Front[ t mid ] Output return ToBeReturned 5 Related Work Very similar to our aims are the Alpha and PEI projects. Alpha [21] is a first order functional language based on affine recurrences on finite domains. Its compilation [22] is similar to the techniques presented in this paper, except that no extent analysis is needed in Alpha and no provision is made for higher order recurrences. The PEI project [23] defines an equational style framework for data parallel programming. It lies on a small but powerful set of ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In 9 th Int. Parallel Processing Symp, IPPS'95, Santa Barbara, CA, April 1995. IEEE.
....logical time components and of inner parallel loops enumerating parallel operations. Naturally enough, this scanning is expressed in a dataparallel setting, and this general method is used both in the framework of automatic parallelization [2] and in the framework of functional language compiling [11]. However, when dynamic control structures such as while loops and general if constructs are used, execution domains cannot precisely be described at compiletime. This introduces two problems when compared to static control programs. 1. The flow of data is not precisely known at compile time and ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In Int. Parallel Processing Symp, IPPS'95, Santa Barbara, April 1995. IEEE. This article was processed using the L A T E X macro package with LLNCS style
....strategy and highlight the problems that we are solving. Our project has the ultimate objective of generating efficient parallel imperative code from an Alpha program. In a recent publication, we described a strategy for compiling Alpha into data parallel imperative code for parallel processors [12]. In that paper, we gave an overview of our project without detailing how each step was to be done. In this paper, we discuss the related problem of generating efficient single processor imperative code and detail how that is done. We extend analysis techniques that were developed for the ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. 9th International Parallel Processing Symposium, 9:1--15, 1995.
....and others. Using these tools, the high level description of a regular problem may be transformed, in a correct proven manner, into an implementationlevel description such as a VLSI regular array [1] imperative code [5] or a collection of loop nests aimed at a massively parallel architecture [4]. We present here an extension to the language allowing the parametrization and structuration of Alpha programs into subsystems of AREs. In addition to the possibility of parametrizing Alpha programs, we introduce in the language the usual structuration of a program into functions, but also more ....
....It is however more powerful : where the map operator applies a function to all the terms of a list, we may apply it to all the terms of any integer polyedron. If the subsystem is viewed as a procedure in an imperative language, this corresponds to a procedure call within an ane loop nest [5, 4]. If we compare Alpha to VHDL, this correspond to nested for and generate loops. The formalism of AREs allows to express such complex structuration in a very simple and uniform manner. These power of description and interpretation has still to be exploited. Future work include the de nition of ....
P. Quinton, S. Rajopadhye, and D. Wilde. \Derivation of data parallel code from a functional program." In IPPS, Santa Barbara, USA, April 1995.
....are also possible in Crystal, but they require a special algebraic metalanguage and associated machinery. Alpha thus achieves simplicity and greater degree of automation by sacrificing generality. Wilde s PhD thesis deals with the problem of compiling Alpha to sequential or parallel machines [WR95, QRW95a, QRW95b, Wil95, WR96]. ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. In 9th International Parallel Processing Symposium, pages 766--772, Santa Barbara, CA, April 1995. IEEE.
....and others. Using these tools, the high level description of a regular problem may be transformed, in a correct proven manner, into an implementationlevel description such as a VLSI regular array [1] imperative code [5] or a collection of loop nests aimed at a massively parallel architecture [4]. We present here an extension to the language allowing the parametrization and structuration of Alpha programs into subsystems of AREs. In addition to the possibility of parametrizing Alpha programs, we introduce in the language the usual structuration of a program into functions, but also more ....
....It is however more powerful : where the map operator applies a function to all the terms of a list, we may apply it to all the terms of any integer polyedron. ffl If the subsystem is viewed as a procedure in an imperative language, this corresponds to a procedure call within an affine loop nest [5, 4]. ffl If we compare Alpha to VHDL, this correspond to nested for and generate loops. The formalism of AREs allows to express such complex structuration in a very simple and uniform manner. These power of description and interpretation has still to be exploited. Future work include the definition ....
P. Quinton, S. Rajopadhye, and D. Wilde. "Derivation of data parallel code from a functional program." In IPPS, Santa Barbara, USA, April 1995.
....the memory location corresponding to each point in the polyhedron. This can be done with a set of nested loops with piecewise affine upper and lower bounds. This work is related to [QRW95b] which discusses efficient compilation of Alpha for a single processor when a schedule is known, and [QRW95a] which proposes a general strategy for compiling Alpha into a data parallel language. The paper is organized as follows. After a short informal introduction to the Alpha language, we describe in section 2 the basic strategy used by the Alpha translator. In section 3, we discuss the allocation of ....
....a case, we may partition the domains of different variables and assign each partition to a different processor. A static analysis of the communication [Raj93] is needed to choose the best partitioning. In effect, we aim to be able to generate code that is as efficient as parallel imperative code [QRW95a]. Naively generated code is memory inefficient, since each table entry is written exactly once. Knowing a schedule, one can perform static lifetime analysis to determine whether and when memory can be reused. Once again, this analysis can be cast in terms of (linear and nonlinear) optimization ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. 9th International Parallel Processing Symposium, 9:1--15, 1995.
.... using tabulation [4, 18] and monolithic arrays [37] For better performance, an Alpha program can be semiautomatically transformed the transformation is chosen manually, and the system generates the final code automatically into imperative single assignment code [29] or to data parallel code [28]. Our initial interest was on the transformational infrastructure, rather than the choice of transformations. In the present paper, we address this second aspect. In particular, we (i) give an algorithm to obtain the usage table of an Alpha program, and (ii) use this to perform lifetime analysis ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. 9th International Parallel Processing Symposium, 9:1--15, 1995.
....accessing the memory location corresponding to each point in the polyhedron. This can be done with a set of nested loops with piecewise affine upper and lower bounds. This work is related to [15] which discusses efficient compilation of Alpha for a single processor when a schedule is known, and [14] which proposes a general strategy for compiling Alpha into a data parallel language. The paper is organized as follows. After a short informal introduction to the Alpha language, we describe in section 2 the basic strategy used by the Alpha translator. In section 3, we discuss the allocation of ....
....such a case, we may partition the domains of different variables and assign each partition to a different processor. A static analysis of the communication [17] is needed to choose the best partitioning. In effect, we aim to be able to generate code that is as efficient as parallel imperative code [14]. Naively generated code is memory inefficient, since each table entry is written exactly once. Knowing a schedule, one can perform static lifetime analysis to determine whether and when memory can be reused. Once again, this analysis can be cast in terms of (linear and nonlinear) optimization ....
P. Quinton, S. Rajopadhye, and D. Wilde. Derivation of data parallel code from a functional program. 9th International Parallel Processing Symposium, 9:1--15, 1995.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC