X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/716d24e108b1b69a9241edfe8ccf0e52be8ad945..c17e2d0a40dd44817f3c8d5da7d72f4ef8f1e3c8:/examples/s4u/README.rst diff --git a/examples/s4u/README.rst b/examples/s4u/README.rst index e8378dc52a..5adf1d329c 100644 --- a/examples/s4u/README.rst +++ b/examples/s4u/README.rst @@ -80,6 +80,10 @@ Starting and Stoping Actors Inter-Actors Interactions ------------------------- +See also the examples on :ref:`inter-actors communications +` and the ones on :ref:`classical +synchronization objects `. + - **Suspend and Resume actors:** Actors can be suspended and resumed during their executions. @@ -149,30 +153,41 @@ also the tesh files in the example directories for details. Activities: what Actors do ========================== +.. _s4u_ex_communication: + 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 - when you want to block until all activities in a given set have - completed. - |br| `examples/s4u/async-waitall/s4u-async-waitall.cpp `_ + The `wait_all()` function is useful when you want to block until + all activities in a given set have completed. + + - |cpp| `examples/s4u/async-waitall/s4u-async-waitall.cpp `_ + :cpp:func:`simgrid::s4u::Comm::wait_all()` + - |py| `examples/python/async-waitall/async-waitall.py `_ + :py:func:`simgrid.Comm.wait_all()` - **Waiting for the first completed communication in a set:** - The :cpp:func:`simgrid::s4u::Comm::wait_any()` function is useful + The `wait_any()` function is useful when you want to block until one activity of the set completes, no - matter which terminates first. - |br| `examples/s4u/async-waitany/s4u-async-waitany.cpp `_ - -.. todo:: add the `ready` example here + matter which terminates first. + + - |cpp| `examples/s4u/async-waitany/s4u-async-waitany.cpp `_ + :cpp:func:`simgrid::s4u::Comm::wait_any()` + - |py| `examples/python/async-waitany/async-waitany.py `_ + :py:func:`simgrid.Comm.wait_any()` + +.. todo:: review the `ready` and `waituntil` examples and add them here. .. _s4u_ex_execution: @@ -192,28 +207,33 @@ Executions on the CPU - **Asynchronous execution:** You can start asynchronous executions, just like you would fire background threads. - |br| `examples/s4u/exec-async/s4u-exec-async.cpp `_ - - **Monitoring asynchronous executions:** - This example shows how to start an asynchronous execution, and - monitor its status. - |br| `examples/s4u/exec-monitor/s4u-exec-monitor.cpp `_ + - |cpp| `examples/s4u/exec-async/s4u-exec-async.cpp `_ + - |py| `examples/python/exec-async/exec-async.py `_ - **Remote execution:** - Before its start, you can change the host on which a given execution will occur. - |br| `examples/s4u/exec-remote/s4u-exec-remote.cpp `_ - - - **Using Pstates on a host:** - Shows how define a set of pstatesfor a host in the XML, and how the current - pstate can be accessed/changed with :cpp:func:`simgrid::s4u::Host::get_pstate_speed` and :cpp:func:`simgrid::s4u::Host::set_pstate`. - |br| `examples/s4u/exec-dvfs/s4u-exec-dvfs.cpp `_ - |br| `examples/platforms/energy_platform.xml `_ + You can start executions on remote hosts, or even change the host + on which they occur during their execution. + + - |cpp| `examples/s4u/exec-remote/s4u-exec-remote.cpp `_ + - |py| `examples/python/exec-remote/exec-remote.py `_ - **Parallel executions:** These objects are convenient abstractions of parallel computational kernels that span over several machines, such as a - PDGEM and the other ScaLAPACK routines. + PDGEM and the other ScaLAPACK routines. Note that this only works + with the "ptask_L07" host model (``--cfg=host/model:ptask_L07``). |br| `examples/s4u/exec-ptask/s4u-exec-ptask.cpp `_ + + - **Using Pstates on a host:** + `examples/platforms/energy_platform.xml `_ + shows how define a set of pstates in the XML. The current pstate + of an host can then be accessed and changed from the program. + + - |cpp| `examples/s4u/exec-dvfs/s4u-exec-dvfs.cpp `_ + :cpp:func:`simgrid::s4u::Host::get_pstate_speed` and :cpp:func:`simgrid::s4u::Host::set_pstate`. + - |py| `examples/python/exec-dvfs/exec-dvfs.py `_ + :py:func:`Host.get_pstate_speed` and :py:func:`Host.set_pstate`. I/O on Disks and Files ---------------------- @@ -242,6 +262,8 @@ result in short reads and short write, as in reality. i.e. when the accessed disk is not mounted on the caller's host. |br| `examples/s4u/io-file-remote/s4u-io-file-remote.cpp `_ +.. _s4u_ex_IPC: + Classical synchronization objects --------------------------------- @@ -286,13 +308,13 @@ Interacting with the Platform failures in your code. |br| `examples/platforms/small_platform_with_failure.xml `_ - |br| The state profiles in `examples/platforms/trace `_ + |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/trace `_ + |br| The speed, bandwidth and latency profiles in `examples/platforms/profiles `_ ================= Energy Simulation @@ -386,6 +408,23 @@ Distributed Hash Tables (DHT) .. TODO:: document here the examples about plugins +======================= +Model-Checking Examples +======================= + +The model-checker can be used to exhaustively search for issues in the +tested application. It must be activated at compile time, but this +mode is rather experimental in SimGrid (as of v3.22). You should not +enable it unless you really want to formally verify your applications: +SimGrid is slower and maybe less robust when MC is enabled. + + - **Failing assert** + In this example, two actors send some data to a central server, + which asserts that the messages are always received in the same order. + This is obviously wrong, and the model-checker correctly finds a + counter-example to that assertion. + |br| `examples/s4u/mc-failing-assert/s4u-mc-failing-assert.cpp `_ + .. |br| raw:: html