Single Program Multiple Date
A common style of writing data parallel programs for MIMD computers is SPMD (single program, multiple data): all the processors implement the same program, but each operates on a dissimilar portion of problem data. It is simplest to program than true MIMD, but more flexible than SIMD. Though most parallel computers today are MIMD architecturally, they are generally programmed in SPMD style. In this style, though there is no central controller, the worker nodes carry on doing basically the same thing at essentially the similar time. Instead of central copies of control variables saved on the control processor of a SIMD computer, control variables (iteration counts and so on) are generally stored in a replicated fashion across MIMD nodes. Every node has its own local copy of these global control variables, but each node updates them in an identical way. There are no centrally issued parallel instructions, but communications generally happen in the well-defined collective states. These data replaces occur in a prefixed manner that implicitly or explicitly synchronize the peer nodes. The condition is something like an orchestra without a conductor. There is no central control, but every individual plays from the similar script. The group as a whole stays in lockstep. This loosely synchronous style has few similarities to the Bulk Synchronous Parallel (BSP) model of computing introduced by the theorist Les Valiant in the early 1990s. The restricted pattern of the collective synchronization is simpler to deal with than the difficult synchronisation problems of a general concurrent programming.
A natural assumption was that it should be possible and not too hard to capture the SPMD model for programming MIMD computers in data-parallel languages, along lines same to the successful SIMD languages. Many research prototype languages attempted to do this, with some success. By the 90s the value of portable, standardized programming languages was universally recognized, and there seemed to be a number of consensuses about what a standard language for SPMD programming ought to look like. Then the High Performance Fortran (HPF) standard was introduced.