How liyihai-official/mpi-algorithms works
MPI-Algorithms combines a custom Bruck all-to-all implementation and variable-count collective examples with distributed 2D/3D Conway simulations. The main simulation flow initializes distributed grids, exchanges halos, evolves cells, and writes binary snapshots. The README documents these capabilities, while excerpts do not show every topology or example implementation detail; the graph omits uncertain internal wiring.
Main entry points: conway2D.cc 2D simulation · conway3D.cc 3D simulation · multiarray.hpp N-D array · bruck.hpp Bruck all-to-all
Components 17
Game simulations
- 2D simulation
conway2D.cc - 3D simulation
conway3D.cc
MPI communication
- Cartesian grid
include/mpi/topology_Cartesian.hpp - Cartesian topology
include/mpi/topology_Cartesian.hpp - Bruck benchmark
bruck_Alltoall.cc - Bruck all-to-all
include/mpi/bruck.hpp - Alltoallv examples
src/mpi/alltoall_examples.cc - Alltoallv declarations
include/mpi/alltoalll_examples.hpp - Halo exchange
include/mpi/topology_Cartesian_exhange.inl
Array utilities
- N-D array
include/multiarray.hpp - MPI type mapping
include/mpi/type.hpp - Array randomizer
include/randin.hpp
Output and display
- Cartesian binary I/O
src/mpi/io_Cartesian.cc - Ordered MPI printing
include/mpi/print_in_order.hpp
Other components
- MPI user
- MPI runtime
- Output files
Connections 30
- MPI user → 2D simulation: runs
- MPI user → 3D simulation: runs
- MPI user → Bruck benchmark: runs
- 2D simulation → Cartesian grid: constructs
- 3D simulation → Cartesian grid: constructs
- Cartesian grid → Cartesian topology: creates
- Cartesian grid → N-D array: stores
- Cartesian topology → MPI runtime: creates communicator
- 2D simulation → Array randomizer: initializes cells
- 3D simulation → Array randomizer: initializes cells
- 2D simulation → Halo exchange: exchanges halos
- 3D simulation → Halo exchange: exchanges halos
- Halo exchange → MPI runtime: exchanges data
- 2D simulation → N-D array: evolves grid
- 3D simulation → N-D array: evolves grid
- 2D simulation → Cartesian binary I/O: writes snapshots
- 3D simulation → Cartesian binary I/O: writes snapshots
- Cartesian binary I/O → MPI runtime: writes collectively
- Cartesian binary I/O → Output files: writes binary data
- Bruck benchmark → Bruck all-to-all: benchmarks
- Bruck benchmark → MPI runtime: compares collective
- Bruck all-to-all → MPI runtime: sends and receives
- Bruck all-to-all → MPI type mapping: maps element type
- Bruck all-to-all → N-D array: reads and fills
- Alltoallv declarations → Alltoallv examples: declares examples
- Alltoallv examples → MPI runtime: exchanges variable blocks
- Alltoallv examples → MPI type mapping: maps element type
- Alltoallv examples → Ordered MPI printing: prints layouts
- Ordered MPI printing → MPI runtime: gathers text
- Ordered MPI printing → N-D array: reads arrays