Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
MpiCommunicationStrategy.h
1#pragma once
2
3#include "antares-xpansion/benders/benders_core/ICommunicationStrategy.h"
4#include "common_mpi.h"
5
15{
16public:
17 explicit MpiCommunicationStrategy(mpi::communicator& world):
18 world_(world)
19 {
20 }
21
22 [[nodiscard]] int Rank() const override
23 {
24 return world_.rank();
25 }
26
27 [[nodiscard]] int WorldSize() const override
28 {
29 return world_.size();
30 }
31
32 void Barrier() const override
33 {
34 world_.barrier();
35 }
36
37 [[nodiscard]] bool ShouldParallelize() const override
38 {
39 return false;
40 }
41
42 void BroadcastBool(bool& value) const override
43 {
44 mpi::broadcast(world_, value, 0);
45 }
46
49 mpi::communicator& World()
50 {
51 return world_;
52 }
53
54 const mpi::communicator& World() const
55 {
56 return world_;
57 }
58
59private:
60 mpi::communicator& world_;
61};
Strategy interface for communication operations in Benders decomposition.
Definition ICommunicationStrategy.h:33
Communication strategy for MPI-based distributed execution.
Definition MpiCommunicationStrategy.h:15
bool ShouldParallelize() const override
Definition MpiCommunicationStrategy.h:37
void BroadcastBool(bool &value) const override
Definition MpiCommunicationStrategy.h:42
mpi::communicator & World()
Definition MpiCommunicationStrategy.h:49
int Rank() const override
Return the rank of this process (0 for sequential)
Definition MpiCommunicationStrategy.h:22
int WorldSize() const override
Return the total number of processes (1 for sequential)
Definition MpiCommunicationStrategy.h:27
void Barrier() const override
Synchronization barrier across all processes (no-op for sequential)
Definition MpiCommunicationStrategy.h:32