[comp.sys.transputer] Strand88 Announcement/21 Sept

John_Florentin@artificial-intelligence.co.uk (10/16/89)

To Greg Burns, Berkeley

>I have some questions about Strand88 that may help more folks on the
mailing list understand more about the system.  I've attended a talk
about it but I don't remember it very well (was there something about
logic programming in there?) and I don't have any literature on Strand88.

See the book 'Strand: New concepts in parallel programming' by Ian
Foster and Stephen Taylor, Prentice-Hall.

>* What is the paradigm of communication between parallel streams?
  (message passing, procedural locks, tuple space...)

Processes communicate via logical variables which can only be written to
once and which can hold data structures whose elements can be instantiated
incrementally by different processes.  This means that not only can actual  
 

data elements be passed across, but so can variables to hold reply data.

>* I take it that there is nothing automatic going on here in terms of
  finding parallelism.  Is that true?

Execution of programs in Strand is totally parallel.  There is no sequencing  
 

from which parallelism has to be extracted.

>* How does one "use" processors?  Do we place things, as with Occam?
  Do we ask for a certain number of processors in a particular arrangement
  and the placement is automatic?  Do we start from a single stream and
  and new ones are created by (I presume) Strand88 statements, do they
  get automatically placed on other processors?  Does the answer to
  this question differ for functional and data parallelism?

In the current Strand88 implementation processes have to be allocated
to processors by the programmer.  Since small processes are being created
and disappearing all the time the spread of processes is highly dynamic.  
 
 
Allocation operations can be relative according to a virtual parallel machine,
e.g. next on a ring, or up on a mesh.  Strand88 maps various virtual 
machines onto the available physical machine.  Data and functional
parallelism program the same way.
>* How does implementation of Strand88 differ between multiprocessors and
  multicomputers (since both are supported)?  Would Strand88 be
  applicable to a SIMD box like the Connection Machine?

Programming is the same.  For multicomputing more rugged communication
is needed.  Strand has not yet been tried on SIMD machines.  SIMD 
implementations are for future investigation.

>* Would it be possible to post a very small demonstration program using
  Strand88 for a data decompostion problem (like the 1D wave equation,
  for example)?

Look at the above Foster/Taylor book.

>* A lot of people would say that Linda possesses the same inherent
  advantages as Strand88 (though I don't understand the scalability,
  performance-wise, of Linda (nor of Strand88 - yet)).  Are we talking
  apples and oranges or would you cite advantages over Linda?


Strand inter-process communication is strictly disciplined by the assign
once only rule and by having synchronisation linked to communication,
allowing a programmer to ignore synchronisation - this is an important part
of Strand.  Strand garbage collects messages.  Because of the Strand
rules, programs can be read declaratively, ignoring message passing
mechanics.  Linda message passing needs programmer imposed discipline, 
it is not garbage collected and not automatically tied to process
invocation synchronisation.  A collection of processes communicating
via Linda cannot be read declaratively.

John Florentin
Strand Software Technologies
Greycaine Road
Watford WD2 4JP, England