MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Pomset interpretations of parallel function programs
Proc. of a conference on Functional programming languages and computer architecture
A calculus for assignments in higher-order languages
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Qlisp: experience and new directions
PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
Graphinators and the duality of SIMD and MIMD
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Parallel implementations of functional programming languages
The Computer Journal - Special issue on Lazy functional programming
Mul-T: a high-performance parallel Lisp
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
A future-based parallel language for a general-purpose highly-parallel computer
Selected papers of the second workshop on Languages and compilers for parallel computing
COOL: a language for parallel programming
Selected papers of the second workshop on Languages and compilers for parallel computing
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
New ideas in parallel Lisp: language design, implementations, and programming tools
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
A parallel Lisp language PaiLisp and its kernel specification
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
Parallel hashing and integer sorting
Journal of Algorithms
An efficient and general implementation of futures on large scale shared-memory multiprocessors
An efficient and general implementation of futures on large scale shared-memory multiprocessors
Space-efficient scheduling of multithreaded computations
STOC '93 Proceedings of the twenty-fifth annual ACM symposium on Theory of computing
Fast and efficient simulations among CRCW PRAMs
Journal of Parallel and Distributed Computing
The semantics of future and its use in program optimization
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cilk: an efficient multithreaded runtime system
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Provably efficient scheduling for languages with fine-grained parallelism
Proceedings of the seventh annual ACM symposium on Parallel algorithms and architectures
Parallelism in sequential functional languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
The semantics of Scheme with future
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A provable time and space efficient implementation of NESL
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A provably time-efficient parallel implementation of full speculation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ninth annual ACM symposium on Parallel algorithms and architectures
Deleting Irrelevant Tasks in an Expression-Oriented Multiprocessor System
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming with Proofs: A Second Order Type Theory
ESOP '88 Proceedings of the 2nd European Symposium on Programming
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
A note on reducing parallel model simulations to integer sorting
IPPS '95 Proceedings of the 9th International Symposium on Parallel Processing
A Conflict Between Call-by-Need Computation and Parallelism
CTRS '94 Proceedings of the 4th International Workshop on Conditional and Typed Rewriting Systems
Garbage collection and task deletion in distributed applicative processing systems
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
The incremental garbage collection of processes
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
NESL: A Nested Data-Parallel Language
NESL: A Nested Data-Parallel Language
Parallel Combinator Reduction: Some Performance Bounds
Parallel Combinator Reduction: Some Performance Bounds
Fluent parallel computation
An operational semantics for parallel lazy evaluation
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
On bounding time and space for multiprocessor garbage collection
ACM SIGPLAN Notices - Best of PLDI 1979-1999
From sequential programs to multi-tier applications by program transformation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Space profiling for parallel functional programs
Journal of Functional Programming
Cache and I/O efficent functional algorithms
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
Speculative evaluation, including leniency and futures, is often used to produce high degrees of parallelism. Understanding the performance characteristics of such evaluation, however, requires having a detailed understanding of the implementation. For example, the particular implementaion technique used to suspend and reactivate threads can have an asymptotic effect on performance. With the goal of giving the users some understanding of performance without requiring them to understand the implementation, we present a provable implementation bound for a language based on speculative evaluation. The idea is (1) to supply the users with a semantics for a language that defines abstract costs for measuring or analyzing the performance of computations, (2) to supply the users with a mapping of these costs onto runtimes on various machine models, and (3) to describe an implementation strategy of the language and prove that it meets these mappings. For this purpose we consider a simple language based on speculative evaluation. For every computation, the semantics of the language returns a directed acyclic graph (DAG) in which each node represents a unit of computation, and each edge represents a dependence. We then describe an implementation strategy of the language and show that any computation with w work (the number of nodes in the DAG) and d depth (the length of the longest path in the DAG) will run on a p-processor PRAM in O(w/p + d log p) time. The bounds are work efficient (within a constant factor of linear speedup) when there is sufficient parallelism, w/d ≥ p log p. These are the first time bounds we know of for languages with speculative evaluation. The main challenge is in parallelizing the necessary queuing operations on suspended threads.