X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f2df13795e01302813a6aef10825ec7e922ce530..eb570ec90c7f03bf8bd89e52f9f1ff97fb86c788:/src/simgrid/sg_config.c?ds=sidebyside diff --git a/src/simgrid/sg_config.c b/src/simgrid/sg_config.c index 9a97006461..f857766722 100644 --- a/src/simgrid/sg_config.c +++ b/src/simgrid/sg_config.c @@ -258,6 +258,11 @@ static void _sg_cfg_cb__maxmin_precision(const char* name, int pos) sg_maxmin_precision = xbt_cfg_get_double(_sg_cfg_set, name); } +static void _sg_cfg_cb__surf_precision(const char* name, int pos) +{ + sg_surf_precision = xbt_cfg_get_double(_sg_cfg_set, name); +} + static void _sg_cfg_cb__sender_gap(const char* name, int pos) { sg_sender_gap = xbt_cfg_get_double(_sg_cfg_set, name); @@ -337,6 +342,21 @@ static void _sg_cfg_cb__coll_scatter(const char *name, int pos){ static void _sg_cfg_cb__coll_barrier(const char *name, int pos){ _sg_cfg_cb__coll("barrier", mpi_coll_barrier_description, name, pos); } + +static void _sg_cfg_cb__wtime_sleep(const char *name, int pos){ + smpi_wtime_sleep = xbt_cfg_get_double(_sg_cfg_set, name); +} + +static void _sg_cfg_cb__iprobe_sleep(const char *name, int pos){ + smpi_iprobe_sleep = xbt_cfg_get_double(_sg_cfg_set, name); +} + +static void _sg_cfg_cb__test_sleep(const char *name, int pos){ + smpi_test_sleep = xbt_cfg_get_double(_sg_cfg_set, name); +} + + + #endif /* callback of the inclusion path */ @@ -534,8 +554,13 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_double, 1, 1, _sg_cfg_cb__tcp_gamma, NULL); xbt_cfg_setdefault_double(_sg_cfg_set, "network/TCP_gamma", 4194304.0); + xbt_cfg_register(&_sg_cfg_set, "surf/precision", + "Numerical precision used when updating simulation times (hence this value is expressed in seconds)", + xbt_cfgelm_double, 1, 1, _sg_cfg_cb__surf_precision, NULL); + xbt_cfg_setdefault_double(_sg_cfg_set, "surf/precision", 0.00001); + xbt_cfg_register(&_sg_cfg_set, "maxmin/precision", - "Numerical precision used when updating simulation models (epsilon in double comparisons)", + "Numerical precision used when computing resource sharing (hence this value is expressed in ops/sec or bytes/sec)", xbt_cfgelm_double, 1, 1, _sg_cfg_cb__maxmin_precision, NULL); xbt_cfg_setdefault_double(_sg_cfg_set, "maxmin/precision", 0.00001); @@ -592,6 +617,18 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_int, 1, 1, _mc_cfg_cb_checkpoint, NULL); xbt_cfg_setdefault_int(_sg_cfg_set, "model-check/checkpoint", 0); + /* do stateful model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/sparse-checkpoint", + "Use sparse per-page snapshots.", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_sparse_checkpoint, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/sparse-checkpoint", "no"); + + /* do stateful model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/soft-dirty", + "Use sparse per-page snapshots.", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_soft_dirty, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/soft-dirty", "no"); + /* do liveness model-checking */ xbt_cfg_register(&_sg_cfg_set, "model-check/property", "Specify the name of the file containing the property. It must be the result of the ltl2ba program.", @@ -624,7 +661,7 @@ void sg_config_init(int *argc, char **argv) /* Enable/disable global hash computation with model-checking */ xbt_cfg_register(&_sg_cfg_set, "model-check/hash", - "Enable/Disable state hash for state comparison", + "Enable/Disable state hash for state comparison (exprimental)", xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_hash, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/hash", "no"); @@ -686,7 +723,11 @@ void sg_config_init(int *argc, char **argv) xbt_cfg_register(&_sg_cfg_set, "contexts/guard_size", "Guard size for contexts stacks in memory pages", xbt_cfgelm_int, 1, 1, _sg_cfg_cb_context_guard_size, NULL); +#if defined(_XBT_WIN32) || (PTH_STACKGROWTH != -1) + xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/guard_size", 0); +#else xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/guard_size", 1); +#endif /* No, it was not set yet (the above setdefault() changed this to 1). */ smx_context_guard_size_was_set = 0; @@ -740,6 +781,22 @@ void sg_config_init(int *argc, char **argv) xbt_cfg_setdefault_string(_sg_cfg_set, "ns3/TcpModel", "default"); #endif + //For smpi/bw_factor and smpi/lat_factor + //Default value have to be "threshold0:value0;threshold1:value1;...;thresholdN:valueN" + //test is if( size >= thresholdN ) return valueN; + //Values can be modified with command line --cfg=smpi/bw_factor:"threshold0:value0;threshold1:value1;...;thresholdN:valueN" + // or with tag config put line + // SMPI model can be used without enable_smpi, so keep this the ifdef. + xbt_cfg_register(&_sg_cfg_set, "smpi/bw_factor", + "Bandwidth factors for smpi.", + xbt_cfgelm_string, 1, 1, NULL, NULL); + xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/bw_factor", "65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493;1426:0.608902;732:0.341987;257:0.338112;0:0.812084"); + + xbt_cfg_register(&_sg_cfg_set, "smpi/lat_factor", + "Latency factors for smpi.", + xbt_cfgelm_string, 1, 1, NULL, NULL); + xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/lat_factor", "65472:11.6436;15424:3.48845;9376:2.59299;5776:2.18796;3484:1.88101;1426:1.61075;732:1.9503;257:1.95341;0:2.01467"); + #ifdef HAVE_SMPI xbt_cfg_register(&_sg_cfg_set, "smpi/running_power", "Power of the host running the simulation (in flop/s). Used to bench the operations.", @@ -751,6 +808,11 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/display_timing", "no"); + xbt_cfg_register(&_sg_cfg_set, "smpi/simulate_computation", + "Boolean indicating whether the computational part of the simulated application should be simulated.", + xbt_cfgelm_boolean, 1, 1, NULL, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/simulate_computation", "yes"); + xbt_cfg_register(&_sg_cfg_set, "smpi/use_shared_malloc", "Boolean indicating whether we should use shared memory when using SMPI_SHARED_MALLOC. Allows user to disable it for debug purposes.", xbt_cfgelm_boolean, 1, 1, NULL, NULL); @@ -771,20 +833,15 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_int, 1, 1, NULL, NULL); xbt_cfg_setdefault_int(_sg_cfg_set, "smpi/send_is_detached_thres", 65536); - //For smpi/bw_factor and smpi/lat_factor - //Default value have to be "threshold0:value0;threshold1:value1;...;thresholdN:valueN" - //test is if( size >= thresholdN ) return valueN; - //Values can be modified with command line --cfg=smpi/bw_factor:"threshold0:value0;threshold1:value1;...;thresholdN:valueN" - // or with tag config put line - xbt_cfg_register(&_sg_cfg_set, "smpi/bw_factor", - "Bandwidth factors for smpi.", - xbt_cfgelm_string, 1, 1, NULL, NULL); - xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/bw_factor", "65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493;1426:0.608902;732:0.341987;257:0.338112;0:0.812084"); + xbt_cfg_register(&_sg_cfg_set, "smpi/privatize_global_variables", + "Boolean indicating whether we should privatize global variable at runtime.", + xbt_cfgelm_boolean, 1, 1, NULL, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/privatize_global_variables", "no"); - xbt_cfg_register(&_sg_cfg_set, "smpi/lat_factor", - "Latency factors for smpi.", + xbt_cfg_register(&_sg_cfg_set, "smpi/IB_penalty_factors", + "Correction factor to communications using Infiniband model with contention (default value based on Stampede cluster profiling)", xbt_cfgelm_string, 1, 1, NULL, NULL); - xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/lat_factor", "65472:11.6436;15424:3.48845;9376:2.59299;5776:2.18796;3484:1.88101;1426:1.61075;732:1.9503;257:1.95341;0:2.01467"); + xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/IB_penalty_factors", "0.965;0.925;1.35"); xbt_cfg_register(&_sg_cfg_set, "smpi/os", "Small messages timings (MPI_Send minimum time for small messages)", @@ -800,10 +857,22 @@ void sg_config_init(int *argc, char **argv) "Small messages timings (MPI_Recv minimum time for small messages)", xbt_cfgelm_string, 1, 1, NULL, NULL); xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/or", "1:0:0:0:0"); + xbt_cfg_register(&_sg_cfg_set, "smpi/iprobe", "Minimum time to inject inside a call to MPI_Iprobe", - xbt_cfgelm_double, 1, 1, NULL, NULL); + xbt_cfgelm_double, 1, 1, _sg_cfg_cb__iprobe_sleep, NULL); xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/iprobe", 1e-4); + + xbt_cfg_register(&_sg_cfg_set, "smpi/test", + "Minimum time to inject inside a call to MPI_Test", + xbt_cfgelm_double, 1, 1, _sg_cfg_cb__test_sleep, NULL); + xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/test", 1e-4); + + xbt_cfg_register(&_sg_cfg_set, "smpi/wtime", + "Minimum time to inject inside a call to MPI_Wtime", + xbt_cfgelm_double, 1, 1, _sg_cfg_cb__wtime_sleep, NULL); + xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/wtime", 0.0); + xbt_cfg_register(&_sg_cfg_set, "smpi/coll_selector", "Which collective selector to use", xbt_cfgelm_string, 1, 1, NULL, NULL); @@ -937,13 +1006,17 @@ void surf_config_models_setup() xbt_assert(network_model_name, "Set a network model to use with the 'compound' workstation model"); + if(surf_cpu_model_init_preparse){ + surf_cpu_model_init_preparse(); + } else { + cpu_id = + find_model_description(surf_cpu_model_description, cpu_model_name); + surf_cpu_model_description[cpu_id].model_init_preparse(); + } + network_id = find_model_description(surf_network_model_description, network_model_name); - cpu_id = - find_model_description(surf_cpu_model_description, cpu_model_name); - - surf_cpu_model_description[cpu_id].model_init_preparse(); surf_network_model_description[network_id].model_init_preparse(); }