MPI Centralized
auto* s = gempba::mp::create_scheduler(gempba::mp::scheduler_topology::CENTRALIZED);
Implements scheduler. An actively routing multiprocessing scheduler. Uses OpenMPI as the IPC transport.
The center (rank 0) is an active participant: workers send excess tasks to the center, and the center dispatches them to available workers. Every task handoff traverses the center twice — once inbound, once outbound. At small process counts this is negligible; at scale the center becomes a bottleneck.
For the full protocol walkthrough and comparison with the semi-centralized topology, see Scheduler Topologies.
Center responsibilities
- Maintain a bounded task queue
- Maintain the process status table (
RUNNING,AVAILABLE) - Dispatch queued tasks to available workers
- Broadcast the global best value
The center's task queue has a configurable capacity limit. When it is full, workers are signaled to stop sending tasks. When it falls below threshold, workers resume.
Worker responsibilities
- Explore the search tree via the thread pool
- Send excess tasks to the center when it is not full
- Accept tasks dispatched by the center
- Update the local best value when the center broadcasts a new global best
When to use
Benchmarking and comparison only. The centralized topology exists to reproduce the experimental results from the original paper. For production use, prefer MPI Semi-Centralized.