X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2807fde4fd1f59c230d69a934634c5dfb77905f2..53665b99d0b7d1b7444a396a791f6629eb71822b:/doc/doxygen/options.doc
diff --git a/doc/doxygen/options.doc b/doc/doxygen/options.doc
index 17acadde2d..9fb339929b 100644
--- a/doc/doxygen/options.doc
+++ b/doc/doxygen/options.doc
@@ -654,7 +654,7 @@ the slowest to the most efficient:
- \b ucontext: fast factory using System V contexts (Linux and FreeBSD only)
- \b boost: This uses the [context implementation](http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/index.html)
of the boost library for a performance that is comparable to our
- raw implementation.\nInstall the relevant library (e.g. with the
+ raw implementation.\n Install the relevant library (e.g. with the
libboost-contexts-dev package on Debian/Ubuntu) and recompile
SimGrid. Note that our implementation is not compatible with recent
implementations of the library, and it will be hard to fix this since
@@ -998,49 +998,21 @@ of counters, the "default" set.
\subsection options_smpi_privatization smpi/privatization: Automatic privatization of global variables
-MPI executables are usually meant to be executed in separated processes, but SMPI is
-executed in only one process. Global variables from executables will be placed
-in the same memory zone and shared between processes, causing intricate bugs.
-Several options are possible to avoid this, as described in the main
-SMPI publication.
-SimGrid provides two ways of automatically privatizing the globals,
-and this option allows to choose between them.
-
- - no (default): Do not automatically privatize variables.
- - mmap or yes: Runtime automatic switching of the data segments.\n
- SMPI stores a copy of each global data segment for each process,
- and at each context switch replaces the actual data with its copy
- from the right process. No copy actually occures as this mechanism
- uses mmap for efficiency. As such, it is for now limited to
- systems supporting this functionnality (all Linux and most BSD).\n
- Another limitation is that SMPI only accounts for global variables
- defined in the executable. If the processes use external global
- variables from dynamic libraries, they won't be switched
- correctly. The easiest way to solve this is to statically link
- against the library with these globals (but you should never
- statically link against the simgrid library itself).
- - dlopen: Link multiple times against the binary.\n
- SMPI loads several copy of the same binary in memory, resulting in
- the natural duplication global variables. Since the dynamic linker
- refuses to link the same file several times, the binary is copied
- in a temporary file before being dl-loaded (it is erased right
- after loading).\n
- Note that this feature is somewhat experimental at time of writing
- (v3.16) but seems to work.\n
- This approach greatly speeds up the context switching, down to
- about 40 CPU cycles with our raw contextes, instead of requesting
- several syscalls with the \c mmap approach. Another advantage is
- that it permits to run the SMPI contexts in parallel, which is
- obviously not possible with the \c mmap approach.\n
- Further work may be possible to alleviate the memory and disk
- overconsumption. It seems that we could
- punch holes
- in the files before dl-loading them to remove the code and
- constants, and mmap these area onto a unique copy. This require
- to understand the ELF layout of the file, but would
- reduce the disk- and memory- usage to the bare minimum. In
- addition, this would reduce the pressure on the CPU caches (in
- particular on instruction one).
+MPI executables are usually meant to be executed in separated
+processes, but SMPI is executed in only one process. Global variables
+from executables will be placed in the same memory zone and shared
+between processes, causing intricate bugs. Several options are
+possible to avoid this, as described in the main
+SMPI publication and in
+the @ref SMPI_what_globals "SMPI documentation". SimGrid provides two
+ways of automatically privatizing the globals, and this option allows
+to choose between them.
+
+ - no (default when not using smpirun): Do not automatically privatize variables.
+ Pass \c -no-privatize to smpirun to disable this feature.
+ - dlopen or yes (default when using smpirun): Link multiple times against the binary.
+ - mmap (slower, but maybe somewhat more stable):
+ Runtime automatic switching of the data segments.
\warning
This configuration option cannot be set in your platform file. You can only