Affiliate disclosure
Book titles on this page link to Amazon. As an Amazon Associate, DataField.Dev earns from qualifying purchases — at no additional cost to you.
Further Reading: MPI
MPI is a large standard with a small core, so the best way to learn it is to master the handful of calls in this chapter deeply and then reach for a reference when you need more. The sources below are grouped by purpose. They are tagged Tier 1 (works we are confident exist and recommend) and Tier 2 (real and worth seeking; confirm the current edition or URL yourself). Learn the send/recv argument order and the halo-exchange pattern until they are reflexive — everything else in distributed computing builds on them.
The standard and its canonical book
- The MPI Standard (
mpi-forum.org). The document itself — surprisingly readable for the routines you actually use, and the authority on every argument and its meaning. Read the sections on point-to-point and collective communication; keep the rest as reference. Tier 1 (primary source). - Gropp, Lusk, and Skjellum, Using MPI: Portable Parallel Programming with the Message-Passing Interface (MIT Press). The definitive tutorial, by people who helped write MPI. It teaches exactly this chapter's progression — model, point-to-point, collectives, decomposition — in depth and with care. The one book to own if you write MPI. Tier 1.
- Gropp, Hoefler, Thakur, and Lusk, Using Advanced MPI (MIT Press). The sequel: non-blocking and one-sided communication, MPI-IO, derived datatypes, and communicators. Read it when the basics are solid and you need to hide latency or split communicators. Tier 1.
MPI from Fortran, in context
- Milan Curcic, Modern Fortran: Building Efficient Parallel Applications (Manning). Carries parallel Fortran — coarrays first, and the concepts that transfer directly to MPI — into running examples. The natural companion for this whole part; pairs the coarray and MPI views of the same decomposition. Tier 1.
- Metcalf, Reid, and Cohen, Modern Fortran Explained (Oxford University Press). The definitive language
reference; for MPI it clarifies the
use mpiversususe mpi_f08interfaces and the Fortran binding's conventions (theierrargument, typed handles). Reach for it on the interface question. Tier 1. - Peter Pacheco, An Introduction to Parallel Programming (Morgan Kaufmann). A gentle, example-driven tour of MPI, OpenMP, and CUDA side by side; excellent for seeing how the same problem looks in all three models — the comparison this part is built around. Tier 1.
The implementations (and their docs)
- Open MPI (
open-mpi.org) and MPICH (mpich.org). The two dominant open-source MPI libraries; their documentation covers installing, thempif90/mpirunwrappers, and process placement. What you actually link against on a workstation or cluster. Tier 1. fortran-lang.org— the parallel-programming tutorials and the Discourse forum. Current, community-maintained introductions to MPI (and coarrays and OpenMP) from Fortran, and the best place to ask a halo-exchange or interface question. Tier 1.
Going parallel with I/O and hybrids
- The parallel HDF5 and parallel NetCDF user guides. The practical route to MPI-IO: rather than call raw MPI-IO, you write a shared file in parallel through a self-describing library (foreshadowed in Chapter 25). Read these when output becomes your serial bottleneck. Tier 2 (confirm the current guide).
- Rolf Rabenseifner's hybrid MPI+OpenMP tutorial materials. Widely used course notes on combining one MPI rank per node with OpenMP threads within — the scalable pattern the capstone uses. Search for the current version. Tier 2 (verify the source).
Everything in this chapter is also collected, call by call, in Appendix G, the parallel-programming
reference — the send/recv/collective signatures, the datatypes, MPI_PROC_NULL, and the use mpi versus
mpi_f08 comparison, in one place.
Suggested order
- Work through the point-to-point and collective chapters of Gropp, Lusk & Skjellum, Using MPI — it mirrors §§34.1–34.3 and cements the argument order.
- Skim the MPI Standard's collective-communication section once, so you know what else exists beyond the five collectives you learned here.
- Keep Curcic open as you build the distributed solver; it bridges the coarray and MPI views.
- When the solver outgrows a node and output slows it down, read Using Advanced MPI on non-blocking communication and MPI-IO, and the parallel HDF5 guide.