Optimization begins with selection of application and system models.
In parallel and distributed computing, modeling applications as sets of
computation and communication operations is commonplace. The theoretical
underpinnings of much work lies in the process algebra of communicating
sequential processes (CSPs [Hoa78]):
serially executing computations
whose interaction is restricted to message passing. The model
can formally encode algorithms and is extensively used for
proving properties such as (lack of) deadlock. We are less concerned
with formal proofs, but like others (e.g., Newsqueak [Pik89],
Limbo [DPW97] and Ease [Zen93]) are attracted
by the ability to
express multiprocessing
concisely and naturally.
CSP is a
coordination language [GC92,Arb96]: a
grammar for compositing applications from independent
operations - operations that
are themselves expressed more easily in
computation languages, such as C, Java or Lisp.
In the
context of another coordination language,
Linda [Gel85], these languages are
described as ``an extension that can be added to nearly
any [computation] language to enable process creation, communication, and
synchronization [KM89]''.
Clear separation of communication and computation makes it easier to
distribute an application across heterogeneous hardware.
Limbo is specifically designed
with distributed multiprocessors and wide area computer systems in
mind.
With
the arrival of large scale on-chip parallelism, many of the same
issues crop up [Moo08] and solutions are
proposed [Pat07].
The
relationship between coordination and concurrency has been discussed
in relation to Linda
and other parallel languages [Arb96,Bal91].
Subsections
willem
2010-02-03