From ccf67464e07c7d37eb7d57cacb69f56881396adf Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Wed, 6 Dec 2017 13:02:31 +0100 Subject: [PATCH] first step towards asynchronous executions comes with an example (conversion of cloud-two-tasks with a better name) --- .gitignore | 1 + examples/s4u/CMakeLists.txt | 2 + .../s4u-cloud-progress-monitor.cpp | 72 ++++++++++++ .../s4u-cloud-progress-monitor.tesh | 108 ++++++++++++++++++ include/simgrid/s4u.hpp | 1 + include/simgrid/s4u/Activity.hpp | 3 + include/simgrid/s4u/Actor.hpp | 5 + include/simgrid/s4u/Exec.hpp | 59 ++++++++++ include/simgrid/s4u/forward.hpp | 3 +- src/kernel/activity/ExecImpl.hpp | 2 +- src/s4u/s4u_actor.cpp | 17 +++ tools/cmake/DefinePackages.cmake | 1 + 12 files changed, 272 insertions(+), 2 deletions(-) create mode 100644 examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.cpp create mode 100644 examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.tesh create mode 100644 include/simgrid/s4u/Exec.hpp diff --git a/.gitignore b/.gitignore index dcce047e29..82b6b35ae9 100644 --- a/.gitignore +++ b/.gitignore @@ -200,6 +200,7 @@ examples/s4u/async-waitany/s4u-async-waitany examples/s4u/basic/s4u-basic examples/s4u/basic/s4u-basic_deployment examples/s4u/basic/s4u-basic_function +examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor examples/s4u/dht-chord/s4u-dht-chord examples/s4u/energy-link/s4u-energy-link examples/s4u/energy-ptask/s4u-energy-ptask diff --git a/examples/s4u/CMakeLists.txt b/examples/s4u/CMakeLists.txt index 251e1c48eb..7ce200058d 100644 --- a/examples/s4u/CMakeLists.txt +++ b/examples/s4u/CMakeLists.txt @@ -2,6 +2,7 @@ foreach (example actions-comm actions-storage actor-create actor-daemon actor-execute actor-join actor-kill actor-lifetime actor-migration actor-suspend actor-yield app-masterworker app-pingpong app-token-ring async-wait async-waitany async-waitall + cloud-progress-monitor energy-link energy-pstate energy-ptask energy-vm io-file-system io-file-remote io-storage-raw platform-properties plugin-hostload mutex) @@ -67,6 +68,7 @@ foreach(example actions-comm actions-storage actor-create actor-daemon actor-execute actor-join actor-kill actor-lifetime actor-migration actor-suspend actor-yield app-bittorrent app-masterworker app-pingpong app-token-ring async-wait async-waitall async-waitany + cloud-progress-monitor dht-chord energy-link energy-pstate energy-ptask energy-vm platform-properties plugin-hostload mutex diff --git a/examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.cpp b/examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.cpp new file mode 100644 index 0000000000..15d8cb561e --- /dev/null +++ b/examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.cpp @@ -0,0 +1,72 @@ +/* Copyright (c) 2014-2015, 2017. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "simgrid/s4u.hpp" +#include "simgrid/forward.h" +#include "simgrid/s4u/VirtualMachine.hpp" +#include "simgrid/s4u/forward.hpp" + +XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example"); + +simgrid::s4u::ExecPtr activity; + +static void executor() +{ + const char* actor_name = simgrid::s4u::this_actor::getCname(); + const char* host_name = simgrid::s4u::Host::current()->getCname(); + + double clock_begin = simgrid::s4u::Engine::getClock(); + XBT_INFO("%s:%s task 1 created %g", host_name, actor_name, clock_begin); + activity = simgrid::s4u::Actor::self()->exec_async(1e9); + activity->wait(); + double clock_end = simgrid::s4u::Engine::getClock(); + + XBT_INFO("%s:%s task 1 executed %g", host_name, actor_name, clock_end - clock_begin); + + activity = nullptr; + + simgrid::s4u::this_actor::sleep_for(1); + + clock_begin = simgrid::s4u::Engine::getClock(); + XBT_INFO("%s:%s task 2 created %g", host_name, actor_name, clock_begin); + activity = simgrid::s4u::Actor::self()->exec_async(1e10); + activity->wait(); + clock_end = simgrid::s4u::Engine::getClock(); + + XBT_INFO("%s:%s task 2 executed %g", host_name, actor_name, clock_end - clock_begin); +} + +static void monitor() +{ + simgrid::s4u::Host* pm0 = simgrid::s4u::Host::by_name("Fafard"); + simgrid::s4u::VirtualMachine* vm0 = new simgrid::s4u::VirtualMachine("VM0", pm0, 1); + vm0->start(); + + simgrid::s4u::Actor::createActor("compute", vm0, executor); + + while (simgrid::s4u::Engine::getClock() < 100) { + if (activity) + XBT_INFO("activity remaining duration: %g", activity->getRemains()); + simgrid::s4u::this_actor::sleep_for(1); + } + + simgrid::s4u::this_actor::sleep_for(10000); + vm0->destroy(); +} + +int main(int argc, char* argv[]) +{ + simgrid::s4u::Engine e(&argc, argv); + e.loadPlatform(argv[1]); /* - Load the platform description */ + + simgrid::s4u::Actor::createActor("master_", simgrid::s4u::Host::by_name("Fafard"), monitor); + + e.run(); + + XBT_INFO("Simulation time %g", e.getClock()); + + return 0; +} diff --git a/examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.tesh b/examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.tesh new file mode 100644 index 0000000000..7ac6c22b10 --- /dev/null +++ b/examples/s4u/cloud-progress-monitor/s4u-cloud-progress-monitor.tesh @@ -0,0 +1,108 @@ +#! ./tesh + +p Testing a vm with two successive tasks + +$ $SG_TEST_EXENV ${bindir:=.}/s4u-cloud-progress-monitor$EXEEXT ${platfdir}/small_platform.xml +> [VM0:compute:(2) 0.000000] [s4u_test/INFO] VM0:compute task 1 created 0 +> [Fafard:master_:(1) 1.000000] [s4u_test/INFO] activity remaining duration: 9.23704e+08 +> [Fafard:master_:(1) 2.000000] [s4u_test/INFO] activity remaining duration: 8.47408e+08 +> [Fafard:master_:(1) 3.000000] [s4u_test/INFO] activity remaining duration: 7.71112e+08 +> [Fafard:master_:(1) 4.000000] [s4u_test/INFO] activity remaining duration: 6.94816e+08 +> [Fafard:master_:(1) 5.000000] [s4u_test/INFO] activity remaining duration: 6.1852e+08 +> [Fafard:master_:(1) 6.000000] [s4u_test/INFO] activity remaining duration: 5.42224e+08 +> [Fafard:master_:(1) 7.000000] [s4u_test/INFO] activity remaining duration: 4.65928e+08 +> [Fafard:master_:(1) 8.000000] [s4u_test/INFO] activity remaining duration: 3.89632e+08 +> [Fafard:master_:(1) 9.000000] [s4u_test/INFO] activity remaining duration: 3.13336e+08 +> [Fafard:master_:(1) 10.000000] [s4u_test/INFO] activity remaining duration: 2.3704e+08 +> [Fafard:master_:(1) 11.000000] [s4u_test/INFO] activity remaining duration: 1.60744e+08 +> [Fafard:master_:(1) 12.000000] [s4u_test/INFO] activity remaining duration: 8.4448e+07 +> [Fafard:master_:(1) 13.000000] [s4u_test/INFO] activity remaining duration: 8.152e+06 +> [VM0:compute:(2) 13.106847] [s4u_test/INFO] VM0:compute task 1 executed 13.1068 +> [VM0:compute:(2) 14.106847] [s4u_test/INFO] VM0:compute task 2 created 14.1068 +> [Fafard:master_:(1) 15.000000] [s4u_test/INFO] activity remaining duration: 9.93186e+09 +> [Fafard:master_:(1) 16.000000] [s4u_test/INFO] activity remaining duration: 9.85556e+09 +> [Fafard:master_:(1) 17.000000] [s4u_test/INFO] activity remaining duration: 9.77926e+09 +> [Fafard:master_:(1) 18.000000] [s4u_test/INFO] activity remaining duration: 9.70297e+09 +> [Fafard:master_:(1) 19.000000] [s4u_test/INFO] activity remaining duration: 9.62667e+09 +> [Fafard:master_:(1) 20.000000] [s4u_test/INFO] activity remaining duration: 9.55038e+09 +> [Fafard:master_:(1) 21.000000] [s4u_test/INFO] activity remaining duration: 9.47408e+09 +> [Fafard:master_:(1) 22.000000] [s4u_test/INFO] activity remaining duration: 9.39778e+09 +> [Fafard:master_:(1) 23.000000] [s4u_test/INFO] activity remaining duration: 9.32149e+09 +> [Fafard:master_:(1) 24.000000] [s4u_test/INFO] activity remaining duration: 9.24519e+09 +> [Fafard:master_:(1) 25.000000] [s4u_test/INFO] activity remaining duration: 9.1689e+09 +> [Fafard:master_:(1) 26.000000] [s4u_test/INFO] activity remaining duration: 9.0926e+09 +> [Fafard:master_:(1) 27.000000] [s4u_test/INFO] activity remaining duration: 9.0163e+09 +> [Fafard:master_:(1) 28.000000] [s4u_test/INFO] activity remaining duration: 8.94001e+09 +> [Fafard:master_:(1) 29.000000] [s4u_test/INFO] activity remaining duration: 8.86371e+09 +> [Fafard:master_:(1) 30.000000] [s4u_test/INFO] activity remaining duration: 8.78742e+09 +> [Fafard:master_:(1) 31.000000] [s4u_test/INFO] activity remaining duration: 8.71112e+09 +> [Fafard:master_:(1) 32.000000] [s4u_test/INFO] activity remaining duration: 8.63482e+09 +> [Fafard:master_:(1) 33.000000] [s4u_test/INFO] activity remaining duration: 8.55853e+09 +> [Fafard:master_:(1) 34.000000] [s4u_test/INFO] activity remaining duration: 8.48223e+09 +> [Fafard:master_:(1) 35.000000] [s4u_test/INFO] activity remaining duration: 8.40594e+09 +> [Fafard:master_:(1) 36.000000] [s4u_test/INFO] activity remaining duration: 8.32964e+09 +> [Fafard:master_:(1) 37.000000] [s4u_test/INFO] activity remaining duration: 8.25334e+09 +> [Fafard:master_:(1) 38.000000] [s4u_test/INFO] activity remaining duration: 8.17705e+09 +> [Fafard:master_:(1) 39.000000] [s4u_test/INFO] activity remaining duration: 8.10075e+09 +> [Fafard:master_:(1) 40.000000] [s4u_test/INFO] activity remaining duration: 8.02446e+09 +> [Fafard:master_:(1) 41.000000] [s4u_test/INFO] activity remaining duration: 7.94816e+09 +> [Fafard:master_:(1) 42.000000] [s4u_test/INFO] activity remaining duration: 7.87186e+09 +> [Fafard:master_:(1) 43.000000] [s4u_test/INFO] activity remaining duration: 7.79557e+09 +> [Fafard:master_:(1) 44.000000] [s4u_test/INFO] activity remaining duration: 7.71927e+09 +> [Fafard:master_:(1) 45.000000] [s4u_test/INFO] activity remaining duration: 7.64298e+09 +> [Fafard:master_:(1) 46.000000] [s4u_test/INFO] activity remaining duration: 7.56668e+09 +> [Fafard:master_:(1) 47.000000] [s4u_test/INFO] activity remaining duration: 7.49038e+09 +> [Fafard:master_:(1) 48.000000] [s4u_test/INFO] activity remaining duration: 7.41409e+09 +> [Fafard:master_:(1) 49.000000] [s4u_test/INFO] activity remaining duration: 7.33779e+09 +> [Fafard:master_:(1) 50.000000] [s4u_test/INFO] activity remaining duration: 7.2615e+09 +> [Fafard:master_:(1) 51.000000] [s4u_test/INFO] activity remaining duration: 7.1852e+09 +> [Fafard:master_:(1) 52.000000] [s4u_test/INFO] activity remaining duration: 7.1089e+09 +> [Fafard:master_:(1) 53.000000] [s4u_test/INFO] activity remaining duration: 7.03261e+09 +> [Fafard:master_:(1) 54.000000] [s4u_test/INFO] activity remaining duration: 6.95631e+09 +> [Fafard:master_:(1) 55.000000] [s4u_test/INFO] activity remaining duration: 6.88002e+09 +> [Fafard:master_:(1) 56.000000] [s4u_test/INFO] activity remaining duration: 6.80372e+09 +> [Fafard:master_:(1) 57.000000] [s4u_test/INFO] activity remaining duration: 6.72742e+09 +> [Fafard:master_:(1) 58.000000] [s4u_test/INFO] activity remaining duration: 6.65113e+09 +> [Fafard:master_:(1) 59.000000] [s4u_test/INFO] activity remaining duration: 6.57483e+09 +> [Fafard:master_:(1) 60.000000] [s4u_test/INFO] activity remaining duration: 6.49854e+09 +> [Fafard:master_:(1) 61.000000] [s4u_test/INFO] activity remaining duration: 6.42224e+09 +> [Fafard:master_:(1) 62.000000] [s4u_test/INFO] activity remaining duration: 6.34594e+09 +> [Fafard:master_:(1) 63.000000] [s4u_test/INFO] activity remaining duration: 6.26965e+09 +> [Fafard:master_:(1) 64.000000] [s4u_test/INFO] activity remaining duration: 6.19335e+09 +> [Fafard:master_:(1) 65.000000] [s4u_test/INFO] activity remaining duration: 6.11706e+09 +> [Fafard:master_:(1) 66.000000] [s4u_test/INFO] activity remaining duration: 6.04076e+09 +> [Fafard:master_:(1) 67.000000] [s4u_test/INFO] activity remaining duration: 5.96446e+09 +> [Fafard:master_:(1) 68.000000] [s4u_test/INFO] activity remaining duration: 5.88817e+09 +> [Fafard:master_:(1) 69.000000] [s4u_test/INFO] activity remaining duration: 5.81187e+09 +> [Fafard:master_:(1) 70.000000] [s4u_test/INFO] activity remaining duration: 5.73558e+09 +> [Fafard:master_:(1) 71.000000] [s4u_test/INFO] activity remaining duration: 5.65928e+09 +> [Fafard:master_:(1) 72.000000] [s4u_test/INFO] activity remaining duration: 5.58298e+09 +> [Fafard:master_:(1) 73.000000] [s4u_test/INFO] activity remaining duration: 5.50669e+09 +> [Fafard:master_:(1) 74.000000] [s4u_test/INFO] activity remaining duration: 5.43039e+09 +> [Fafard:master_:(1) 75.000000] [s4u_test/INFO] activity remaining duration: 5.3541e+09 +> [Fafard:master_:(1) 76.000000] [s4u_test/INFO] activity remaining duration: 5.2778e+09 +> [Fafard:master_:(1) 77.000000] [s4u_test/INFO] activity remaining duration: 5.2015e+09 +> [Fafard:master_:(1) 78.000000] [s4u_test/INFO] activity remaining duration: 5.12521e+09 +> [Fafard:master_:(1) 79.000000] [s4u_test/INFO] activity remaining duration: 5.04891e+09 +> [Fafard:master_:(1) 80.000000] [s4u_test/INFO] activity remaining duration: 4.97262e+09 +> [Fafard:master_:(1) 81.000000] [s4u_test/INFO] activity remaining duration: 4.89632e+09 +> [Fafard:master_:(1) 82.000000] [s4u_test/INFO] activity remaining duration: 4.82002e+09 +> [Fafard:master_:(1) 83.000000] [s4u_test/INFO] activity remaining duration: 4.74373e+09 +> [Fafard:master_:(1) 84.000000] [s4u_test/INFO] activity remaining duration: 4.66743e+09 +> [Fafard:master_:(1) 85.000000] [s4u_test/INFO] activity remaining duration: 4.59114e+09 +> [Fafard:master_:(1) 86.000000] [s4u_test/INFO] activity remaining duration: 4.51484e+09 +> [Fafard:master_:(1) 87.000000] [s4u_test/INFO] activity remaining duration: 4.43854e+09 +> [Fafard:master_:(1) 88.000000] [s4u_test/INFO] activity remaining duration: 4.36225e+09 +> [Fafard:master_:(1) 89.000000] [s4u_test/INFO] activity remaining duration: 4.28595e+09 +> [Fafard:master_:(1) 90.000000] [s4u_test/INFO] activity remaining duration: 4.20966e+09 +> [Fafard:master_:(1) 91.000000] [s4u_test/INFO] activity remaining duration: 4.13336e+09 +> [Fafard:master_:(1) 92.000000] [s4u_test/INFO] activity remaining duration: 4.05706e+09 +> [Fafard:master_:(1) 93.000000] [s4u_test/INFO] activity remaining duration: 3.98077e+09 +> [Fafard:master_:(1) 94.000000] [s4u_test/INFO] activity remaining duration: 3.90447e+09 +> [Fafard:master_:(1) 95.000000] [s4u_test/INFO] activity remaining duration: 3.82818e+09 +> [Fafard:master_:(1) 96.000000] [s4u_test/INFO] activity remaining duration: 3.75188e+09 +> [Fafard:master_:(1) 97.000000] [s4u_test/INFO] activity remaining duration: 3.67558e+09 +> [Fafard:master_:(1) 98.000000] [s4u_test/INFO] activity remaining duration: 3.59929e+09 +> [Fafard:master_:(1) 99.000000] [s4u_test/INFO] activity remaining duration: 3.52299e+09 +> [VM0:compute:(2) 145.175317] [s4u_test/INFO] VM0:compute task 2 executed 131.068 +> [10100.000000] [s4u_test/INFO] Simulation time 10100 diff --git a/include/simgrid/s4u.hpp b/include/simgrid/s4u.hpp index 1b82b8c781..fe0c9c6351 100644 --- a/include/simgrid/s4u.hpp +++ b/include/simgrid/s4u.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/include/simgrid/s4u/Activity.hpp b/include/simgrid/s4u/Activity.hpp index 4568e529ad..06933c1733 100644 --- a/include/simgrid/s4u/Activity.hpp +++ b/include/simgrid/s4u/Activity.hpp @@ -22,6 +22,9 @@ XBT_PUBLIC_CLASS Activity { friend Comm; friend void intrusive_ptr_release(Comm * c); friend void intrusive_ptr_add_ref(Comm * c); + friend Exec; + friend void intrusive_ptr_release(Exec * e); + friend void intrusive_ptr_add_ref(Exec * e); protected: Activity() = default; diff --git a/include/simgrid/s4u/Actor.hpp b/include/simgrid/s4u/Actor.hpp index c6384f45bd..8299eb1435 100644 --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@ -130,6 +130,7 @@ namespace s4u { /** @brief Simulation Agent */ XBT_PUBLIC_CLASS Actor : public simgrid::xbt::Extendable { + friend Exec; friend Mailbox; friend simgrid::simix::ActorImpl; friend simgrid::kernel::activity::MailboxImpl; @@ -274,6 +275,9 @@ public: const char* getProperty(const char* key); void setProperty(const char* key, const char* value); Actor* restart(); + + ExecPtr exec_init(double flops_amounts); + ExecPtr exec_async(double flops_amounts); }; /** @ingroup s4u_api @@ -306,6 +310,7 @@ XBT_ATTRIB_DEPRECATED_v320("Use sleep_for(): v3.20 will turn this warning into a /** Block the actor, computing the given amount of flops */ XBT_PUBLIC(void) execute(double flop); + /** Block the actor, computing the given amount of flops at the given priority. * An execution of priority 2 computes twice as fast as an execution at priority 1. */ XBT_PUBLIC(void) execute(double flop, double priority); diff --git a/include/simgrid/s4u/Exec.hpp b/include/simgrid/s4u/Exec.hpp new file mode 100644 index 0000000000..7a93855e51 --- /dev/null +++ b/include/simgrid/s4u/Exec.hpp @@ -0,0 +1,59 @@ +/* Copyright (c) 2017. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#ifndef SIMGRID_S4U_EXEC_HPP +#define SIMGRID_S4U_EXEC_HPP + +#include "src/kernel/activity/ExecImpl.hpp" +#include +#include + +namespace simgrid { +namespace s4u { + +XBT_PUBLIC_CLASS Exec : public Activity +{ + Exec() : Activity() {} +public: + friend void intrusive_ptr_release(simgrid::s4u::Exec * e) + { + if (e->refcount_.fetch_sub(1, std::memory_order_release) == 1) { + std::atomic_thread_fence(std::memory_order_acquire); + delete e; + } + } + + friend void intrusive_ptr_add_ref(simgrid::s4u::Exec * e) { e->refcount_.fetch_add(1, std::memory_order_relaxed); } + + friend Actor; // Factory of Exec + + ~Exec() = default; + + void start() + { + pimpl_ = simcall_execution_start(nullptr, flops_amount_, 1 / priority_, 0.); + state_ = started; + } + void wait() override { this->wait(-1); } + void wait(double timeout) override { simcall_execution_wait(pimpl_); } + + double getRemains() + { + return simgrid::simix::kernelImmediate( + [this]() { return boost::static_pointer_cast(pimpl_)->remains(); }); + } + +private: + smx_actor_t runner_ = nullptr; + double flops_amount_ = 0.0; + double priority_ = 1.0; + double bound_ = 0.0; + + std::atomic_int_fast32_t refcount_{0}; +}; // class +} +}; // Namespace simgrid::s4u + +#endif /* SIMGRID_S4U_EXEC_HPP */ diff --git a/include/simgrid/s4u/forward.hpp b/include/simgrid/s4u/forward.hpp index 5614300c71..f7ba6de699 100644 --- a/include/simgrid/s4u/forward.hpp +++ b/include/simgrid/s4u/forward.hpp @@ -21,6 +21,8 @@ class Activity; class Comm; using CommPtr = boost::intrusive_ptr; class Engine; +class Exec; +using ExecPtr = boost::intrusive_ptr; class Host; class Link; class Mailbox; @@ -28,7 +30,6 @@ using MailboxPtr = boost::intrusive_ptr; class Mutex; class NetZone; class VirtualMachine; - class File; class Storage; diff --git a/src/kernel/activity/ExecImpl.hpp b/src/kernel/activity/ExecImpl.hpp index 2fe76ae4c3..4ef5bf7796 100644 --- a/src/kernel/activity/ExecImpl.hpp +++ b/src/kernel/activity/ExecImpl.hpp @@ -18,7 +18,7 @@ XBT_PUBLIC_CLASS ExecImpl : public ActivityImpl ~ExecImpl() override; public: - ExecImpl(const char* name, sg_host_t host); + explicit ExecImpl(const char* name, sg_host_t host); void suspend() override; void resume() override; void post() override; diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index c68dda314c..be0a900a26 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -7,6 +7,7 @@ #include "simgrid/s4u/Actor.hpp" #include "simgrid/s4u/Comm.hpp" +#include "simgrid/s4u/Exec.hpp" #include "simgrid/s4u/Host.hpp" #include "simgrid/s4u/Mailbox.hpp" @@ -199,6 +200,22 @@ Actor* Actor::restart() return simgrid::simix::kernelImmediate([this]() { return pimpl_->restart(); }); } +ExecPtr Actor::exec_init(double flops_amount) +{ + ExecPtr res = ExecPtr(new Exec()); + res->runner_ = SIMIX_process_self(); + res->flops_amount_ = flops_amount; + res->setRemains(flops_amount); + return res; +} + +ExecPtr Actor::exec_async(double flops) +{ + ExecPtr res = exec_init(flops); + res->start(); + return res; +} + // ***** this_actor ***** namespace this_actor { diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index 08d8e7a65a..5a2b006f60 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -685,6 +685,7 @@ set(headers_to_install include/simgrid/s4u/Comm.hpp include/simgrid/s4u/ConditionVariable.hpp include/simgrid/s4u/Engine.hpp + include/simgrid/s4u/Exec.hpp include/simgrid/s4u/Host.hpp include/simgrid/s4u/Link.hpp include/simgrid/s4u/Mailbox.hpp -- 2.20.1