12#ifndef SST_CORE_SYNC_RANKSYNCPARALLELSKIP_H
13#define SST_CORE_SYNC_RANKSYNCPARALLELSKIP_H
15#include "sst/core/sst_mpi.h"
16#include "sst/core/sst_types.h"
17#include "sst/core/sync/syncManager.h"
18#include "sst/core/threadsafe.h"
40 const RankInfo& to_rank,
const RankInfo& from_rank,
const std::string& name,
Link* link)
override;
41 void execute(
int thread)
override;
51 void setSignals(
int end,
int usr,
int alrm)
override;
53 bool getSignals(
int& end,
int& usr,
int& alrm)
override;
55 SimTime_t getNextSyncTime()
override {
return myNextSyncTime; }
57 void setRestartTime(SimTime_t time)
override;
59 uint64_t getDataSize()
const override;
62 static SimTime_t myNextSyncTime;
65 void exchange_master(
int thread);
66 void exchange_slave(
int thread);
82 ImplementSerializable(comm_send_pair)
88 uint32_t local_thread;
90 std::vector<Activity*> activity_vec;
93#ifdef SST_CONFIG_HAVE_MPI
99 SST_SER(local_thread);
105 ImplementSerializable(comm_recv_pair)
108 using comm_send_map_t = std::map<RankInfo, comm_send_pair>;
109 using comm_recv_map_t = std::map<RankInfo, comm_recv_pair>;
111 using link_map_t = std::map<std::string, uintptr_t>;
114 comm_send_map_t comm_send_map;
115 comm_recv_map_t comm_recv_map;
119 double deserializeTime;
124 std::atomic<int32_t> remaining_deser;
130 void deserializeMessage(comm_recv_pair* msg);
139 static int sig_alrm_;
Base Class for a queue of Activities.
Definition activityQueue.h:22
Definition serializable.h:24
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:45
Definition threadsafe.h:46
Definition threadsafe.h:163
Definition threadsafe.h:132
Definition threadsafe.h:272
Link between two components.
Definition link.h:55
void finalizeLinkConfigurations() override
Finish link configuration.
Definition rankSyncParallelSkip.cc:130
bool getSignals(int &end, int &usr, int &alrm) override
Return exchanged signals after sync.
Definition rankSyncParallelSkip.cc:152
void setSignals(int end, int usr, int alrm) override
Set signals to exchange during sync.
Definition rankSyncParallelSkip.cc:144
void exchangeLinkUntimedData(int thread, std::atomic< int > &msg_count) override
Cause an exchange of Untimed Data to occur.
Definition rankSyncParallelSkip.cc:390
ActivityQueue * registerLink(const RankInfo &to_rank, const RankInfo &from_rank, const std::string &name, Link *link) override
Register a Link which this Sync Object is responsible for.
Definition rankSyncParallelSkip.cc:85
void prepareForComplete() override
Prepare for complete() stage.
Definition rankSyncParallelSkip.cc:140
RankSyncParallelSkip(RankInfo num_ranks)
Create a new Sync object which fires with a specified period.
Definition rankSyncParallelSkip.cc:46
Definition syncQueue.h:56
A class to convert between a component's view of time and the core's view of time.
Definition timeConverter.h:28