[comp.parallel] Linda

zenith@uunet.UU.NET (Steven Zenith) (12/10/88)

Further to requests for me to post a summary of the Linda model
in comp.os.research (this is also submitted to comp.parallel).
The following is extracted from a note on the subject.

The Simplicity of Linda
Steven Ericsson Zenith
7th December 1988

Architecture Group
INMOS Limited, Bristol, UK.
Copyright INMOS Limited, 1988.


Linda is a parallel processing paradigm based on the concept of
*generative communication, which unifies the concepts of
process creation and communication. Linda is elegant and easy to 
understand, so let's keep it simple.

Linda utilises a concept known as *tuple space*. Think of
tuple space as a kind of global associative memory. Tuple space
stores objects called *tuples*. A tuple consists of a
sequence of typed fields, for example

("foo", 6, 23.5)

is a tuple which is a sequence of values; a string "foo",
an integer value 6, and a floating point value 23.5. It is
distinct from the following tuples

("foo", 6, 23.5, 32.5)
(6, 23.5, "foo")
(4, 5)

These are passive tuples i.e. passive data objects. 

A tuple may also contain fields which are process types evaluated
subsequent to entering tuple space. These are known as active tuples.

It may be easier at this stage to simply think of tuple space as
a bag of objects. Linda provides four basic primitive operations
which act upon tuple space:

out(t)  to put tuple t into tuple space (i.e. to put an object into the bag).
in(t)   to get tuple t from tuple space (i.e. to pick an object from the bag).
rd(t)   to read tuple t in tuple space (i.e. to look at an object without 
        removing it from the bag).
eval(t) to evaluate tuple $t$ (i.e. put an object into the bag for evaluation).

out(t) and eval(t) place a tuple (t) into tuple space and then terminate. 

in(t) removes some tuple t from tuple space and then terminates. 
rd(t) reads the value of some tuple t and then terminates. 

This definition naturally implies that if there is no tuple which
initially matches t present in tuple space then the primitive
in or rd will not terminate until it acquires a tuple t subsequently 
added to tuple space. 

eval(t) acts like out(t), except that t is evaluated subsequent to 
its entry to tuple space and will typically transform into a passive 
data tuple, for example

eval (P, Q)

creates processes P and Q which are placed in tuple space and
are evaluated concurrently. Any results are left (as tuples) in
tuple space. Thus is born the term "generative communication".

Tuples have no physical or virtual *address* in tuple
space. A tuple is selected by in or rd by associative matching. 

The field of a tuple may contain an *actual* or *formal*, for example, 
if N is a variable of integer type

(6, ?N)

contains a formal N and will match with any of the
following tuples

(6, 7)
(6, 8)
(6, 1024)

The input in(6, ?N) will select a matching tuple from
tuple space, and perform the actual to formal assignment. If
several matching tuples exist in tuple space then an arbitrary
selection is made.

Similarly, the output out(6, ?N) will place a tuple in
tuple space, and may be selected by an input which has an actual
of integer type in the place of the formal, 
e.g. in(?I, 11) or in(6, 23).

More recently Linda has acquired two variant forms of in
and rd. These are the primitives inp and rdp, which are predicate 
functions which test for presence, for example

if inp(t) then tuplefound else tupleNOTfound

inp(t) attempts to remove some tuple t from
tuple space and then terminates. rd(t) attempts
to read the value of some tuple t and then terminates. In both
cases the predicate is true if the function succeeds in its
attempt and false otherwise.

The semantics of these two predicates seem sloppy, for example,
it's not clear how presence is tested. Is a full search of tuple
space guaranteed? There are temporal problems i.e. its result may
not be correct at termination, since (in the time taken to return
the results) several tuples of the required type may have entered
tuple space.

This test for presence (I believe) is a mistake. The test would
be more meaningful as a test for readiness as in the Occam model,
for example

alt
  in (t1)
    P
  in (t2)
    Q

Let's use some buzz words to describe the Linda paradigm. This is
a) fun and b) helps us to understand why Linda is liked so much.
So Linda features

* a easy to use concept
* automatically scalable algorithms
* portable applications programming (architecture independent)
* the same model on different parallel architectures
* a unified process and communications model
* an integral persistent storage concept
* Linda is easily added to existing sequential languages to
  create parallel variants of the original language (e.g. C-Linda,
  Lisp-Linda, Postscript Linda, Modula-Linda exist currently).

