This chapter has presented a very brief introduction to parallel programming, describing the concepts and language features associated with developing parallel programs. The chapter also described the factors that influence parallel program performance, including the basic models of parallel programming and the main advantages and disadvantages of parallel programming.
A parallel program executing on parallel (and/or distributed) hardware specifies a system of communicating processes. Parallel programming is used to solve problems of a scale that would not be realistic or cost effective to solve using sequential programming. The hardware platform, programming language and the order and dependencies between instructions and/or data impose a limit on the performance that each sequential instruction stream within the parallel program can achieve. The processes execute non-deterministically, probabilistically generating different interactions for each parallel program execution.