This book proposes a new high level approach to programming that addresses the pragmatic issue of how a computation is distributed across a machine.
Recent progress in VLSI provides massive parallelism but general purpose parallel computers remain elusive due to limited communications performance. This book proposes a new high level approach to programming that addresses the pragmatic issue of how a computation is distributed across a machine. The book's approach is based on functional programming and has significant advantages over existing comparable approaches, extending the domain of functional programming to include computer architectures in which communication costs are not negligible. It looks at how high-level functional programming languages can be used to specify, reason about, and implement parallel programs for a variety of multiprocessor systems, but in particular a class of loosely coupled multiprocessors whose operation can be described by a process network In these networks the nodes correspond to processes and the arcs to communications channels. A simple language called Caliban is described in which the functional program text is augmented with a declarative description of how processes are partitioned and mapped onto a network of processing elements. The notation gains expressive power by allowing these annotations to be generated by predicates defined in the functional language. Thus, common communications structures have simple and concise definitions as "network forming operators." The main objective of these annotations is to provide an abstract description of the process network specified by the program so that an efficient mapping of processes to processors can be carried out by the compiler.
Functional Programming for Loosely Coupled Multiprocessors is included in the series Research Monographs in Parallel and Distributed Computing, copublished with Pitman Publishing.