Commit graph

1 commit

Author SHA1 Message Date
Eremey Valetov
2bfd27007f feat(smp): add MPI-distributed island model
Add MPI_IslandModel: a distributed island model where each MPI rank
runs one island with asynchronous migration via MPI send/receive.

Key features:
- Single-message MPI protocol: MPI_Isend (data) + MPI_Get_count/
  MPI_Recv on receive side. Avoids the two-message (size + data)
  pattern that can deadlock under oversubscription.
- MPI_Iprobe for non-blocking message detection (upstream's
  communicator lacks iprobe())
- Non-blocking sends with PendingSend tracking and MPI_Test cleanup
- Receive-before-send ordering to prevent message accumulation
- Post-loop drain with safe shutdown (cancel pending sends)
- Configurable poll interval (default 1s)
- Thread-safe update method for asynchronous migration
- Debug-level migration logging via eo::log

Extended Island with:
- IslandType enum (HOMOGENEOUS/HETEROGENEOUS) for conditional
  immigrant re-evaluation
- IslandModelKind enum (None/Shared/MPI) replacing string dispatch
- algoEOT template parameter for algorithm/individual type mismatch
- finalize() call after population integration

Extended islandModelWrapper with MPI_IslandModel overloads,
initial_values parameter, and algoEOT support.
2026-02-28 19:55:21 -05:00