Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
augment example to check sharing of a thread-execute
authorSUTER Frederic <frederic.suter@cc.in2p3.fr>
Sat, 12 Mar 2022 01:02:14 +0000 (02:02 +0100)
committerSUTER Frederic <frederic.suter@cc.in2p3.fr>
Sat, 12 Mar 2022 01:02:14 +0000 (02:02 +0100)
examples/cpp/exec-threads/s4u-exec-threads.cpp
examples/cpp/exec-threads/s4u-exec-threads.tesh
src/s4u/s4u_Actor.cpp

index 8d4675f..cbc8b59 100644 (file)
@@ -26,8 +26,7 @@ static void runner()
   sg4::this_actor::thread_execute(multicore_host, 1e9, 6);
   XBT_INFO("Computed 6-thread activity on a 4-core host. Took %g s", e->get_clock() - start_time);
 
   sg4::this_actor::thread_execute(multicore_host, 1e9, 6);
   XBT_INFO("Computed 6-thread activity on a 4-core host. Took %g s", e->get_clock() - start_time);
 
-  auto MyHost1                          = e->host_by_name("MyHost1");
-  simgrid::s4u::ExecPtr background_task = MyHost1->exec_async(2.5e9);
+  simgrid::s4u::ExecPtr background_task = sg4::this_actor::exec_async(2.5e9);
   XBT_INFO("Start a 1-core background task on the 4-core host.");
 
   start_time = sg4::Engine::get_clock();
   XBT_INFO("Start a 1-core background task on the 4-core host.");
 
   start_time = sg4::Engine::get_clock();
@@ -40,6 +39,19 @@ static void runner()
 
   background_task->wait();
   XBT_INFO("The background task has ended.");
 
   background_task->wait();
   XBT_INFO("The background task has ended.");
+
+  background_task = sg4::this_actor::exec_init(2e9)->set_thread_count(4)->start();
+  XBT_INFO("Start a 4-core background task on the 4-core host.");
+
+  XBT_INFO("Sleep for 5 seconds before starting another competing task");
+  sg4::this_actor::sleep_for(5);
+
+  start_time = sg4::Engine::get_clock();
+  sg4::this_actor::execute(1e9);
+  XBT_INFO("Computed 1-thread activity on a 4-core host. Took %g s", e->get_clock() - start_time);
+
+  background_task->wait();
+  XBT_INFO("The background task has ended.");
 }
 
 int main(int argc, char* argv[])
 }
 
 int main(int argc, char* argv[])
index 854a733..b5c768f 100644 (file)
@@ -8,4 +8,8 @@ $ ${bindir:=.}/s4u-exec-threads ${platfdir}/energy_platform.xml "--log=root.fmt:
 > [ 45.000000] Computed 2-thread activity on a 4-core host. Took 10 s
 > [ 57.500000] Computed 4-thread activity on a 4-core host. Took 12.5 s
 > [ 62.500000] The background task has ended.
 > [ 45.000000] Computed 2-thread activity on a 4-core host. Took 10 s
 > [ 57.500000] Computed 4-thread activity on a 4-core host. Took 12.5 s
 > [ 62.500000] The background task has ended.
-> [ 62.500000] Simulation done.
\ No newline at end of file
+> [ 62.500000] Start a 4-core background task on the 4-core host.
+> [ 62.500000] Sleep for 5 seconds before starting another competing task
+> [ 80.000000] Computed 1-thread activity on a 4-core host. Took 12.5 s
+> [ 85.000000] The background task has ended.
+> [ 85.000000] Simulation done.
index 7206d09..def1862 100644 (file)
@@ -369,6 +369,7 @@ void thread_execute(s4u::Host* host, double flops_amount, int thread_count)
 {
   Exec::init()->set_flops_amount(flops_amount)->set_host(host)->set_thread_count(thread_count)->wait();
 }
 {
   Exec::init()->set_flops_amount(flops_amount)->set_host(host)->set_thread_count(thread_count)->wait();
 }
+
 ExecPtr exec_init(double flops_amount)
 {
   return Exec::init()->set_flops_amount(flops_amount)->set_host(get_host());
 ExecPtr exec_init(double flops_amount)
 {
   return Exec::init()->set_flops_amount(flops_amount)->set_host(get_host());