X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d206cd555889b5f3e58d072e8f912ad74f6031da..cbc2112805562213866f62f194adb0a443d9cc99:/examples/s4u/README.rst?ds=sidebyside diff --git a/examples/s4u/README.rst b/examples/s4u/README.rst index 8c6c87b559..e949f9fb8e 100644 --- a/examples/s4u/README.rst +++ b/examples/s4u/README.rst @@ -38,14 +38,31 @@ Starting and Stoping Actors - **Creating actors:** Most actors are started from the deployment XML file, but there is other methods. This example show them all. - |br| |cpp| `examples/s4u/actor-create/s4u-actor-create.cpp `_ - |br| |py| `examples/python/actor-create/actor-create.py `_ + `examples/python/actor-create/actor-create_d.xml `_ + - |cpp| `examples/s4u/actor-create/s4u-actor-create.cpp `_ + - |py| `examples/python/actor-create/actor-create.py `_ + + - **React to the end of actors:** + You can attach a callback to the end of actors. There is two ways + of doing so, depending of whether you want your callback to be + executed when a specific actor ends (with ```this_actor::on_exit()```) + or whether it should be executed when any actor ends (with + ```Actor::on_destruction()```) + + - |cpp| `examples/s4u/actor-exiting/s4u-actor-exiting.cpp `_ + - **Kill actors:** - Actors can forcefully stop other actors with the - :cpp:func:`void simgrid::s4u::Actor::kill(void)` or the - :cpp:func:`void simgrid::s4u::Actor::kill(aid_t)` methods. - |br| `examples/s4u/actor-kill/s4u-actor-kill.cpp `_ + Actors can forcefully stop other actors. + + - |cpp| `examples/s4u/actor-kill/s4u-actor-kill.cpp `_ + :cpp:func:`void simgrid::s4u::Actor::kill(void)`, + :cpp:func:`void simgrid::s4u::Actor::kill_all()`, + :cpp:func:`simgrid::s4u::this_actor::exit`. + - |py| `examples/python/actor-kill/actor-kill.py `_ + :py:func:`simgrid.Actor.kill`, + :py:func:`simgrid.Actor.kill_all`, + :py:func:`simgrid.this_actor.exit`. - **Controling the actor life cycle from the XML:** You can specify a start time and a kill time in the deployment @@ -56,39 +73,48 @@ Starting and Stoping Actors - **Daemonize actors:** Some actors may be intended to simulate daemons that run in background. This example show how to transform a regular actor into a daemon that will be automatically killed once the simulation is over. - |br| `examples/s4u/actor-daemon/s4u-actor-daemon.cpp `_ + + - |cpp| `examples/s4u/actor-daemon/s4u-actor-daemon.cpp `_ + - |py| `examples/python/actor-daemon/actor-daemon.py `_ Inter-Actors Interactions ------------------------- - **Suspend and Resume actors:** - Actors can be suspended and resumed during their executions thanks - to :cpp:func:`simgrid::s4u::Actor::suspend()` and - :cpp:func:`simgrid::s4u::Actor::resume()`. - |br| `examples/s4u/actor-suspend/s4u-actor-suspend.cpp `_ + Actors can be suspended and resumed during their executions. + + - |cpp| `examples/s4u/actor-suspend/s4u-actor-suspend.cpp `_ + :cpp:func:`simgrid::s4u::this_actor::suspend()`, + :cpp:func:`simgrid::s4u::Actor::suspend()`, :cpp:func:`simgrid::s4u::Actor::resume()`, :cpp:func:`simgrid::s4u::Actor::is_suspended()`. + - |py| `examples/python/actor-suspend/actor-suspend.py `_ + :py:func:`simgrid.this_actor.suspend()`, + :py:func:`simgrid.Actor.suspend()`, :py:func:`simgrid.Actor.resume()`, :py:func:`simgrid.Actor.is_suspended()`. - **Migrating Actors:** Actors can move or be moved from a host to another very easily. - |br| |cpp| `examples/s4u/actor-migrate/s4u-actor-migrate.cpp `_ - :cpp:func:`simgrid::s4u::this_actor::migrate()` |cpp| - |br| |py| `examples/python/actor-migrate/actor-migrate.py `_ - :py:func:`simgrid.this_actor.migrate()` |py| + + - |cpp| `examples/s4u/actor-migrate/s4u-actor-migrate.cpp `_ + :cpp:func:`simgrid::s4u::this_actor::migrate()` + - |py| `examples/python/actor-migrate/actor-migrate.py `_ + :py:func:`simgrid.this_actor.migrate()` - **Waiting for the termination of an actor:** (joining on it) You can block the current actor until the end of another actor. - |br| |cpp| `examples/s4u/actor-join/s4u-actor-join.cpp `_ - :cpp:func:`simgrid::s4u::Actor::join()` |cpp| - |br| |py| `examples/python/actor-join/actor-join.py `_ - :py:func:`simgrid.Actor.join()` |py| + + - |cpp| `examples/s4u/actor-join/s4u-actor-join.cpp `_ + :cpp:func:`simgrid::s4u::Actor::join()` + - |py| `examples/python/actor-join/actor-join.py `_ + :py:func:`simgrid.Actor.join()` - **Yielding to other actors**. The ```yield()``` function interrupts the execution of the current actor, leaving a chance to the other actors that are ready to run - at this timestamp. - |br| |cpp| `examples/s4u/actor-yield/s4u-actor-yield.cpp `_ - :cpp:func:`simgrid::s4u::this_actor::yield()` |cpp| - |br| |py| `examples/python/actor-yield/actor-yield.py `_ - :py:func:`simgrid.this_actor.yield_()` |py| + at this timestamp. + + - |cpp| `examples/s4u/actor-yield/s4u-actor-yield.cpp `_ + :cpp:func:`simgrid::s4u::this_actor::yield()` + - |py| `examples/python/actor-yield/actor-yield.py `_ + :py:func:`simgrid.this_actor.yield_()` Traces Replay as a Workload --------------------------- @@ -129,10 +155,12 @@ Communications on the Network - **Basic asynchronous communications:** Illustrates how to have non-blocking communications, that are communications running in the background leaving the process free - to do something else during their completion. The main functions - involved are :cpp:func:`simgrid::s4u::Mailbox::put_async()` and - :cpp:func:`simgrid::s4u::Comm::wait()`. - |br| `examples/s4u/async-wait/s4u-async-wait.cpp `_ + to do something else during their completion. + + - |cpp| `examples/s4u/async-wait/s4u-async-wait.cpp `_ + :cpp:func:`simgrid::s4u::Mailbox::put_async()` and :cpp:func:`simgrid::s4u::Comm::wait()` + - |py| `examples/python/async-wait/async-wait.py `_ + :py:func:`simgrid.Mailbox.put_async()` :py:func:`simgrid.Comm.wait()` - **Waiting for all communications in a set:** The :cpp:func:`simgrid::s4u::Comm::wait_all()` function is useful @@ -146,7 +174,7 @@ Communications on the Network matter which terminates first. |br| `examples/s4u/async-waitany/s4u-async-waitany.cpp `_ -.. todo:: add the `ready` example here +.. todo:: review the `ready` and `waituntil` examples and add them here. .. _s4u_ex_execution: @@ -159,8 +187,9 @@ Executions on the CPU the actor until a given amount of flops gets computed on its simulated host. Some executions can be given an higher priority so that they get more resources. - |br| |cpp| `examples/s4u/exec-basic/s4u-exec-basic.cpp `_ - |br| |py| `examples/python/exec-basic/exec-basic.py `_ + + - |cpp| `examples/s4u/exec-basic/s4u-exec-basic.cpp `_ + - |py| `examples/python/exec-basic/exec-basic.py `_ - **Asynchronous execution:** You can start asynchronous executions, just like you would fire @@ -254,6 +283,19 @@ Interacting with the Platform |br| `examples/s4u/platform-properties/s4u-platform-properties_d.xml `_ |br| `examples/platforms/prop.xml `_ + - **Specifying state profiles:** shows how to specify when the + resources must be turned off and on again, and how to react to such + failures in your code. + + |br| `examples/platforms/small_platform_with_failure.xml `_ + |br| The state profiles in `examples/platforms/profiles `_ + + - **Specifying speed profiles:** shows how to specify an external + load to resources, variating their peak speed over time. + + |br| `examples/platforms/small_platform_profile.xml `_ + |br| The speed, bandwidth and latency profiles in `examples/platforms/profiles `_ + ================= Energy Simulation =================