XBT_PRIVATE void log_timed_action(const simgrid::xbt::ReplayAction& action, double clock);
-namespace simgrid {
-namespace smpi {
-namespace replay {
+namespace simgrid::smpi::replay {
extern MPI_Datatype MPI_DEFAULT_TYPE;
class RequestStorage; // Forward decl
void parse(xbt::ReplayAction& action, const std::string& name) override;
};
-class SendRecvParser : public ActionArgParser {
+class SendOrRecvParser : public ActionArgParser {
public:
/* communication partner; if we send, this is the receiver and vice versa */
int partner;
- size_t size;
+ ssize_t size;
int tag;
MPI_Datatype datatype1;
MPI_Datatype datatype2;
};
+class SendRecvParser : public ActionArgParser {
+public:
+ int dst;
+ int src;
+ int sendcount;
+ int recvcount;
+ MPI_Datatype datatype1;
+ MPI_Datatype datatype2;
+
+ void parse(xbt::ReplayAction& action, const std::string& name) override;
+};
+
class BcastArgParser : public CollCommParser {
public:
void parse(xbt::ReplayAction& action, const std::string& name) override;
void kernel(xbt::ReplayAction& action) override;
};
-class SendAction : public ReplayAction<SendRecvParser> {
+class SendAction : public ReplayAction<SendOrRecvParser> {
RequestStorage& req_storage;
public:
void kernel(xbt::ReplayAction& action) override;
};
-class RecvAction : public ReplayAction<SendRecvParser> {
+class RecvAction : public ReplayAction<SendOrRecvParser> {
RequestStorage& req_storage;
public:
void kernel(xbt::ReplayAction& action) override;
};
+class SendRecvAction : public ReplayAction<SendRecvParser> {
+public:
+ explicit SendRecvAction() : ReplayAction("sendrecv") {}
+ void kernel(xbt::ReplayAction& action) override;
+};
+
class BarrierAction : public ReplayAction<ActionArgParser> {
public:
explicit BarrierAction() : ReplayAction("barrier") {}
void kernel(xbt::ReplayAction& action) override;
};
-} // namespace replay
-} // namespace smpi
-} // namespace simgrid
+} // namespace simgrid::smpi::replay
#endif