eugene@AMES-AURORA.ARPA (Eugene miya) (06/20/86)
The following are some ideas I have been thinking about with the help of one co-worker. I plan to post this to several groups where I regard parallelism discussions are significant such as parsym, ailist, and net.arch. The ideas are still in formation. From the Rock of Ages Home for Retired Hackers: --eugene miya NASA Ames Research Center eugene@ames-aurora.ARPA "You trust the `reply' command with all those different mailers out there?" {hplabs,hao,dual,ihnp4,decwrl,allegra,tektronix,menlo70}!ames!aurora!eugene draft: The Mythical MIPS (MegaFLOPS) (pardons to Fred Brooks) "Introduction" That's it! I'm tired of hearing about all this parallelism out there. Too many people are talking about parallelism without truly understanding what it is. There appear to be conceptual as well as syntactic and semantic problems. One problem is that the world is not always parallel. "Thinking" is not always parallel: dependency "chains" are created in logic for instance. Another problem is that we think much of the world is parallel, but some "levels" of parallelism are not interchangeable. It appears there are serially connected parallel processes with serial bottlenecks between processes (not necessary Petri nets). Looking at snapshots, <Blind men ("including" me) trying to describe the elephant> I see two communities who are not communicating: physical scientists see "spatial" parallelism: all those difference equations over a given space, they see meshes, but the computer science people (typically the AI and compiler people) see "syntactic" parallelism, they tend to see syntax trees like data flow graphs, for instance. [I do note that rectangular meshes turned on their corners do represent `trees.'] "The Concept" Parallelism is a geometric concept: lines not meeting and equidistant (well..). Parallelism is not a given. `Dependence' prevents `decomposition.' From Fred Brooks: If it takes a female 9 months to have offspring, then nine females can have one in one month. If a computation takes 9 units of time, then . . . Are the units interchangeable or should we make a distinction in unit type? Are we confusing work and effort? "Terminology" Consider the terminology parallelism, concurrency, multiprocessing, multitasking (this one is really loaded), nonsequential (non-von), etc. There is a lot of different terminology to describe parallelism. I don't think it's necessary to standardize the terminology, but perhaps we should? For instance: Would you place a "tightly-coupled problem" on a "loosely-coupled" multiprocessor? First obvious question is "what's a `tightly coupled problem?'" How do you measure the parallelism? Is it just the count of the number of parallel execution streams? A problem of parallelism is just the degree of decompositibility: even in uniprocessor computer systems, there is such a degree of asynchronous inefficiency, that CPUs wait, that work is really distributed all over the place. Let's change the terminology for a moment to try and better understand the issues. Rather than use parallel and multiprocess (or concurrent) Let's try "cooperative" and "coordinated" like we would take regions around a point, we might be able to study the neighborhood around the word `parallel.' Is there a difference between the two. Diane Smith asserts there is. I think there may be. Cooperative computing implies working together to achieve a single goal. Coordinated computing implies more that processes don't bump heads (separate goals) but work in a common environment (coordinate). There is the obvious third factor of communications. There may also be levels and different types of communications such as control interaction versus bulk transfer. Better adjectives might exist, perhaps changing words do better, but history effects will bias those of us working on this. "Classifications of parallelism" There are an obscene number of classifications: Flynn's system: SISD, SIMD, MIMD... Kuck's modification: execution streams distinct from instruction streams: SIME(MD), MIME(MD), etc. Handler's commentary that there were lots of commentaries and little work Prolog et al AND-parallelism and OR-parallelism Then there is temporal parallelism: pipelining: parallelism, but different Parallelism is all cars starting forward the moment the light turns green (without regard for any cars head). Pipelining is waiting for the car ahead of you to start rolling. I also see three conditions of parallelism: parallelism is not constant. It's like snow and it's many forms: powder, neve, firn, sastrugi, and the Eskimo words. I see Constant parallelism: spatial parallel is a good example, the number of parallel streams does not basically change thru time. Gauss-Seidel and other iterative solutions to systems of equations? AND-parallelism (can be coarse or fine grained (what ever grain means)). Converging parallelism: The number of parallel streams is reducing, perhaps approaching serial: data flow graphs of dot products, of the summation step of a matrix multiply, a Gauss-Jordan (elimination, or direct solution) is another example. Must be fine-grained. Diverging parallelism: (perhaps several types): many forks, OR-parallelism, fractal. Like diverge series, this type of parallelism has problems. (Can be fine or coarsed grained?) The real key is the quantitative characterization (at some level) of parallel-ism. Are we to only count streams? While it is largely a matter of communications/coupling, how do we evaluate the communications needs of an algorithm as opposed to an architecture? What are we going to do with 2-D flow charts where we need to express forking and branching on the same 2-D plane? Oh well! Still searching for an honest definition. "Socio/politico/economic commentary" Recent economically based events in parallel processing are amazing. The number of companies actively marketing hypercube arcitectures and Crayettes is stagering. Machine with Cray class power are not surprising, this is inevitable. Cray instruction set compatable machine offerings is what is surpising about this. There are so few Crays (100) out there, that the half dozen or more companies who say they are offering such guarantee failure. More surprising are the number of hypercube architectures. Admittedly, hypercubes offer very nice connectivity features, but only one person has a good perspective: Justin Rattner, Intel, who offered the machine as an experimental testbed not a Cray alternative. What with all this talk about parallelism, it is surprising there are not more companies marketing, designing, etc., mesh-type architectures ala ILLIAC IV style architectures. That spatial model of parallelism (SIMD) is probably the easier to build if not program. This latter point is worth some debate, but as noted many models of parallelism are spatially based. Only the MPP, the DAP, and it seems the Connection Machine to a somewhat lesser extent are based this way (albeit more connections). It would be argued by some that this is for more limited applications but again those are spatially based problems tned to dominate. Why no 68Ks or 32Ks in a mesh? Is it all marketing hype? How could the money be better directed (for research purposes since obviously some of this money is bound to go into failed experiments [necessitated by empirical work]), can we spread out the "cost" to develop new architectures. Ah yes, reinventing the ILLIAC again. "A few asides:" [From S. Diane Smith] When asked about the interconnection network in MPP compared to that of the STARAN, Ken Batcher replied, "We learned that you didn't need all that (the multistage cube/omega) for image processing, that a mesh was good enough." You could look at MPP as a second generation parallel processor, even if the processors are only 1 bit wide. They got rid of a number of "mistakes" that they learned about through STARAN. The "tightly coupled" .vs. "loosely coupled" debate went on 7-8 years ago before everyone got tired of it. It was sort of the analog of the RISC vs. CISC debates of today. The net result was sort of an agreement that there was a spectrum, not a dicotomy. There have been one or two papers on classification, none very satisfying. I'll see if I can't find them. The latest thing you see in parallel processing is the "real" numerical analysts who are actually putting the problems on machines. Until very recently, with a few exceptions from the ILLIAC days, most parallel numerical analysis has been theoretical. Diane. . .