Results 1 -
3 of
3
GUM: a portable parallel implementation of Haskell
, 1996
"... GUM is a portable, parallel implementation of the Haskell functional language. Despite sustained research interest in parallel functional programming, GUM is one of the first such systems to be made publicly available. GUM is message-based, and portability is facilitated by using the PVM communicati ..."
Abstract
-
Cited by 68 (26 self)
- Add to MetaCart
GUM is a portable, parallel implementation of the Haskell functional language. Despite sustained research interest in parallel functional programming, GUM is one of the first such systems to be made publicly available. GUM is message-based, and portability is facilitated by using the PVM communications harness that is available on many multi-processors. As a result, GUM is available for both shared-memory (Sun SPARCserver multiprocessors) and distributed-memory (networks of workstations) architectures. The high message-latency of distributed machines is ameliorated by sending messages asynchronously, and by sending large packets of related data in each message. Initial performance figures demonstrate absolute speedups relative to the best sequential compiler technology. To improve the performance of a parallel Haskell program GUM provides tools for monitoring and visualising the behaviour of threads and of processors during execution.
Constructing Skeletons in Clean The Bare Bones
- High Performance Functional Computing
, 1995
"... Skeletons are well-suited to structure parallel programming. They allow the easy use of some well-known parallel programming paradigms to construct portable, efficient programs. Much research has been focused on the use of skeletons in functional programming languages, because they can be expressed ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Skeletons are well-suited to structure parallel programming. They allow the easy use of some well-known parallel programming paradigms to construct portable, efficient programs. Much research has been focused on the use of skeletons in functional programming languages, because they can be expressed elegantly as higher order functions. On the other hand, little attention has been paid to an elementary weakness of skeletons: how to implement them. In this paper we will show that functional languages with some low level constructs for parallelism can be used to efficiently implement a range of high level skeletons. We will construct skeletons for data parallelism, for parallel I/O, and for stream processing. Our experiments demonstrate that no performance penalty needs to be paid, compared to more restrictive solutions. 1. Introduction The development of efficient parallel programs is an important non-trivial problem that programmers and compiler writers have to deal with. The use of fun...
Uniqueness and Lazy Graph Copying. Copyright for the Unique
- In proceedings of the 6th International Workshop on the Implementation of Functional Languages, University of East Anglia
, 1994
"... The uniqueness type system and lazy graph copying are important techniques to efficiently implement functional languages. Unfortunately combination of both in one system may lead to conflicts. Until recently, parallel Concurrent Clean programs could not take advantage of the uniqueness type system, ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
The uniqueness type system and lazy graph copying are important techniques to efficiently implement functional languages. Unfortunately combination of both in one system may lead to conflicts. Until recently, parallel Concurrent Clean programs could not take advantage of the uniqueness type system, because the lazy graph copying method that Concurrent Clean employed was able to invalidate derived uniqueness information. This paper will address this problem and present a solution that is based on a new copying method with different semantics, called lazy normal form copying. 1. Introduction The uniqueness type system and lazy graph copying are important techniques to efficiently implement functional languages [1, 2, 3]. On the one hand, uniqueness information allows the compiler to employ destructive updates in certain cases. This forms the basis of efficient array implementations and the Concurrent Clean IO system. On the other hand graph copying is needed for implementations on paral...

