Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Valgrind: ignore more unwind cruft.
[simgrid.git] / examples / README.rst
index 538cc71..7a4d9fd 100644 (file)
@@ -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 <howto_science>`, but you can
+    is a :ref:`better scientific habit <howto_science>`, 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.
 
@@ -141,6 +145,17 @@ Starting and Stoping Actors
 
           See also :cpp:func:`sg_actor_daemonize` and :cpp:func:`sg_actor_is_daemon`.
 
+  - **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)`, 
+    or for a specific actor using :cpp:func:`simgrid::s4u::Actor::set_stacksize` before its start.
+    
+    .. tabs::
+
+       .. example-tab:: examples/s4u/actor-stacksize/s4u-actor-stacksize.cpp
+
+       .. example-tab:: examples/c/actor-stacksize/actor-stacksize.c
+
 Inter-Actors Interactions
 -------------------------
 
@@ -274,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()`.
 
@@ -311,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`.
      
@@ -376,7 +406,17 @@ Executions on the CPU
           :py:func:`simgrid.Exec.get_remaining_ratio()`,
           :py:func:`simgrid.this_actor.exec_async()` and
           :py:func:`simgrid.Activity.cancel()`.
-
+       .. example-tab:: examples/c/exec-async/exec-async.c
+
+          See also :cpp:func:`sg_actor_exec_init()`,
+          :cpp:func:`sg_exec_start()`,
+          :cpp:func:`sg_exec_wait()`,
+          :cpp:func:`sg_exec_get_remaining()`,
+          :cpp:func:`sg_exec_get_remaining_ratio()`,
+          :cpp:func:`sg_actor_exec_async()` and
+          :cpp:func:`sg_exec_cancel()`,
+          
   - **Remote execution:**
     You can start executions on remote hosts, or even change the host
     on which they occur during their execution.
@@ -526,6 +566,13 @@ Interacting with the Platform
          - :cpp:func:`simgrid::s4u::Link::get_property()` and :cpp:func:`simgrid::s4u::Link::set_property()`
          - :cpp:func:`simgrid::s4u::NetZone::get_property()` and :cpp:func:`simgrid::s4u::NetZone::set_property()`
 
+      .. example-tab:: examples/c/platform-properties/platform-properties.c
+
+         - :cpp:func:`sg_actor_get_property()` and :cpp:func:`sg_actor_set_property()`
+         - :cpp:func:`sg_host_get_property()` and :cpp:func:sg_host_set_property()`
+         - :cpp:func:`sg_link_get_property()` and :cpp:func:`sg_link_set_property()`
+         - :cpp:func:`sg_link_get_property()` and :cpp:func:`sg_link_set_property()`
+
       .. group-tab:: XML
 
          **Deployment file:**
@@ -561,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
@@ -645,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::
@@ -699,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
 --------------
@@ -719,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.
 
@@ -772,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
@@ -796,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
 =======================