+ XBT_INFO("Computed 6-core activity on a 4-core host. Took %g s", e->get_clock() - start_time);
+
+ // Same host, adding some communication
+ std::vector<double> comm2 = {0, 1E7, 1E7, 0};
+ start_time = sg4::Engine::get_clock();
+ sg4::this_actor::parallel_execute(multicore_host, comp, comm2);
+ XBT_INFO("Computed 2-core activity on a 4-core host with some communication. Took %g s", e->get_clock() - start_time);
+
+ // See if the multicore execution continues to work after changing pstate
+ XBT_INFO("Switching machine multicore to pstate 1.");
+ e->host_by_name("MyHost1")->set_pstate(1);
+ XBT_INFO("Switching back to pstate 0.");
+ e->host_by_name("MyHost1")->set_pstate(0);
+
+ start_time = sg4::Engine::get_clock();
+ sg4::this_actor::parallel_execute(multicore_host, comp, comm);
+ XBT_INFO("Computed 2-core activity on a 4-core host. Took %g s", e->get_clock() - start_time);
+
+ start_time = sg4::Engine::get_clock();
+ sg4::this_actor::parallel_execute(hosts_diff, comp, comm);
+ XBT_INFO("Computed 2-core activity on two different hosts. Took %g s", e->get_clock() - start_time);
+
+ // Add a background task and change ptask on the fly
+ auto* MyHost1 = e->host_by_name("MyHost1");
+ sg4::ExecPtr background_task = MyHost1->exec_async(5e9);
+ XBT_INFO("Start a 1-core background task on the 4-core host.");
+
+ start_time = sg4::Engine::get_clock();
+ sg4::this_actor::parallel_execute(multicore_host, comp, comm);
+ XBT_INFO("Computed 2-core activity on the 4-core host. Took %g s", e->get_clock() - start_time);
+ XBT_INFO("Remaining amount of work for the background task: %.0f%%",
+ 100 * background_task->get_remaining_ratio());
+
+ XBT_INFO("Switching to pstate 1 while background task is still running.");
+ MyHost1->set_pstate(1);
+ start_time = sg4::Engine::get_clock();
+ sg4::this_actor::parallel_execute(multicore_host, comp, comm);
+ XBT_INFO("Computed again the same 2-core activity on it. Took %g s", e->get_clock() - start_time);
+
+ background_task->wait();
+ XBT_INFO("The background task has ended.");