From: Martin Quinson Date: Wed, 22 Aug 2018 22:38:14 +0000 (+0200) Subject: docs: start the user manual, and rephrase some parts of the intro X-Git-Tag: v3_21~214 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0ab9b29d089c4d3816333906545a1cbdfea2b079 docs: start the user manual, and rephrase some parts of the intro --- diff --git a/docs/source/images/eclipseScreenShot.png b/docs/source/img/eclipseScreenShot.png similarity index 100% rename from docs/source/images/eclipseScreenShot.png rename to docs/source/img/eclipseScreenShot.png diff --git a/docs/source/images/extlink.png b/docs/source/img/extlink.png similarity index 100% rename from docs/source/images/extlink.png rename to docs/source/img/extlink.png diff --git a/docs/source/images/extlink.svg b/docs/source/img/extlink.svg similarity index 100% rename from docs/source/images/extlink.svg rename to docs/source/img/extlink.svg diff --git a/docs/source/index.rst b/docs/source/index.rst index efe2f4897d..13d7d83e2c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,12 +11,18 @@ Welcome to SimGrid's documentation! Simulating MPI Apps .. toctree:: - :maxdepth: 1 - :caption: Getting Started: - - What is SimGrid - Installing SimGrid - Start your Own Project + :maxdepth: 2 + :caption: User Manual: + + Introduction + Describing your Application + Describing the Virtual Platform + Describing the Experimental Scenario + The SimGrid Models + Simulation Outcomes + Use Cases and Howto + The SimGrid Community + Frequently Asked Questions .. toctree:: :maxdepth: 2 diff --git a/docs/source/main_concepts.rst b/docs/source/intro_concepts.rst similarity index 81% rename from docs/source/main_concepts.rst rename to docs/source/intro_concepts.rst index 051dddd81d..f16e53483c 100644 --- a/docs/source/main_concepts.rst +++ b/docs/source/intro_concepts.rst @@ -15,15 +15,9 @@ interface nor a command-line simulator running user scripts. The interaction with SimGrid is done by writing programs with the exposed functions to build your own simulator. -SimGrid offers many features, many options and many possibilities. The -documentation aims at smoothing the learning curve. But nothing's -perfect, and this documentation is really no exception here. Please -help us improving it by reporting any issue that you see and -proposing the content that is still missing. - -SimGrid is a Free Software distributed under the LGPL licence. You are +SimGrid is a Free Software distributed under the LGPL license. You are thus welcome to use it as you wish, or even to modify and distribute -your version (as long as your version is as free as ours). It also +your version (provided that your version is as free as ours). It also means that SimGrid is developed by a vivid community of users and developers. We hope that you will come and join us! @@ -33,6 +27,12 @@ from various research instances, including the ANR, Inria, CNRS, University of Lorraine, University of Hawai'i at Manoa, ENS Rennes and many others. Many thanks to our generous sponsors! +SimGrid is a powerful tool, but its learning curve can be rather +steep. This manual will hopefully help and guide you to the features +you want to use. Please report any issue that you see in this manual, +including typos or unclear elements. You can even propose changes by +clicking on the "Edit on GitLab" button at the top of every page. + Typical Study based on SimGrid ------------------------------ @@ -41,7 +41,7 @@ Any SimGrid study entails the following components: - The studied **Application**. This can be either a distributed algorithm described in our simple APIs, or a full featured real parallel application using for example the MPI interface - @ref application "(more info)". + :ref:`(more info) `. - The **Virtual Platform**. This is a description of a given distributed system (machines, links, disks, clusters, etc). Most of @@ -50,28 +50,29 @@ Any SimGrid study entails the following components: Platform with a Dynamic Scenario where for example the links are slowed down (because of external usage), the machines fail. You have even support to specify the applicative workload that you want - to feed to your application @ref platform "(more info)". + to feed to your application + :ref:`(more info) `. - The application's **Deployment Description**. In SimGrid terminology, the application is an inert set of source files and binaries. To make it run, you have to describe how your application should be deployed on the virtual platform. You need to specify which process is mapped on which host, along with their parameters - @ref deployment "(more info)". + :ref:`(more info) `. - The **Platform Models**. They describe how the virtual platform reacts to the actions of the application. For example, they compute the time taken by a given communication on the virtual platform. These models are already included in SimGrid, and you only need to pick one and maybe tweak its configuration to get your results - @ref models "(more info)". + :ref:`(more info) `. These components are put together to run a **simulation**, that is an experiment or a probe. The result of one or many simulation provides an **outcome** (logs, visualization, statistical analysis) that help answering the **question** targeted by this study. -The questions that SimGrid can solve include the following: +Here are some questions on which SimGrid is particularly relevant: - **Compare an Application to another**. This is the classical use case for scientists, who use SimGrid to test how the solution that @@ -85,10 +86,11 @@ The questions that SimGrid can solve include the following: - **Debug Real Applications**. With real systems, is sometimes difficult to reproduce the exact run leading to the bug that you - are tracking. SimGrid gives you experimental reproducibility, - clairevoyance (you can explore every part of the system, and your - probe will not change the simulated state). It also makes it easy - to mock some parts of the real system that are not under study. + are tracking. With SimGrid, you are *clairvoyant* about your + *reproducible experiments*: you can explore every part of the + system, and your probe will not change the simulated state. It also + makes it easy to mock some parts of the real system that are not + under study. Depending on the context, you may see some parts of this process as less important, but you should pay close attention if you want to be @@ -98,10 +100,10 @@ strive to double-check them. Likewise, you should question the realism of your input configuration, and we even encourage you to doubt (and check) the provided performance models. -To ease such questionning, you really should logically separate these +To ease such questioning, you really should logically separate these parts in your experimental setup. It is seen as a very bad practice to merge the application, the platform and the deployment all together. -SimGrid is versatile and your milleage may vary, but you should start +SimGrid is versatile and your mileage may vary, but you should start with your Application specified as a C++ or Java program, using one of the provided XML platform file, and with your deployment in a separate XML file. @@ -111,7 +113,7 @@ SimGrid Execution Modes Depending on the intended study, SimGrid can be run in several execution modes. -** **Simulation Mode**. This is the most common execution mode, where you want +**Simulation Mode**. This is the most common execution mode, where you want to study how your application behaves on the virtual platform under the experimental scenario. @@ -119,13 +121,13 @@ In this mode, SimGrid can provide information about the time taken by your application, the amount of energy dissipated by the platform to run your application and the detailed usage of each resource. -** **Model-Checking Mode**. This can be seen as a sort of exhaustive +**Model-Checking Mode**. This can be seen as a sort of exhaustive testing mode, where every possible outcome of your application is explored. In some sense, this mode tests your application for all possible platforms that you could imagine (and more). You just provide the application and its deployment (amount of -processes and parameters), and the model-checker will litterally +processes and parameters), and the model-checker will literally explore all possible outcomes by testing all possible message interleavings: if at some point a given process can either receive the message A first or the message B depending on the platform @@ -136,13 +138,13 @@ scenario where B arrives first. This is a very powerful mode, where you can evaluate the correction of your application. It can verify either **safety properties** (asserts) or **liveless properties** stating for example that if a given event -occures, then another given event will occur in a finite amount of +occurs, then another given event will occur in a finite amount of steps. This mode is not only usable with the abstract algorithms developed on top of the SimGrid APIs, but also with real MPI applications (to some extend). The main limit of Model Checking lays in the huge amount of scenarios -to explore. SimGrid tries to explore only non-redundent scenarios +to explore. SimGrid tries to explore only non-redundant scenarios thanks to classical reduction techniques (such as DPOR and stateful exploration) but the exploration may well never finish if you don't carefully adapt your application to this mode. @@ -169,7 +171,7 @@ possible outcomes *from a given initial situation*. There is no way to prove the correction of your application in all generality with this tool. -** **Benchmark Recording Mode**. During debug sessions, continuous +**Benchmark Recording Mode**. During debug sessions, continuous integration testing and other similar use cases, you are often only interested in the control flow. If your application apply filters to huge images split in small blocks, the filtered image is probably not @@ -186,17 +188,17 @@ SimGrid Limits This framework is by no means the perfect holly grail able to solve every problem on earth. -** **SimGrid scope is limited to distributed systems.** Real-time -multithreaded systems are not in the scope. You could probably tweak -SimGrid for such studies (or the framework could possibily be extended +**SimGrid scope is limited to distributed systems.** Real-time +multi-threaded systems are not in the scope. You could probably tweak +SimGrid for such studies (or the framework could possibly be extended in this direction), but another framework specifically targeting this -usecase would probably be more suited. +use case would probably be more suited. -** **There is currently no support for IoT studies and wireless networks**. +**There is currently no support for wireless networks**. The framework could certainly be improved in this direction, but this is still to be done. -** **There is no perfect model, only models adapted to your study.** +**There is no perfect model, only models adapted to your study.** The SimGrid models target fast, large studies yet requesting a realistic results. In particular, our models abstract away parameters and phenomenon that are often irrelevant to the realism in our @@ -207,7 +209,8 @@ abstracted phenomenon. Here are some **studies that you should not do with SimGrid**: - Studying the effect of L3 vs L2 cache effects on your application - - Comparing variantes of TCP + - Comparing kernel schedulers and policies + - Comparing variants of TCP - Exploring pathological cases where TCP breaks down, resulting in abnormal executions. - Studying security aspects of your application, in presence of @@ -218,7 +221,7 @@ SimGrid Success Stories SimGrid was cited in over 1,500 scientific papers (according to Google Scholar). Among them -`over 200 publications `_ +`over 200 publications `_ (written by about 300 individuals) use SimGrid as a scientific instrument to conduct their experimental evaluation. These numbers do not count the articles contributing to SimGrid. @@ -234,7 +237,7 @@ This instrument was used in many research communities, such as `Network Architecture `_, `Fog Computing `_, or `Batch Scheduling `_ -`(more info) `_. +`(more info) `_. If your platform description is accurate enough (see `here `_ or @@ -255,13 +258,7 @@ the CEA), `StarPU `_ (a Unified Runtime System for Heterogeneous Multicore Architectures developped by Inria Bordeaux) and `TomP2P `_ (a high performance -key-value pair storage library developped at University of Zurich). +key-value pair storage library developed at University of Zurich). Some of these applications enjoy large user communities themselves. -Where to proceed next? ----------------------- - -Now that you know about the basic concepts of SimGrid, you can give it -a try. If it's not done yet, first :ref:`install it `. Then, -proceed to the section on @ref application "describing the application" that -you want to study. +.. LocalWords: SimGrid diff --git a/docs/source/installation.rst b/docs/source/intro_install.rst similarity index 100% rename from docs/source/installation.rst rename to docs/source/intro_install.rst diff --git a/docs/source/install_yours.rst b/docs/source/intro_yours.rst similarity index 99% rename from docs/source/install_yours.rst rename to docs/source/intro_yours.rst index 2258c4c68d..cb18464605 100644 --- a/docs/source/install_yours.rst +++ b/docs/source/intro_yours.rst @@ -115,7 +115,7 @@ Eclipse. You have to run cmake and import it as a Makefile project. Next you have to activate C++11 in your build settings, add -std=c++11 in the CDT GCC Built-in compiler settings. -.. image:: images/eclipseScreenShot.png +.. image:: img/eclipseScreenShot.png Building the Java examples in Eclipse diff --git a/docs/source/introduction.rst b/docs/source/introduction.rst new file mode 100644 index 0000000000..1699548d3c --- /dev/null +++ b/docs/source/introduction.rst @@ -0,0 +1,8 @@ +Introduction +************ + +.. include:: intro_concepts.rst + +.. include:: intro_install.rst + +.. include:: intro_yours.rst diff --git a/docs/source/tuto_s4u.rst b/docs/source/tuto_s4u.rst index cc56bdbe4d..4ee094cebd 100644 --- a/docs/source/tuto_s4u.rst +++ b/docs/source/tuto_s4u.rst @@ -16,12 +16,12 @@ take place on **Resources** (CPUs, links, disks). SimGrid predicts the time taken by each activity and orchestrates accordingly the actors waiting for the completion of these activities. -.. |api_s4u_Actor| image:: /images/extlink.png +.. |api_s4u_Actor| image:: /img/extlink.png :align: middle :width: 12 .. _api_s4u_Actor: api/classsimgrid_1_1s4u_1_1Actor.html#class-documentation -.. |api_s4u_Activity| image:: /images/extlink.png +.. |api_s4u_Activity| image:: /img/extlink.png :align: middle :width: 12 .. _api_s4u_Activity: api/classsimgrid_1_1s4u_1_1Activity.html#class-documentation @@ -33,12 +33,12 @@ directly sent to actors, but posted onto **Mailboxes** |api_s4u_Mailbox|_ that serve as rendez-vous points between communicating processes. -.. |api_s4u_Host| image:: /images/extlink.png +.. |api_s4u_Host| image:: /img/extlink.png :align: middle :width: 12 .. _api_s4u_Host: api/classsimgrid_1_1s4u_1_1Host.html#class-documentation -.. |api_s4u_Mailbox| image:: /images/extlink.png +.. |api_s4u_Mailbox| image:: /img/extlink.png :align: middle :width: 12 .. _api_s4u_Mailbox: api/classsimgrid_1_1s4u_1_1Mailbox.html#class-documentation @@ -157,12 +157,12 @@ route between the hosts Tremblay and Fafard is given. This path traverses 6 links (named 4, 3, 2, 0, 1 and 8). There are several examples of platforms in the archive under ``examples/platforms``. -.. |api_s4u_NetZone| image:: /images/extlink.png +.. |api_s4u_NetZone| image:: /img/extlink.png :align: middle :width: 12 .. _api_s4u_NetZone: api/classsimgrid_1_1s4u_1_1NetZone.html#class-documentation -.. |api_s4u_Link| image:: /images/extlink.png +.. |api_s4u_Link| image:: /img/extlink.png :align: middle :width: 12 .. _api_s4u_Link: api/classsimgrid_1_1s4u_1_1Link.html#class-documentation