[comp.parallel] Steven Zenith's Dec 13 Linda posting

dhg@CS.YALE.EDU (David Gelernter) (12/20/90)

Steven Zenith writes


  For example, in the case of the Linda optimizer, write a Linda program
  or Linda-ize an existing C code. You cannot predict the performance of
  the program, and you will not know the performance until the task is
  complete - any imperical analysis you perform at any point in the
  development will likely be invalidated by subsequent changes to the
  program since the optimizer will almost certainly change stategy as
  you add new tuple types. Ok, so you learn everything there is to know
  about the optimizer - now you have subverted portability. Most
  "successful" Linda programs are either written within a few feet of
  the implementor of the optimizer or are so parallel and have such
  granularity that the Linda overhead disappears into insignificance and
  in such cases pretty much any model would do...

Two claims are made here: (a) Linda is unpredictable... the inference
being, I assume, that it isn't suitable for realtime applications. 
(b) You have to understand the optimizer and subvert portability in
order to get decent performance from Linda programs.

Regarding (a), realtime is a difficult area.  The only substantial
experiment I'm aware of involving realtime use of Linda is Mike
Factor's work on an intensive care unit monitor.  He developed a
performance model (for use by a heuristic scheduler) that predicted
the runtime of his Linda application within a couple of percent.
Factor's work has been described at length in the literature.  We've
never made any blanket claims for Linda in realtime situations; on the
basis of Factor's work, Linda is highly promising in this area, but
that's our only claim for now.

Statement (b) is false.  The specific claim about 'most "succecessful'
Linda applications' is also false.  "How to Write Parallel Programs"
by Carriero and Gelernter (MIT Press 1990) presents 7 sets of
performance results for a range of programs on a range of parallel
machines (both shared and distributed memory).  (Look up "performance"
in the index.)  These applications were developed with no regard for
the optimizer whatever.  In fact, the book describes exactly how they
WERE developed: on the basis of a simple and Linda-independent
performance model.  We've reported similar performance results in the
literature going back to 1986.

(Zenith's statements ARE true to the vacuous extent that any system
with an optimizer permits programmers who understand the optimizer to
allow for its behavior in coding.  But the specific claim that you
*must* do this to get good performance using Linda is false.)

If you don't believe our tests, try your own.  Linda is available on
all sorts of platforms.

  The process model in Linda is vague to say the least, with the
  semantics of process creation varying according to implementation.

False.  The semantics of process creation are described in the "How
to" book, in exactly the same way they've been described in the
literature for years.  Zenith is correct in stating that there are
Linda implementations (not ours) that don't follow our version of the
semantics.  But that's not to say that the definition doesn't exist,
is it?

D Gelernter
Yale Univ Dept CS