Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
I'm glad this documentation is out of date. At least :)
[simgrid.git] / doc / doxygen / platform.doc
index 3b88012..9dcf506 100644 (file)
@@ -1,4 +1,4 @@
-/*! \page platform Step 1: %Model the underlying platform
+/*! \page platform %Model the underlying platform
 
 @tableofcontents
 
@@ -9,14 +9,14 @@ process: Which process should be deployed to which processor/core?
 
 For the last two items, there are essentially two possible ways you can provide
 this information as an input:
-\li You can program it, either by using the Lua console (
-    \ref MSG_Lua_funct) or, if you're using MSG, some of MSG's platform and
+\li You can program, if you're using MSG, some of MSG's platform and
     deployment functions (\ref msg_simulation). If you want to use this,
     check the particular documentation. (You can also check the section
     \ref pf_flexml_bypassing, however, this documentation is deprecated;
     there is a new, but undocumented, way to do it properly).
 \li You can use two XML files: one contains the platform description while
-    the other contains the deployment instructions.
+    the other contains the deployment instructions. The platform description
+    can also be in Lua format.
 
 For more information on SimGrid's deployment features, please refer to
 the \ref deployment documentation.
@@ -35,10 +35,10 @@ available and very well tested.
 
 The XML checking is done based on the Document Type Definition (DTD) file,
 available at
-<a href="http://simgrid.gforge.inria.fr/simgrid.dtd">http://simgrid.gforge.inria.fr/simgrid.dtd</a>.
+<a href="http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd</a>.
 
 If you read the DTD, you should notice the following:
-\li The platform tags contain a version attribute; the current version is 3.
+\li The platform tags contain a version attribute; the current version is 4.
     This property might be used in the future to provide backwards
     compatibility.
 \li The DTD contains definitions for the two files used by SimGrid (i.e.,
@@ -145,14 +145,14 @@ routing         | yes       | Full\| Floyd\| Dijkstra\| DijkstraCache\| None\| V
 
 
 <b>Example:</b>
-\verbatim
+\code
 <AS id="AS0" routing="Full">
    <host id="host1" power="1000000000"/>
    <host id="host2" power="1000000000"/>
    <link id="link1" bandwidth="125000000" latency="0.000100"/>
    <route src="host1" dst="host2"><link_ctn id="link1"/></route>
 </AS>
-\endverbatim
+\endcode
 
 In this example, AS0 contains two hosts (host1 and host2). The route
 between the hosts goes through link1.
@@ -206,8 +206,8 @@ and a separate text file whose syntax is exemplified below.
 #### Adding a trace file ####
 
 \verbatim
-<platform version="1">
-  <host id="bob" power="500000000" availability_file="bob.trace" />
+<platform version="4">
+  <host id="bob" power="500Gf" availability_file="bob.trace" />
 </platform>
 \endverbatim
 
@@ -241,8 +241,8 @@ It is also possible to specify whether the host is up or down by setting the
 #### Example: Expliciting the default value "ON" ####
 
 \verbatim
-<platform version="1">
-   <host id="bob" power="500000000" state="ON" />
+<platform version="4">
+   <host id="bob" power="500Gf" state="ON" />
 </platform>
 \endverbatim
 
@@ -259,8 +259,8 @@ of such a file is presented below.
 #### Adding a state file ####
 
 \verbatim
-<platform version="1">
-  <host id="bob" power="500000000" state_file="bob.fail" />
+<platform version="4">
+  <host id="bob" power="500Gf" state_file="bob.fail" />
 </platform>
 \endverbatim
 
@@ -339,12 +339,13 @@ sharing_policy  | no        | string | Sharing policy for the links between node
 bb_bw           | no        | int    | Bandwidth for backbone (if any). See <b>link</b> section for syntax/details. If bb_bw and bb_lat (see below) attributes are omitted, no backbone is created (alternative cluster architecture <b>described before</b>).
 bb_lat          | no        | int    | Latency for backbone (if any). See <b>link</b> section for syntax/details. If bb_lat and bb_bw (see above) attributes are omitted, no backbone is created (alternative cluster architecture <b>described before</b>).
 bb_sharing_policy | no      | string | Sharing policy for the backbone (if any). See <b>link</b> section for syntax/details.
+limiter_link      | no        | int    | Bandwidth for limiter link (if any). This adds a specific link for each node, to set the maximum bandwidth reached when communicating in both directions at the same time. In theory this value should be 2*bw for fullduplex links, but in reality this might be less. This value will depend heavily on the communication model, and on the cluster's hardware, so no default value can be set, this has to be measured. More details can be obtained in <a href="https://hal.inria.fr/hal-00919507/"> "Toward Better Simulation of MPI Applications on Ethernet/TCP Networks"</a>
 availability_file | no      | string | Allows you to use a file as input for availability. Similar to <b>hosts</b> attribute.
 state_file        | no      | string | Allows you to use a file as input for states.  Similar to <b>hosts</b> attribute.
 loopback_bw       | no      | int    | Bandwidth for loopback (if any). See <b>link</b> section for syntax/details. If loopback_bw and loopback_lat (see below) attributes are omitted, no loopback link is created and all intra-node communication will use the main network link of the node. Loopback link is a \ref pf_sharing_policy_fatpipe "\b FATPIPE".
 loopback_lat      | no      | int    | Latency for loopback (if any). See <b>link</b> section for syntax/details. See loopback_bw for more info.
 topology          | no      | FLAT\|TORUS\|FAT_TREE (default: FLAT) | Network topology to use. SimGrid currently supports FLAT (with or without backbone, as described before), <a href="http://en.wikipedia.org/wiki/Torus_interconnect">TORUS </a> and FAT_TREE attributes for this tag.
-topo_parameters   | no      | string | Specific parameters to pass for the topology defined in the topology tag. For torus networks, comma-separated list of the number of nodes in each dimension of the torus. For fat trees, refer to \ref AsClusterFatTree "AsClusterFatTree documentation".
+topo_parameters   | no      | string | Specific parameters to pass for the topology defined in the topology tag. For torus networks, comma-separated list of the number of nodes in each dimension of the torus. For fat trees, refer to \ref simgrid::surf::AsClusterFatTree "AsClusterFatTree documentation".
 
 TODO
 
@@ -523,7 +524,7 @@ for routing algorithms. So, it does not have any attributes except :
 Attribute name  | Mandatory | Values | Description
 --------------- | --------- | ------ | -----------
 id              | yes       | string | The identifier of the router to be used when referring to it.
-coordinates     | yes       | string | Must be provided when choosing the Vivaldi, coordinate-based routing model for the AS the router belongs to. More details can be found in the Section \ref pf_P2P_tags.
+coordinates     | no        | string | Must be provided when choosing the Vivaldi, coordinate-based routing model for the AS the router belongs to. More details can be found in the Section \ref pf_P2P_tags.
 
 #### Example ####
 
@@ -715,8 +716,8 @@ The storage facilities implemented in SimGrid help to model (and account for)
 storage devices, such as tapes, hard-drives, CD or DVD devices etc. 
 A typical situation is depicted in the figure below:
 
-\image html ./images/storage_sample_scenario.png
-\image latex ./images/storage_sample_scenario.png "storage_sample_scenario" width=\textwidth
+\image html ./webcruft/storage_sample_scenario.png
+\image latex ./webcruft/storage_sample_scenario.png "storage_sample_scenario" width=\textwidth
 
 In this figure, two hosts called Bob and Alice are interconnected via a network
 and each host is physically attached to a disk; it is not only possible for each host to
@@ -1304,7 +1305,7 @@ can only occur as a child of \ref pf_routing_tag_route "&lt;route/&gt;"
 
 #### Example Files ####
 
-This is an automatically generated list of example files that use the \c &lt;link_ctn/gt;
+This is an automatically generated list of example files that use the \c &lt;link_ctn/&gt;
 entity (the path is given relative to SimGrid's source directory):
 
 \verbinclude example_filelist_xmltag_linkctn
@@ -1560,7 +1561,7 @@ Tag name        | Description | Documentation
 \verbatim
 <?xml version='1.0'?>
 <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
+<platform version="4">
 <config id="General">
        <prop id="maxmin/precision" value="0.000010"></prop>
        <prop id="cpu/optim" value="TI"></prop>
@@ -1607,7 +1608,7 @@ each of them will then be usable.
 \verbatim
 <?xml version='1.0'?>
 <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
+<platform version="4">
        <AS id="main" routing="Full">
                <include file="clusterA.xml"></include>
                <include file="clusterB.xml"></include>
@@ -1709,8 +1710,7 @@ non-intuitive schema ... Something like that :
 <ASroute src="cl_4_1"
        dst="cl_4_2"
        gw_src="c_4_1-cl_4_1_router"
-       gw_dst="c_4_2-cl_4_2_router"
-       symmetrical="YES">
+       gw_dst="c_4_2-cl_4_2_router">
                <link_ctn id="4_1"/>
                <link_ctn id="bb_4"/>
                <link_ctn id="4_2"/>
@@ -1718,16 +1718,14 @@ non-intuitive schema ... Something like that :
 <ASroute src="cl_4_1"
        dst="exitAS_4"
        gw_src="c_4_1-cl_4_1_router"
-       gw_dst="router_4"
-       symmetrical="YES">
+       gw_dst="router_4">
                <link_ctn id="4_1"/>
                <link_ctn id="bb_4"/>
 </ASroute>
 <ASroute src="cl_4_2"
        dst="exitAS_4"
        gw_src="c_4_2-cl_4_2_router"
-       gw_dst="router_4"
-       symmetrical="YES">
+       gw_dst="router_4">
                <link_ctn id="4_2"/>
                <link_ctn id="bb_4"/>
 </ASroute>
@@ -1753,16 +1751,16 @@ complicated in using it, here is an example of it:
 \verbatim
 <?xml version='1.0'?>
 <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
+<platform version="4">
 
 <config id="General">
        <prop id="network/coordinates" value="yes"></prop>
 </config>
  <AS  id="AS0"  routing="Vivaldi">
-       <host id="100030591" coordinates="25.5 9.4 1.4" power="1500000000.0" />
-       <host id="100036570" coordinates="-12.7 -9.9 2.1" power="730000000.0" />
+       <host id="100030591" coordinates="25.5 9.4 1.4" power="1.5Gf" />
+       <host id="100036570" coordinates="-12.7 -9.9 2.1" power="7.3Gf" />
        ...
-       <host id="100429957" coordinates="17.5 6.7 18.8" power="830000000.0" />
+       <host id="100429957" coordinates="17.5 6.7 18.8" power="8.3Gf" />
        </AS>
 </platform>
 \endverbatim
@@ -1776,7 +1774,7 @@ That is for example what is commonly done when using peers (see Section \ref pf_
 \verbatim
 <?xml version='1.0'?>
 <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
+<platform version="4">
 
 <config id="General">
        <prop id="network/coordinates" value="yes"></prop>
@@ -1822,7 +1820,7 @@ characteristics (lookup : time to resolve a route):
 \li <b>Cluster</b>: Cluster routing, specific to cluster tag, should
     not be used.
 
-\subsection pf_switch Hey, I want to describe a switch but there is no switch tag !
+\subsection pf_switch I want to describe a switch but there is no switch tag !
 
 Actually we did not include switch tag, ok. But when you're trying to
 simulate a switch, the only major impact it has when you're using
@@ -1863,7 +1861,7 @@ id="3"/&gt;&lt;/route&gt;), without trying to build new routes by aggregating
 the provided ones.
 
 You are also free to declare platform where the routing is not
-symmetric. For example, add the following to the previous file:
+symmetrical. For example, add the following to the previous file:
 
 \verbatim
 <route src="C" dst="A">
@@ -1878,89 +1876,4 @@ we've seen ways more weird situation in real settings (in fact, that's
 the realism of very regular platforms which is questionable, but
 that's another story).
 
-\section pf_flexml_bypassing Bypassing the XML parser with your own C functions
-<b>NOTE THAT THIS DOCUMENTATION, WHILE STILL WORKING, IS STRONGLY DEPRECATED</b>
-
-So you want to bypass the XML files parser, uh? Maybe doing some parameter
-sweep experiments on your simulations or so? This is possible, and
-it's not even really difficult (well. Such a brutal idea could be
-harder to implement). Here is how it goes.
-
-For this, you have to first remember that the XML parsing in SimGrid is done
-using a tool called FleXML. Given a DTD, this gives a flex-based parser. If
-you want to bypass the parser, you need to provide some code mimicking what
-it does and replacing it in its interactions with the SURF code. So, let's
-have a look at these interactions.
-
-FleXML parser are close to classical SAX parsers. It means that a
-well-formed SimGrid platform XML file might result in the following
-"events":
-
-  - start "platform_description" with attribute version="2"
-  - start "host" with attributes id="host1" power="1.0"
-  - end "host"
-  - start "host" with attributes id="host2" power="2.0"
-  - end "host"
-  - start "link" with ...
-  - end "link"
-  - start "route" with ...
-  - start "link_ctn" with ...
-  - end "link_ctn"
-  - end "route"
-  - end "platform_description"
-
-The communication from the parser to the SURF code uses two means:
-Attributes get copied into some global variables, and a surf-provided
-function gets called by the parser for each event. For example, the event
-  - start "host" with attributes id="host1" power="1.0"
-
-let the parser do something roughly equivalent to:
-\verbatim
-  strcpy(A_host_id,"host1");
-  A_host_power = 1.0;
-  STag_host();
-\endverbatim
-
-In SURF, we attach callbacks to the different events by initializing the
-pointer functions to some the right surf functions. Since there can be
-more than one callback attached to the same event (if more than one
-model is in use, for example), they are stored in a dynar. Example in
-host_ptask_L07.c:
-\verbatim
-  /* Adding callback functions */
-  surf_parse_reset_parser();
-  surfxml_add_callback(STag_surfxml_host_cb_list, &parse_cpu_init);
-  surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties);
-  surfxml_add_callback(STag_surfxml_link_cb_list, &parse_link_init);
-  surfxml_add_callback(STag_surfxml_route_cb_list, &parse_route_set_endpoints);
-  surfxml_add_callback(ETag_surfxml_link_c_ctn_cb_list, &parse_route_elem);
-  surfxml_add_callback(ETag_surfxml_route_cb_list, &parse_route_set_route);
-
-  /* Parse the file */
-  surf_parse_open(file);
-  xbt_assert(!surf_parse(), "Parse error in %s", file);
-  surf_parse_close();
-\endverbatim
-
-So, to bypass the FleXML parser, you need to write your own version of the
-surf_parse function, which should do the following:
-   - Fill the A_<tag>_<attribute> variables with the wanted values
-   - Call the corresponding STag_<tag>_fun function to simulate tag start
-   - Call the corresponding ETag_<tag>_fun function to simulate tag end
-   - (do the same for the next set of values, and loop)
-
-Then, tell SimGrid that you want to use your own "parser" instead of the stock one:
-\verbatim
-  surf_parse = surf_parse_bypass_environment;
-  MSG_create_environment(NULL);
-  surf_parse = surf_parse_bypass_application;
-  MSG_launch_application(NULL);
-\endverbatim
-
-A set of macros are provided at the end of
-include/surf/surfxml_parse.h to ease the writing of the bypass
-functions. An example of this trick is distributed in the file
-examples/msg/masterslave/masterslave_bypass.c
-
-
 */