Rookie HPC

About MPI

What is it?

In case you already heard about mpicc or similar, let us start on a sane basis by avoiding a common confusion; MPI is NOT:

MPI, which stands for Message-Passing Interface, is a standard that defines (as its name suggests) an interface for message-passing libraries. Concretely, it is a 850-page document that you can find on the website of the MPI forum; the organisation in charge of developing the MPI standard.

Why did we need MPI?

Back in the 1980s, if you were to develop an application that uses message-passing, typically for distributed-memory architectures, you had to design your message-passing solution from scratch, including a message-passing interface. The result was a plethora of implementations relying on different message-passing interfaces: Caltech Cosmic Cube, Intel Hypercube, Intel Paragon interfaces to name a few. Consequences:

So, companies and universities decided to team up and make the MPI Forum; an organisation that would be in charge of defining a standard message-passing interface. With such a standard:

In 1992, the first version of the standard was released, almost 30 years later, it is still here and heavily used in more or less all HPC codes.