Advanced Topic 36 of 51 Concurrency & Parallelism
MPI
Message-passing interface for cluster programming.
How it works
The Message Passing Interface is the standard API for distributed-memory parallel programming, in which processes with separate memory, ranks, communicate by explicit messages. It provides point-to-point operations such as send and receive in blocking and non-blocking forms, collective operations such as broadcast, scatter, gather, reduce and all-reduce, communicators to group processes, derived datatypes and one-sided communication. Implementations such as OpenMPI and MPICH run across clusters with high-speed interconnects.
Where it is used
Supercomputer simulations in weather, physics and chemistry, large-scale linear algebra and distributed training frameworks' communication libraries use MPI.
Common pitfall
Deadlock occurs when sends and receives are mismatched, such as all processes sending first with blocking calls. Communication costs, latency and bandwidth, often dominate, so overlap communication with computation using non-blocking calls. Load imbalance leaves ranks waiting at collectives. Debugging distributed runs is hard. Minimize message counts, use collectives where possible and design data decomposition carefully.
Where it fits in the course
MPI is topic 36 of 51 in Concurrency & Parallelism, rated Advanced. It follows OpenMP. The next topic is CUDA Programming.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Concurrency & Parallelism quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Concurrency & Parallelism quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is MPI?
Where do people use MPI?
What is the most common mistake with MPI?
What should I learn before this topic?
How can I practice it?
Is MPI hard to learn?
How long does it take to learn MPI?
Which topics are related to MPI?
What should I study after MPI?
Related topics
- OpenMP (Concurrency & Parallelism)
- CUDA Programming (Concurrency & Parallelism)
- Parallel Prefix Sum (Concurrency & Parallelism)
- GPU Memory Hierarchy (Concurrency & Parallelism)