double sleep_start_time; /* - start time */
double sleep_test_time; /* - test time */
double msg_size; /* - computational cost */
+ double task_comm_size; /* - communication cost */
simgrid::s4u::MailboxPtr mbox;
public:
xbt_assert(args.size() == 7, "The sender function expects 6 arguments from the XML deployment file");
messages_count = std::stol(args[1]);
msg_size = std::stod(args[2]);
- double task_comm_size = std::stod(args[3]); /* - communication cost */
+ task_comm_size = std::stod(args[3]);
receivers_count = std::stol(args[4]);
double sleep_start_time = std::stod(args[5]);
double sleep_test_time = std::stod(args[6]);
XBT_INFO("sleep_start_time : %f , sleep_test_time : %f", sleep_start_time, sleep_test_time);
}
void operator()()
-{
+{
/* Start dispatching all messages to receivers, in a round robin fashion */
for (int i = 0; i < messages_count; i++) {
char mailbox[80];
/* Create a communication representing the ongoing communication */
simgrid::s4u::CommPtr comm = mbox->put_async((void*)mailbox, msg_size);
XBT_INFO("Send to receiver-%ld Task_%d", i % receivers_count, i);
+ comm->wait(task_comm_size);
}
/* Start sending messages to let the workers know that they should stop */
for (int i = 0; i < receivers_count; i++) {
char* payload = xbt_strdup("finalize");
snprintf(mailbox, 79, "receiver-%d", i);
simgrid::s4u::CommPtr comm = mbox->put_async((void*)payload, 0);
+ comm->wait(task_comm_size);
XBT_INFO("Send to receiver-%d finalize", i);
}
public:
explicit receiver(std::vector<std::string> args)
{
- xbt_assert(args.size() == 4, "The relay_runner function does not accept any parameter from the XML deployment file");
+ xbt_assert(args.size() == 4, "The relay_runner function does not accept any parameter from the XML deployment file");
id = std::stoi(args[1]);
sleep_start_time = std::stod(args[2]);
sleep_test_time = std::stod(args[3]);
xbt_free(received);
break;
}
- /* Otherwise receiving the message was all we were supposed to do */
- xbt_free(received);
}
}
};
#! ./tesh
-p Test1 MSG_comm_test() with Sleep_sender > Sleep_receiver
+p Test1 Sleep_sender > Sleep_receiver
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-wait ${srcdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/../msg/async-wait/async-wait_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-wait ${srcdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/../s4u/async-wait/s4u-async-wait_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 5.000000 , sleep_test_time : 0.100000
> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 1.000000 , sleep_test_time : 0.100000
-> [ 1.000000] (2:receiver@Ruby) Wait to receive a task
-> [ 5.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
-> [ 5.100000] (2:receiver@Ruby) Received "Task_0"
-> [ 5.100000] (2:receiver@Ruby) Processing "Task_0"
-> [ 5.100000] (1:sender@Tremblay) Send to receiver-0 Task_1
-> [ 5.609710] (2:receiver@Ruby) "Task_0" done
-> [ 5.609710] (2:receiver@Ruby) Wait to receive a task
-> [ 5.700000] (1:sender@Tremblay) Send to receiver-0 Task_2
-> [ 5.709710] (2:receiver@Ruby) Received "Task_1"
-> [ 5.709710] (2:receiver@Ruby) Processing "Task_1"
-> [ 6.219420] (2:receiver@Ruby) "Task_1" done
-> [ 6.219420] (2:receiver@Ruby) Wait to receive a task
-> [ 6.300000] (1:sender@Tremblay) Send to receiver-0 finalize
-> [ 6.319420] (2:receiver@Ruby) Received "Task_2"
-> [ 6.319420] (2:receiver@Ruby) Processing "Task_2"
-> [ 6.829130] (2:receiver@Ruby) "Task_2" done
-> [ 6.829130] (2:receiver@Ruby) Wait to receive a task
-> [ 6.900000] (1:sender@Tremblay) Goodbye now!
-> [ 6.929130] (2:receiver@Ruby) Received "finalize"
-> [ 6.929130] (2:receiver@Ruby) I'm done. See you!
-> [ 6.929130] (0:maestro@) Simulation time 6.92913
-
-p Test2 MSG_comm_test() with Sleep_sender < Sleep_receiver
-
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-wait ${srcdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/../msg/async-wait/async-wait2_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 1.000000 , sleep_test_time : 0.100000
-> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 5.000000 , sleep_test_time : 0.100000
-> [ 1.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
-> [ 5.000000] (2:receiver@Ruby) Wait to receive a task
-> [ 5.100000] (2:receiver@Ruby) Received "Task_0"
-> [ 5.100000] (2:receiver@Ruby) Processing "Task_0"
-> [ 5.100000] (1:sender@Tremblay) Send to receiver-0 Task_1
-> [ 5.609710] (2:receiver@Ruby) "Task_0" done
-> [ 5.609710] (2:receiver@Ruby) Wait to receive a task
-> [ 5.700000] (1:sender@Tremblay) Send to receiver-0 Task_2
-> [ 5.709710] (2:receiver@Ruby) Received "Task_1"
-> [ 5.709710] (2:receiver@Ruby) Processing "Task_1"
-> [ 6.219420] (2:receiver@Ruby) "Task_1" done
-> [ 6.219420] (2:receiver@Ruby) Wait to receive a task
-> [ 6.300000] (1:sender@Tremblay) Send to receiver-0 finalize
-> [ 6.319420] (2:receiver@Ruby) Received "Task_2"
-> [ 6.319420] (2:receiver@Ruby) Processing "Task_2"
-> [ 6.829130] (2:receiver@Ruby) "Task_2" done
-> [ 6.829130] (2:receiver@Ruby) Wait to receive a task
-> [ 6.900000] (1:sender@Tremblay) Goodbye now!
-> [ 6.929130] (2:receiver@Ruby) Received "finalize"
-> [ 6.929130] (2:receiver@Ruby) I'm done. See you!
-> [ 6.929130] (0:maestro@) Simulation time 6.92913
-
-p Test1 MSG_comm_wait() with Sleep_sender > Sleep_receiver
-
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-wait ${srcdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/../msg/async-wait/async-wait3_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 5.000000 , sleep_test_time : 0.000000
-> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 1.000000 , sleep_test_time : 0.000000
-> [ 1.000000] (2:receiver@Ruby) Wait to receive a task
-> [ 5.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
-> [ 5.004022] (2:receiver@Ruby) Received "Task_0"
-> [ 5.004022] (2:receiver@Ruby) Processing "Task_0"
-> [ 5.004022] (1:sender@Tremblay) Send to receiver-0 Task_1
-> [ 5.513732] (2:receiver@Ruby) "Task_0" done
-> [ 5.513732] (2:receiver@Ruby) Wait to receive a task
-> [ 5.517753] (2:receiver@Ruby) Received "Task_1"
-> [ 5.517753] (2:receiver@Ruby) Processing "Task_1"
-> [ 5.517753] (1:sender@Tremblay) Send to receiver-0 Task_2
-> [ 6.027463] (2:receiver@Ruby) "Task_1" done
-> [ 6.027463] (2:receiver@Ruby) Wait to receive a task
-> [ 6.031485] (2:receiver@Ruby) Received "Task_2"
-> [ 6.031485] (2:receiver@Ruby) Processing "Task_2"
-> [ 6.031485] (1:sender@Tremblay) Send to receiver-0 finalize
-> [ 6.541195] (2:receiver@Ruby) "Task_2" done
-> [ 6.541195] (2:receiver@Ruby) Wait to receive a task
-> [ 6.543146] (1:sender@Tremblay) Goodbye now!
-> [ 6.543146] (2:receiver@Ruby) Received "finalize"
-> [ 6.543146] (2:receiver@Ruby) I'm done. See you!
-> [ 6.543146] (0:maestro@) Simulation time 6.54315
-
-
-p Test2 MSG_comm_wait() with Sleep_sender < Sleep_receiver
-
-$ $SG_TEST_EXENV ${bindir:=.}/s4u-async-wait ${srcdir:=.}/small_platform_fatpipe.xml ${srcdir:=.}/../msg/async-wait/async-wait4_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (1:sender@Tremblay) sleep_start_time : 1.000000 , sleep_test_time : 0.000000
-> [ 0.000000] (2:receiver@Ruby) sleep_start_time : 5.000000 , sleep_test_time : 0.000000
-> [ 1.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
-> [ 5.000000] (2:receiver@Ruby) Wait to receive a task
-> [ 5.004022] (2:receiver@Ruby) Received "Task_0"
-> [ 5.004022] (2:receiver@Ruby) Processing "Task_0"
-> [ 5.004022] (1:sender@Tremblay) Send to receiver-0 Task_1
-> [ 5.513732] (2:receiver@Ruby) "Task_0" done
-> [ 5.513732] (2:receiver@Ruby) Wait to receive a task
-> [ 5.517753] (2:receiver@Ruby) Received "Task_1"
-> [ 5.517753] (2:receiver@Ruby) Processing "Task_1"
-> [ 5.517753] (1:sender@Tremblay) Send to receiver-0 Task_2
-> [ 6.027463] (2:receiver@Ruby) "Task_1" done
-> [ 6.027463] (2:receiver@Ruby) Wait to receive a task
-> [ 6.031485] (2:receiver@Ruby) Received "Task_2"
-> [ 6.031485] (2:receiver@Ruby) Processing "Task_2"
-> [ 6.031485] (1:sender@Tremblay) Send to receiver-0 finalize
-> [ 6.541195] (2:receiver@Ruby) "Task_2" done
-> [ 6.541195] (2:receiver@Ruby) Wait to receive a task
-> [ 6.543146] (1:sender@Tremblay) Goodbye now!
-> [ 6.543146] (2:receiver@Ruby) Received "finalize"
-> [ 6.543146] (2:receiver@Ruby) I'm done. See you!
-> [ 6.543146] (0:maestro@) Simulation time 6.54315
+> [ 0.000000] (1:sender@Tremblay) Send to receiver-0 Task_0
+> [ 0.105458] (2:receiver@Ruby) Wait to receive a task
+> [ 0.105458] (2:receiver@Ruby) I got a 'receiver-0'.
+> [ 0.105458] (1:sender@Tremblay) Send to receiver-0 Task_1
+> [ 0.210917] (2:receiver@Ruby) Wait to receive a task
+> [ 0.210917] (2:receiver@Ruby) I got a 'receiver-0'.
+> [ 0.210917] (1:sender@Tremblay) Send to receiver-0 Task_2
+> [ 0.316375] (2:receiver@Ruby) Wait to receive a task
+> [ 0.316375] (2:receiver@Ruby) I got a 'receiver-0'.
+> [ 0.318326] (2:receiver@Ruby) Wait to receive a task
+> [ 0.318326] (2:receiver@Ruby) I got a 'finalize'.
+> [ 0.318326] (1:sender@Tremblay) Send to receiver-0 finalize
+> [ 0.318326] (1:sender@Tremblay) Goodbye now!
\ No newline at end of file