Any model of communication at a higher level than direct 
point-to-point communication will see degraded performance, even in
the case of simple through routing. Linda performance will
naturally be system dependent. A good choice of implementation
strategy can produce interesting results however. As an example,
the Modula-Linda implementation completed by Siemens on the
Parwell machine[2] showed a ten percent improvement on
local communication and twenty percent improvement on global
communication when compared with the native message passing
system (at low traffic).

The Linda model of communication is a higher level model than the
Occam model of message passing. In some respects the communication model 
is more like a
system facility than the direct simplicity of point-to-point
process communication. In a distributed environment the tuple
space passive data model alone can play a role equivalent to that
fulfilled by the filing system on conventional machines. Many
implementations use Linda simply in that role, ignoring the
implementation of eval. But this is to miss the point.
Linda is a new and complete parallel processing paradigm worthy
of attention.

[1] David Gelernter,
    Generative Communication in Linda, ACM Trans. Jan. 1985.

[2] Borrmann, Herdieckerhoff, Klien,
    Implementation of the Linda Concept on a Hierarchical
    Multiprocessor, Conpar88 Proceedings, 1988.

Copyright INMOS Limited. All rights reserved.

 *  Steven Ericsson Zenith     Snail mail: INMOS Limited, 1000 Aztec West,
 |    zenith@inmos.uucp                    Almondsbury, Bristol BS12 4SQ. UK.
      zenith@inmos.co.uk                   Voice: (UK)0454 616616x513
      ** All can know beauty as beauty only because there is ugliness ** 

busalacc@cs.umn.edu (Perry J. Busalacchi) (02/10/89)

We are currently in the process of implementing Linda on both
the NCUBE hypercube and the Butterfly GP1000. The NCUBE
implementation is currently being tested and benchmarked.
The Butterfly implementation is still under development. I
would be happy to moderate a Linda news group if no one else
would prefer to do it. I would also be happy to supply anyone
with information on our Linda implementations and our plans
for future research.

Perry Busalacchi
University of Minnesota
(busalacc@umn-cs.cs.umn.edu)
 

andrewn%SYMA.SUSSEX.AC.UK@CUNYVM.CUNY.EDU (Andrew D Nimmo) (04/10/89)

[ If anyone has a canned bibliography, please post it.  I'll keep a 
  version here and then we won't have to burden the net with bib. request.

	---- Steve
]


    I am searching for information and articles on Linda, covering
the concepts and applications (e.g. the Cogent XTM Transputer-based
computer, Linda C, Linda Postscript etc) available.  Any information,
book details etc. would be appreciated.

    Thanks - Andrew D. Nimmo

VLSI and Graphics Research Group
EAPS II
University of Sussex
Falmer
BRIGHTON
East Sussex
BN1 9QT
United Kingdom

andrewn@uk.ac sussex.syma     JANET

scott@cs.rochester.edu (Michael Scott) (05/13/89)

As followup to my recent posting about Linda, let me say that I consider
Gelernter and Carriero's work on Linda to be a significant contribution to
the state of the art.  I have some concerns about the language/model that
are long-standing and that I belive the Linda people understand.  My posting
was simply in response to Carriero's claim that efficiency concerns had
been proven "irrelevant".  I continue to assert that this is not the case.

I have a great deal of respect for the Linda group and its work.
I believe it is in everyone's interest to keep Linda in perspective and
to appreciate it without attempting to sell it as the answer to
everyone's problems.  I agree that the discussion in this newsgroup has
run its course and should die out for a while.
-- 
Michael L. Scott
University of Rochester    (716) 275-7745
scott@cs.rochester.edu     scott%rochester@CSNET-RELAY
{decvax, allegra, cmcl2}!rochester!scott

hall@uunet.UU.NET (Craig Hall) (08/22/90)

Hello all,

I have heard of a network programming interface called Linda.
Does anyone have or know of someone who has ported a PD version
of Linda to SunOS, maybe even to the 386i?  I would greatly
appreciate any clues.

Thanks in advance,
Craig Hall
System Administrator, Computer Graphics Lab
Eastern Washington University
Cheney, WA  99004

UUCP:   ...!uunet!isc-br!ewu!hall
Internet: hall@ewu%uunet.uu.net

surfer@dcs.qmw.ac.uk (Osborne) (04/21/91)

I am interested in the Linda concurrent programming model, and would like
to know of any ftp sites holding any reports on Linda.

Thanks in advance....

Michael Osborne

-- 
=========================== MODERATOR ==============================
Steve Stevenson                            {steve,fpst}@hubcap.clemson.edu
Department of Computer Science,            comp.parallel
Clemson University, Clemson, SC 29634-1906 (803)656-5880.mabell