To foster more widespread use and portability, a group of academics and industrial partners came together to develop what they hoped would be a “standard” for message-passing system.
They called MPI(Message Passing-Interface). MPI provides library routines for message-passing and associated operations.
A fundamental aspect of MPI is that it defines a standard but not the implementation, just as programming languages are defined but not how the compilers for the languages are implemented.
An important factor in developing MPI is the desire to make message-passing portable and easy to use.
Some changes were also made to correct technical deficiencies in earlier message-passing systems such as PVM.
Several free implementations of the MPI standard exist, including:
There also numerous vendor implementations, from HP, IBM, and others.
Implementation for windows clusters exist.
A list of MPI implementations and can be found Here.
A key factor in choosing an implementation is continuing support, because a few early implementation are now not supported at all.
Parallel Programming – Techniques and Applications 2th Edition, Barry Wilkinson