Results 1 - 10
of
10
Exploiting Parallelism In Functional Languages: A "Paradigm-Oriented" Approach
- BOOK CHAPTER
, 1995
"... Deriving parallelism automatically from functional programs is simple in theory but very few practical implementations have been realised. Programs may contain too little or too much parallelism causing a degradation in performance. Such parallelism could be more efficiently controlled if parallel a ..."
Abstract
-
Cited by 22 (6 self)
- Add to MetaCart
Deriving parallelism automatically from functional programs is simple in theory but very few practical implementations have been realised. Programs may contain too little or too much parallelism causing a degradation in performance. Such parallelism could be more efficiently controlled if parallel algorithmic structures (or skeletons) are used in the design of algorithms. A structure captures the behaviour of a parallel programming paradigm and acts as a template in the design of an algorithm. This paper presents some important parallel programming paradigms and defines a structure for each of these paradigms. The iterative transformation paradigm (or geometric parallelism) is discussed in detail and a framework under which programs can be developed and transformed into efficient and portable implementations is presented.
In recent years, there has been a st...
A Cost Analysis for a Higher-order Parallel Programming Model
, 1996
"... Programming parallel computers remains a difficult task. An ideal programming environment should enable the user to concentrate on the problem solving activity at a convenient level of abstraction, while managing the intricate low-level details without sacrificing performance. This thesis investiga ..."
Abstract
-
Cited by 17 (1 self)
- Add to MetaCart
Programming parallel computers remains a difficult task. An ideal programming environment should enable the user to concentrate on the problem solving activity at a convenient level of abstraction, while managing the intricate low-level details without sacrificing performance. This thesis investigates a model of parallel programming based on the BirdMeertens Formalism (BMF). This is a set of higher-order functions, many of which are implicitly parallel. Programs are expressed in terms of functions borrowed from BMF. A parallel implementation is defined for each of these functions for a particular topology, and the associated execution costs are derived. The topologies which have been considered include the hypercube, 2-D torus, tree and the linear array. An analyser estimates the costs associated with different implementations of a given program and selects a cost-effective one for a given topology. All the analysis is performed at compile-time which has the advantage of reducing run-...
Data Parallel Haskell: Mixing old and new glue
, 1993
"... John Hughes [10] argues that the ability to decompose a problem into parts, depends upon the ability to `glue' those parts together. A functional programming language such as Haskell [9] provides the user with two powerful kinds of glue: higher order functions and lazy evaluation. Although many data ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
John Hughes [10] argues that the ability to decompose a problem into parts, depends upon the ability to `glue' those parts together. A functional programming language such as Haskell [9] provides the user with two powerful kinds of glue: higher order functions and lazy evaluation. Although many data parallel extensions to functional languages exist--- Connection Machine Lisp [16], Paralation Lisp [15], Parallel EuLisp [13], and Tuple [21], they all lack the special glue of a lazy language. This paper describes two data parallel extensions to the lazy functional language Haskell: pods and pod comprehensions. These enable parallel algorithms to be expressed by decomposing a problem into smaller sequential parts, which are then glued together in parallel. We contrast an implementation of a text searching algorithm and an LL(1) parser [7], and show that the parallelism within both can be expressed in terms of the same higher order parallel map and scan functions. In the first example, we...
Semantics of pH: A parallel dialect of Haskell
- IN PROCEEDINGS FROM THE HASKELL WORKSHOP (AT FPCA 95
, 1995
"... The semantics of kernel pH are defined in the form of a parallel, normalizing interpreter. A description of I-structure and M-structure operators is also given within the same framework. Semantics of barriers in pH are presented by translation into the kernel language without barriers. The framework ..."
Abstract
-
Cited by 10 (2 self)
- Add to MetaCart
The semantics of kernel pH are defined in the form of a parallel, normalizing interpreter. A description of I-structure and M-structure operators is also given within the same framework. Semantics of barriers in pH are presented by translation into the kernel language without barriers. The framework presented is also suitable for multithreaded compilation of pH.
Parallel Functional Computation on STAR:DUST
- University of Southampton
, 1992
"... STAR:DUST (`St. Andrews RISC: Dataflow Using Sequential Threads') is a processor design optimized for efficient execution of sequential threads while supporting plug-and-play construction of large multiprocessor systems. Besides satisfying the major RISC criteria (small instruction set, simple instr ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
STAR:DUST (`St. Andrews RISC: Dataflow Using Sequential Threads') is a processor design optimized for efficient execution of sequential threads while supporting plug-and-play construction of large multiprocessor systems. Besides satisfying the major RISC criteria (small instruction set, simple instruction format, load/store principle, pipelining), STAR:DUST employs a dataflow approach to communication and parallelism. We will describe the architecture and propose a runtime model for parallel functional computation based on STAR:DUST's dataflow primitives. 1 Introduction Functional programming techniques are widely acknowledged as a valuable tool for specifying implicitly parallel algorithms. Numerous attempts have been made to provide implementations of functional languages for parallel machines, and a number of machine architectures have been specifically designed as parallel graph reducers (e.g., [Cri87]). Yet, to date, successful implementations are rare, when judged in terms of `w...
Parallel Implementations of Functional Languages
- Fourth International Workshop on the Parallel Implementation of Functional Languages, RWTH
, 1992
"... With interest in parallel implementations of functional languages as a whole, we first discuss some issues related to parallel execution of functional programs, and then review some key proposals considering three differents approaches, namely Parallel lisp Systems, Dataflow Systems and Reduction Sy ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
With interest in parallel implementations of functional languages as a whole, we first discuss some issues related to parallel execution of functional programs, and then review some key proposals considering three differents approaches, namely Parallel lisp Systems, Dataflow Systems and Reduction Systems. 1. Introduction Functional programming languages have received a special attention since the famous Backus' Turing Award lecture [Bac78], when Backus stated the advantages of functional programming languages over traditional imperative ones. During the last decade, a number of researchers have been attempted to put these ideas into practice by proposing different implementations of functional languages. Substantial progress has been obtained for the sequential implementations of functional languages [Aug84, Joh84, Kranz86], however the parallel implementations still do not present big advantages as it was expected theoretically. 2. Some issues related to parallelism Every pure functio...
Reducing Graph Copying Costs. Time to Wrap it Up
- Proc. PASCO '94 --- First Intl. Symposium on Parallel Symbolic Computation, Hagenberg
, 1994
"... : Graph copying is used in parallel implementations of functional languages on architectures with distributed memory. This paper will explore the costs of graph copying in detail. It will make clear that these costs can form a bottleneck for a class of serious parallel programs. This not only compri ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
: Graph copying is used in parallel implementations of functional languages on architectures with distributed memory. This paper will explore the costs of graph copying in detail. It will make clear that these costs can form a bottleneck for a class of serious parallel programs. This not only comprises practical divide and conquer style programs - of which parallel matrix multiplication is an example -, but also programs that use pipelines, such as the sieve of Erathostenes. One can observe that copying costs vary widely for different data structures. We will show how arrays can be used to reduce copying costs considerably. This resulted in significant speed-ups for the examples above. Keywords: parallel functional programming, distributed memory, graph copying, graph conversions, delays 1. Introduction Graph rewriting systems have been studied as a computational model for functional languages and their implementation. The lazy functional language Concurrent Clean, for instance, is bas...
Implementing High-Level Parallelism on Computational GRIDs
, 2006
"... This copy of the thesis has been supplied on the condition that anyone who consults it is understood to recognise that the copyright rests with its author and that no quotation from the thesis and no information derived from it may be published without the prior written consent of the author or the ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This copy of the thesis has been supplied on the condition that anyone who consults it is understood to recognise that the copyright rests with its author and that no quotation from the thesis and no information derived from it may be published without the prior written consent of the author or the university (as may be appropriate). I hereby declare that the work presented in this the-sis was carried out by myself at Heriot-Watt University, Edinburgh, except where due acknowledgement is made, and has not been submitted for any other degree.
Simulation of Multicache Parallel Graph Reduction
- In Workshop on Parallel Implementations of Functional Languages
, 1992
"... Parallel graph reduction is a simple model for parallel program execution which uses the shared-memory abstraction for all communication and synchronisation between processors. Shared memory is used under a strict access regime with single assignment and blocking reads. In this paper we present the ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Parallel graph reduction is a simple model for parallel program execution which uses the shared-memory abstraction for all communication and synchronisation between processors. Shared memory is used under a strict access regime with single assignment and blocking reads. In this paper we present the design of an efficient and accurate multiprocessor simulation scheme suitable to work with a parallel graph reducer and use the simulator to study the performance and pattern of access of a suite of benchmark programs. Threads are never migrated to another processor by the parallel graph reducer, and the effect of this scheduling policy is investigated. 1 Motivation and Overview Successful implementations of parallel graph reduction have been built on stock multiprocessors (e.g. Goldberg's Buckwheat system (Goldberg, 1988) and Augustsson and Johnsson's ! ; G ? machine (Augustsson and Johnsson, 1989)), but the scalability of such systems is limited by contention for the shared snooping bus. ...
A Survey of Sequential and Parallel Implementation Techniques for Functional Programming Languages
, 1995
"... This paper surveys sequential and parallel implementation techniques for functional programming languages, as well as optimizations that can improve their performance. Sequential implementations have evolved from simple interpreters to sophisticated super-combinator-based compilers, while most paral ..."
Abstract
- Add to MetaCart
This paper surveys sequential and parallel implementation techniques for functional programming languages, as well as optimizations that can improve their performance. Sequential implementations have evolved from simple interpreters to sophisticated super-combinator-based compilers, while most parallel implementations have explored a broad range of techniques. We analyze the purpose and function of each implementation technique and discuss the current state-of-the-art in functional language implementation.

