How pmodels/mpich works
MPICH implements MPI for parallel applications. The main workflow is an application calling MPI through language bindings, establishing communication contexts and datatypes, then exchanging or transforming data through collective and point-to-point operations over a configured device/network module. Hydra separately launches ranks across nodes. The README also documents GPU support, threading, and alternate CH4 netmods; the tree includes RMA and ROMIO integration. Some runtime wiring is inferred from the documented product architecture because most implementation files were not sampled.
Main entry points: mpi MPI runtime API · coll Collective operations · hydra Hydra process manager · binding Language bindings
Components 20
MPI interfaces
- Language bindings
src/binding - MPI runtime API
src/mpi
MPI runtime
- Communicators
src/mpi/comm/comm_impl.c - Context IDs
src/mpi/comm/contextid.c - Datatypes
src/mpi/datatype/datatype_impl.c - Type representation
src/mpi/datatype/typerep/src
Communication
- Collective operations
src/mpi/coll - Algorithm selection
src/mpi/coll/src/csel.c - Point-to-point
src/include/mpir_pt2pt.h - CH4 device
src/mpid/ch4 - OFI netmod
src/mpid/ch4/netmod/ofi
Process execution
- Hydra process manager
src/pm/hydra - Node allocation
src/pm/hydra/lib/tools/bootstrap/src/bsci_query_node_list.c - Launched ranks
src/pm/hydra
Runtime integrations
- GPU support
src/mpi/misc/gpu_query.c - RMA operations
src/mpid/ch3/src/ch3u_rma_pkthandler.c - MPI-IO integration
src/glue/romio/glue_romio.c
Other components
- MPI application
- Peer ranks
- Cluster scheduler
Connections 21
- MPI application → Language bindings: calls MPI
- Language bindings → MPI runtime API: dispatches calls
- MPI runtime API → Communicators: uses communicators
- Communicators → Context IDs: allocates contexts
- MPI runtime API → Datatypes: uses types
- Datatypes → Type representation: encodes data
- MPI runtime API → Collective operations: invokes collectives
- Collective operations → Algorithm selection: selects algorithms
- Collective operations → Point-to-point: exchanges messages
- Point-to-point → CH4 device: dispatches traffic
- CH4 device → OFI netmod: uses netmod
- OFI netmod → Peer ranks: transfers data
- Collective operations → Type representation: packs and unpacks
- MPI runtime API → GPU support: queries support
- MPI runtime API → RMA operations: issues RMA
- MPI runtime API → MPI-IO integration: uses MPI-IO
- MPI application → Hydra process manager: requests launch
- Hydra process manager → Node allocation: queries nodes
- Node allocation → Cluster scheduler: reads allocation
- Hydra process manager → Launched ranks: starts ranks
- Launched ranks → MPI runtime API: runs MPI calls