Evaluating functional programs on the FLAGSHIP machine
Proc. of a conference on Functional programming languages and computer architecture
GRIP—A high-performance architecture for parallel graph reduction
Proc. of a conference on Functional programming languages and computer architecture
Real-time concurrent collection on stock multiprocessors
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Buckwheat: graph reduction on a shared-memory multiprocessor
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Compiling pattern matching by term decomposition
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Small domains spell fast strictness analysis
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parallel graph reduction with the (v , G)-machine
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
An abstract machine for parallel graph reduction
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
An introduction to functional programming
An introduction to functional programming
GAML: a parallel implementation of Lazy ML
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Implementing functional languages
Implementing functional languages
Fast parallel implementation of lazy languages—the EQUALS experience
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A concurrent copying garbage collector for languages that distinguish (im)mutable data
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Static analysis for optimizing reference counting
Information Processing Letters
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Some Techniques for Recursion Removal from Recursive Functions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs
IEEE Transactions on Parallel and Distributed Systems
Implementation of Lazy Pattern Matching Algorithms
ESOP '88 Proceedings of the 2nd European Symposium on Programming
Unboxed Values as First Class Citizens in a Non-Strict Functional Language
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
ICALP '92 Proceedings of the 19th International Colloquium on Automata, Languages and Programming
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
ALICE a multi-processor reduction machine for the parallel evaluation CF applicative languages
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Multiprocessor execution of functional programs
Multiprocessor execution of functional programs
Practical program analysis using general purpose logic programming systems—a case study
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Coordinating functional processes with Haskell#
Proceedings of the 2002 ACM symposium on Applied computing
Handbook of automated reasoning
Evaluating inlining techniques
Computer Languages
Hi-index | 0.00 |
This paper describes EQUALS, a fast parallel implementation of a lazy functional language on a commercially available shared-memory parallel machine, the Sequent Symmetry. In contrast to previous implementations, we propagate normal form demand at compile time as well as run time, and detect parallelism automatically using strictness analysis. The EQUALS implementation indicates the effectiveness of NF-demand propagation in identifying significant parallelism and in achieving good sequential as well as parallel performance. Another important difference between EQUALS and previous implementations is the use of reference counting for memory management, instead of mark-and-sweep or copying garbage collection. Implementation results show that reference counting leads to very good scalability and low memory requirements, and offers sequential performance comparable to generational garbage collectors. We compare the performance of EQUALS with that of other parallel implementations (the 〈v, G〉-machine and GAML) as well as with the performance of SML/NJ, a sequential implementation of a strict language.