Results 1 - 10
of
15
Parallel Programming, List Homomorphisms and the Maximum Segment Sum Problem
- Proceedings of Parco 93. Elsevier Series in Advances in Parallel Computing
, 1993
"... We review the use of the Bird-Meertens Formalism as a vehicle for the construction of programs with massive implicit parallelism. We show that a simple result from the theory, concerning the expression of list homomorphisms, can help us in our search for parallel algorithms and demonstrate its appli ..."
Abstract
-
Cited by 22 (1 self)
- Add to MetaCart
We review the use of the Bird-Meertens Formalism as a vehicle for the construction of programs with massive implicit parallelism. We show that a simple result from the theory, concerning the expression of list homomorphisms, can help us in our search for parallel algorithms and demonstrate its application to some simple problems including the maximum segment sum problem. Our main purpose is to show that an understanding of the homomorphism lemma can be helpful in producing programs for problems which are "not quite" list homomorphisms themselves. A more general goal is to illustrate the benefits which can arise from taking a little theory with a pinch of pragmatic salt. 1 Introduction The use of bulk operations on aggregate data sets as a means of generating programs with a high degree of implicit parallelism has a long history (e.g. see [4] for a recent presentation). Although traditionally associated with an imperative programming style and SIMD machines, the approach lends itself e...
Functional Skeletons Generate Process Topologies in Eden
- In: Int. Symp. on Programming Languages, Implementations Logics and Programs PLILP’96
, 1996
"... . We present a collection of skeletons that are appropriate to instantiate process systems in the functional-concurrent language Eden [BLOM96]. Eden is a functional language providing facilities for the explicit definition and instantiation of processes. Skeletons in this language are just highe ..."
Abstract
-
Cited by 12 (2 self)
- Add to MetaCart
. We present a collection of skeletons that are appropriate to instantiate process systems in the functional-concurrent language Eden [BLOM96]. Eden is a functional language providing facilities for the explicit definition and instantiation of processes. Skeletons in this language are just higher order functions having process definitions as parameters. We introduce skeletons for both transformational (i.e. deterministic) and reactive (usually non deterministic) process topologies and illustrate their use by applying them to several examples. Some pointers to the skeletons literature are also given. Keywords: Functional programming, concurrent programming, parallel programming, skeletons, higher order functions. 1 Introduction Functional languages are often said to be amenable for implicit parallelism because referential transparency allows evaluating expressions in any order, or even in parallel, without changing the denotational meaning of programs. However, to exploit pa...
Parallelization of Divide-and-Conquer by Translation to Nested Loops
- J. Functional Programming
, 1997
"... We propose a sequence of equational transformations and specializations which turns a divide-and-conquer skeleton in Haskell into a parallel loop nest in C. Our initial skeleton is often viewed as general divide-and-conquer. The specializations impose a balanced call tree, a fixed degree of the prob ..."
Abstract
-
Cited by 12 (6 self)
- Add to MetaCart
We propose a sequence of equational transformations and specializations which turns a divide-and-conquer skeleton in Haskell into a parallel loop nest in C. Our initial skeleton is often viewed as general divide-and-conquer. The specializations impose a balanced call tree, a fixed degree of the problem division, and elementwise operations. Our goal is to select parallel implementations of divide-and-conquer via a space-time mapping, which can be determined at compile time. The correctness of our transformations is proved by equational reasoning in Haskell; recursion and iteration are handled by induction. Finally, we demonstrate the practicality of the skeleton by expressing Strassen's matrix multiplication in it.
Clumps: A Candidate Model Of Efficient, General Purpose Parallel Computation
, 1994
"... A new model of parallel computation is proposed, CLUMPS (Campbell's Lenient, Unified Model of Parallel Systems). This is composed of an abstract machine with an associated cost model, and aims to be more portable, reflective of costs, expressible and encouraging of more efficient implementations of ..."
Abstract
-
Cited by 10 (6 self)
- Add to MetaCart
A new model of parallel computation is proposed, CLUMPS (Campbell's Lenient, Unified Model of Parallel Systems). This is composed of an abstract machine with an associated cost model, and aims to be more portable, reflective of costs, expressible and encouraging of more efficient implementations of algorithms than other existing models. It is shown that each basic parallel architecture class can congruently perform each other's computations, but the congruent simulation of each other's communication is not generally possible (where for a simulation to be congruent the simulation costs on the target architecture are asymptotically equivalent to the implementation costs on the native architectures). This is reflected in the CLUMPS abstract machine through its flexibility in terms of program control and memory access. The congruence requirement is relaxed so that though strict congruence may not be achieved according to the above definition, communication costs are reflectively accounted ...
List Homomorphic Parallel Algorithms for Bracket Matching
- Department of Computer Science, University of Edinburgh
, 1993
"... We present a family of parallel algorithms for simple language recognition problems involving bracket matching. The algorithms are expressed in the Bird-Meertens Formalism, exploiting only list operations which are inherently massively parallel. Our intention is to illustrate the practical efficacy ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
We present a family of parallel algorithms for simple language recognition problems involving bracket matching. The algorithms are expressed in the Bird-Meertens Formalism, exploiting only list operations which are inherently massively parallel. Our intention is to illustrate the practical efficacy with which such algorithms can be derived and expressed given the support of a well understood theoretical foundation. One of the variants produced is of particular interest in that it exploits the same theoretical result twice to produce nested parallelism. 1 Introduction In [8], we investigated an informal methodology for the generation of parallel algorithms based upon exploitation of a fundamental result from the Bird-Meertens "theory of lists". Our main example was an algorithm for the maximum segment sum problem. In this report we provide further examples of the approach. For completeness, the remainder of this section and sections 2 and 3 repeat the introductory material from [8]. Re...
Data Distribution Algebras - A Formal Basis for Programming Using Skeletons
, 1994
"... this paper functional languages are proposed as such a methodology using an extension of the concept of skeletons --- higher-order functions coupled with parallel implementation templates. An essential part of the proposed methodology is the use of data distribution algebras ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
this paper functional languages are proposed as such a methodology using an extension of the concept of skeletons --- higher-order functions coupled with parallel implementation templates. An essential part of the proposed methodology is the use of data distribution algebras
The Transformational Derivation of Parallel Programs using Data-Distribution Algebras and Skeletons
, 1997
"... The transformational derivation of parallel programs for distributed-memory architectures using skeleton-based approaches is one of the most promising methods for parallel program development. These approaches support the derivation of provably correct, efficient and portable parallel programs using ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
The transformational derivation of parallel programs for distributed-memory architectures using skeleton-based approaches is one of the most promising methods for parallel program development. These approaches support the derivation of provably correct, efficient and portable parallel programs using a predefined set of encapsulated efficiently implemented parallel base algorithms. Encapsulation requires that compositions of skeletons are explicitly defined by means of transformations. More flexible approaches which enable the compositional development of parallel programs --- that is, without reliance on ad hoc transformations --- are, however, often advantageous. The research
A Survey of Models of Parallel Computation
, 1997
"... Serial computing's popularity can be attributed to the von Neumann model providing a single, general model of serial computation. This has led to portability, predictability and programmability in serial computation. However, there is no such single model in parallel computation. Rather, numerous mo ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Serial computing's popularity can be attributed to the von Neumann model providing a single, general model of serial computation. This has led to portability, predictability and programmability in serial computation. However, there is no such single model in parallel computation. Rather, numerous models abound with some being more popular than others, but there is as yet no clear leader. This survey presents several such candidate models of parallel computation. Each of the surveyed models is described and criticised, and assessed as to how it satisfies a series of requirements for a model of parallel computation. This report came about as a result of lecturing undertaken by the author in the area of models of parallel computation. It attempts to provide an introduction to the area and a justification of its study, along with a survey of numerous key models. 1 Introduction Despite an apparent trend towards parallel computers being composed of nodes of independent processor-memory pair...
Parallelization of Divide-and-Conquer in the Bird-Meertens Formalism
, 1995
"... . An SPMD parallel implementation schema for divide-and-conquer specifications is proposed and derived by formal refinement (transformation) of the specification. The specification is in the form of a mutually recursive functional definition. In a first phase, a parallel functional program schema is ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
. An SPMD parallel implementation schema for divide-and-conquer specifications is proposed and derived by formal refinement (transformation) of the specification. The specification is in the form of a mutually recursive functional definition. In a first phase, a parallel functional program schema is constructed which consists of a communication tree and a functional program that is shared by all nodes of the tree. The fact that this phase proceeds by semanticspreserving transformations in the Bird-Meertens formalism of higher-order functions guarantees the correctness of the resulting functional implementation. A second phase yields an imperative distributed message-passing implementation of this schema. The derivation process is illustrated with an example: a twodimensional numerical integration algorithm. 1. Introduction One of the main problems in exploiting modern multiprocessor systems is how to develop correct and efficient programs for them. We address this problem using the ap...
Deriving Parallel Numerical Algorithms using Data Distribution Algebras: Wang's Algorithm
, 1996
"... Parallel and distributed programming are much more difficult than the development of sequential algorithms due to data distribution issues and communication requirements. This paper presents a methodology that enables the abstract description of the distribution of data structures by means of overla ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Parallel and distributed programming are much more difficult than the development of sequential algorithms due to data distribution issues and communication requirements. This paper presents a methodology that enables the abstract description of the distribution of data structures by means of overlapping covers that form data distribution algebras. Algorithms are formulated and derived by transformation in a functional environment using skeletons, i.e. higher-order functions with specific parallel implementations. Communication is specified implicitly through the access to overlapping parts of covers. Such specifications enable the derivation of explicit lower-level communication statements. We illustrate the concepts by a complete derivation of Wang's partition algorithm for the solution of tridiagonal systems of linear equations. CONTENTS 2 Contents 1 Introduction 3 1.1 Motivation and Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Notation . . . . . . ....

