Automatic detection of nondeterminacy in parallel programs

Many of today’s computers, for example the Cray X-MP, Gray 2, ETA”, Alliant FX/8, Sequent Symmetry, and Encore Multimax, are multiprocessors. Multiprocessing is a very appealing approach to parallelism since it can be used not only to accelerate the execution of a single program but also to increase throughput and reliability. Furthermore, the presence of independent control units makes possible the execution of parallel loops with branching, subroutine calls and random memory activity in a more effective way than is possible in single processor vector machines. However, writing and debugging a parallel program for a multiprocessor is, in general, more difficult, than writing sequential vector programs.