Results 1 
8 of
8
Systematic Efficient Parallelization of Scan and Other List Homomorphisms
 In Annual European Conference on Parallel Processing, LNCS 1124
, 1996
"... Homomorphisms are functions which can be parallelized by the divideandconquer paradigm. A class of distributable homomorphisms (DH) is introduced and an efficient parallel implementation schema for all functions of the class is derived by transformations in the BirdMeertens formalism. The schema ..."
Abstract

Cited by 26 (7 self)
 Add to MetaCart
Homomorphisms are functions which can be parallelized by the divideandconquer paradigm. A class of distributable homomorphisms (DH) is introduced and an efficient parallel implementation schema for all functions of the class is derived by transformations in the BirdMeertens formalism. The schema can be directly mapped on the hypercube with an unlimited or an arbitrary fixed number of processors, providing provable correctness and predictable performance. The popular scanfunction (parallel prefix) illustrates the presentation: the systematically derived implementation for scan coincides with the practically used "folklore" algorithm for distributedmemory machines.
Extracting and Implementing List Homomorphisms in Parallel Program Development
 Science of Computer Programming
, 1997
"... this paper, we study functions called list homomorphisms, which represent a particular pattern of parallelism. ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
this paper, we study functions called list homomorphisms, which represent a particular pattern of parallelism.
Parallelizing Functional Programs by Generalization
 Journal of Functional Programming
, 1997
"... List homomorphisms are functions that are parallelizable using the divideandconquer paradigm. We study the problem of finding a homomorphic representation of a given function, based on the BirdMeertens theory of lists. A previous work proved that to each pair of leftward and rightward sequential ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
List homomorphisms are functions that are parallelizable using the divideandconquer paradigm. We study the problem of finding a homomorphic representation of a given function, based on the BirdMeertens theory of lists. A previous work proved that to each pair of leftward and rightward sequential representations of a function, based on cons and snoclists, respectively, there is also a representation as a homomorphism. Our contribution is a mechanizable method to extract the homomorphism representation from a pair of sequential representations. The method is decomposed to a generalization problem and an inductive claim, both solvable by term rewriting techniques. To solve the former we present a sound generalization procedure which yields the required representation, and terminates under reasonable assumptions. We illustrate the method and the procedure by the parallelization of the scanfunction (parallel prefix). The inductive claim is provable automatically.
A Case Study in Parallel Program Derivation: the Heat Equation Algorithm
, 1994
"... We investigate the application of functional specification and program transformation in a practical setting using a simple case study: the derivation of a parallel program for solving the heat equation. The main concerns here are: (1) how to write an initial specification of the algorithm using a n ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
We investigate the application of functional specification and program transformation in a practical setting using a simple case study: the derivation of a parallel program for solving the heat equation. The main concerns here are: (1) how to write an initial specification of the algorithm using a notation appropriate to the subject area (partial differential equations), (2) the introduction of an intermediate algorithm specification using bidirectional mapping scan, and (3) the use of equational reasoning to transform the specification. 1 Introduction Our longterm objective is to make it easier to write correct and efficient parallel programs. Our method is based on equational reasoning and program transformation in a higher order, nonstrict functional language. We selected this formal method because we hope to show that 1. The functional language is expressive enough to allow us to specify the original algorithm in a clear, readable, intuitive style, which ordinary programmers  ...
Abstraction and Performance in the Design of Parallel Programs
, 1997
"... ion and Performance in the Design of Parallel Programs Der Fakultat fur Mathematik und Informatik der Universitat Passau vorgelegte Zusammenfassung der Veroffentlichungen zur Erlangung der venia legendi von Dr. Sergei Gorlatch Passau, Juli 1997 Contents 1 Introduction 2 2 Outline of the SA ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
ion and Performance in the Design of Parallel Programs Der Fakultat fur Mathematik und Informatik der Universitat Passau vorgelegte Zusammenfassung der Veroffentlichungen zur Erlangung der venia legendi von Dr. Sergei Gorlatch Passau, Juli 1997 Contents 1 Introduction 2 2 Outline of the SAT Approach 6 2.1 Performance View . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Abstraction View . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Design in SAT: Stages and Transformations . . . . . . . . . . 9 2.4 SAT and Homomorphisms . . . . . . . . . . . . . . . . . . . . 11 3 List Homomorphisms 12 4 Extraction and Adjustment 14 4.1 The CSMethod . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Mechanizing the CSMethod . . . . . . . . . . . . . . . . . . . 17 4.3 AlmostHomomorphisms: the MSS Problem . . . . . . . . . . 19 5 Composition of Homomorphisms 21 5.1 Rules of Composition . . . . . . . . . . . . . . . . . . . . . . . 21 5.2 Derivation by Transformation...
Parallelizing Functional Programs by Term Rewriting
, 1997
"... List homomorphisms are functions that can be computed in parallel using the divideandconquer paradigm. We study the problem of finding a homomorphic representation of a given function, based on the BirdMeertens theory of lists. A previous work proved that to each pair of leftward and rightward se ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
List homomorphisms are functions that can be computed in parallel using the divideandconquer paradigm. We study the problem of finding a homomorphic representation of a given function, based on the BirdMeertens theory of lists. A previous work proved that to each pair of leftward and rightward sequential representations of a function, based on cons and snoclists, respectively, there is also a representation as a homomorphism. Our contribution is a mechanizable method to extract the homomorphism representation from a pair of sequential representations. The method is decomposed to a generalization problem and an inductive claim, both solvable by term rewriting techniques. To solve the former we present a sound generalization procedure which yields the required representation, and terminates under reasonable assumptions. We illustrate the method and the procedure by the parallelization of the scanfunction (parallel prefix). The inductive claim is provable automatically. Keywords: P...
Notes on the Classification of Parallel Implementations of Linearly Recursive Programs
"... We propose a classification of the best parallel implementations of different kinds of functional linearly recursive programs and present examples for different classes. Keywords: functional programming, linear recursion, parallelization, skeleton 1 Introduction Functional programming offers a ver ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We propose a classification of the best parallel implementations of different kinds of functional linearly recursive programs and present examples for different classes. Keywords: functional programming, linear recursion, parallelization, skeleton 1 Introduction Functional programming offers a very highlevel way of specifying executable problem solutions. For example, the paradigm of linear recursion can be expressed very concisely as a functional "skeleton" [Col89] which we call the source skeleton. However, looking at a specific linear recursion at this level of abstraction, it is far from clear how it can be implemented efficiently on a given processor network. In this paper, we propose a method of selecting an appropriate parallel implementation. We proceed as follows. We transform the source specification such that it matches a different skeleton, the derived skeleton, which exposes the possible parallelism more clearly. In general, the programmer will have to propose the tran...
Functional Pearl  Derivation of a Carry Lookahead Addition Circuit
, 2001
"... Using Haskell as a digital circuit description language, we transform a ripple carry adder that requires O(n) time to add two nbit words into an efficient carry lookahead adder that requires O(log n) time. The gain in speed relies on the use of parallel scan to calculate the propagation of carry bi ..."
Abstract
 Add to MetaCart
Using Haskell as a digital circuit description language, we transform a ripple carry adder that requires O(n) time to add two nbit words into an efficient carry lookahead adder that requires O(log n) time. The gain in speed relies on the use of parallel scan to calculate the propagation of carry bits efficiently. The main difficulty is that this scan cannot be parallelised directly since it is applied to a nonassociative function. Several additional techniques are needed to circumvent the problem, including partial evaluation and symbolic function representation. The derivation given here provides a formal correctness proof, yet it also makes the solution more intuitive by bringing out explicitly each of the ideas underlying the carry lookahead adder.