X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ecd67381aa492e031a22351022166e7564ea35f1..5c35a583c922ec5967b33193d67dad791cbe0e21:/doc/doxygen/options.doc
diff --git a/doc/doxygen/options.doc b/doc/doxygen/options.doc
index 4799993422..4b16add364 100644
--- a/doc/doxygen/options.doc
+++ b/doc/doxygen/options.doc
@@ -382,7 +382,7 @@ For now, this configuration variable can take 2 values:
* none: Do not apply any kind of reduction (mandatory for now for
liveness properties)
* dpor: Apply Dynamic Partial Ordering Reduction. Only valid if you
- verify local safety properties.
+ verify local safety properties (default value for safety checks).
\subsection options_modelchecking_visited model-check/visited, Cycle detection
@@ -1044,14 +1044,38 @@ Here is an example:
also disable this behavior for MPI_Iprobe.
-\subsection options_model_smpi_use_shared_malloc smpi/use-shared-malloc: Factorize malloc()s
+\subsection options_model_smpi_shared_malloc smpi/shared-malloc: Factorize malloc()s
-\b Default: 1
+\b Default: global
-SMPI can use shared memory by calling shm_* functions; this might speed up the simulation.
-This opens or creates a new POSIX shared memory object, kept in RAM, in /dev/shm.
+If your simulation consumes too much memory, you may want to modify
+your code so that the working areas are shared by all MPI ranks. For
+example, in a bloc-cyclic matrix multiplication, you will only
+allocate one set of blocs, and every processes will share them.
+Naturally, this will lead to very wrong results, but this will save a
+lot of memory so this is still desirable for some studies. For more on
+the motivation for that feature, please refer to the
+relevant
+section of the SMPI CourseWare (see Activity #2.2 of the pointed
+assignment). In practice, change the call to malloc() and free() into
+SMPI_SHARED_MALLOC() and SMPI_SHARED_FREE().
-If you want to disable this behavior, set the value to 0.
+SMPI provides 2 algorithms for this feature. The first one, called \c
+local, allocates one bloc per call to SMPI_SHARED_MALLOC() in your
+code (each call location gets its own bloc) and this bloc is shared
+amongst all MPI ranks. This is implemented with the shm_* functions
+to create a new POSIX shared memory object (kept in RAM, in /dev/shm)
+for each shared bloc.
+
+With the \c global algorithm, each call to SMPI_SHARED_MALLOC()
+returns a new adress, but it only points to a shadow bloc: its memory
+area is mapped on a 1MiB file on disk. If the returned bloc is of size
+N MiB, then the same file is mapped N times to cover the whole bloc.
+At the end, no matter how many SMPI_SHARED_MALLOC you do, this will
+only consume 1 MiB in memory.
+
+You can disable this behavior and come back to regular mallocs (for
+example for debugging purposes) using \c "no" as a value.
\subsection options_model_smpi_wtime smpi/wtime: Inject constant times for calls to MPI_Wtime
@@ -1208,9 +1232,9 @@ It can be done by using XBT. Go to \ref XBT_log for more details.
- \c smpi/papi-events: \ref options_smpi_papi_events
- \c smpi/privatize-global-variables: \ref options_smpi_global
- \c smpi/send-is-detached-thresh: \ref options_model_smpi_detached
+- \c smpi/shared-malloc: \ref options_model_smpi_shared_malloc
- \c smpi/simulate-computation: \ref options_smpi_bench
- \c smpi/test: \ref options_model_smpi_test
-- \c smpi/use-shared-malloc: \ref options_model_smpi_use_shared_malloc
- \c smpi/wtime: \ref options_model_smpi_wtime
- \c Tracing configuration options can be found in Section \ref tracing_tracing_options.