X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e6b463c5990e7bb6a9ee8ba3d0392960aa7274d3..8454c4dde25913b0c430ceff82aabab70ff0b1a6:/src/simgrid/sg_config.c diff --git a/src/simgrid/sg_config.c b/src/simgrid/sg_config.c index 37bb10968f..8e456dcc29 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); @@ -388,6 +393,12 @@ static void _sg_cfg_cb_context_stack_size(const char *name, int pos) smx_context_stack_size = xbt_cfg_get_int(_sg_cfg_set, name) * 1024; } +static void _sg_cfg_cb_context_guard_size(const char *name, int pos) +{ + smx_context_guard_size_was_set = 1; + smx_context_guard_size = xbt_cfg_get_int(_sg_cfg_set, name) * xbt_pagesize; +} + static void _sg_cfg_cb_contexts_nthreads(const char *name, int pos) { SIMIX_context_set_nthreads(xbt_cfg_get_int(_sg_cfg_set, name)); @@ -528,8 +539,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 +608,18 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_string, 1, 1, _mc_cfg_cb_property, NULL); xbt_cfg_setdefault_string(_sg_cfg_set, "model-check/property", ""); + /* do communications determinism model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/communications_determinism", + "Enable/disable the detection of determinism in the communications schemes", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_comms_determinism, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/communications_determinism", "no"); + + /* do send determinism model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/send_determinism", + "Enable/disable the detection of send-determinism in the communications schemes", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_send_determinism, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/send_determinism", "no"); + /* Specify the kind of model-checking reduction */ xbt_cfg_register(&_sg_cfg_set, "model-check/reduction", "Specify the kind of exploration reduction (either none or DPOR)", @@ -604,6 +632,12 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_timeout, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/timeout", "no"); + /* Enable/disable global hash computation with model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/hash", + "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"); + /* Set max depth exploration */ xbt_cfg_register(&_sg_cfg_set, "model-check/max_depth", "Specify the max depth of exploration (default : 1000)", @@ -650,14 +684,26 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_string, 1, 1, _sg_cfg_cb_context_factory, NULL); xbt_cfg_setdefault_string(_sg_cfg_set, "contexts/factory", dflt_ctx_fact); - /* stack size of contexts in Ko */ + /* stack size of contexts in KiB */ xbt_cfg_register(&_sg_cfg_set, "contexts/stack_size", - "Stack size of contexts in Kib", + "Stack size of contexts in KiB", xbt_cfgelm_int, 1, 1, _sg_cfg_cb_context_stack_size, NULL); - xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/stack_size", 128); + xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/stack_size", 8*1024); /* No, it was not set yet (the above setdefault() changed this to 1). */ smx_context_stack_size_was_set = 0; + /* guard size for contexts stacks in memory pages */ + 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; + /* number of parallel threads for user processes */ xbt_cfg_register(&_sg_cfg_set, "contexts/nthreads", "Number of parallel threads used to execute user contexts", @@ -719,6 +765,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); @@ -739,6 +790,11 @@ 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); + 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"); + //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; @@ -768,10 +824,12 @@ 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_cfg_setdefault_double(_sg_cfg_set, "smpi/iprobe", 1e-4); + xbt_cfg_register(&_sg_cfg_set, "smpi/coll_selector", "Which collective selector to use", xbt_cfgelm_string, 1, 1, NULL, NULL); @@ -905,13 +963,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(); }