It is a basic technology that allows programmers to write parallel programs for a wide range of distributed and parallel high performance computing systems, from plug-in PC products, through shared memory server clusters, up to the very high end massively parallel processing systems. The basic issue in cluster and distributed memory parallel computing is communication. Each parallel program is composed of a number of processes running on different processors which, by sharing the work load, can complete a complex calculation more quickly than one processor is able.
Message passing is the technique used for communication between processes in parallel programs.
Message passing has been used on a large number of high performance parallel systems, and although there have been many variations of message passing the basic concept is well understood. In the last decade, significant applications have been cast in the message passing paradigm. MPI provides a portable interface for parallel software which allows applications to be moved readily from one parallel system to another. MPI is widely available, with both free public domain implementations and supported vendor supplied implementations. EPCC has been very active in the definition of MPI, building on the long history of message passing development at the Centre.