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