X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/251bbe5068a2a7b23a23a4df11fc1b785dce6ff4..e8a8a4eff62f09fde8d73dae597bfbd09f3c9786:/src/simgrid/sg_config.c diff --git a/src/simgrid/sg_config.c b/src/simgrid/sg_config.c index 65878a0af4..a36c0a2f3b 100644 --- a/src/simgrid/sg_config.c +++ b/src/simgrid/sg_config.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2010, 2012-2014. The SimGrid Team. +/* Copyright (c) 2009-2010, 2012-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -18,12 +18,16 @@ #include "instr/instr_interface.h" #include "simgrid/simix.h" #include "simgrid/sg_config.h" +#ifdef HAVE_SMPI #include "smpi/smpi_interface.h" +#endif #include "mc/mc.h" -#include "instr/instr.h" +#include "src/mc/mc_record.h" +#include "simgrid/instr.h" +#include "src/mc/mc_replay.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_config, surf, - "About the configuration of simgrid"); + "About the configuration of SimGrid"); xbt_cfg_t _sg_cfg_set = NULL; @@ -69,10 +73,8 @@ static void sg_config_cmd_line(int *argc, char **argv) "to the command line.\n" "\n" "You can also use --help-models to see the details of all models known by this simulator.\n" -#ifdef HAVE_TRACING "\n" "You can also use --help-tracing to see the details of all tracing options known by this simulator.\n" -#endif "\n" "You can also use --help-logs and --help-log-categories to see the details of logging output.\n" "\n" @@ -83,7 +85,7 @@ static void sg_config_cmd_line(int *argc, char **argv) } else if (!strcmp(argv[i], "--help-models")) { int k; - model_help("workstation", surf_workstation_model_description); + model_help("host", surf_host_model_description); printf("\n"); model_help("CPU", surf_cpu_model_description); printf("\n"); @@ -95,11 +97,9 @@ static void sg_config_cmd_line(int *argc, char **argv) surf_optimization_mode_description[k].description); printf("Both network and CPU models have 'Lazy' as default optimization level\n\n"); shall_exit = 1; -#ifdef HAVE_TRACING } else if (!strcmp(argv[i], "--help-tracing")) { TRACE_help (1); shall_exit = 1; -#endif } else { argv[j++] = argv[i]; } @@ -133,8 +133,8 @@ static void _sg_cfg_cb__plugin(const char *name, int pos) surf_plugin_description[plugin_id].model_init_preparse(); } -/* callback of the workstation/model variable */ -static void _sg_cfg_cb__workstation_model(const char *name, int pos) +/* callback of the host/model variable */ +static void _sg_cfg_cb__host_model(const char *name, int pos) { char *val; @@ -144,16 +144,16 @@ static void _sg_cfg_cb__workstation_model(const char *name, int pos) val = xbt_cfg_get_string(_sg_cfg_set, name); if (!strcmp(val, "help")) { - model_help("workstation", surf_workstation_model_description); + model_help("host", surf_host_model_description); sg_cfg_exit_early(); } /* Make sure that the model exists */ - find_model_description(surf_workstation_model_description, val); + find_model_description(surf_host_model_description, val); } -/* callback of the vm_workstation/model variable */ -static void _sg_cfg_cb__vm_workstation_model(const char *name, int pos) +/* callback of the vm/model variable */ +static void _sg_cfg_cb__vm_model(const char *name, int pos) { char *val; @@ -163,12 +163,12 @@ static void _sg_cfg_cb__vm_workstation_model(const char *name, int pos) val = xbt_cfg_get_string(_sg_cfg_set, name); if (!strcmp(val, "help")) { - model_help("vm_workstation", surf_vm_workstation_model_description); + model_help("vm", surf_vm_model_description); sg_cfg_exit_early(); } /* Make sure that the model exists */ - find_model_description(surf_vm_workstation_model_description, val); + find_model_description(surf_vm_model_description, val); } /* callback of the cpu/model variable */ @@ -228,7 +228,7 @@ static void _sg_cfg_cb__storage_mode(const char *name, int pos) find_model_description(surf_storage_model_description, val); } -/* callback of the workstation_model variable */ +/* callback of the network_model variable */ static void _sg_cfg_cb__network_model(const char *name, int pos) { char *val; @@ -302,7 +302,7 @@ static void _sg_cfg_cb__coll(const char *category, } /* New Module missing */ - find_coll_description(table, val); + find_coll_description(table, val, category); } static void _sg_cfg_cb__coll_gather(const char *name, int pos){ _sg_cfg_cb__coll("gather", mpi_coll_gather_description, name, pos); @@ -342,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 */ @@ -352,21 +367,22 @@ static void _sg_cfg_cb__surf_path(const char *name, int pos) } /* callback to decide if we want to use the model-checking */ -#include "xbt_modinter.h" +#include "src/xbt_modinter.h" + #ifdef HAVE_MC extern int _sg_do_model_check; /* this variable lives in xbt_main until I find a right location for it */ +extern int _sg_do_model_check_record; #endif -static void _sg_cfg_cb_model_check(const char *name, int pos) -{ +static void _sg_cfg_cb_model_check_replay(const char *name, int pos) { + MC_record_path = xbt_cfg_get_string(_sg_cfg_set, name); +} + #ifdef HAVE_MC - _sg_do_model_check = xbt_cfg_get_boolean(_sg_cfg_set, name); -#else - if (xbt_cfg_get_boolean(_sg_cfg_set, name)) { - xbt_die("You tried to activate the model-checking from the command line, but it was not compiled in. Change your settings in cmake, recompile and try again"); - } -#endif +static void _sg_cfg_cb_model_check_record(const char *name, int pos) { + _sg_do_model_check_record = xbt_cfg_get_boolean(_sg_cfg_set, name); } +#endif extern int _sg_do_verbose_exit; @@ -430,14 +446,16 @@ static void _sg_cfg_cb_contexts_parallel_mode(const char *name, int pos) static void _sg_cfg_cb__surf_network_coordinates(const char *name, int pos) { + static int already_set = 0; int val = xbt_cfg_get_boolean(_sg_cfg_set, name); if (val) { - if (!COORD_HOST_LEVEL) { - COORD_HOST_LEVEL = xbt_lib_add_level(host_lib,xbt_dynar_free_voidp); + if (!already_set) { + COORD_HOST_LEVEL = sg_host_extension_create(xbt_dynar_free_voidp); COORD_ASR_LEVEL = xbt_lib_add_level(as_router_lib,xbt_dynar_free_voidp); } + already_set = 1; } else - if (COORD_HOST_LEVEL) + if (already_set) xbt_die("Setting of whether to use coordinate cannot be disabled once set."); } @@ -447,18 +465,6 @@ static void _sg_cfg_cb__surf_network_crosstraffic(const char *name, sg_network_crosstraffic = xbt_cfg_get_boolean(_sg_cfg_set, name); } -#ifdef HAVE_GTNETS -static void _sg_cfg_cb__gtnets_jitter(const char *name, int pos) -{ - sg_gtnets_jitter = xbt_cfg_get_double(_sg_cfg_set, name); -} - -static void _sg_cfg_cb__gtnets_jitter_seed(const char *name, int pos) -{ - sg_gtnets_jitter_seed = xbt_cfg_get_int(_sg_cfg_set, name); -} -#endif - /* build description line with possible values */ static void describe_model(char *result, const s_surf_model_description_t model_description[], @@ -522,17 +528,17 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__optimization_mode, NULL); xbt_cfg_setdefault_string(_sg_cfg_set, "network/optim", "Lazy"); - describe_model(description, surf_workstation_model_description, - "model", "The model to use for the workstation"); - xbt_cfg_register(&_sg_cfg_set, "workstation/model", description, - xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__workstation_model, NULL); - xbt_cfg_setdefault_string(_sg_cfg_set, "workstation/model", "default"); + describe_model(description, surf_host_model_description, + "model", "The model to use for the host"); + xbt_cfg_register(&_sg_cfg_set, "host/model", description, + xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__host_model, NULL); + xbt_cfg_setdefault_string(_sg_cfg_set, "host/model", "default"); - describe_model(description, surf_vm_workstation_model_description, - "model", "The model to use for the vm workstation"); - xbt_cfg_register(&_sg_cfg_set, "vm_workstation/model", description, - xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__vm_workstation_model, NULL); - xbt_cfg_setdefault_string(_sg_cfg_set, "vm_workstation/model", "default"); + describe_model(description, surf_vm_model_description, + "model", "The model to use for the vm"); + xbt_cfg_register(&_sg_cfg_set, "vm/model", description, + xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__vm_model, NULL); + xbt_cfg_setdefault_string(_sg_cfg_set, "vm/model", "default"); xbt_cfg_register(&_sg_cfg_set, "network/TCP_gamma", "Size of the biggest TCP window (cat /proc/sys/net/ipv4/tcp_[rw]mem for recv/send window; Use the last given value, which is the max window size)", @@ -588,12 +594,17 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, NULL, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/maxmin_selective_update", "no"); + /* Replay (this part is enabled even if MC it disabled) */ + xbt_cfg_register(&_sg_cfg_set, "model-check/replay", + "Uenable replay mode with the given path", + xbt_cfgelm_string, 0, 1, _sg_cfg_cb_model_check_replay, NULL); + #ifdef HAVE_MC - /* do model-checking */ - xbt_cfg_register(&_sg_cfg_set, "model-check", - "Verify the system through model-checking instead of simulating it (EXPERIMENTAL)", - xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb_model_check, NULL); - xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check", "no"); + /* do model-checking-record */ + xbt_cfg_register(&_sg_cfg_set, "model-check/record", + "Record the model-checking paths", + xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb_model_check_record, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/record", "no"); /* do stateful model-checking */ xbt_cfg_register(&_sg_cfg_set, "model-check/checkpoint", @@ -612,7 +623,12 @@ void sg_config_init(int *argc, char **argv) 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", "yes"); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/soft-dirty", "no"); + + xbt_cfg_register(&_sg_cfg_set, "model-check/ksm", + "Kernel same-page merging", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_ksm, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/ksm", "no"); /* do liveness model-checking */ xbt_cfg_register(&_sg_cfg_set, "model-check/property", @@ -650,6 +666,13 @@ void sg_config_init(int *argc, char **argv) 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 */ + /* Currently, this option cannot be used. */ + xbt_cfg_register(&_sg_cfg_set, "model-check/snapshot_fds", + "Whether file descriptors must be snapshoted", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_snapshot_fds, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/snapshot_fds", "no"); + /* Set max depth exploration */ xbt_cfg_register(&_sg_cfg_set, "model-check/max_depth", "Specify the max depth of exploration (default : 1000)", @@ -667,6 +690,12 @@ void sg_config_init(int *argc, char **argv) "Specify the name of dot file corresponding to graph state", xbt_cfgelm_string, 1, 1, _mc_cfg_cb_dot_output, NULL); xbt_cfg_setdefault_string(_sg_cfg_set, "model-check/dot_output", ""); + + /* Enable/disable non progressive cycles detection with model-checking */ + xbt_cfg_register(&_sg_cfg_set, "model-check/termination", + "Enable/Disable non progressive cycle detection", + xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_termination, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/termination", "no"); #endif /* do verbose-exit */ @@ -748,17 +777,6 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb__surf_network_crosstraffic, NULL); xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/crosstraffic", "no"); -#ifdef HAVE_GTNETS - xbt_cfg_register(&_sg_cfg_set, "gtnets/jitter", - "Double value to oscillate the link latency, uniformly in random interval [-latency*gtnets_jitter,latency*gtnets_jitter)", - xbt_cfgelm_double, 1, 1, _sg_cfg_cb__gtnets_jitter, NULL); - xbt_cfg_setdefault_double(_sg_cfg_set, "gtnets/jitter", 0.0); - - xbt_cfg_register(&_sg_cfg_set, "gtnets/jitter_seed", - "Use a positive seed to reproduce jitted results, value must be in [1,1e8], default is 10", - xbt_cfgelm_int, 0, 1, _sg_cfg_cb__gtnets_jitter_seed, NULL); - xbt_cfg_setdefault_int(_sg_cfg_set, "gtnets/jitter_seed", 10); -#endif #ifdef HAVE_NS3 xbt_cfg_register(&_sg_cfg_set, "ns3/TcpModel", "The ns3 tcp model can be : NewReno or Reno or Tahoe", @@ -766,6 +784,27 @@ 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"); + + 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/IB_penalty_factors", "0.965;0.925;1.35"); + #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.", @@ -792,10 +831,10 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_double, 1, 1, NULL, NULL); xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/cpu_threshold", 1e-6); - xbt_cfg_register(&_sg_cfg_set, "smpi/async_small_thres", + xbt_cfg_register(&_sg_cfg_set, "smpi/async_small_thresh", "Maximal size of messages that are to be sent asynchronously, without waiting for the receiver", xbt_cfgelm_int, 1, 1, NULL, NULL); - xbt_cfg_setdefault_int(_sg_cfg_set, "smpi/async_small_thres", 0); + xbt_cfg_setdefault_int(_sg_cfg_set, "smpi/async_small_thresh", 0); xbt_cfg_register(&_sg_cfg_set, "smpi/send_is_detached_thres", "Threshold of message size where MPI_Send stops behaving like MPI_Isend and becomes MPI_Ssend", @@ -807,21 +846,6 @@ void sg_config_init(int *argc, char **argv) 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; - //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/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"); - xbt_cfg_register(&_sg_cfg_set, "smpi/os", "Small messages timings (MPI_Send minimum time for small messages)", xbt_cfgelm_string, 1, 1, NULL, NULL); @@ -839,9 +863,19 @@ void sg_config_init(int *argc, char **argv) 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); @@ -892,6 +926,11 @@ void sg_config_init(int *argc, char **argv) xbt_cfgelm_string, 0, 1, &_sg_cfg_cb__coll_reduce, NULL); #endif // HAVE_SMPI + xbt_cfg_register(&_sg_cfg_set, "exception/cutpath", + "\"yes\" or \"no\". \"yes\" will cut all path information from call traces, used e.g. in exceptions.", + xbt_cfgelm_boolean, 1, 1, NULL, NULL); + xbt_cfg_setdefault_boolean(_sg_cfg_set, "exception/cutpath", "no"); + xbt_cfg_register(&_sg_cfg_set, "clean_atexit", "\"yes\" or \"no\". \"yes\" enables all the cleanups of SimGrid (XBT,SIMIX,MSG) to be registered with atexit. \"no\" may be useful if your code segfaults when calling the exit function.", xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb_clean_atexit, NULL); @@ -901,7 +940,7 @@ void sg_config_init(int *argc, char **argv) /* retrieves the current directory of the current process */ const char *initial_path = __surf_get_initial_path(); xbt_assert((initial_path), - "__surf_get_initial_path() failed! Can't resolves current Windows directory"); + "__surf_get_initial_path() failed! Can't resolve current Windows directory"); surf_path = xbt_dynar_new(sizeof(char *), NULL); xbt_cfg_setdefault_string(_sg_cfg_set, "path", initial_path); @@ -928,52 +967,47 @@ void sg_config_finalize(void) _sg_cfg_init_status = 0; } -/* Pick the right models for CPU, net and workstation, and call their model_init_preparse */ +/* Pick the right models for CPU, net and host, and call their model_init_preparse */ void surf_config_models_setup() { - const char *workstation_model_name; - const char *vm_workstation_model_name; - int workstation_id = -1; - int vm_workstation_id = -1; + const char *host_model_name; + const char *vm_model_name; + int host_id = -1; + int vm_id = -1; char *network_model_name = NULL; char *cpu_model_name = NULL; int storage_id = -1; char *storage_model_name = NULL; - workstation_model_name = - xbt_cfg_get_string(_sg_cfg_set, "workstation/model"); - vm_workstation_model_name = - xbt_cfg_get_string(_sg_cfg_set, "vm_workstation/model"); + host_model_name = xbt_cfg_get_string(_sg_cfg_set, "host/model"); + vm_model_name = xbt_cfg_get_string(_sg_cfg_set, "vm/model"); network_model_name = xbt_cfg_get_string(_sg_cfg_set, "network/model"); cpu_model_name = xbt_cfg_get_string(_sg_cfg_set, "cpu/model"); storage_model_name = xbt_cfg_get_string(_sg_cfg_set, "storage/model"); /* Check whether we use a net/cpu model differing from the default ones, in which case - * we should switch to the "compound" workstation model to correctly dispatch stuff to + * we should switch to the "compound" host model to correctly dispatch stuff to * the right net/cpu models. */ if ((!xbt_cfg_is_default_value(_sg_cfg_set, "network/model") || !xbt_cfg_is_default_value(_sg_cfg_set, "cpu/model")) && - xbt_cfg_is_default_value(_sg_cfg_set, "workstation/model")) { - XBT_INFO("Switching workstation model to compound since you changed the network and/or cpu model(s)"); - workstation_model_name = "compound"; - xbt_cfg_set_string(_sg_cfg_set, "workstation/model", workstation_model_name); + xbt_cfg_is_default_value(_sg_cfg_set, "host/model")) { + host_model_name = "compound"; + xbt_cfg_set_string(_sg_cfg_set, "host/model", host_model_name); } - XBT_DEBUG("Workstation model: %s", workstation_model_name); - workstation_id = - find_model_description(surf_workstation_model_description, - workstation_model_name); - if (!strcmp(workstation_model_name, "compound")) { + XBT_DEBUG("host model: %s", host_model_name); + host_id = find_model_description(surf_host_model_description, host_model_name); + if (!strcmp(host_model_name, "compound")) { int network_id = -1; int cpu_id = -1; xbt_assert(cpu_model_name, - "Set a cpu model to use with the 'compound' workstation model"); + "Set a cpu model to use with the 'compound' host model"); xbt_assert(network_model_name, - "Set a network model to use with the 'compound' workstation model"); + "Set a network model to use with the 'compound' host model"); if(surf_cpu_model_init_preparse){ surf_cpu_model_init_preparse(); @@ -989,13 +1023,12 @@ void surf_config_models_setup() surf_network_model_description[network_id].model_init_preparse(); } - XBT_DEBUG("Call workstation_model_init"); - surf_workstation_model_description[workstation_id].model_init_preparse(); + XBT_DEBUG("Call host_model_init"); + surf_host_model_description[host_id].model_init_preparse(); - XBT_DEBUG("Call vm_workstation_model_init"); - vm_workstation_id = find_model_description(surf_vm_workstation_model_description, - vm_workstation_model_name); - surf_vm_workstation_model_description[vm_workstation_id].model_init_preparse(); + XBT_DEBUG("Call vm_model_init"); + vm_id = find_model_description(surf_vm_model_description, vm_model_name); + surf_vm_model_description[vm_id].model_init_preparse(); XBT_DEBUG("Call storage_model_init"); storage_id = find_model_description(surf_storage_model_description, storage_model_name);