summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
4ef9d2b)
One more step to transform MSG into a S4U wrapper \o/
t_simdata->comm = nullptr;
msg_global->sent_msg++;
t_simdata->comm = nullptr;
msg_global->sent_msg++;
- /* Send it by calling SIMIX network layer */
- smx_activity_t act =
- simcall_comm_isend(myself->get_impl(), mailbox->get_impl(), t_simdata->bytes_amount, t_simdata->rate, task,
- sizeof(void*), nullptr, cleanup, nullptr, nullptr, detached);
- t_simdata->comm = boost::static_pointer_cast<simgrid::kernel::activity::CommImpl>(act);
+ simgrid::s4u::CommPtr comm = mailbox->put_init(task, t_simdata->bytes_amount)->set_rate(t_simdata->rate);
+ t_simdata->comm = comm;
+ if (detached)
+ comm->detach(cleanup);
+ else
+ comm->start();
- msg_comm_t comm = nullptr;
+ msg_comm_t msg_comm = nullptr;
- comm = new simgrid::msg::Comm(task, nullptr, act);
+ msg_comm = new simgrid::msg::Comm(task, nullptr, comm);
}
if (TRACE_is_enabled() && task->category != nullptr)
}
if (TRACE_is_enabled() && task->category != nullptr)
- simgrid::simix::simcall([act, task] { act->set_category(task->category); });
+ simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
TRACE_msg_task_put_end();
TRACE_msg_task_put_end();
/* Try to receive it by calling SIMIX network layer */
msg_comm_t comm = new simgrid::msg::Comm(
/* Try to receive it by calling SIMIX network layer */
msg_comm_t comm = new simgrid::msg::Comm(
- nullptr, task,
- simcall_comm_irecv(SIMIX_process_self(), mbox->get_impl(), task, nullptr, nullptr, nullptr, nullptr, rate));
+ nullptr, task, mbox->get_init()->set_dst_data((void**)task, sizeof(msg_task_t*))->set_rate(rate)->start());
bool finished = false;
try {
bool finished = false;
try {
- finished = simcall_comm_test(comm->s_comm);
+ finished = comm->s_comm->test();
if (finished && comm->task_received != nullptr) {
/* I am the receiver */
(*comm->task_received)->simdata->setNotUsed();
if (finished && comm->task_received != nullptr) {
/* I am the receiver */
(*comm->task_received)->simdata->setNotUsed();
msg_comm_t comm;
unsigned int cursor;
xbt_dynar_foreach(comms, cursor, comm) {
msg_comm_t comm;
unsigned int cursor;
xbt_dynar_foreach(comms, cursor, comm) {
- s_comms.push_back(static_cast<simgrid::kernel::activity::CommImpl*>(comm->s_comm.get()));
+ s_comms.push_back(static_cast<simgrid::kernel::activity::CommImpl*>(comm->s_comm->get_impl().get()));
}
msg_error_t status = MSG_OK;
}
msg_error_t status = MSG_OK;
msg_error_t MSG_comm_wait(msg_comm_t comm, double timeout)
{
try {
msg_error_t MSG_comm_wait(msg_comm_t comm, double timeout)
{
try {
- simcall_comm_wait(comm->s_comm, timeout);
+ comm->s_comm->wait_for(timeout);
if (comm->task_received != nullptr) {
/* I am the receiver */
if (comm->task_received != nullptr) {
/* I am the receiver */
msg_comm_t comm;
unsigned int cursor;
xbt_dynar_foreach(comms, cursor, comm) {
msg_comm_t comm;
unsigned int cursor;
xbt_dynar_foreach(comms, cursor, comm) {
- s_comms.push_back(static_cast<simgrid::kernel::activity::CommImpl*>(comm->s_comm.get()));
+ s_comms.push_back(static_cast<simgrid::kernel::activity::CommImpl*>(comm->s_comm->get_impl().get()));
}
msg_error_t status = MSG_OK;
}
msg_error_t status = MSG_OK;
simdata_task_t t_simdata = task->simdata;
t_simdata->sender = MSG_process_self();
t_simdata->source = MSG_host_self();
simdata_task_t t_simdata = task->simdata;
t_simdata->sender = MSG_process_self();
t_simdata->source = MSG_host_self();
t_simdata->setUsed();
msg_global->sent_msg++;
t_simdata->setUsed();
msg_global->sent_msg++;
try {
simgrid::s4u::CommPtr comm =
simgrid::s4u::Mailbox::by_name(alias)->put_init(task, t_simdata->bytes_amount)->set_rate(t_simdata->rate);
try {
simgrid::s4u::CommPtr comm =
simgrid::s4u::Mailbox::by_name(alias)->put_init(task, t_simdata->bytes_amount)->set_rate(t_simdata->rate);
- t_simdata->comm = boost::static_pointer_cast<simgrid::kernel::activity::CommImpl>(comm->get_impl());
+ t_simdata->comm = comm;
comm->start();
if (TRACE_is_enabled() && task->category != nullptr)
simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
comm->start();
if (TRACE_is_enabled() && task->category != nullptr)
simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
void setNotUsed() { this->isused = false; }
simgrid::kernel::activity::ExecImplPtr compute = nullptr; /* SIMIX modeling of computation */
void setNotUsed() { this->isused = false; }
simgrid::kernel::activity::ExecImplPtr compute = nullptr; /* SIMIX modeling of computation */
- simgrid::kernel::activity::CommImplPtr comm = nullptr; /* SIMIX modeling of communication */
+ simgrid::s4u::CommPtr comm = nullptr; /* S4U modeling of communication */
double bytes_amount = 0.0; /* Data size */
double flops_amount = 0.0; /* Computation size */
msg_process_t sender = nullptr;
double bytes_amount = 0.0; /* Data size */
double flops_amount = 0.0; /* Computation size */
msg_process_t sender = nullptr;
public:
msg_task_t task_sent; /* task sent (NULL for the receiver) */
msg_task_t* task_received; /* where the task will be received (NULL for the sender) */
public:
msg_task_t task_sent; /* task sent (NULL for the receiver) */
msg_task_t* task_received; /* where the task will be received (NULL for the sender) */
- smx_activity_t s_comm; /* SIMIX communication object encapsulated (the same for both processes) */
+ s4u::CommPtr s_comm; /* SIMIX communication object encapsulated (the same for both processes) */
msg_error_t status = MSG_OK; /* status of the communication once finished */
msg_error_t status = MSG_OK; /* status of the communication once finished */
- Comm(msg_task_t sent, msg_task_t* received, smx_activity_t comm)
+ Comm(msg_task_t sent, msg_task_t* received, s4u::CommPtr comm)
: task_sent(sent), task_received(received), s_comm(std::move(comm))
{
}
: task_sent(sent), task_received(received), s_comm(std::move(comm))
{
}
#include <algorithm>
#include <cmath>
#include <simgrid/modelchecker.h>
#include <algorithm>
#include <cmath>
#include <simgrid/modelchecker.h>
+#include <simgrid/s4u/Comm.hpp>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_task, msg, "Logging specific to MSG (task)");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_task, msg, "Logging specific to MSG (task)");
if (simdata->compute) {
simgrid::simix::simcall([simdata] { simdata->compute->cancel(); });
} else if (simdata->comm) {
if (simdata->compute) {
simgrid::simix::simcall([simdata] { simdata->compute->cancel(); });
} else if (simdata->comm) {
- simgrid::simix::simcall([simdata] { simdata->comm->cancel(); });
+ simdata->comm->cancel();
}
simdata->setNotUsed();
return MSG_OK;
}
simdata->setNotUsed();
return MSG_OK;
double MSG_task_get_remaining_communication(msg_task_t task)
{
XBT_DEBUG("calling simcall_communication_get_remains(%p)", task->simdata->comm.get());
double MSG_task_get_remaining_communication(msg_task_t task)
{
XBT_DEBUG("calling simcall_communication_get_remains(%p)", task->simdata->comm.get());
- return task->simdata->comm->remains();
+ return task->simdata->comm->get_remaining();
}
/** @brief Returns the size of the data attached to the given task. */
}
/** @brief Returns the size of the data attached to the given task. */