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