From: Martin Quinson Date: Sun, 26 Feb 2023 23:32:48 +0000 (+0100) Subject: Add 3 figures to the design goals + minor rewording X-Git-Tag: v3.34~428 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1157076802b0e75b165dc997acc5b7944f0262d3 Add 3 figures to the design goals + minor rewording --- diff --git a/MANIFEST.in b/MANIFEST.in index 105d326266..b77754eb8e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1676,6 +1676,9 @@ include docs/source/app_smpi.rst include docs/source/application.rst include docs/source/community.rst include docs/source/conf.py +include docs/source/img/design-scheduling-parallel.svg +include docs/source/img/design-scheduling-simulatedtime.svg +include docs/source/img/design-scheduling-wallclock.svg include docs/source/img/eclipseScreenShot.png include docs/source/img/extlink.png include docs/source/img/extlink.svg diff --git a/docs/source/Design_goals.rst b/docs/source/Design_goals.rst index 70e120c3a9..2b6c64f920 100644 --- a/docs/source/Design_goals.rst +++ b/docs/source/Design_goals.rst @@ -32,7 +32,8 @@ The design of SimGrid is shaped by several design goals: the exact same outcome, even if it runs on another computer or operating system. When possible, this should also be true when you use another version of SimGrid. - - **speed**: running a given simulation should be as fast as possible + - **sweet spot between accuracy and simulation speed**: running a given simulation should be as fast as possible but predict + correct performance trends (or even provide accurate predictions when correctly calibrated). - **versatility**: ability to simulate many kinds of distributed systems and resource models. But the simulation should be parsimonious too, to not hinder the tool's usability. SimGrid tries to provide sane @@ -68,6 +69,10 @@ rounds, so all events occurring during a given scheduling round occur at the exact same simulated timestamp, even if the actors are usually executed sequentially on the real platform. +.. image:: img/design-scheduling-simulatedtime.svg + :scale: 80% + :align: center + To modify their environment, the actors issue either **immediate simcalls** that take no time in the simulation (e.g.: spawning another actor), or **blocking simcalls** that must wait for future events (e.g.: @@ -93,16 +98,19 @@ boost's context, or our own hand-tuned implementation, that is written in assembly language. This is possible because a given actor is never interrupted between consecutive simcalls in SimGrid. -For the sake of performance, actors can be executed in parallel using -several system threads for non-preemptive contexts. But in our -experience, this rarely leads to any performance improvement because -most applications simulated on top of SimGrid are fine-grained: when -the simulation performance really matters, the users tend to abstract -away any large computations to efficiently simulate the control flow -of their application. In addition, parallel simulation puts unpleasant -restrictions on the user code, that must be correctly isolated. To be -honest, most of the existing SMPI implementation cannot be used in -parallel yet. +.. image:: img/design-scheduling-wallclock.svg + :scale: 80% + :align: center + +For the sake of performance, actors can be executed in parallel using several system threads which execute all user threads in +turn. But in our experience, this rarely leads to any performance improvement because most applications simulated on top of +SimGrid are fine-grained: it's often not worth simulating actors in parallel because the amount of work of each actor is too +small. This is because the users tend to abstract away any large computations to efficiently simulate the control flow of their +application. In addition, parallel simulation puts unpleasant restrictions on the user code, that must be correctly isolated. +For example, the existing SMPI implementation cannot be used in parallel yet. + +.. image:: img/design-scheduling-parallel.svg + :align: center Parsimonious model versatility ****************************** @@ -123,7 +131,7 @@ was extended to represent the fact that the bandwidth provided by a wifi link to a given station depends on its signal-noise ratio (SNR). Further on this line, all provided resource models are very comparable -internally. They rely on linear inequation systems, stating for +internally. They :ref:`rely on linear inequation systems `, stating for example that the sum of the computational power received by all computation activities located on a given CPU cannot overpass the computational power provided by this resource. This extends nicely to @@ -168,6 +176,5 @@ Reduction (DPOR) `_ and `state equality `_. -Mc SimGrid is far more experimental than other parts of the framework, -such as SMPI that can now be used to run many full-featured MPI codes -out of the box. +Mc SimGrid is more experimental than other parts of the framework, such as SMPI that can now be used to run many full-featured +MPI codes out of the box, but it's constently improving. diff --git a/docs/source/Models.rst b/docs/source/Models.rst index 34d3c15ea3..fb4a056ef5 100644 --- a/docs/source/Models.rst +++ b/docs/source/Models.rst @@ -51,6 +51,8 @@ still be correct for most users. `Studies have shown ` is provided. As usual, you probably want to double-check their predictions through an appropriate validation campaign. +.. _models-lmm: + LMM-based Models **************** diff --git a/docs/source/img/design-scheduling-parallel.svg b/docs/source/img/design-scheduling-parallel.svg new file mode 100644 index 0000000000..af789a0db5 --- /dev/null +++ b/docs/source/img/design-scheduling-parallel.svg @@ -0,0 +1,1213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + Maestro + + +   + + Worker 1 + many + actors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Worker 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/img/design-scheduling-simulatedtime.svg b/docs/source/img/design-scheduling-simulatedtime.svg new file mode 100644 index 0000000000..ce24696d7e --- /dev/null +++ b/docs/source/img/design-scheduling-simulatedtime.svg @@ -0,0 +1,1406 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Simulation setup (kernel mode) + + + Model solving (kernel mode) + + + Context switching + + + + User code (isolated) + + + + + + + + + + + Maestro + + + + + +   + + Actor 2 + + + + + + + + Actor 3 + + + + + + + + Actor 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + request+body+answer + One simcall= + + Scheduling round: run actors, declare their activities, solve models + update timestamp + + + + + + + + + + + + + + diff --git a/docs/source/img/design-scheduling-wallclock.svg b/docs/source/img/design-scheduling-wallclock.svg new file mode 100644 index 0000000000..ee33b55701 --- /dev/null +++ b/docs/source/img/design-scheduling-wallclock.svg @@ -0,0 +1,996 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + Actor 2 + + + + + + Actor 3 + Actor 3 + + + + + + + + + + + Actor 1 + Actor 2 + Actor 1 + + + + + + + + + + + + + + + + + + + + + + + + + Maestro + Maestro + Maestro + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index 7ab49a15bc..7219803b71 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -793,6 +793,9 @@ set(DOC_SOURCES docs/source/_static/css/custom.css docs/source/_templates/breadcrumbs.html + docs/source/img/design-scheduling-parallel.svg + docs/source/img/design-scheduling-simulatedtime.svg + docs/source/img/design-scheduling-wallclock.svg docs/source/img/eclipseScreenShot.png docs/source/img/extlink.png docs/source/img/extlink.svg