MULTILISP: a language for concurrent symbolic computation

  title={MULTILISP: a language for concurrent symbolic computation},
  author={Robert H. Halstead},
  journal={ACM Trans. Program. Lang. Syst.},
  • R. Halstead
  • Published 1 October 1985
  • Computer Science
  • ACM Trans. Program. Lang. Syst.
Multilisp is a version of the Lisp dialect Scheme extended with constructs for parallel execution. Like Scheme, Multilisp is oriented toward symbolic computation. Unlike some parallel programming languages, Multilisp incorporates constructs for causing side effects and for explicitly introducing parallelism. The potential complexity of dealing with side effects in a parallel context is mitigated by the nature of the parallelism constructs and by support for abstract data types: a recommended… 

Figures from this paper

An assessment of multilisp: Lessons from experience

  • R. Halstead
  • Computer Science
    International Journal of Parallel Programming
  • 2005
The basic outlines of Multilisp are now fairly clear and have stood the test of being used for several applications, but further language design work is especially needed in the areas of speculative computing and exception handling.

Automatic unrestricted independent and-parallelism in declarative multiparadigm languages

Different alternatives for performing automatic goal-level, unrestricted independent and-parallelization of logic programs through source-to-source transformations are studied in this work, which use as targets new parallel execution primitives which are simpler and more flexible than the well-known fork-join parallel operator.

ParT: An Asynchronous Parallel Abstraction for Speculative Pipeline Computations

A typed calculus capturing the essence of ParT is presented, abstracting away from details of the Encore and Clojure programming languages, which includes tasks, futures, and combinators similar to those of Orc but implemented in a non-blocking fashion.

Compiler-Controlled Multithreading for Lenient Parallel Languages

Compiler-controlled multithreading is examined through compilation of a lenient parallel language, Id90, for a threaded abstract machine, TAM, and a new parallel intermediate form, dual-graphs, with distinct control and data arcs is employed.

The Cilk system for parallel multithreaded computing

A "dag-consistent" memory model which is a lock-free consistency model well suited to the needs of a multithreaded program, and a software shared memory system for Cilk are defined.

A Language of Suggestions for Program Parallelization

When evaluated using four full-size benchmark applications, suggestible parallelization obtains up to a 6 times speedup over 10 processors for sequential legacy applications up to 35 thousand lines in size.

Exploiting fine-grain parallelism in concurrent constraint languages

  • J. Montelius
  • Computer Science
    Uppsala theses in computing science
  • 1997
This dissertation presents the design, implementation, and evaluation of a system that exploits fine-grain implicit parallelism in concurrent constraint programming language. The system is able to

Parallel incremental compilation

A set of techniques that enable incremental compilation to exploit fine-grained concurrency in a shared-memory multiprocessor and achieve asymptotic improvement over sequential algorithms are described.

The design, implementation and evaluation of Jade: a portable, implicitly parallel programming language

The design, implementation and evaluation of Jade, a new programming language for parallel computations that exploit task-level concurrency, are presented and results that characterize how well they perform are presented.

Compiling for parallel multithreaded computation on symmetric multiprocessors

This thesis describes techniques to compile and schedule Id-S, a dialect of the implicitly parallel language Id, for execution on SMP's, and describes code-generation and scheduling techniques which produce efficient parallel executables which are run on a Sun Ultra HPC 5000 SMP.



Implementation of multilisp: Lisp on a multiprocessor

Multilisp is an extension of Lisp (more specifically, of the Lisp dialect Scheme) with additional operators and additional semantics to deal with parallel execution with novel techniques used for task scheduling and garbage collection.

SISAL: streams and iteration in a single-assignment language. Language reference manual, Version 1. 1

It is reasonable for SISAL to evolve into a general purpose language appropriate for writing programs to run on future general parallel computers, and it has been the intention that the language not have idiosyncrasies reflecting the particular nature of the application area or target machine.

SISAL: streams and iteration in a single assignment language. Language reference manual, Version 1. 2. Revision 1

The primary goal is to produce a compiler hosted on the VAX and targeted to both theVAX and the other machines, to promote wide use of the language in parallel processing research centers, and to allow study of architectural trade-offs inherent in machine design.

An asynchronous programming language and computing machine

A high-level dataflow language Id, and its companion base language Id supports programming with streams, programmer-defined data types, and facilities for nondeterministic programming and seems very promising for implementation on a machine composed of large numbers of LSI processors.

Simulated Performance of a Reduction-Based Multiprocessor

Functional languages are seen to be ideal tor the programming of multi-processors when distinction between them and uniproces-sors is undesirable, and should not have to set up processes explicitly to achieve concurrent processinig, nor be conicerned with synchronizing such processes.

Rabbit: A Compiler for Scheme

A compiler for the lexically-scoped dialect of LISP known as SCHEME, which handles only a small basis set which reflects the semantics of lambda-calculus, and serves to produce code as good as that produced by more traditional compilers.

On the Number of Operations Simultaneously Executable in Fortran-Like Programs and Their Resulting Speedup

Algorithms are presented for handling arithmetic assignment statements, DO loops and IF statement trees, and evidence is given that for very simple Fortran programs 16 processors could be effectively used operating simultaneously in a parallel or pipeline fashion.

The incremental garbage collection of processes

  • H. BakerC. Hewitt
  • Computer Science
    Artificial Intelligence and Programming Languages
  • 1977
An approach to a problem that arises in this context: futures which were thought to be relevant when they were created become irrelevant through being ignored in the body of the expression where they were bound is discussed.

Aspects of Applicative Programming for Parallel Processing

Early results of a project on compiling stylized recursion into stackless iterative code are reviewed as they apply to a target environment with multiprocessing. Parallelism is possible in executing

LISP 1.5 Programmer's Manual

The LISP language is designed primarily for symbolic data processing used for symbolic calculations in differential and integral calculus, electrical circuit theory, mathematical logic, game playing,