X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8de7a90b044d2c8cf008e498f533cd7131c9f106..1ff90bc7103df77877d6860f1f117425afe1a516:/examples/msg/README.doc diff --git a/examples/msg/README.doc b/examples/msg/README.doc deleted file mode 100644 index 5b6e08991a..0000000000 --- a/examples/msg/README.doc +++ /dev/null @@ -1,310 +0,0 @@ -This file follows the Doxygen syntax to be included in the -documentation, but it should remain readable directly. - -/** - @defgroup MSG_examples MSG examples - @ingroup MSG_API - @brief Find the MSG example fitting your needs from the extensive set provided in the archive. - - - @ref msg_ex_basics - - @ref msg_ex_async - - @ref msg_ex_process - - @ref msg_ex_tracing - - @ref msg_ex_tracing_user_variables - - @ref msg_ex_models - - @ref msg_ex_ns3 - - @ref msg_ex_io - - @ref msg_ex_actions - - @ref msg_ex_apps - - @ref msg_ex_misc - -@section msg_ex_basics Basic examples and features - - - Ping Pong: @ref examples/msg/app-pingpong/app-pingpong.c\n - It's hard to think of a simpler example: it is just sending one - message back and forth. - The tesh file laying in the directory show how to start the - simulator binary, enlighting how to pass options to the simulators - (as detailed in Section \ref options). - - - Token Ring. - @ref examples/msg/app-token-ring/app-token-ring.c\n - Classical communication pattern, where a token is exchanged - along a ring to reach every participant. - The tesh file laying in the directory shows how to run the same - example on different virtual platforms. - - - Master Workers. - @ref examples/msg/app-masterworker/app-masterworker.c\n - Another good old example, where one Master process has a bunch of - task to dispatch to a set of several Worker processes. It is fully - commented in @ref MSG_ex_master_worker. - -@section msg_ex_async Asynchronous communications - -In addition to the fully documented example of @ref -MSG_ex_asynchronous_communications, there are several other examples -shipped in the archive: - - - Basic asynchronous communications. - @ref examples/msg/async-wait/async-wait.c \n - 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 @ref MSG_task_isend, @ref MSG_task_irecv, and @ref - MSG_comm_wait. - - - Waiting for all communications in a set. - @ref examples/msg/async-waitall/async-waitall.c\n - The @ref MSG_comm_waitall function is useful when you want to block - until all activities in a given set have completed. - - - Waiting for the first completed communication in a set. - @ref examples/msg/async-waitany/async-waitany.c\n - The @ref MSG_comm_waitany function is useful when you want to block - until one activity of the set completes, no matter which terminates - first. - -@section msg_ex_process Acting on Processes - - - Creating processes. - @ref examples/msg/process-create/process-create.c \n - Most processes are started from the deployment XML file, but they - can also be used with the @ref MSG_process_create() function. - - - Suspend and Resume processes. - @ref examples/msg/process-suspend/process-suspend.c \n - Processes can be suspended and resumed during their executions - thanks to the @ref MSG_process_suspend and @ref MSG_process_resume functions. - - - Kill processes. - @ref examples/msg/process-kill/process-kill.c \n - Processes can forcefully stop other processes with the @ref MSG_process_kill function. - - - Migrating processes. - @ref examples/msg/process-migration/process-migration.c \n - Processes can move or be moved from a host to another with the @ref MSG_process_migrate function. - - - Controling the process life cycle from the XML. - @ref examples/msg/process-startkilltime/process-startkilltime.c \n - You can specify a start time and a kill time in the deployment - file. See all *_d.xml files in this directory. - -@section msg_ex_tracing Tracing and visualization features - -Tracing can be activated by various configuration options which -are illustrated in these example. See also the -@ref tracing_tracing_options "full list of options related to tracing". - -It is interesting to run the process-create example with the following -options to see the task executions: - - - Platform tracing. - @ref examples/msg/trace-platform/trace-platform.c \n - This program is a toy example just loading the platform, so that - you can play with the platform visualization. Recommanded options: - @verbatim --cfg=tracing:yes --cfg=tracing/categorized:yes - @endverbatim - - - Setting Categories. - @ref examples/msg/trace-categories/trace-categories.c \n - This example declares several tracing categories - to that are used to classify its tasks. When the program is executed, - the tracing mechanism registers the resource utilization of hosts - and links according to these categories. Recommanded options: - @verbatim --cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:viva_cat.plist --cfg=viva/uncategorized:viva_uncat.plist - @endverbatim - - - Master Workers tracing. - @ref examples/msg/trace-masterworker/trace-masterworker.c \n - This is an augmented version of our basic master/worker example - using several tracing features. It traces resource usage, sorted - out in several categories; Trace marks and user variables are also - used. Recommanded options: - @verbatim --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:viva_cat.plist --cfg=viva/uncategorized:viva_uncat.plist - @endverbatim - - - Process migration tracing. - @ref examples/msg/trace-process-migration/trace-process-migration.c \n - This version is enhanced so that the process migrations can be - displayed as arrows in a Gantt-chart visualization. Recommanded - options to that extend: - @verbatim -cfg=tracing:yes --cfg=tracing/msg/process:yes - @endverbatim - -TODO: These tracing examples should be integrated in the examples to -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. - -@subsection msg_ex_tracing_user_variables Tracing user variables - -You can also attach your own variables to a any resource described in -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 - - - Attaching variables to Hosts. - @ref examples/msg/trace-host-user-variables/trace-host-user-variables.c - - - Attaching variables to Links. - @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. - - - Attaching variables to network Routes - @ref examples/msg/trace-route-user-variables/trace-route-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. - -@section msg_ex_models Models-related examples - -@subsection msg_ex_ns3 NS3 as a SimGrid Network Model - -This example demonstrates how to use the bindings to the Network -Simulator, as explained in @ref pls. 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 PLS bindings -of SimGrid and the tesh file to see how to actually start a simulation -in these settings. - - - @ref examples/msg/network-ns3/network-ns3.c. Simple ping-pong using - ns-3 instead of the SimGrid network models. - -TODO: merge the C files - -TODO: show the XML files instead if it's what is interesting. On a "XML example files" page that does not exist yet. - -@subsection msg_ex_io Simulating disks and files - -The examples of this section demonstrate how to interact with the -simulated storages. - - - Basic example. - @ref examples/msg/io-storage/io-storage.c \n - All main storage and file functions are demoed. - - - File Management. @ref examples/msg/io-file/io-file.c \n - This example illustrates the use of operations on file - (@ref MSG_file_open, @ref MSG_file_read, @ref MSG_file_write, - or @ref MSG_file_close). - - - Remote I/O. @ref examples/msg/io-remote/io-remote.c \n - I/O operations can also be done in a remote, i.e. when the - accessed disk is not mounted on the caller's host. - -@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. - - - Communication replay. - @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). - - - I/O replay. - @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 - - - Parallel Matrix Multiplication. - @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. - - - Chord P2P protocol. - @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 - - - Task priorities. - @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. - - - User-defined properties. - @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 -everything until the next */ marker (and the content is placed at the -top of the example file). - - -/** -@example examples/msg/app-pingpong/app-pingpong.c -@example examples/msg/app-token-ring/app-token-ring.c -@example examples/msg/app-masterworker/app-masterworker.c - -@example examples/msg/async-wait/async-wait.c -@example examples/msg/async-waitall/async-waitall.c -@example examples/msg/async-waitany/async-waitany.c - -@example examples/msg/process-create/process-create.c -@example examples/msg/process-suspend/process-suspend.c -@example examples/msg/process-kill/process-kill.c -@example examples/msg/process-migration/process-migration.c -@example examples/msg/process-startkilltime/process-startkilltime.c - -@example examples/msg/trace-platform/trace-platform.c -@example examples/msg/trace-categories/trace-categories.c -@example examples/msg/trace-masterworker/trace-masterworker.c -@example examples/msg/trace-process-migration/trace-process-migration.c -@example examples/msg/trace-host-user-variables/trace-host-user-variables.c -@example examples/msg/trace-link-user-variables/trace-link-user-variables.c -@example examples/msg/trace-route-user-variables/trace-route-user-variables.c - -@example examples/msg/network-ns3/network-ns3.c - -@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/dht-chord.c - -@example examples/msg/task-priority/task-priority.c -@example examples/msg/platform-properties/platform-properties.c - -*/ -