diff --git a/guides/users/README.md b/guides/users/README.md index 5c51b49af185be4afafbfbd6fa2d6efdb31318b2..84c1524e2639f5147d78a78545f6f37770d393f3 100644 --- a/guides/users/README.md +++ b/guides/users/README.md @@ -1,60 +1,34 @@ -- [TL;DR](#org7460992) -- [Topology](#org6b74c58) -- [Algorithms](#orge7cc59f) -- [Examples](#org9fd0d11) -- [Batch mode](#org72ad817) - - [Running batch simulations with Built-in demons](#orgc56b42d) - - [Running batch simulations with manual demons](#org92cd9f2) - - [Running batch simulations with `lurette`](#org0705ed8) - - [Viewing Results](#orgd2e4baa) - - [The `sasa` CLI](#org8d9f6c5) -- [Interactive mode](#org6af6ee2) - - [Example: use `rdbg` from the `test/alea-coloring/` directory](#orgf6b37f1) - - [The exemples of test directory](#org2913976) - - [Running interactive sessions with `rdbg`](#org8931da2) - - [Getting `rdbg` on-line help](#orgc066a85) - - [Useful Modules](#org07221ab) -- [Install](#org02db332) - - [Via opam 2 (prefered method)](#org0c28ed7) - - [Via docker](#orgd84fbc0) - - [From source](#org193dfd6) -- [More](#orgdadfb09) -- [FAQ](#org96481a2) - - [Is there a FAQ?](#orgefc66e1) - - -# Table of Contents - -1. [TL;DR](#org7460992) -2. [Topology](#org6b74c58) -3. [Algorithms](#orge7cc59f) -4. [Examples](#org9fd0d11) -5. [Batch mode](#org72ad817) - 1. [Running batch simulations with Built-in demons](#orgc56b42d) - 2. [Running batch simulations with manual demons](#org92cd9f2) - 3. [Running batch simulations with `lurette`](#org0705ed8) - 4. [Viewing Results](#orgd2e4baa) - 5. [The `sasa` CLI](#org8d9f6c5) -6. [Interactive mode](#org6af6ee2) - 1. [Example: use `rdbg` from the `test/alea-coloring/` directory](#orgf6b37f1) - 2. [The exemples of test directory](#org2913976) - 3. [Running interactive sessions with `rdbg`](#org8931da2) - 4. [Getting `rdbg` on-line help](#orgc066a85) - 5. [Useful Modules](#org07221ab) -7. [Install](#org02db332) - 1. [Via opam 2 (prefered method)](#org0c28ed7) - 2. [Via docker](#orgd84fbc0) - 3. [From source](#org193dfd6) -8. [More](#orgdadfb09) -9. [FAQ](#org96481a2) - 1. [Is there a FAQ?](#orgefc66e1) - - -<a id="org7460992"></a> +- [TL;DR](#org6a59cc1) +- [Topology](#org6cb2e8c) +- [Algorithms](#org561b67a) +- [Examples](#org9e503af) +- [Batch mode](#org1cdbd63) + - [Running batch simulations with Built-in demons](#org9bfd8fb) + - [Running batch simulations with manual demons](#org3dbe884) + - [Running batch simulations with `lurette`](#org96ed0ef) + - [Viewing Results](#org7b0a788) + - [The `sasa` CLI](#orgc34facd) +- [Interactive mode](#org0bd1887) + - [Example: use `rdbg` from the `test/alea-coloring/` directory](#orgbeff587) + - [The exemples of test directory](#org0a42ba1) + - [Running interactive sessions with `rdbg`](#org72c51ae) + - [Getting `rdbg` on-line help](#org344c1e9) + - [Useful Modules](#org7902bb7) +- [Install](#org0f6b838) + - [Via opam 2 (prefered method)](#org91ce9b1) + - [Via docker](#org7b01ad4) + - [From source](#org9e5beee) +- [More](#org25f2d3c) +- [FAQ](#org2dbdf17) + - [Is there a FAQ?](#org75de25d) + + + +<a id="org6a59cc1"></a> # TL;DR -SASA is a **Self-stabilizing Algorithms SimulAtor**, based on the so-called **Atomic State model** (ASM) introduced by <span class="underline">Dijkstra</span> in its seminal article on [Self-stabilizing distributed algorithms](http://www.cs.utexas.edu/~EWD/ewd04xx/EWD426.PDF). +<a id="org5c692f2"></a> SASA is a **Self-stabilizing Algorithms SimulAtor**, based on the so-called **Atomic State model** (ASM) introduced by <span class="underline">Dijkstra</span> in its seminal article on [Self-stabilizing distributed algorithms](http://www.cs.utexas.edu/~EWD/ewd04xx/EWD426.PDF). Basically, one needs to provide: @@ -76,7 +50,7 @@ The source code is available at <https://gricad-gitlab.univ-grenoble-alpes.fr/ve [](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/sasa/poster.pdf) -<a id="org6b74c58"></a> +<a id="org6cb2e8c"></a> # Topology @@ -139,19 +113,21 @@ Such parameters can be retreived in Algorithms using the `Algo.get_graph_attribu nb: a `Algo.diameter: unit -> int` function is provided, but it can be expensive to use. -<a id="orge7cc59f"></a> +<a id="org561b67a"></a> # Algorithms +<a id="orga4ccd12"></a> + The following has been generated from [algo.mli](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/blob/master/lib/algo/algo.mli) <div class="html"> -<iframe title="The Algo API" width="700" height="700" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/algo/Algo/index.html>" alt="<sub>html</sub>/algo/Algo/index.html";> </iframe> +<iframe title="The Algo API" name="algo-api" width="700" height="700" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/algo/Algo/index.html>" alt="<sub>html</sub>/algo/Algo/index.html";> </iframe> </div> -<a id="org9fd0d11"></a> +<a id="org9e503af"></a> # Examples @@ -179,14 +155,14 @@ The `test` directory also contains sub-directories which gathers programs shared - `test/*/my-rdbg-tuning.ml`: includes `test/my-rdbg-tuning.ml` and defines commands specific to the example of the directory. Indeed, `rdbg`, once launched, first tries to read the content of the file name `my-rdbg-tuning.ml` (it it exists). -<a id="org72ad817"></a> +<a id="org1cdbd63"></a> # Batch mode  -<a id="orgc56b42d"></a> +<a id="org9bfd8fb"></a> ## Running batch simulations with Built-in demons @@ -211,7 +187,7 @@ sasa -h | grep "\-demon" --custom-demon, -custd -<a id="org92cd9f2"></a> +<a id="org3dbe884"></a> ## Running batch simulations with manual demons @@ -238,7 +214,7 @@ It can also by simulated by [`lutin`](http://www-verimag.imag.fr/DIST-TOOLS/SYNC Built-in demons can of course be programmed in Lutin. One can generate such demons using the `--gen-lutin-demon` option: `sasa --gen-lutin-demon a_graph.dot`. It can be handy at least to get the demons variables names in the good order if one to write its own demon. -<a id="org0705ed8"></a> +<a id="org96ed0ef"></a> ## Running batch simulations with `lurette` @@ -261,14 +237,14 @@ lurette \ ``` -<a id="orgd2e4baa"></a> +<a id="org7b0a788"></a> ## Viewing Results `sasa -rif` and `lurette` generates `.rif` files that can be viewed with `gnuplot-rif` or `sim2chro`; cf <http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v6/> -<a id="org8d9f6c5"></a> +<a id="orgc34facd"></a> ## The `sasa` CLI @@ -331,14 +307,14 @@ sasa --more Display the version ocaml version sasa was compiled with and exit. -<a id="org6af6ee2"></a> +<a id="org0bd1887"></a> # Interactive mode -<a id="orge1b419c"></a> If you want to perform interactive session, you can launch `sasa` under the control of [rdbg](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/). Before reading this section, please read at least the [Basic usage Section if the rdbg documentation](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/README.html#Level0). +<a id="orgd6ea8ef"></a> If you want to perform interactive session, you can launch `sasa` under the control of [rdbg](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/). Before reading this section, please read at least the [Basic usage Section if the rdbg documentation](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/README.html#Level0). -<a id="orgf6b37f1"></a> +<a id="orgbeff587"></a> ## Example: use `rdbg` from the `test/alea-coloring/` directory @@ -391,7 +367,7 @@ $ rdbg Typing `[Enter]` will therefore also load the `rdbg_session.ml` file we have just been using. -<a id="org2913976"></a> +<a id="org0a42ba1"></a> ## The exemples of test directory @@ -402,7 +378,7 @@ The [test](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/t - `test/*/my-rdbg-tuning.ml`: includes `test/my-rdbg-tuning.ml` and defines commands specific to the example of the directory. Indeed, `rdbg`, once launched, first tries to read the content of the file name `my-rdbg-tuning.ml` (it it exists). -<a id="org8931da2"></a> +<a id="org72c51ae"></a> ## Running interactive sessions with `rdbg` @@ -419,7 +395,7 @@ The [test](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/t All those commands are defined in (the common) [test/my-rdbg-tuning.ml](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/tree/master/test/my-rdbg-tuning.ml) that is included in (locals) `test/*/my-rdbg-tuning.ml` that are included in (generated) `test/*/rdbg-session.ml` files. `my-rdbg-tuning.ml` contains straigthforward `ocaml` code that defines various `rdbg` shortcuts to ease the simulation of `sasa` systems. Feel free to tailor those command to yours needs by modyfying the local `my-rdbg-tuning.ml`! -<a id="orgc066a85"></a> +<a id="org344c1e9"></a> ## Getting `rdbg` on-line help @@ -432,42 +408,42 @@ Here are 2 useful entry-points to rdbg on-line help: (rdbg) l ``` - 899ba97918e5b30522844acaf1223a45 + 4d46fec6a0a873e3eaa224895e4ab057 -<a id="org07221ab"></a> +<a id="org7902bb7"></a> ## Useful Modules Some modules, used by the sasa core engine, can be useful from `rdbg`. <div class="html"> -<iframe title="The Algo API" width="700" height="500" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Topology/index.html>" alt="<./_html/sasacore/Sasacore/Topology/index.html>";> </iframe> +<iframe title="The Topology API" name="topology-api" width="700" height="500" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Topology/index.html>" alt="<./_html/sasacore/Sasacore/Topology/index.html>";> </iframe> </div> <div class="html"> -<iframe title="The Algo API" width="700" height="300" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Diameter/index.html>" alt="<./_html/sasacore/Sasacore/Diameter/index.html>";> </iframe> +<iframe title="The Diameter API" name="diameter-api" width="700" height="300" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Diameter/index.html>" alt="<./_html/sasacore/Sasacore/Diameter/index.html>";> </iframe> </div> <div class="html"> -<iframe title="The Algo API" width="700" height="300" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Process/index.html>" alt="<./_html/sasacore/Sasacore/Process/index.html>";> </iframe> +<iframe title="The Process API" width="700" height="300" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Process/index.html>" alt="<./_html/sasacore/Sasacore/Process/index.html>";> </iframe> </div> <div class="html"> -<iframe title="The Algo API" width="700" height="300" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/StringOf/index.html>" alt="<./_html/sasacore/Sasacore/StringOf/index.html>";> </iframe> +<iframe title="The StringOf API" width="700" height="300" src="<https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/StringOf/index.html>" alt="<./_html/sasacore/Sasacore/StringOf/index.html>";> </iframe> </div> -<a id="org02db332"></a> +<a id="org0f6b838"></a> # Install -<a id="org0c28ed7"></a> +<a id="org91ce9b1"></a> ## Via opam 2 (prefered method) @@ -492,14 +468,14 @@ opam install -y rdbg lutin ``` -<a id="orgd84fbc0"></a> +<a id="org7b01ad4"></a> ## Via docker cf the Docker Install section of the [Synchrone Reactive Tool Box](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v6/#docker). -<a id="org193dfd6"></a> +<a id="org9e5beee"></a> ## From source @@ -519,7 +495,7 @@ opam install dune ocamlgraph rdbg lutin One can mimick the content of the `test` job in the project [.gitlab-ci.yml Gitlab CI script](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/tree/master/.gitlab-ci.yml). -<a id="orgdadfb09"></a> +<a id="org25f2d3c"></a> # More @@ -527,12 +503,12 @@ One can mimick the content of the `test` job in the project [.gitlab-ci.yml Gitl - Sources: <https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa> -<a id="org96481a2"></a> +<a id="org2dbdf17"></a> # FAQ -<a id="orgefc66e1"></a> +<a id="org75de25d"></a> ## Is there a FAQ? diff --git a/guides/users/README.org b/guides/users/README.org index a9db1ebf3a8a5b7a0e8687f62654f8c9a4f1e843..9d5ff6743c5fa8b22bef8348a576b9bb195ced7c 100644 --- a/guides/users/README.org +++ b/guides/users/README.org @@ -1,12 +1,12 @@ # +SETUPFILE: theme-readtheorg-local.setup #+SETUPFILE: theme-bigblow-local.setup -#+TOC: headlines 2 #+LANGUAGE: en #+OPTIONS: H:3 \n:nil @:t ::t |:t ^:t -:t f:t *:t TeX:t LaTeX:nil skip:nil tags:not-in-toc #+LINK_UP:https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa #+LINK_HOME:http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v6 #+HTML_HEAD:https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/tree/master/ -#+OPTIONS: toc:t + +#+HTML_HEAD: <base target="_parent"> #+TOC: listings #+TOC: tables #+EMAIL: erwan.jahier@univ-grenoble-alpes.fr @@ -16,7 +16,7 @@ * TL;DR - +<<sasa>> SASA is a *Self-stabilizing Algorithms SimulAtor*, based on the so-called *Atomic State model* (ASM) introduced by _Dijkstra_ in its seminal article on [[http://www.cs.utexas.edu/~EWD/ewd04xx/EWD426.PDF][Self-stabilizing distributed algorithms]]. @@ -42,6 +42,8 @@ https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa #+attr_html: :width 300px [[http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/sasa/poster.pdf][file:poster.png]] + + * Topology The topology is given via =.dot= files, that should @@ -106,11 +108,12 @@ nb: a =Algo.diameter: unit -> int= function is provided, but it can be expensive to use. * Algorithms +<<Algorithms>> The following has been generated from [[https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/blob/master/lib/algo/algo.mli][algo.mli]] #+begin_html -<iframe title="The Algo API" +<iframe title="The Algo API" name="algo-api" width="700" height="700" src="https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/algo/Algo/index.html" @@ -220,9 +223,9 @@ first. But =sasa= needs to play first, to be able to state which actions are enabled at the very first step. Hence =sasa= is used as a =lurette= environment, and the daemon program is used a =lurette= SUT. -If one wants to use an internal sasa daemon, no environment is needed -and sasa can be used with =-sut=. In order to use an oracle defined in -Lustre, one can use =lurette= as follows: +If one wants to use an internal sasa daemon, no environment is needed +and sasa can be used with =-sut=. In order to use an oracle defined +in Lustre, one can use =lurette= as follows: #+BEGIN_SRC sh lurette \ @@ -426,7 +429,7 @@ echo "\nl\nq\n" | rdbg | tail -n +21 Some modules, used by the sasa core engine, can be useful from =rdbg=. #+begin_html -<iframe title="The Algo API" +<iframe title="The Topology API" name="topology-api" width="700" height="500" src="https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Topology/index.html" @@ -434,7 +437,7 @@ Some modules, used by the sasa core engine, can be useful from =rdbg=. </iframe> #+end_html #+begin_html -<iframe title="The Algo API" +<iframe title="The Diameter API" name="diameter-api" width="700" height="300" src="https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Diameter/index.html" @@ -442,7 +445,7 @@ Some modules, used by the sasa core engine, can be useful from =rdbg=. </iframe> #+end_html #+begin_html -<iframe title="The Algo API" +<iframe title="The Process API" width="700" height="300" src="https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/Process/index.html" @@ -450,7 +453,7 @@ Some modules, used by the sasa core engine, can be useful from =rdbg=. </iframe> #+end_html #+begin_html -<iframe title="The Algo API" +<iframe title="The StringOf API" width="700" height="300" src="https://verimag.gricad-pages.univ-grenoble-alpes.fr/synchrone/sasa/_html/sasacore/Sasacore/StringOf/index.html"