$ docker container ls
# This lists all containers running on your machine. For example:
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- # 7e921b1b18a7 simgrid/stable "bash" 7 minutes ago Up 7 minutes adoring_shamir
-
- $ docker exec --user 0:0 -it {container_name} bash
- # In the previous example, container_name was "adoring_shamir"
+ # 7e921b1b18a7 simgrid/stable "bash" 7 minutes ago Up 7 minutes simgrid
+
+ $ docker exec --user root -it simgrid bash
The code template is available under ``/source/simgrid-template-s4u.git``
in the image. You should copy it to your working directory and
.. code-block:: console
- $ cp -r /source/simgrid-template-s4u.git/* /source/tutorial
- $ cd /source/tutorial
- $ cmake .
- $ make
+ $ # Make sure the simgrid-tutorial directory can be read and written by the non-root user
+ $ sudo chown $UID:$GID ~/simgrid-tutorial
+ $ # Connect to the running container if needed
+ $ docker exec --user $UID:$GID -ti simgrid bash
+ $container) cp -r /source/simgrid-template-s4u.git/* /source/tutorial
+ $container) cd /source/tutorial
+ $container) cmake .
+ $container) make
Using your Computer Natively
............................
your :ref:`SimGrid installation <install>`. On need, please refer to
the :ref:`Troubleshooting your Project Setup <install_yours_troubleshooting>` section.
+.. warning::
+
+ If you use the stable version of Debian 11, Ubuntu 21.04 or Ubuntu 21.10, then you need the right version of this tutorial
+ (add ``--branch simgrid-v3.25`` as below). These distributions only contain SimGrid v3.25 while the latest version of this
+ tutorial needs at least SimGrid v3.27.
+
+ .. code-block:: console
+
+ $ git clone --branch simgrid-v3.25 https://framagit.org/simgrid/simgrid-template-s4u.git
For R analysis of the produced traces, you may want to install R
and the `pajengr <https://github.com/schnorr/pajengr#installation/>`_ package.
$ make master-workers
$ ./master-workers small_platform.xml master-workers_d.xml
+ If you get an error message complaining that ``simgrid::s4u::Mailbox::get()`` does not exist,
+ then your version of SimGrid is too old for the version of the tutorial that you got. Check again previous section.
+
.. group-tab:: Python
Please execute the provided simulator as follows:
$ python master-workers.py small_platform.xml master-workers_d.xml
-For a more "fancy" output, you can use simgrid-colorizer.
-
-.. code-block:: console
-
- # Run C++ code
- $ ./master-workers small_platform.xml master-workers_d.xml 2>&1 | simgrid-colorizer
-
- # Run Python code
- $ python master-workers.py small_platform.xml master-workers_d.xml 2>&1 | simgrid-colorizer
-
-If you installed SimGrid to a non-standard path, you may have to
-specify the full path to simgrid-colorizer on the above line, such as
-``/opt/simgrid/bin/simgrid-colorizer``. If you did not install it at all,
-you can find it in <simgrid_root_directory>/bin/colorize.
+ If you get an error stating that the simgrid module does not exist, you need to get a newer version of SimGrid.
+ You may want to take the tutorial from the docker to get the newest version.
For a classical Gantt-Chart visualization, you can use `Vite
<http://vite.gforge.inria.fr/>`_ if you have it installed, as
.. note::
- If you use an older version of SimGrid (before v3.26), you should use
- ``--cfg=tracing/msg/process:yes`` instead of ``--cfg=tracing/actor:yes``.
-
If you want the full power to visualize SimGrid traces, you need
to use R. As a start, you can download this `starter script
<https://framagit.org/simgrid/simgrid/raw/master/docs/source/tuto_s4u/draw_gantt.R>`_
.. code-block:: cpp
for (int i = 0; i < tasks_count; i++) {
- std::string worker_rank = std::to_string(i % workers_count);
- std::string mailbox_name = std::string("worker-") + worker_rank;
+ std::string worker_rank = std::to_string(i % workers_count);
+ std::string mailbox_name = "worker-" + worker_rank;
simgrid::s4u::Mailbox* mailbox = simgrid::s4u::Mailbox::by_name(mailbox_name);
mailbox->put(...);
This tutorial is now terminated. You could keep reading the online documentation and
tutorials, or you could head up to the :ref:`example section <s4u_examples>` to read some code.
-.. todo::
-
- Things to improve in the future:
-
- - Propose equivalent exercises and skeleton in Java once we fix the Java binding.
-
.. |br| raw:: html
<br />