MPI – enabling the world’s fastest computers
Posted April 16, 2007
The high-performance computers that enable today’s cutting-edge science would be radically different – and less efficient – if some dedicated experts hadn’t sequestered themselves in an isolated Dallas hotel in the early 1990s.
The computer researchers, manufacturers and users created the Message Passing Interface (MPI) standard. Today, MPI is used on virtually every parallel processing computer in the world, including BlueGene/L, the world’s fastest. And it’s still spreading: About 1,000 times a month, users download MPICH, an MPI implementation created at Argonne National Laboratory, a Department of Energy facility near Chicago. And MPICH is just one of several MPI implementations users can choose from.
MPI is dominant because it works with many computer languages and designs. With MPI, “If you have an idea for a machine, you can build it and know what you’re going to run on it,” says Bill Gropp, an Argonne senior computer scientist who helped develop MPI and MPICH. MPI is vital to today’s high-performance computers, Gropp says. Without it, “We would have had large, scalable machines, but … I’m not sure we would have gotten as far. I’m not sure we would have something like BlueGene.”
MPI is key to parallel processing, the technology that makes today’s high-performance computers possible. Parallel processing breaks up a task so multiple processors can work on it simultaneously. MPI exchanges data between those hundreds and thousands of processors and processes.
MPI fueled parallel processing
It became clear in the early days of parallel processing – the 1980s and early 1990s – that a message-passing standard was needed. In those nascent parallel computing days, every company had its own message-passing software, and a scientist had to design applications to specifically work with it. That meant the application would run only on that kind of computer, “so if someone came out with a better machine you were trapped,” Gropp says.
Programmers could use a portability layer that “translated” code for the vendor’s system. But matching the layer’s semantics with the vendor’s software was tricky and time-consuming.

