* GTNets compiles but is still not functionnal
* Tracing should have the same issue :(
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8269
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
*/
typedef struct surf_network_model_extension_public {
surf_action_t(*communicate) (const char *src_name,
*/
typedef struct surf_network_model_extension_public {
surf_action_t(*communicate) (const char *src_name,
- const char *dst_name, int src, int dst,
double size, double rate);
double size, double rate);
- xbt_dynar_t(*get_route) (int src, int dst);
+ xbt_dynar_t(*get_route) (const char *src_name, const char *dst_name);
double (*get_link_bandwidth) (const void *link);
double (*get_link_latency) (const void *link);
int (*link_shared) (const void *link);
double (*get_link_bandwidth) (const void *link);
double (*get_link_latency) (const void *link);
int (*link_shared) (const void *link);
sd_global->recyclable_route = xbt_new(SD_link_t, SD_link_get_number());
}
sd_global->recyclable_route = xbt_new(SD_link_t, SD_link_get_number());
}
- surf_src = &src->surf_workstation;
- surf_dst = &dst->surf_workstation;
- surf_route = surf_workstation_model->extension.workstation.get_route(
- (void*)SD_workstation_get_name(src),(void*)SD_workstation_get_name(dst));
-
- if(surf_route == NULL)
- {
- INFO0("PBLM1 surf_route == NULL");
- }
+ surf_src = src->surf_workstation;
+ surf_dst = dst->surf_workstation;
+ surf_route = surf_workstation_model->extension.workstation.get_route(surf_src,surf_dst);
xbt_dynar_foreach(surf_route, cpt, surf_link) {
link_name = surf_resource_name(surf_link);
sd_global->recyclable_route[cpt] =
xbt_dict_get(sd_global->links, link_name);
}
xbt_dynar_foreach(surf_route, cpt, surf_link) {
link_name = surf_resource_name(surf_link);
sd_global->recyclable_route[cpt] =
xbt_dict_get(sd_global->links, link_name);
}
return sd_global->recyclable_route;
}
return sd_global->recyclable_route;
}
static surf_action_t net_communicate(const char *src_name, const char *dst_name,
static surf_action_t net_communicate(const char *src_name, const char *dst_name,
- int src, int dst, double size, double rate)
+ double size, double rate)
{
unsigned int i;
link_CM02_t link;
{
unsigned int i;
link_CM02_t link;
} /* LARGE PLATFORMS HACK:
expand also with src->link and dst->link */
} /* LARGE PLATFORMS HACK:
expand also with src->link and dst->link */
- /* saving the src and dst of this communication */
- action->src = src;
- action->dst = dst;
-
XBT_OUT;
return (surf_action_t) action;
XBT_OUT;
return (surf_action_t) action;
}
static surf_action_t netcste_communicate(const char *src_name, const char *dst_name,
}
static surf_action_t netcste_communicate(const char *src_name, const char *dst_name,
- int src, int dst, double size, double rate)
+ double size, double rate)
{
surf_action_network_Constant_t action = NULL;
{
surf_action_network_Constant_t action = NULL;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf,
"Logging specific to the SURF network GTNetS module");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf,
"Logging specific to the SURF network GTNetS module");
-//extern routing_t used_routing; // COMMENTED BY DAVID
-extern routing_global_t global_routing; // ADDED BY DAVID
+extern routing_global_t global_routing;
double sg_gtnets_jitter=0.0;
int sg_gtnets_jitter_seed=10;
double sg_gtnets_jitter=0.0;
int sg_gtnets_jitter_seed=10;
/* Create the gtnets topology based on routing strategy */
static void create_gtnets_topology()
{
/* Create the gtnets topology based on routing strategy */
static void create_gtnets_topology()
{
// xbt_dict_cursor_t cursor = NULL;
// char *key, *data;
// xbt_dict_cursor_t cursor = NULL;
// char *key, *data;
-// xbt_dict_t onelink_routes = used_routing->get_onelink_routes();
+// xbt_dict_t onelink_routes = global_routing->get_onelink_routes();
// xbt_assert0(onelink_routes, "Error onelink_routes was not initialized");
//
// DEBUG0("Starting topology generation");
// xbt_assert0(onelink_routes, "Error onelink_routes was not initialized");
//
// DEBUG0("Starting topology generation");
+// À refaire plus tard. Il faut prendre la liste des hôtes/routeurs (dans routing)
+// À partir de cette liste, on les numérote.
+// Ensuite, on peut utiliser les id pour refaire les appels GTNets qui suivent.
+
// xbt_dict_foreach(onelink_routes, cursor, key, data){
// s_onelink_t link = (s_onelink_t) data;
//
// xbt_dict_foreach(onelink_routes, cursor, key, data){
// s_onelink_t link = (s_onelink_t) data;
//
-// DEBUG3("Link (#%d), src (#%d), dst (#%d)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src_id, link->dst_id);
+// DEBUG3("Link (#%d), src (#%s), dst (#%s)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src, link->dst);
// DEBUG0("Calling one link route");
// DEBUG0("Calling one link route");
-// if(used_routing->is_router(link->src_id)){
+// if(global_routing->is_router(link->src)){
// gtnets_add_router(link->src_id);
// }
// gtnets_add_router(link->src_id);
// }
-// if(used_routing->is_router(link->dst_id)){
+// if(global_routing->is_router(link->dst)){
// gtnets_add_router(link->dst_id);
// }
// route_onehop_new(link->src_id, link->dst_id, (network_link_GTNETS_t)(link->link_ptr));
// gtnets_add_router(link->dst_id);
// }
// route_onehop_new(link->src_id, link->dst_id, (network_link_GTNETS_t)(link->link_ptr));
// if (XBT_LOG_ISENABLED(surf_network_gtnets, xbt_log_priority_debug)) {
// gtnets_print_topology();
// }
// if (XBT_LOG_ISENABLED(surf_network_gtnets, xbt_log_priority_debug)) {
// gtnets_print_topology();
// }
/* Max durations are not supported */
static surf_action_t communicate(const char *src_name, const char *dst_name,
/* Max durations are not supported */
static surf_action_t communicate(const char *src_name, const char *dst_name,
- int src, int dst, double size, double rate)
+ double size, double rate)
+ int src,dst;
+
+ // Utiliser le dictionnaire définit dans create_gtnets_topology pour initialiser correctement src et dst
+ src=dst=-1;
surf_action_network_GTNETS_t action = NULL;
xbt_assert0((src >= 0 && dst >= 0), "Either src or dst have invalid id (id<0)");
DEBUG4("Setting flow src %d \"%s\", dst %d \"%s\"", src, src_name, dst, dst_name);
surf_action_network_GTNETS_t action = NULL;
xbt_assert0((src >= 0 && dst >= 0), "Either src or dst have invalid id (id<0)");
DEBUG4("Setting flow src %d \"%s\", dst %d \"%s\"", src, src_name, dst, dst_name);
- //xbt_dynar_t links = used_routing->get_route(src, dst); // COMMENTED BY DAVID
- xbt_dynar_t links = global_routing->get_route(src_name, dst_name); // ADDED BY DAVID
+ xbt_dynar_t links = global_routing->get_route(src_name, dst_name);
route_new(src, dst, links, xbt_dynar_length(links));
action = surf_action_new(sizeof(s_surf_action_network_GTNETS_t), size, surf_network_model, 0);
route_new(src, dst, links, xbt_dynar_length(links));
action = surf_action_new(sizeof(s_surf_action_network_GTNETS_t), size, surf_network_model, 0);
int id;
} s_network_link_GTNETS_t, *network_link_GTNETS_t;
int id;
} s_network_link_GTNETS_t, *network_link_GTNETS_t;
-typedef struct network_card_GTNETS {
- char *name;
- int id;
-} s_network_card_GTNETS_t, *network_card_GTNETS_t;
-
typedef struct surf_action_network_GTNETS {
s_surf_action_t generic_action;
double latency;
typedef struct surf_action_network_GTNETS {
s_surf_action_t generic_action;
double latency;
int suspended;
} s_surf_action_network_GTNETS_t, *surf_action_network_GTNETS_t;
int suspended;
} s_surf_action_network_GTNETS_t, *surf_action_network_GTNETS_t;
-//extern xbt_dict_t network_card_set;
+xbt_dict_t network_card_ids;
+
#endif /* _SURF_NETWORK_PRIVATE_H */
#endif /* _SURF_NETWORK_PRIVATE_H */
double rate;
int latency_limited;
int suspended;
double rate;
int latency_limited;
int suspended;
-
- int src; /* saving source id for tracing */
- int dst; /* saving dest id for tracing */
-
- char* src_name; /* saving source id for tracing */ // ADDED BY DAVID
- char* dst_name; /* saving dest id for tracing */ // ADDED BY DAVID
+ char* src_name;
+ char* dst_name;
} s_surf_action_network_CM02_t, *surf_action_network_CM02_t;
} s_surf_action_network_CM02_t, *surf_action_network_CM02_t;
}
static surf_action_t netviva_communicate(const char *src_name, const char *dst_name,
}
static surf_action_t netviva_communicate(const char *src_name, const char *dst_name,
- int src, int dst, double size, double rate)
+ double size, double rate)
{
surf_action_network_Vivaldi_t action = NULL;
netviva_coords_t c1,c2;
{
surf_action_network_Vivaldi_t action = NULL;
netviva_coords_t c1,c2;
* One link routing list
*/
typedef struct {
* One link routing list
*/
typedef struct {
- int src_id;
- int dst_id;
+ char *src;
+ char *dst;
void *link_ptr;
}s_onelink, *s_onelink_t;
void *link_ptr;
}s_onelink, *s_onelink_t;
void *loopback;
size_t size_of_link;
xbt_dynar_t (*get_route)(const char* src, const char* dst);
void *loopback;
size_t size_of_link;
xbt_dynar_t (*get_route)(const char* src, const char* dst);
+ xbt_dict_t (*get_onelink_routes)(void);
+ int (*is_router)(const char *name);
void (*finalize)(void);
xbt_dynar_t last_route;
};
void (*finalize)(void);
xbt_dynar_t last_route;
};
typedef struct workstation_CLM03 {
s_surf_resource_t generic_resource; /* Must remain first to add this to a trace */
void *cpu;
typedef struct workstation_CLM03 {
s_surf_resource_t generic_resource; /* Must remain first to add this to a trace */
void *cpu;
} s_workstation_CLM03_t, *workstation_CLM03_t;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_workstation, surf,
} s_workstation_CLM03_t, *workstation_CLM03_t;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_workstation, surf,
surf_model_t surf_workstation_model = NULL;
static workstation_CLM03_t workstation_new(const char *name,
surf_model_t surf_workstation_model = NULL;
static workstation_CLM03_t workstation_new(const char *name,
{
workstation_CLM03_t workstation = xbt_new0(s_workstation_CLM03_t, 1);
workstation->generic_resource.model = surf_workstation_model;
workstation->generic_resource.name = xbt_strdup(name);
workstation->cpu = cpu;
{
workstation_CLM03_t workstation = xbt_new0(s_workstation_CLM03_t, 1);
workstation->generic_resource.model = surf_workstation_model;
workstation->generic_resource.name = xbt_strdup(name);
workstation->cpu = cpu;
xbt_dict_set(surf_model_resource_set(surf_workstation_model), name,
workstation, surf_resource_free);
xbt_dict_set(surf_model_resource_set(surf_workstation_model), name,
workstation, surf_resource_free);
void *cpu = NULL;
xbt_dict_foreach(surf_model_resource_set(surf_cpu_model), cursor, name, cpu) {
void *cpu = NULL;
xbt_dict_foreach(surf_model_resource_set(surf_cpu_model), cursor, name, cpu) {
- int *id = NULL;
-// COMMENTED BY DAVID
-// if (used_routing && used_routing->host_id)
-// id = xbt_dict_get_or_null(used_routing->host_id,name);
-
- workstation_new(name, cpu, id ? *id : 0);
+ workstation_new(name, cpu);
workstation_CLM03_t dst = (workstation_CLM03_t) workstation_dst;
return surf_network_model->extension.network.
communicate(surf_resource_name(src->cpu), surf_resource_name(dst->cpu),
workstation_CLM03_t dst = (workstation_CLM03_t) workstation_dst;
return surf_network_model->extension.network.
communicate(surf_resource_name(src->cpu), surf_resource_name(dst->cpu),
- src->id, dst->id, size, rate);
}
static e_surf_resource_state_t ws_get_state(void *workstation)
}
static e_surf_resource_state_t ws_get_state(void *workstation)
/* returns an array of network_link_CM02_t */
static xbt_dynar_t ws_get_route(void *src, void *dst)
{
/* returns an array of network_link_CM02_t */
static xbt_dynar_t ws_get_route(void *src, void *dst)
{
- workstation_CLM03_t workstation_src = (workstation_CLM03_t) src;
- workstation_CLM03_t workstation_dst = (workstation_CLM03_t) dst;
- return surf_network_model->extension.network.get_route(workstation_src->id,
- workstation_dst->id);
+ return surf_network_model->extension.network.get_route(surf_resource_name(src),
+ surf_resource_name(src));
}
static double ws_get_link_bandwidth(const void *link)
}
static double ws_get_link_bandwidth(const void *link)
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
-// cpu_L07_t card_src = action->workstation_list[i]; // COMMENTED BY DAVID
-// cpu_L07_t card_dst = action->workstation_list[j]; // COMMENTED BY DAVID
- xbt_dynar_t route = NULL;// used_routing->get_route(card_src->id, card_dst->id); // COMMENTED BY DAVID
+ xbt_dynar_t route = global_routing->get_route(surf_resource_name(action->workstation_list[i]),
+ surf_resource_name(action->workstation_list[j]));
+
double lat = 0.0;
if (action->communication_amount[i * workstation_nb + j] > 0) {
double lat = 0.0;
if (action->communication_amount[i * workstation_nb + j] > 0) {
/* Compute the number of affected resources... */
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
/* Compute the number of affected resources... */
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
-// cpu_L07_t card_src = workstation_list[i]; // COMMENTED BY DAVID
-// cpu_L07_t card_dst = workstation_list[j]; // COMMENTED BY DAVID
- xbt_dynar_t route = NULL; //used_routing->get_route(card_src->id, card_dst->id); // COMMENTED BY DAVID
+ xbt_dynar_t route = global_routing->get_route(surf_resource_name(workstation_list[i]),
+ surf_resource_name(workstation_list[j]));
double lat = 0.0;
if (communication_amount[i * workstation_nb + j] > 0)
double lat = 0.0;
if (communication_amount[i * workstation_nb + j] > 0)
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
for (i = 0; i < workstation_nb; i++) {
for (j = 0; j < workstation_nb; j++) {
-// cpu_L07_t card_src = workstation_list[i]; // COMMENTED BY DAVID
-// cpu_L07_t card_dst = workstation_list[j]; // COMMENTED BY DAVID
- xbt_dynar_t route = NULL;// used_routing->get_route(card_src->id, card_dst->id); // COMMENTED BY DAVID
+ xbt_dynar_t route = global_routing->get_route(surf_resource_name(workstation_list[i]),
+ surf_resource_name(workstation_list[j]));
if (communication_amount[i * workstation_nb + j] == 0.0)
continue;
if (communication_amount[i * workstation_nb + j] == 0.0)
continue;
static xbt_dynar_t ptask_get_route(void *src, void *dst)
{
static xbt_dynar_t ptask_get_route(void *src, void *dst)
{
- return global_routing->get_route((char *) src,(char *) dst);
- //return NULL; used_routing->get_route(host_src->id, host_dst->id); // COMMENTED BY DAVID
+ return global_routing->get_route( surf_resource_name(src), surf_resource_name(dst));
}
static double ptask_get_link_bandwidth(const void *link)
}
static double ptask_get_link_bandwidth(const void *link)