X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/501244d422766cedb4c44f6a5ea5196586e3eb21..b46a15116e3ab14c03a7aad88cce834b40b90a2b:/examples/README.rst diff --git a/examples/README.rst b/examples/README.rst index 57925db8fd..d1e5482a71 100644 --- a/examples/README.rst +++ b/examples/README.rst @@ -28,12 +28,12 @@ to simulate. Actors: the Active Entities =========================== -Starting and Stoping Actors ---------------------------- +Starting and Stopping Actors +---------------------------- - **Creating actors:** Most actors are started from the deployment XML file, because this - is a :ref:`better scientific habbit `, but you can + is a :ref:`better scientific habit `, but you can also create them directly from your code. .. tabs:: @@ -106,7 +106,7 @@ Starting and Stoping Actors See also :cpp:func:`sg_actor_kill`, :cpp:func:`sg_actor_kill_all`, :cpp:func:`sg_actor_exit`, :cpp:func:`sg_actor_on_exit`. - - **Controling the actor life cycle from the XML:** + - **Controlling the actor life cycle from the XML:** You can specify a start time and a kill time in the deployment file. .. tabs:: @@ -119,7 +119,11 @@ Starting and Stoping Actors This demonstrates the ``start_time`` and ``kill_time`` attribute of the :ref:`pf_tag_actor` tag. - .. example-tab:: examples/c/actor-lifetime/actor-lifetime.c + .. example-tab:: examples/python/actor-lifetime/actor-lifetime.py + + This file is not really interesting: the important matter is in the XML file. + + .. example-tab:: examples/c/actor-lifetime/actor-lifetime.c This file is not really interesting: the important matter is in the XML file. @@ -143,7 +147,7 @@ Starting and Stoping Actors - **Specify the stack size to use** The stack size can be specified by default on the command line, - globally by changing the configuration with :cpp:func:`simgrid::s4u::Engine::set_config(std::string)`, + globally by changing the configuration with :cpp:func:`simgrid::s4u::Engine::set_config`, or for a specific actor using :cpp:func:`simgrid::s4u::Actor::set_stacksize` before its start. .. tabs:: @@ -285,33 +289,48 @@ Communications on the Network .. tabs:: - .. example-tab:: examples/s4u/async-wait/s4u-async-wait.cpp + .. example-tab:: examples/s4u/comm-wait/s4u-comm-wait.cpp See also :cpp:func:`simgrid::s4u::Mailbox::put_async()` and :cpp:func:`simgrid::s4u::Comm::wait()`. - .. example-tab:: examples/python/async-wait/async-wait.py + .. example-tab:: examples/python/comm-wait/comm-wait.py See also :py:func:`simgrid.Mailbox.put_async()` and :py:func:`simgrid.Comm.wait()`. - .. example-tab:: examples/c/async-wait/async-wait.c + .. example-tab:: examples/c/comm-wait/comm-wait.c See also :cpp:func:`sg_mailbox_put_async()` and :cpp:func:`sg_comm__wait()`. + - **Suspending communications:** + The ``suspend()`` and ``resume()`` functions allow to block the + progression of a given communication for a while and then unblock it. + ``is_suspended()`` can be used to retrieve whether the activity is + currently blocked or not. + + .. tabs:: + + .. example-tab:: examples/s4u/comm-suspend/s4u-comm-suspend.cpp + + See also :cpp:func:`simgrid::s4u::Activity::suspend()` + :cpp:func:`simgrid::s4u::Activity::resume()` and + :cpp:func:`simgrid::s4u::Activity::is_suspended()`. + + - **Waiting for all communications in a set:** The ``wait_all()`` function is useful when you want to block until all activities in a given set have completed. .. tabs:: - .. example-tab:: examples/s4u/async-waitall/s4u-async-waitall.cpp + .. example-tab:: examples/s4u/comm-waitall/s4u-comm-waitall.cpp See also :cpp:func:`simgrid::s4u::Comm::wait_all()`. - .. example-tab:: examples/python/async-waitall/async-waitall.py + .. example-tab:: examples/python/comm-waitall/comm-waitall.py See also :py:func:`simgrid.Comm.wait_all()`. - .. example-tab:: examples/c/async-waitall/async-waitall.c + .. example-tab:: examples/c/comm-waitall/comm-waitall.c See also :cpp:func:`sg_comm_wait_all()`. @@ -322,15 +341,15 @@ Communications on the Network .. tabs:: - .. example-tab:: examples/s4u/async-waitany/s4u-async-waitany.cpp + .. example-tab:: examples/s4u/comm-waitany/s4u-comm-waitany.cpp See also :cpp:func:`simgrid::s4u::Comm::wait_any()`. - .. example-tab:: examples/python/async-waitany/async-waitany.py + .. example-tab:: examples/python/comm-waitany/comm-waitany.py See also :py:func:`simgrid.Comm.wait_any()`. - .. example-tab:: examples/c/async-waitany/async-waitany.c + .. example-tab:: examples/c/comm-waitany/comm-waitany.c See also :cpp:func:`sg_comm_wait_any`. @@ -589,6 +608,8 @@ Interacting with the Platform .. example-tab:: examples/s4u/platform-failures/s4u-platform-failures.cpp + .. example-tab:: examples/c/platform-failures/platform-failures.c + .. group-tab:: XML .. showfile:: examples/platforms/small_platform_failures.xml @@ -673,7 +694,7 @@ options to see the task executions: - **Platform Tracing:** This program is a toy example just loading the platform, so that - you can play with the platform visualization. Recommanded options: + you can play with the platform visualization. Recommended options: ``--cfg=tracing:yes --cfg=tracing/categorized:yes`` .. tabs:: @@ -727,6 +748,11 @@ than the previous examples. .. showfile:: examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp :language: cpp + + .. group-tab:: C + + .. showfile:: examples/c/app-masterworker/app-masterworker.c + :language: cpp Data diffusion -------------- @@ -747,6 +773,17 @@ Data diffusion .. showfile:: examples/s4u/app-bittorrent/s4u-tracker.cpp :language: cpp + .. group-tab:: C + + .. showfile:: examples/c/app-bittorrent/app-bittorrent.c + :language: cpp + + .. showfile:: examples/c/app-bittorrent/bittorrent-peer.c + :language: cpp + + .. showfile:: examples/c/app-bittorrent/tracker.c + :language: cpp + - **Chained Send:** Data broadcast over a ring of processes. @@ -800,6 +837,23 @@ Distributed Hash Tables (DHT) .. showfile:: examples/s4u/dht-kademlia/node.cpp :language: cpp + .. group-tab:: C + + .. showfile:: examples/c/dht-kademlia/dht-kademlia.c + :language: cpp + + .. showfile:: examples/c/dht-kademlia/routing_table.c + :language: cpp + + .. showfile:: examples/c/dht-kademlia/answer.c + :language: cpp + + .. showfile:: examples/c/dht-kademlia/message.c + :language: cpp + + .. showfile:: examples/c/dht-kademlia/node.c + :language: cpp + .. _s4u_ex_clouds: Simulating Clouds @@ -824,6 +878,58 @@ Simulating Clouds .. example-tab:: examples/c/cloud-migration/cloud-migration.c +======================= +Model-Related Examples +======================= + + - **ns-3 as a SimGrid Network Model** + This simple ping-pong example demonstrates how to use the bindings to the Network + Simulator. The most interesting is probably not the C++ files since + they are unchanged from the other simulations, but the associated files, + such as the platform file to see how to declare a platform to be used + with the ns-3 bindings of SimGrid and the tesh file to see how to actually + start a simulation in these settings. + + .. tabs:: + + .. example-tab:: examples/s4u/network-ns3/s4u-network-ns3.cpp + + .. group-tab:: XML + + **Platform files:** + + .. showfile:: examples/platforms/small_platform_one_link_routes.xml + :language: xml + + - **wifi links** + + This demonstrates how to declare a wifi link in your platform and + how to use it in your simulation. The basics is to have a link + which sharing policy is set to `WIFI`. Such links can have more + than one bandwidth value (separated by commas), corresponding to + the several SNR level of your wifi link. + + In this case, SimGrid automatically switches to validated + performance models of wifi networks, where the time is shared + between users instead of the bandwidth for wired links (the + corresponding publication is currently being written). + + If your wifi link provides more than one SNR level, you can switch + the level of a given host using + :cpp:func:`simgrid::s4u::Link::set_host_wifi_rate`. By default, + the first level is used. + + .. tabs:: + + .. example-tab:: examples/s4u/network-wifi/s4u-network-wifi.cpp + + .. group-tab:: XML + + **Platform files:** + + .. showfile:: examples/platforms/wifi.xml + :language: xml + ======================= Model-Checking Examples =======================