Logic for problem-solving
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Communications of the ACM
Functional Programming
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
Reduction languages for reduction machines
ISCA '75 Proceedings of the 2nd annual symposium on Computer architecture
The Theory and Practice of Transforming Call-by-need into Call-by-value
Proceedings of the Fourth 'Colloque International sur la Programmation' on International Symposium on Programming
The Apiary network architecture for knowledgeable systems
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Processor-memory interconnections for multiprocessors
ISCA '79 Proceedings of the 6th annual symposium on Computer architecture
A relational language for parallel programming
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
A STRUCTURE MEMORY FOR DATA FLOW COMPUTERS
A STRUCTURE MEMORY FOR DATA FLOW COMPUTERS
PARLOG: parallel programming in logic
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Survey on special purpose computer architectures for AI
ACM SIGART Bulletin
Combinatory code and a parallel packet-based computational model
ACM SIGPLAN Notices
Flagship: a parallel architecture for declarative programming
ISCA '88 Proceedings of the 15th Annual International Symposium on Computer architecture
IEEE Transactions on Software Engineering - Special Issue on Artificial Intelligence in Software Applications
On hot-spot contention in interconnection networks
SIGMETRICS '88 Proceedings of the 1988 ACM SIGMETRICS conference on Measurement and modeling of computer systems
The representation of multistage interconnection networks in queuing models of parallel systems
Journal of the ACM (JACM)
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
Fast parallel implementation of lazy languages—the EQUALS experience
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Linear logic and permutation stacks—the Forth shall be first
ACM SIGARCH Computer Architecture News - Special issue: panel sessions of the 1991 workshop on multithreaded computers
Holistic design of a programming system
ACM SIGSOFT Software Engineering Notes
Monsoon: an explicit token-store architecture
25 years of the international symposia on Computer architecture (selected papers)
Performance modelling of parallel computer architectures
SIGMETRICS '86/PERFORMANCE '86 Proceedings of the 1986 ACM SIGMETRICS joint international conference on Computer performance modelling, measurement and evaluation
The four-stroke reduction engine
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A protocol for distributed reference counting
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Monsoon: an explicit token-store architecture
ISCA '90 Proceedings of the 17th annual international symposium on Computer Architecture
An abstract parallel graph reduction machine
ISCA '85 Proceedings of the 12th annual international symposium on Computer architecture
Data-Driven and Demand-Driven Computer Architecture
ACM Computing Surveys (CSUR)
Efficient load balancing for wide-area divide-and-conquer applications
PPoPP '01 Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming
A Parallel Asynchronous Garbage Collection Algorithm for Distributed Systems
IEEE Transactions on Knowledge and Data Engineering
Satin: Efficient Parallel Divide-and-Conquer in Java
Euro-Par '00 Proceedings from the 6th International Euro-Par Conference on Parallel Processing
A performance evaluation of a Lisp-based data-driven machine (EM-3)
ISCA '83 Proceedings of the 10th annual international symposium on Computer architecture
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
Data sharing in an FFP machine
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
An applicative compiler for a parallel machine
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
A competitive algorithm for managing sharing in the distributed execution of functional programs
Journal of Functional Programming
EQUALS – a fast parallel implementation of a lazy language
Journal of Functional Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Cooperating Reduction Machines
IEEE Transactions on Computers
Hi-index | 0.00 |
The functional or applicative languages have long been regarded as suitable vehicles for overcoming many of the problems involved in the production and maintenance of correct and reliable software. However, their inherent inefficiences when run on conventional von Neumann style machines have prevented their widespread acceptance. With the declining cost of hardware and the increasing feasibility of multi-processor architectures this position is changing, for, in contrast to conventional programs where it is difficult to detect those parts that may be executed, concurrently, applicative programs are ideally suited to parallel evaluation. In this paper we present a scheme for the parallel evaluation of a wide variety of applicative languages and provide an overview of the architecture of a machine on which it may be implemented. First we describe the scheme, which may be characterized as performing graph reduction, at the abstract level and discuss mechanisms that allow several modes of parallel evaluation to be achieved efficiently. We also show how a variety of languages are supported. We then suggest an implementation of the scheme that has the property of being highly modular; larger and faster machines being built by joining together smaller ones. Performance estimates illustrate that a small machine (of the size that we envisage would form the basic building block of large systems) would provide an efficient desk-top personal applicative computer, while the larger versions promise very high levels of performance Indeed. The machine is designed to be ultimately constructed from a small number of types of VLSI component. Finally we compare our approach with the other proposes schemes for the parallel evaluation of applicative languages and discuss planned future developments.