Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
rename tracing example
[simgrid.git] / examples / msg / README.doc
index 61f9559..2ee5df2 100644 (file)
@@ -15,7 +15,7 @@ documentation, but it should remain readable directly.
     - @ref msg_ex_ns3
     - @ref msg_ex_io
   - @ref msg_ex_actions
-  - @ref msg_ex_full_apps
+  - @ref msg_ex_apps
   - @ref msg_ex_misc
                    
 @section msg_ex_basic Basic examples and features
@@ -132,7 +132,7 @@ are illustrated in these example. See also the
     @endverbatim     
 
 TODO: These tracing examples should be integrated in the examples to
-not dupplicate the C files. A full command line to see the result in
+not duplicate the C files. A full command line to see the result in
 the right tool (viva/vite/FrameSoc) should be given along with some
 screenshots.
 
@@ -143,23 +143,21 @@ the platform file. The following examples illustrate this feature.
 They have to be run with the following options:
 @verbatim --cfg=tracing:yes --cfg=tracing/platform:yes
 @endverbatim
+
   - <b>Attaching variables to Hosts</b>.
-    @ref examples/msg/trace-user-variables/trace-user-variables.c 
-  
+    @ref examples/msg/trace-host-user-variables/trace-host-user-variables.c 
+
   - <b>Attaching variables to Links</b>.
     @ref examples/msg/trace-link-user-variables/trace-link-user-variables.c \n
     The tricky part is that you have to know the name of the link you
     want to enhance with a variable.
-    
+
   - <b>Attaching variables to network Routes</b>
     @ref examples/msg/trace-link-srcdst-user-variables/trace-link-srcdst-user-variables.c \n
     It is often easier to update a given variable for all links of a
     given network path (identified by its source and destination
     hosts) instead of knowing the name of each specific link.
 
-TODO: rename trace-user-variables to trace-host-user-variables
-
 TODO: rename trace-link-srcdst-user-variables to trace-route-user-variables
 
 @section msg_ex_models Models-related examples
@@ -199,21 +197,76 @@ simulated storages.
     I/O operations can also be done in a remote, i.e. when the
     accessed disk is not mounted on the caller's host.
 
-  - @ref examples/msg/actions-comm/actions-comm.c \n
-  - @ref examples/msg/actions-storage/actions-storage.c \n
-  - @ref examples/msg/app-pmm/app-pmm.c \n
-  - @ref examples/msg/dht-chord \n
-  - @ref examples/msg/task-priority/task-priority.c \n
-  - @ref examples/msg/properties/properties.c \n
+@section msg_ex_actions Following Workload Traces
+
+This section details how to run trace-driven simulations. It is very
+handy when you want to test an algorithm or protocol that only react
+to external events. For example, many P2P protocols react to user
+requests, but do nothing if there is no such event.
+
+In such situations, you should write your protocol in C, and separate
+the workload that you want to play onto your protocol in a separate
+text file. Declare a function handling each type of the events in your
+trace, register them using @ref xbt_replay_action_register in your
+main, and then use @ref MSG_action_trace_run to launch the simulation.
+
+Then, you can either have one trace file containing all your events,
+or a file per simulated process: the former may be easier to work
+with, but the second is more efficient on very large traces. Check
+also the tesh files in the example directories for details.
 
