#define CHECK_ACTION_PARAMS(action, mandatory, optional) \
{ \
- if (action.size() < static_cast<unsigned long>(mandatory + 2)) { \
+ if ((action).size() < static_cast<unsigned long>((mandatory) + 2)) { \
std::stringstream ss; \
ss << __func__ << " replay failed.\n" \
- << action.size() << " items were given on the line. First two should be process_id and action. " \
- << "This action needs after them " << mandatory << " mandatory arguments, and accepts " << optional \
+ << (action).size() << " items were given on the line. First two should be process_id and action. " \
+ << "This action needs after them " << (mandatory) << " mandatory arguments, and accepts " << (optional) \
<< " optional ones. \n" \
<< "The full line that was given is:\n "; \
- for (const auto& elem : action) { \
+ for (const auto& elem : (action)) { \
ss << elem << " "; \
} \
ss << "\nPlease contact the Simgrid team if support is needed"; \
} \
}
-XBT_PRIVATE void* smpi_get_tmp_sendbuffer(int size);
-XBT_PRIVATE void* smpi_get_tmp_recvbuffer(int size);
-XBT_PRIVATE void smpi_free_tmp_buffer(void* buf);
-XBT_PRIVATE void smpi_free_replay_tmp_buffers();
+XBT_PRIVATE unsigned char* smpi_get_tmp_sendbuffer(size_t size);
+XBT_PRIVATE unsigned char* smpi_get_tmp_recvbuffer(size_t size);
XBT_PRIVATE void log_timed_action(simgrid::xbt::ReplayAction& action, double clock);
class ComputeParser : public ActionArgParser {
public:
- /* communication partner; if we send, this is the receiver and vice versa */
double flops;
void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
};
+class LocationParser : public ActionArgParser {
+public:
+ std::string filename;
+ int line;
+
+ void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+};
+
class CollCommParser : public ActionArgParser {
public:
double size;
T args;
public:
- explicit ReplayAction(std::string name) : name(std::move(name)), my_proc_id(simgrid::s4u::this_actor::get_pid()) {}
+ explicit ReplayAction(const std::string& name) : name(name), my_proc_id(simgrid::s4u::this_actor::get_pid()) {}
virtual ~ReplayAction() = default;
void execute(simgrid::xbt::ReplayAction& action)
}
virtual void kernel(simgrid::xbt::ReplayAction& action) = 0;
- void* send_buffer(int size) { return smpi_get_tmp_sendbuffer(size); }
- void* recv_buffer(int size) { return smpi_get_tmp_recvbuffer(size); }
+ unsigned char* send_buffer(int size) { return smpi_get_tmp_sendbuffer(size); }
+ unsigned char* recv_buffer(int size) { return smpi_get_tmp_recvbuffer(size); }
};
class WaitAction : public ReplayAction<WaitTestParser> {
RequestStorage& req_storage;
public:
- explicit SendAction(std::string name, RequestStorage& storage) : ReplayAction(std::move(name)), req_storage(storage)
- {
- }
+ explicit SendAction(const std::string& name, RequestStorage& storage) : ReplayAction(name), req_storage(storage) {}
void kernel(simgrid::xbt::ReplayAction& action) override;
};
RequestStorage& req_storage;
public:
- explicit RecvAction(std::string name, RequestStorage& storage) : ReplayAction(std::move(name)), req_storage(storage)
- {
- }
+ explicit RecvAction(const std::string& name, RequestStorage& storage) : ReplayAction(name), req_storage(storage) {}
void kernel(simgrid::xbt::ReplayAction& action) override;
};
void kernel(simgrid::xbt::ReplayAction& action) override;
};
+class LocationAction : public ReplayAction<LocationParser> {
+public:
+ explicit LocationAction() : ReplayAction("location") {}
+ void kernel(simgrid::xbt::ReplayAction& action) override;
+};
+
class TestAction : public ReplayAction<WaitTestParser> {
private:
RequestStorage& req_storage;
class GatherAction : public ReplayAction<GatherArgParser> {
public:
- explicit GatherAction(std::string name) : ReplayAction(std::move(name)) {}
+ explicit GatherAction(const std::string& name) : ReplayAction(name) {}
void kernel(simgrid::xbt::ReplayAction& action) override;
};
class GatherVAction : public ReplayAction<GatherVArgParser> {
public:
- explicit GatherVAction(std::string name) : ReplayAction(std::move(name)) {}
+ explicit GatherVAction(const std::string& name) : ReplayAction(name) {}
void kernel(simgrid::xbt::ReplayAction& action) override;
};