From 3edb9d59fdb648834d32bdee00b6608c8f743086 Mon Sep 17 00:00:00 2001 From: mquinson Date: Tue, 30 Mar 2010 14:05:47 +0000 Subject: [PATCH] Add a long description to the models, and make it visible by passing the right command line argument git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7397 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- ChangeLog | 2 ++ src/include/surf/surf.h | 2 ++ src/surf/surf.c | 42 ++++++++++++++++++++++++----------------- src/surf/surf_config.c | 21 ++++++++++++++++++--- 4 files changed, 47 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index a9df8d77fa..02d321911e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -43,6 +43,8 @@ SimGrid (3.3.5-svn) unstable; urgency=low o network/bandwidth_factor: correction to bandwith o network/latency_factor: correction to latency o netwotk/weight_S: correction to the weight of competing streams + * Add a long description to the models, that users can see with such + argument on the command line: --cfg=cpu/model:help SMPI: * Implement MPI_Get_count, MPI_MAXLOC, MPI_MINLOC XBT: diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 54a195cdf9..08e83e1d09 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -41,6 +41,7 @@ XBT_PUBLIC(void *) surf_action_new(size_t size, double cost, */ typedef struct surf_model_description { const char *name; + const char *description; surf_model_t model; void (*model_init_preparse) (const char *filename); void (*model_init_postparse) (void); @@ -51,6 +52,7 @@ XBT_PUBLIC(void) update_model_description(s_surf_model_description_t * table, surf_model_t model); XBT_PUBLIC(int) find_model_description(s_surf_model_description_t * table, const char *name); +XBT_PUBLIC(void) model_help(const char* category, s_surf_model_description_t * table); /** \brief Action structure * \ingroup SURF_actions diff --git a/src/surf/surf.c b/src/surf/surf.c index 85ad1560c6..1ad77e92c8 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -112,31 +112,30 @@ xbt_dynar_t surf_path = NULL; /* Don't forget to update the option description in smx_config when you change this */ s_surf_model_description_t surf_network_model_description[] = { - {"Constant", NULL, surf_network_model_init_Constant}, - {"CM02", NULL, surf_network_model_init_CM02}, - {"LV08", NULL, surf_network_model_init_LegrandVelho}, + {"Constant", "Simplistic network model where all communication take a constant time (one second)", NULL, surf_network_model_init_Constant}, + {"CM02", "Realistic network model with lmm_solve and no correction factors", NULL, surf_network_model_init_CM02}, + {"LV08", "Realistic network model with lmm_solve and these correction factors: latency*=10.4, bandwidth*=.92, S=8775" , NULL, surf_network_model_init_LegrandVelho}, #ifdef HAVE_GTNETS - {"GTNets", NULL, surf_network_model_init_GTNETS}, + {"GTNets", "Network Pseudo-model using the GTNets simulator instead of an analytic model", NULL, surf_network_model_init_GTNETS}, #endif - {"Reno", NULL, surf_network_model_init_Reno}, - {"Reno2", NULL, surf_network_model_init_Reno2}, - {"Vegas", NULL, surf_network_model_init_Vegas}, - {NULL, NULL, NULL} /* this array must be NULL terminated */ + {"Reno", "Model using lagrange_solve instead of lmm_solve (experts only)", NULL, surf_network_model_init_Reno}, + {"Reno2", "Model using lagrange_solve instead of lmm_solve (experts only)", NULL, surf_network_model_init_Reno2}, + {"Vegas", "Model using lagrange_solve instead of lmm_solve (experts only)", NULL, surf_network_model_init_Vegas}, + {NULL, NULL, NULL, NULL} /* this array must be NULL terminated */ }; s_surf_model_description_t surf_cpu_model_description[] = { - {"Cas01_fullupdate", NULL, surf_cpu_model_init_Cas01}, - {"Cas01", NULL, surf_cpu_model_init_Cas01_im}, - {"CpuTI", NULL, surf_cpu_model_init_ti}, - {NULL, NULL, NULL} /* this array must be NULL terminated */ + {"Cas01_fullupdate", "CPU classical model time=size/power", NULL, surf_cpu_model_init_Cas01}, + {"Cas01", "Variation of Cas01_fullupdate with partial invalidation optimization of lmm system. Should produce the same values, only faster", NULL, surf_cpu_model_init_Cas01_im}, + {"CpuTI", "Variation of Cas01 with also trace integration. Should produce the same values, only faster if you use availability traces", NULL, surf_cpu_model_init_ti}, + {NULL, NULL, NULL, NULL} /* this array must be NULL terminated */ }; s_surf_model_description_t surf_workstation_model_description[] = { - {"CLM03", NULL, surf_workstation_model_init_CLM03, create_workstations}, - {"compound", NULL, surf_workstation_model_init_compound, - create_workstations}, - {"ptask_L07", NULL, surf_workstation_model_init_ptask_L07, NULL}, - {NULL, NULL, NULL} /* this array must be NULL terminated */ + {"CLM03", "Default workstation model, using LV08 and CM02 as network and CPU", NULL, surf_workstation_model_init_CLM03, create_workstations}, + {"compound", "Workstation model allowing you to use other network and CPU models", NULL, surf_workstation_model_init_compound, create_workstations}, + {"ptask_L07", "Workstation model with better parallel task modeling", NULL, surf_workstation_model_init_ptask_L07, NULL}, + {NULL, NULL, NULL, NULL} /* this array must be NULL terminated */ }; void update_model_description(s_surf_model_description_t * table, @@ -146,6 +145,15 @@ void update_model_description(s_surf_model_description_t * table, table[i].model = model; } +/** Displays the long description of all registered models, and quit */ +void model_help(const char* category, s_surf_model_description_t * table) { + int i; + printf("Long description of the %s models accepted by this simulator:\n",category); + for (i = 0; table[i].name; i++) + printf(" %s: %s\n", table[i].name, table[i].description); + exit(0); +} + int find_model_description(s_surf_model_description_t * table, const char *name) { diff --git a/src/surf/surf_config.c b/src/surf/surf_config.c index 3b28a5114f..60da0de937 100644 --- a/src/surf/surf_config.c +++ b/src/surf/surf_config.c @@ -32,8 +32,7 @@ static void surf_config_cmd_line(int *argc, char **argv) remove_it = 1; } else if (!strncmp(argv[i], "--cfg-help", strlen("--cfg-help") + 1) || !strncmp(argv[i], "--help", strlen("--help") + 1)) { - printf - ("Description of the configuration accepted by this simulator:\n"); + printf("Description of the configuration accepted by this simulator:\n"); xbt_cfg_help(_surf_cfg_set); remove_it = 1; exit(0); @@ -64,8 +63,11 @@ static void _surf_cfg_cb__workstation_model(const char *name, int pos) "Cannot change the model after the initialization"); val = xbt_cfg_get_string(_surf_cfg_set, name); - /* New Module missing */ + if (!strcmp(val,"help")) + model_help("workstation",surf_workstation_model_description); + + /* Make sure that the model exists */ find_model_description(surf_workstation_model_description, val); } @@ -78,6 +80,10 @@ static void _surf_cfg_cb__cpu_model(const char *name, int pos) "Cannot change the model after the initialization"); val = xbt_cfg_get_string(_surf_cfg_set, name); + + if (!strcmp(val,"help")) + model_help("CPU",surf_cpu_model_description); + /* New Module missing */ find_model_description(surf_cpu_model_description, val); } @@ -91,6 +97,10 @@ static void _surf_cfg_cb__network_model(const char *name, int pos) "Cannot change the model after the initialization"); val = xbt_cfg_get_string(_surf_cfg_set, name); + + if (!strcmp(val,"help")) + model_help("network",surf_network_model_description); + /* New Module missing */ find_model_description(surf_network_model_description, val); } @@ -150,6 +160,7 @@ void surf_config_init(int *argc, char **argv) p += sprintf(p, "%s%s", (i == 0 ? "" : ", "), surf_cpu_model_description[i].name); + sprintf(p,".\n (use 'help' as a value to see the long description of each model)"); default_value = xbt_strdup("Cas01"); xbt_cfg_register(&_surf_cfg_set, "cpu/model", description, xbt_cfgelm_string, @@ -163,6 +174,7 @@ void surf_config_init(int *argc, char **argv) p += sprintf(p, "%s%s", (i == 0 ? "" : ", "), surf_network_model_description[i].name); + sprintf(p,".\n (use 'help' as a value to see the long description of each model)"); default_value = xbt_strdup("LV08"); xbt_cfg_register(&_surf_cfg_set, "network/model", description, xbt_cfgelm_string, @@ -177,6 +189,7 @@ void surf_config_init(int *argc, char **argv) p += sprintf(p, "%s%s", (i == 0 ? "" : ", "), surf_workstation_model_description[i].name); + sprintf(p,".\n (use 'help' as a value to see the long description of each model)"); default_value = xbt_strdup("CLM03"); xbt_cfg_register(&_surf_cfg_set, "workstation/model", description, xbt_cfgelm_string, @@ -244,6 +257,8 @@ void surf_config_init(int *argc, char **argv) surf_config_cmd_line(argc, argv); + } else { + WARN0("Call to surf_config_init() after initialization ignored"); } } -- 2.20.1