lmm_solve (experts only; check the code for more info).
If you compiled SimGrid accordingly, you can use packet-level network
-simulators as network models (see \ref pls). In that case, you have
+simulators as network models (see \ref pls_ns3). In that case, you have
two extra models, described below, and some \ref options_pls "specific
additional configuration flags".
- - \b NS3: Network pseudo-model using the NS3 tcp model instead of an
- analytic model
+ - \b NS3: Network pseudo-model using the NS3 tcp model
Concerning the CPU, we have only one model for now:
- \b Cas01: Simplistic CPU model (time=size/power)
- \b compound: Host model that is automatically chosen if
you change the network and CPU models
- \b ptask_L07: Host model somehow similar to Cas01+CM02 but
- allowing parallel tasks
+ allowing "parallel tasks", that are intended to model the moldable
+ tasks of the grid scheduling literature.
\subsection options_generic_plugin Plugins
may speedup the simulation by discarding very small actions, at the
price of a reduced numerical precision.
-\subsection options_model_nthreads Parallel threads for model updates
+\subsection options_concurrency_limit Concurrency limit
-By default, Surf computes the analytical models sequentially to share their
-resources and update their actions. It is possible to run them in parallel,
-using the \b surf/nthreads item (default value: 1). If you use a
-negative or null value, the amount of available cores is automatically
-detected and used instead.
-
-Depending on the workload of the models and their complexity, you may get a
-speedup or a slowdown because of the synchronization costs of threads.
+The maximum number of variables in a system can be tuned through
+the \b maxmin/concurrency_limit item (default value: 100). Setting a higher value can lift some limitations, such as the number of concurrent processes running on a single host.
\subsection options_model_network Configuring the Network model
in NS3. The only valid values (enforced on the SimGrid side) are
'NewReno' or 'Reno' or 'Tahoe'.
+\subsection options_model_storage Configuring the Storage model
+
+\subsubsection option_model_storage_maxfd Maximum amount of file descriptors per host
+
+Each host maintains a fixed-size array of its file descriptors. You
+can change its size (1024 by default) through the \b
+storage/max_file_descriptors item to either enlarge it if your
+application requires it or to reduce it to save memory space.
+
\section options_modelchecking Configuring the Model-Checking
To enable the SimGrid model-checking support the program should
\section options_tracing Configuring the tracing subsystem
-The \ref tracing "tracing subsystem" can be configured in several
+The \ref outcomes_vizu "tracing subsystem" can be configured in several
different ways depending on the nature of the simulator (MSG, SimDag,
SMPI) and the kind of traces that need to be obtained. See the \ref
tracing_tracing_options "Tracing Configuration Options subsection" to
code, and create an execution task within the simulator to take this
into account. For that, the actual duration is measured on the host
machine and then scaled to the power of the corresponding simulated
-machine. The variable \b smpi/running-power allows to specify the
-computational power of the host machine (in flop/s) to use when
+machine. The variable \b smpi/host-speed allows to specify the
+computational speed of the host machine (in flop/s) to use when
scaling the execution times. It defaults to 20000, but you really want
to update it to get accurate simulation results.
seconds) below which the execution chunks are not reported to the
simulation kernel (default value: 1e-6).
-
\note
The option smpi/cpu-threshold ignores any computation time spent
below this threshold. SMPI does not consider the \a amount of these
value that is too low, you may end up with unreliable simulation
results.
- In some cases, however, one may wish to disable simulation of
+In some cases, however, one may wish to disable simulation of
application computation. This is the case when SMPI is used not to
simulate an MPI applications, but instead an MPI code that performs
"live replay" of another MPI app (e.g., ScalaTrace's replay tool,
To disable the benchmarking/simulation of computation in the simulated
application, the variable \b smpi/simulate-computation should be set to no.
-Equivalently, setting \b smpi/cpu-threshold to -1 also ignores all
-computation.
\note
This option just ignores the timings in your simulation; it still executes
the computations itself. If you want to stop SMPI from doing that,
- you should check the SMPI_SAMPLE macros, documented in the chapter
+ you should check the SMPI_SAMPLE macros, documented in the section
\ref SMPI_adapting_speed.
+Solution | Computations actually executed? | Computations simulated ?
+---------------------------------- | ------------------------------- | ------------------------
+--cfg=smpi/simulate-computation:no | Yes | No, never
+--cfg=smpi/cpu-threshold:42 | Yes, in all cases | Only if it lasts more than 42 seconds
+SMPI_SAMPLE() macro | Only once per loop nest (see @ref SMPI_adapting_speed "documentation") | Always
+
\subsection options_model_smpi_adj_file smpi/comp-adjustment-file: Slow-down or speed-up parts of your code.
This option allows you to pass a file that contains two columns: The first column
1. http://simgrid.gforge.inria.fr/contrib/smpi-calibration-doc.html
2. http://simgrid.gforge.inria.fr/contrib/smpi-saturation-doc.html
+\subsection options_smpi_papi_events smpi/papi-events: Trace hardware counters with PAPI
+
+\warning
+ This option is experimental and will be subject to change.
+ This feature currently requires superuser privileges, as registers are queried.
+ Only use this feature with code you trust! Call smpirun for instance via
+ smpirun -wrapper "sudo " <your-parameters>
+ or run sudo sh -c "echo 0 > /proc/sys/kernel/perf_event_paranoid"
+ In the later case, sudo will not be required.
+
+\note
+ This option is only available when SimGrid was compiled with PAPI support.
+
+This option takes the names of PAPI counters and adds their respective values
+to the trace files. (See Section \ref tracing_tracing_options.)
+
+It is planned to make this feature available on a per-process (or per-thread?) basis.
+The first draft, however, just implements a "global" (i.e., for all processes) set
+of counters, the "default" set.
+
+\verbatim
+--cfg=smpi/papi-events:"default:PAPI_L3_LDM:PAPI_L2_LDM"
+\endverbatim
+
\subsection options_smpi_global smpi/privatize-global-variables: Automatic privatization of global variables
MPI executables are meant to be executed in separated processes, but SMPI is
To use this runtime automatic switching, the variable \b smpi/privatize-global-variables
should be set to yes
+\warning
+ This configuration option cannot be set in your platform file. You can only
+ pass it as an argument to smpirun.
\subsection options_model_smpi_detached Simulating MPI detached send
immediately. This is different from the threshold detailed in \ref options_model_network_asyncsend
because the message is not effectively sent when the send is posted. SMPI still waits for the
correspondant receive to be posted to perform the communication operation. This threshold can be set
-by changing the \b smpi/send-is-detached item. The default value is 65536.
+by changing the \b smpi/send-is-detached-thresh item. The default value is 65536.
\subsection options_model_smpi_collectives Simulating MPI collective algorithms
The behavior and motivation for this configuration option is identical with \a smpi/test, see
Section \ref options_model_smpi_test for details.
+\subsection options_model_smpi_init smpi/init: Inject constant times for calls to MPI_Init
+
+\b Default value: 0
+
+The behavior for this configuration option is identical with \a smpi/test, see
+Section \ref options_model_smpi_test for details.
+
\subsection options_model_smpi_ois smpi/ois: Inject constant times for asynchronous send operations
This configuration option works exactly as \a smpi/os, see Section \ref options_model_smpi_os.
\subsection options_exception_cutpath Truncate local path from exception backtrace
-<b>This configuration option is an internal option and should normally not be used
-by the user.</b> It is used to remove the path from the backtrace
-shown when an exception is thrown; if we didn't remove this part, the tests
-testing the exception parts of simgrid would fail on most machines, as we are
-currently comparing output. Clearly, the path used on different machines are almost
-guaranteed to be different and hence, the output would
-mismatch, causing the test to fail.
+\verbatim
+--cfg=exceptions/cutpath:1
+\endverbatim
+
+This configuration option is used to remove the path from the
+backtrace shown when an exception is thrown. This is mainly useful for
+the tests: the full file path makes the tests not reproducible, and
+thus failing as we are currently comparing output. Clearly, the path
+used on different machines are almost guaranteed to be different and
+hence, the output would mismatch, causing the test to fail.
\section options_log Logging Configuration
- \c path: \ref options_generic_path
- \c plugin: \ref options_generic_plugin
-- \c surf/nthreads: \ref options_model_nthreads
+- \c storage/max_file_descriptors: \ref option_model_storage_maxfd
+
- \c surf/precision: \ref options_model_precision
- \c <b>For collective operations of SMPI, please refer to Section \ref options_index_smpi_coll</b>
- \c smpi/comp-adjustment-file: \ref options_model_smpi_adj_file
- \c smpi/cpu-threshold: \ref options_smpi_bench
- \c smpi/display-timing: \ref options_smpi_timing
-- \c smpi/lat-factor: \ref options_model_smpi_lat_factor
+- \c smpi/host-speed: \ref options_smpi_bench
- \c smpi/IB-penalty-factors: \ref options_model_network_coefs
- \c smpi/iprobe: \ref options_model_smpi_iprobe
+- \c smpi/init: \ref options_model_smpi_init
+- \c smpi/lat-factor: \ref options_model_smpi_lat_factor
- \c smpi/ois: \ref options_model_smpi_ois
- \c smpi/or: \ref options_model_smpi_or
- \c smpi/os: \ref options_model_smpi_os
+- \c smpi/papi-events: \ref options_smpi_papi_events
- \c smpi/privatize-global-variables: \ref options_smpi_global
-- \c smpi/running-power: \ref options_smpi_bench
- \c smpi/send-is-detached-thresh: \ref options_model_smpi_detached
- \c smpi/simulate-computation: \ref options_smpi_bench
- \c smpi/test: \ref options_model_smpi_test