this is the field "model" in the surf_model_description structure. The
actual model is always saved elsewhere (like in the global
surf_workstation_model and friends).
If one day we want to have multi-model simulations, we'll need to
partially revert this change, but I guess that this day seaching the
right model linearly by name, as it was made possible with the
existing setup, will not be the way to go.
typedef struct surf_model_description {
const char *name;
const char *description;
typedef struct surf_model_description {
const char *name;
const char *description;
void (*model_init_preparse) (void);
void (*model_init_postparse) (void);
} s_surf_model_description_t, *surf_model_description_t;
void (*model_init_preparse) (void);
void (*model_init_postparse) (void);
} s_surf_model_description_t, *surf_model_description_t;
-XBT_PUBLIC(void) update_model_description(s_surf_model_description_t *
- table, const char *name,
- 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,
XBT_PUBLIC(int) find_model_description(s_surf_model_description_t * table,
const char *name);
XBT_PUBLIC(void) model_help(const char *category,
xbt_cfg_setdefault_double(_surf_cfg_set, "network/sender_gap", 10e-6);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/sender_gap", 10e-6);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
- update_model_description(surf_network_model_description,
- "SMPI", surf_network_model);
}
/************************************************************************/
}
/************************************************************************/
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
- update_model_description(surf_network_model_description,
- "LV08_fullupdate", surf_network_model);
}
/***************************************************************************/
}
/***************************************************************************/
net_define_callbacks();
xbt_dynar_push(model_list, &surf_network_model);
network_solve = lmm_solve;
net_define_callbacks();
xbt_dynar_push(model_list, &surf_network_model);
network_solve = lmm_solve;
-
- update_model_description(surf_network_model_description,
- "CM02", surf_network_model);
}
void surf_network_model_init_Reno(void)
}
void surf_network_model_init_Reno(void)
xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
-
- update_model_description(surf_network_model_description,
- "Reno", surf_network_model);
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S_parameter",
8775);
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S_parameter",
8775);
-
- update_model_description(surf_network_model_description,
- "Reno2", surf_network_model);
}
void surf_network_model_init_Vegas(void)
}
void surf_network_model_init_Vegas(void)
xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
-
- update_model_description(surf_network_model_description,
- "Vegas", surf_network_model);
netcste_define_callbacks();
xbt_dynar_push(model_list, &surf_network_model);
netcste_define_callbacks();
xbt_dynar_push(model_list, &surf_network_model);
- update_model_description(surf_network_model_description,
- "Constant", surf_network_model);
-
xbt_cfg_set_string(_surf_cfg_set, "routing", "none");
routing_model_create(sizeof(double), NULL, netcste_get_link_latency);
}
xbt_cfg_set_string(_surf_cfg_set, "routing", "none");
routing_model_create(sizeof(double), NULL, netcste_get_link_latency);
}
xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
0.92);
xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
-
- update_model_description(surf_network_model_description,
- "LV08", surf_network_model);
s_surf_model_description_t surf_network_model_description[] = {
{"Constant",
"Simplistic network model where all communication take a constant time (one second)",
s_surf_model_description_t surf_network_model_description[] = {
{"Constant",
"Simplistic network model where all communication take a constant time (one second)",
- NULL, surf_network_model_init_Constant},
+ surf_network_model_init_Constant},
{"CM02",
"Realistic network model with lmm_solve and no correction factors",
{"CM02",
"Realistic network model with lmm_solve and no correction factors",
- NULL, surf_network_model_init_CM02},
+ surf_network_model_init_CM02},
{"LV08",
"Realistic network model with lmm_solve, adequate correction factors (latency*=10.4, bandwidth*=.92, S=8775) and partial invalidation optimization",
{"LV08",
"Realistic network model with lmm_solve, adequate correction factors (latency*=10.4, bandwidth*=.92, S=8775) and partial invalidation optimization",
- NULL, im_surf_network_model_init_LegrandVelho},
+ im_surf_network_model_init_LegrandVelho},
{"LV08_fullupdate",
"Realistic network model wit lmm_solve, adequate correction factors (latency*=10.4, bandwidth*=.92, S=8775) but no further optimization. Should produce the same results as LV08, only slower.",
{"LV08_fullupdate",
"Realistic network model wit lmm_solve, adequate correction factors (latency*=10.4, bandwidth*=.92, S=8775) but no further optimization. Should produce the same results as LV08, only slower.",
- NULL, surf_network_model_init_LegrandVelho},
+ surf_network_model_init_LegrandVelho},
{"SMPI",
"Realistic network model with lmm_solve and correction factors on three intervals (< 1KiB, < 64 KiB, >= 64 KiB)",
{"SMPI",
"Realistic network model with lmm_solve and correction factors on three intervals (< 1KiB, < 64 KiB, >= 64 KiB)",
- NULL, surf_network_model_init_SMPI},
+ surf_network_model_init_SMPI},
#ifdef HAVE_GTNETS
{"GTNets",
"Network Pseudo-model using the GTNets simulator instead of an analytic model",
#ifdef HAVE_GTNETS
{"GTNets",
"Network Pseudo-model using the GTNets simulator instead of an analytic model",
- NULL, surf_network_model_init_GTNETS},
+ surf_network_model_init_GTNETS},
#endif
#ifdef HAVE_NS3
{"NS3",
"Use NS3 tcp model",
#endif
#ifdef HAVE_NS3
{"NS3",
"Use NS3 tcp model",
- NULL, surf_network_model_init_NS3},
+ surf_network_model_init_NS3},
- "Model using lagrange_solve instead of lmm_solve (experts only)", NULL,
+ "Model using lagrange_solve instead of lmm_solve (experts only)",
surf_network_model_init_Reno},
{"Reno2",
surf_network_model_init_Reno},
{"Reno2",
- "Model using lagrange_solve instead of lmm_solve (experts only)", NULL,
+ "Model using lagrange_solve instead of lmm_solve (experts only)",
surf_network_model_init_Reno2},
{"Vegas",
surf_network_model_init_Reno2},
{"Vegas",
- "Model using lagrange_solve instead of lmm_solve (experts only)", NULL,
+ "Model using lagrange_solve instead of lmm_solve (experts only)",
surf_network_model_init_Vegas},
{NULL, NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_surf_model_description_t surf_cpu_model_description[] = {
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", "CPU classical model time=size/power", NULL,
+ {"Cas01_fullupdate", "CPU classical model time=size/power",
surf_cpu_model_init_Cas01},
{"Cas01",
"Variation of Cas01_fullupdate with partial invalidation optimization of lmm system. Should produce the same values, only faster",
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},
+ 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",
{"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},
+ 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",
"Default workstation model, using LV08 and CM02 as network and CPU",
{NULL, NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_surf_model_description_t surf_workstation_model_description[] = {
{"CLM03",
"Default workstation model, using LV08 and CM02 as network and CPU",
- NULL, surf_workstation_model_init_CLM03, create_workstations},
+ surf_workstation_model_init_CLM03, create_workstations},
{"compound",
"Workstation model allowing you to use other network and CPU models",
{"compound",
"Workstation model allowing you to use other network and CPU models",
- NULL, surf_workstation_model_init_compound, create_workstations},
+ surf_workstation_model_init_compound, create_workstations},
{"ptask_L07", "Workstation model with better parallel task modeling",
{"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 */
+ surf_workstation_model_init_ptask_L07, NULL},
+ {NULL, NULL, NULL} /* this array must be NULL terminated */
-void update_model_description(s_surf_model_description_t * table,
- const char *name, surf_model_t model)
-{
- int i = find_model_description(table, name);
- 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)
{
/** Displays the long description of all registered models, and quit */
void model_help(const char *category, s_surf_model_description_t * table)
{
surf_workstation_model_init_internal();
surf_cpu_model_init_Cas01_im();
surf_network_model_init_LegrandVelho();
surf_workstation_model_init_internal();
surf_cpu_model_init_Cas01_im();
surf_network_model_init_LegrandVelho();
- update_model_description(surf_workstation_model_description,
- "CLM03", surf_workstation_model);
xbt_dynar_push(model_list, &surf_workstation_model);
}
xbt_dynar_push(model_list, &surf_workstation_model);
}
xbt_assert(surf_cpu_model, "No CPU model defined yet!");
xbt_assert(surf_network_model, "No network model defined yet!");
surf_workstation_model_init_internal();
xbt_assert(surf_cpu_model, "No CPU model defined yet!");
xbt_assert(surf_network_model, "No network model defined yet!");
surf_workstation_model_init_internal();
-
- update_model_description(surf_workstation_model_description,
- "compound", surf_workstation_model);
-
xbt_dynar_push(model_list, &surf_workstation_model);
}
xbt_dynar_push(model_list, &surf_workstation_model);
}
surf_network_model = surf_model_init();
ptask_define_callbacks();
ptask_model_init_internal();
surf_network_model = surf_model_init();
ptask_define_callbacks();
ptask_model_init_internal();
-
- update_model_description(surf_workstation_model_description,
- "ptask_L07", surf_workstation_model);
xbt_dynar_push(model_list, &surf_workstation_model);
}
xbt_dynar_push(model_list, &surf_workstation_model);
}