Performance and evaluation of LISP systems
Performance and evaluation of LISP systems
MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Common Lisp object system: an overview
European conference on object-oriented programming on ECOOP '87
Preliminary results with the initial implementation of Qlisp
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
Parallel execution of LISP programs
Parallel execution of LISP programs
Speculative computation in multilisp
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Low-cost process creation and dynamic partitioning in Qlisp
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
The early history of Smalltalk
HOPL-II The second ACM SIGPLAN conference on History 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
Lisp in small pieces
Loop parallelization algorithms: from parallelism extraction to code generation
Parallel Computing - Special issues on languages and compilers for parallel computers
Timing trials, or the trials of timing: experiments with scripting and user-interface languages
Software—Practice & Experience
Automatic parallelization of divide and conquer algorithms
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
A Tree-Based Alternative to Java Byte-Codes
International Journal of Parallel Programming
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
The data locality of work stealing
Proceedings of the twelfth annual ACM symposium on Parallel algorithms and architectures
Optimizing compilers for modern architectures: a dependence-based approach
Optimizing compilers for modern architectures: a dependence-based approach
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
Qlisp: Parallel Processing in Lisp
IEEE Software
Artificial Intelligence: A Modern Approach
Artificial Intelligence: A Modern Approach
Toward efficient and robust software speculative parallelization on multiprocessors
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Queue-based multi-processing LISP
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
A brief history of just-in-time
ACM Computing Surveys (CSUR)
Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode
An Interpreter for Extended Lambda Calculus
An Interpreter for Extended Lambda Calculus
Lambda: The Ultimate Imperative
Lambda: The Ultimate Imperative
LAMBDA: The Ultimate Declarative
LAMBDA: The Ultimate Declarative
Debunking the ``Expensive Procedure Call'''' Myth or, Procedure Call Implementations Considered Harmful or, LAMDBA: The Ultimate GOTO
The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two)
The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two)
Rabbit: A Compiler for Scheme
Parallel Execlltion of OPSS in QLISP
Parallel Execlltion of OPSS in QLISP
Sourcebook of parallel computing
Sourcebook of parallel computing
Language support for lightweight transactions
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Mitosis compiler: an infrastructure for speculative threading based on pre-computation slices
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Design Space Exploration of a Software Speculative Parallelization Scheme
IEEE Transactions on Parallel and Distributed Systems
Dynamic circular work-stealing deque
Proceedings of the seventeenth annual ACM symposium on Parallelism in algorithms and architectures
History of programming languages I
Computer Architecture, Fourth Edition: A Quantitative Approach
Computer Architecture, Fourth Edition: A Quantitative Approach
Deadlock-free scheduling of X10 computations with bounded resources
Proceedings of the nineteenth annual ACM symposium on Parallel algorithms and architectures
Design of the Java HotSpot™ client compiler for Java 6
ACM Transactions on Architecture and Code Optimization (TACO)
A practical automatic polyhedral parallelizer and locality optimizer
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Essentials of Programming Languages, 3rd Edition
Essentials of Programming Languages, 3rd Edition
Self-Sustaining Systems
A pattern of language evolution
Celebrating the 50th Anniversary of Lisp
Trace-based just-in-time type specialization for dynamic languages
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Compilers: Principles, Techniques, & Tools with Gradiance
Compilers: Principles, Techniques, & Tools with Gradiance
Organizing functional code for parallel execution or, foldl and foldr considered slightly harmful
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Context-oriented software transactional memory in common lisp
DLS '09 Proceedings of the 5th symposium on Dynamic languages
A compilation and optimization model for aspect-oriented programs
CC'03 Proceedings of the 12th international conference on Compiler construction
Revised [6] Report on the Algorithmic Language Scheme
Revised [6] Report on the Algorithmic Language Scheme
Advances in Engineering Software
Constructing customized interpreters from reusable evaluators using GAME
SC'12 Proceedings of the 11th international conference on Software Composition
Hi-index | 0.00 |
While most approaches to automatic parallelization focus on compilation approaches for parallelizing loop iterations, we advocate the need for new virtual machines that can parallelize the execution of recursive programs. In this paper, we show that recursive programs can be effectively parallelized when arguments to procedures are evaluated concurrently and branches of conditional statements are speculatively executed in parallel. We introduce the continuator concept, a runtime structure that tracks and manages the control dependences between such concurrently spawned tasks, ensuring adherence to the sequential semantics of the parallelized program. As a proof of concept, we discuss the details of a parallel interpreter for Scheme (implemented in Common Lisp) based on these ideas, and show the results from executing the Clinger benchmark suite for Scheme.