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 mpi versus use mpi_f08 interfaces and the Fortran binding's conventions (the ierr argument, 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, the mpif90/mpirun wrappers, 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

  1. 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.
  2. Skim the MPI Standard's collective-communication section once, so you know what else exists beyond the five collectives you learned here.
  3. Keep Curcic open as you build the distributed solver; it bridges the coarray and MPI views.
  4. 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.