Results 1 -
6 of
6
Clean: a Programming Environment Based on Term Graph Rewriting
- Proc. of Joint COMPUGRAPH/SEMAGRAPH Workshop on Graph Rewriting and Computation (SEGRAGRA’95
, 1995
"... The main features of the lazy functional language Concurrent Clean and of its semantics based on Term Graph Rewriting are presented. 1 History The pure, lazy functional language Concurrent Clean (version 1.0) is a major upgrade of the previous release (0.84b) of Clean ([3,10,11]). Clean was origina ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
The main features of the lazy functional language Concurrent Clean and of its semantics based on Term Graph Rewriting are presented. 1 History The pure, lazy functional language Concurrent Clean (version 1.0) is a major upgrade of the previous release (0.84b) of Clean ([3,10,11]). Clean was originally designed as an experimental intermediate language and deliberately kept syntactically as poor as possible to be able to focus on the essential language and implementation issues. This strategy enabled us to study new concepts (such as term graph rewriting [1], lazy copying [4], abstract reduction [8], uniqueness typing [2]) without too much implementation effort. The ideas were tested in the Clean compiler which could be used on small machines and produced state-of-the-art code [13]. The consequence was that people started to use Clean to construct large applications even though Clean was actually not intended as a programming language. So, it became necessary to turn the experimental in...
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...
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 The PABC Machine on Transputers
, 1991
"... In this paper an efficient implementation of the PABC machine on transputers is presented. The PABC machine is an abstract machine that is used to implement Concurrent Clean, an experimental lazy functional language. For a single transputer this means an `unbounded' graph store has to be implemented ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
In this paper an efficient implementation of the PABC machine on transputers is presented. The PABC machine is an abstract machine that is used to implement Concurrent Clean, an experimental lazy functional language. For a single transputer this means an `unbounded' graph store has to be implemented and a set of reducers, each having a couple of stacks. In a network of transputers each reducer should be able to send graphs to other transputers, start new reducers on these remote graphs and to get reduced graphs back. At the moment the PABC machine runs on a single transputer only. Efficient and reliable implementation on a network of transputers has started. Introduction Concurrent Clean is an experimental functional language suited for evaluation on parallel machine architectures (Plasmeijer & van Eekelen (1989)) It is based on Parallel Functional Graph Rewriting Systems (PFGRS's) such that the notion of sharing of computation and the notion of processes are explicitly present in th...
The Class Transputer Router
, 1993
"... This paper presents an adaptive routeing algorithm that avoids deadlocks and starvation. It is a general store-and-forward packet router that has been developed to be used as part of a distributed runtime system for Concurrent Clean, an experimental, lazy, higher-order parallel functional programmin ..."
Abstract
- Add to MetaCart
This paper presents an adaptive routeing algorithm that avoids deadlocks and starvation. It is a general store-and-forward packet router that has been developed to be used as part of a distributed runtime system for Concurrent Clean, an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. The routeing algorithm is based on the one used by the communication processor of the Decentralised Object Oriented Machine (DOOM) architecture, which uses a class climbing algorithm to avoid deadlocks. It has been altered in such a way that it can be used for machines that do not have dedicated routeing processors. We focus on issues related to an efficient implementation of this router for the Inmos T800 transputer called the Class Transputer Router (CTR). The changes made to the original algorithm will be presented and their correctness with respect to avoidance of deadlock and starvation will be shown. Performance figures clearly indicate that th...
Communication Issues Regarding Parallel . . .
- PROCEEDINGS OF THE FOURTH INTERNATIONAL WORKSHOP ON THE PARALLEL IMPLEMENTATION OF FUNCTIONAL LANGUAGES
, 1992
"... Efficient communication is the basis of an implementation of a parallel language on a distributed machine architecture. This article handles about the communication mechanism that is needed to support parallel graph rewriting in Concurrent Clean. The danger of deadlock is imminent at several levels ..."
Abstract
- Add to MetaCart
Efficient communication is the basis of an implementation of a parallel language on a distributed machine architecture. This article handles about the communication mechanism that is needed to support parallel graph rewriting in Concurrent Clean. The danger of deadlock is imminent at several levels of such a system. Communication problems and their solutions are closely related to memory management issues, garbage collection in particular. In fact the communication mechanism presented here is a global memory management system. It is part of a distributed runtime system that has been moulded to fit parallel graph rewriting as implemented in Concurrent Clean.

