Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
finish (for now) the S4U tutorial
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 21 Aug 2018 09:13:23 +0000 (11:13 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Tue, 21 Aug 2018 09:13:23 +0000 (11:13 +0200)
docs/source/index.rst
docs/source/tuto_s4u.rst

index 93d9c1a..efe2f48 100644 (file)
@@ -5,11 +5,11 @@ Welcome to SimGrid's documentation!
 
 .. toctree::
    :maxdepth: 1
 
 .. toctree::
    :maxdepth: 1
-   :caption: Basic Use Cases:
+   :caption: Tutorials:
 
        Simulating Algorithms <tuto_s4u.rst>
 
        Simulating Algorithms <tuto_s4u.rst>
-       Simulating MPI Apps <usecase_mpi.rst>
-   
+       Simulating MPI Apps <tuto_mpi.rst>
+
 .. toctree::
    :maxdepth: 1
    :caption: Getting Started:
 .. toctree::
    :maxdepth: 1
    :caption: Getting Started:
index e2fdebd..bd12a43 100644 (file)
@@ -517,7 +517,7 @@ You can still stop your workers with a specific task as previously,
 or you may kill them forcefully with
 :cpp:func:`simgrid::s4u::Actor::kill` (if you already have a reference
 to the actor you want to kill) or
 or you may kill them forcefully with
 :cpp:func:`simgrid::s4u::Actor::kill` (if you already have a reference
 to the actor you want to kill) or
-:cpp:func:`simgrid::s4u::Actor::kill(aid_t)` (if you only have its ID).
+:cpp:func:`void simgrid::s4u::Actor::kill(aid_t)` (if you only have its ID).
 
 
 Anyway, the new deployment `deployment3.xml` file should thus look
 
 
 Anyway, the new deployment `deployment3.xml` file should thus look
@@ -556,8 +556,8 @@ understand which task belong to which application. To fix this, we
 will categorize the tasks.
 
 Instead of starting the execution in one function call only with
 will categorize the tasks.
 
 Instead of starting the execution in one function call only with
-``simgrid::s4u::this_actor::execute(compute_cost)``, you need to
-create the execution activity, set its tracing category and then start
+``this_actor::execute(cost)``, you need to
+create the execution activity, set its tracing category, and then start
 it and wait for its completion, as follows:
 
 .. code-block:: cpp
 it and wait for its completion, as follows:
 
 .. code-block:: cpp
@@ -573,24 +573,77 @@ You can make the same code shorter as follows:
 
    simgrid::s4u::this_actor::exec_init(compute_cost)->set_tracing_category(category)->wait();
 
 
    simgrid::s4u::this_actor::exec_init(compute_cost)->set_tracing_category(category)->wait();
 
-The outcome can then be visualized as a Gantt-chart as follows:
+Visualizing the result
+.......................
 
 
-.. code-block:: shell
+vite is not enough to understand the situation, because it does not
+deal with categorization. This time, you absolutely must switch to R,
+as explained on `this page
+<http://simgrid.gforge.inria.fr/contrib/R_visualization.php>`_.
 
 
-   ./master-workers-lab4 small_platform.xml deployment4.xml --cfg=tracing:yes --cfg=tracing/msg/process:yes
-   vite simgrid.trace
+.. todo::
+
+   Include here the minimal setting to view something in R.
+   
+
+Lab 5: Better Scheduling
+------------------------
+
+You don't need a very advanced visualization solution to notice that
+round-robin is completely suboptimal: most of the workers keep waiting
+for more work. We will move to a First-Come First-Served mechanism
+instead.
+
+For that, your workers should explicitely request for work with a
+message sent to a channel that is specific to their master. The name
+of that private channel can be the one used to categorize the
+executions, as it is already specific to each master.
+
+The master should serve in a round-robin manner the requests it
+receives, until the time is up. Changing the communication schema can
+be a bit hairy, but once it works, you will see that such as simple
+FCFS schema allows to double the amount of tasks handled over time
+here. Things may be different with another platform file.
+
+Further Improvements
+....................
+
+From this, many things can easily be added. For example, you could:
+
+- Allow workers to have several pending requests so as to overlap
+  communication and computations as much as possible. Non-blocking
+  communication will probably become handy here.
+- Add a performance measurement mechanism, enabling the master to make smart scheduling choices.
+- Test your code on other platforms, from the ``examples/platforms``
+  directory in your archive.
+  
+  What is the largest number of tasks requiring 50e6 flops and 1e5
+  bytes that you manage to distribute and process in one hour on
+  ``g5k.xml`` ?
+- Optimize not only for the amount of tasks handled, but also for the
+  total energy dissipated. 
+- And so on. If you come up with a really nice extension, please share
+  it with us so that we can extend this tutorial. 
+
+After this Tutorial
+-------------------
+
+This tutorial is now terminated. You could keep reading the [online documentation][fn:4] or
+[tutorials][fn:7], or you could head up to the example section to read some code.
 
 .. todo::
 
 
 .. todo::
 
-   Make it work
+   TODO: Points to improve for the next time
+
+   - Propose equivalent exercises and skeleton in java.
+   - Propose a virtualbox image with everything (simgrid, pajeng, ...) already set
+     up.
+   - Ease the installation on mac OS X (binary installer) and
+     windows.
+   - Explain that programming in C or java and having a working
+     development environment is a prerequisite.
 
 
-Going further
-.............
 
 
-vite is not enough to understand the situation, because it does not
-deal with categorization. That is why you should switch to R to
-visualize your outcomes, as explained on `this page
-<http://simgrid.gforge.inria.fr/contrib/R_visualization.php>`_.