79 DataGroup(
int groupid, MPI_Comm c,
int timestart,
int depth,
int policy);
84 virtual MPI_Group create_cohort() = 0;
87 virtual void sync_timestamps();
92 if (cohort != MPI_GROUP_NULL) {
93 MPI_Group_free(&cohort);
95 cohort = create_cohort();
96 cohort_comm = mpixx::Comm::create_group(comm, cohort, 0);
97 cohort_size = cohort_comm.size();
98 cohort_rank = cohort_comm.rank();
112 std::vector<int> member_order;
114 std::set<int, std::greater<int>> timestamps;
116 MPI_Group cohort = MPI_GROUP_NULL;
118 int cohort_size = -1;
119 int cohort_rank = -1;
121 std::vector<int> get_member_ids();
126 int id, std::source_location loc = std::source_location::current()
128 void member_create(
int id,
void* data,
int count, MPI_Datatype datatype);
130 int id,
void* data,
int count, MPI_Datatype datatype, SerializeFunc& s
134 virtual void member_delete(
int memberid);
137 virtual void emplace_member(
DataMember&& member);
139 virtual void get_redundant_policy(
int* name,
void* value) = 0;
141 virtual void member_repair(
int member_id);
142 virtual void member_restore_from_rank(
143 int member_id,
void* target_bugger,
int max,
int timestamp,
int source_rank
147 virtual void commit();
148 virtual void snapshot_delete(
int timestamp);
149 virtual int get_number_of_snapshots();
150 virtual int get_snapshot_at_position(
int position);
151 virtual std::vector<int> get_snapshots();
154 virtual void revoke();
156 MPI_Group get_cohort()
const {
return cohort; }