, all of the top 10 and most of the
TOP500 supercomputers are based on a MIMD architecture. Although these are not part of Flynn's work, some further divide the MIMD category into the two categories below, and even further subdivisions are sometimes considered.
Single program, multiple data streams (SPMD) Multiple autonomous processors simultaneously executing the same program (but at independent points, rather than in the
lockstep that SIMD imposes) on different data. Also termed
single process, multiple data The SPMD model and the term was proposed by Frederica Darema of the RP3 team.
Multiple programs, multiple data streams (MPMD) Multiple autonomous processors simultaneously operating at least two independent programs. In HPC contexts, such systems often pick one node to be the "host" ("the explicit host/node programming model") or "manager" (the "Manager/Worker" strategy), which runs one program that farms out data to all the other nodes which all run a second program. Those other nodes then return their results directly to the manager. An example of this would be the Sony PlayStation 3 game console, with its
SPU/PPU processor. MPMD is common in non-HPC contexts. For example, the
make build system can build multiple dependencies in parallel, using target-dependent programs in addition to the make executable itself. MPMD also often takes the form of pipelines. A simple Unix shell command like
ls |
grep "A" |
more launches three processes running separate programs in parallel with the output of one used as the input to the next. These are both distinct from the explicit parallel programming used in HPC in that the individual programs are generic building blocks rather than implementing part of a specific parallel algorithm. In the pipelining approach, the amount of available parallelism does not increase with the size of the data set. ==See also==