+  - <b>Communication replay</b>.
+    @ref examples/msg/actions-comm/actions-comm.c \n
+    Presents a set of event handlers reproducing classical communication
+    primitives (synchronous and asynchronous send/receive, broadcast,
+    barrier, etc).
+
+  - <b>I/O replay</b>.
+    @ref examples/msg/actions-storage/actions-storage.c \n
+    Presents a set of event handlers reproducing classical I/O
+    primitives (open, read, write, close, etc).
+
+@section msg_ex_apps Examples of Full Applications
+  - <b>Parallel Matrix Multiplication</b>.
+    @ref examples/msg/app-pmm/app-pmm.c \n
+    This little application multiplies two matrices in parallel. Each
+    of the 9 processes computes a sub-block of the result, with the
+    sub-blocks of the input matrices exchanged between the processes. \n
+    This is a classical assignment in MPI lectures, here implemented
+    in MSG.
+
+  - <b>Chord P2P protocol</b>.
+    @ref examples/msg/dht-chord/dht-chord.c \n
+    This example implements the well known Chord protocol,
+    constituting a fully working non-trivial example. This 
+    implementation is also very efficient, as demonstrated in 
+    http://hal.inria.fr/inria-00602216/
+
+@section msg_ex_misc Miscellaneous
+
+ - <b>Task priorities</b>.
+   @ref examples/msg/task-priority/task-priority.c \n
+   Demonstrates the use of @ref MSG_task_set_priority to change the
+   computation priority of  a given task.
+
+ - <b>User-defined properties</b>.
+   @ref examples/msg/platform-properties/platform-properties.c \n
+   Attaching arbitrary information to host, processes and
+   such, and retrieving them with @ref MSG_host_get_properties,
+   @ref MSG_host_get_property_value, @ref MSG_process_get_properties, and 
+   @ref MSG_process_get_property_value. Also make sure to read the
+   platform and deployment XML files to see how to declare these data.
+TODO: Document the many other examples that we have 
 */
 
 As a human, you can stop reading at this point. The rest is garbage:
 
 Every example must be listed in the following, but it's not possible
-to move this content upper as each @example directive seems to eat the
-next doxygen commands (and the content is placed at the top of the
-example file). 
+to move this content upper as each @example directive seems to eat
+everything until the next */ marker (and the content is placed at the
+top of the example file). 
 
 
 /**
@@ -245,66 +298,15 @@ example file).
 @example examples/msg/io-storage/io-storage.c
 @example examples/msg/io-file/io-file.c
 @example examples/msg/io-remote/io-remote.c
+
 @example examples/msg/actions-comm/actions-comm.c
 @example examples/msg/actions-storage/actions-storage.c
+
 @example examples/msg/app-pmm/app-pmm.c
 @example examples/msg/dht-chord
+
 @example examples/msg/task-priority/task-priority.c
 @example examples/msg/properties/properties.c
                         
 */
 
-Basic examples and features
-===========================
-
- * properties/msg_prop.c Attaching arbitrary information to host,
-   processes and such, and retrieving them with
-   MSG_host_get_properties(), MSG_host_get_property_value(),
-   MSG_process_get_properties() and MSG_process_get_property_value().
-   Also make sure to read the platform and deployment XML files to see
-   how to declare these data.
-
- * parallel_task/parallel_task.c: Demonstrates the use of
-   MSG_parallel_task_create(), to create special tasks that run on
-   several hosts at the same time. The resulting simulations are very
-   close to what can be achieved in SimDag, but still allows to use
-   the other features of MSG (it'd be cool to be able to mix
-   interfaces, but it's not possible ATM).
-
- * priority/priority.c: Demonstrates the use of
-   MSG_task_set_priority() to change the computation priority of a
-   given task.
-
-Trace driven simulations
-========================
-
-The actions/actions.c example demonstrates how to run trace-driven
-simulations. It is very handy when you want to test an algorithm or
-protocol that does nothing unless it receives some events from
-outside. For example, a P2P protocol reacts to requests from the user,
-but does nothing if there is no such event.
-
-In such situations, SimGrid allows to write your protocol in your C
-file, and the events to react to in a separate text file. Declare a
-function handling each of the events that you want to accept in your
-trace files, register them using MSG_action_register in your main, and
-then use MSG_action_trace_run to launch the simulation. You can either
-have one trace file containing all your events, or a file per
-simulated process. Check the tesh files in the example directory for
-details on how to do it.
-
-This example uses this approach to replay MPI-like traces. It comes
-with a set of event handlers reproducing MPI events. This is somehow
-similar to SMPI, yet differently implemented. This code should
-probably be changed to use SMPI internals instead, but wasn't, so far.
-
-Examples of full applications
-=============================
-
- * chord/chord.c: Classical Chord P2P protocol This example implements
-   the well known Chord P2P protocol. Its main advantage is that it
-   constitute a fully working non-trivial example. In addition, its
-   implementation is rather efficient, as demonstrated in
-   [57]http://hal.inria.fr/inria-00602216/
-
-