Commit 7a53c394 authored by Philip Carns's avatar Philip Carns

add ability to find lp id for local net device

parent 9c2e5cb3
...@@ -60,6 +60,8 @@ static void dragonfly_setup(const void* net_params); ...@@ -60,6 +60,8 @@ static void dragonfly_setup(const void* net_params);
* traversed and maximum packet latency */ * traversed and maximum packet latency */
static void dragonfly_report_stats(); static void dragonfly_report_stats();
static tw_lpid dragonfly_find_local_device(tw_lp *sender);
/* dragonfly packet event method called by modelnet, this method triggers the packet /* dragonfly packet event method called by modelnet, this method triggers the packet
* generate event of dragonfly and attached remote and local events to the last packet * generate event of dragonfly and attached remote and local events to the last packet
* of the message */ * of the message */
...@@ -87,6 +89,7 @@ struct model_net_method dragonfly_method = ...@@ -87,6 +89,7 @@ struct model_net_method dragonfly_method =
.mn_get_lp_type = dragonfly_get_cn_lp_type, .mn_get_lp_type = dragonfly_get_cn_lp_type,
.mn_get_msg_sz = dragonfly_get_msg_sz, .mn_get_msg_sz = dragonfly_get_msg_sz,
.mn_report_stats = dragonfly_report_stats, .mn_report_stats = dragonfly_report_stats,
.model_net_method_find_local_device = dragonfly_find_local_device,
}; };
/* handles terminal and router events like packet generate/send/receive/buffer */ /* handles terminal and router events like packet generate/send/receive/buffer */
......
...@@ -28,6 +28,7 @@ struct model_net_method ...@@ -28,6 +28,7 @@ struct model_net_method
const tw_lptype* (*mn_get_lp_type)(); const tw_lptype* (*mn_get_lp_type)();
int (*mn_get_msg_sz)(); int (*mn_get_msg_sz)();
void (*mn_report_stats)(); void (*mn_report_stats)();
tw_lpid (*model_net_method_find_local_device)(tw_lp *sender);
}; };
#endif /* MODELNET_METHOD_H */ #endif /* MODELNET_METHOD_H */
......
...@@ -133,6 +133,12 @@ void model_net_event( ...@@ -133,6 +133,12 @@ void model_net_event(
const void* self_event, const void* self_event,
tw_lp *sender); tw_lp *sender);
/* model_net_find_local_device()
*
* returns the LP id of the network card attached to the calling LP
*/
tw_lpid model_net_find_local_device(int net_id, tw_lp *sender);
/* model_net_event_rc() /* model_net_event_rc()
* *
* This function does reverse computation for the model_net_event_new() * This function does reverse computation for the model_net_event_new()
......
...@@ -79,6 +79,8 @@ static const tw_lptype* torus_get_lp_type(void); ...@@ -79,6 +79,8 @@ static const tw_lptype* torus_get_lp_type(void);
/* reports torus statistics */ /* reports torus statistics */
static void torus_report_stats(void); static void torus_report_stats(void);
static tw_lpid torus_find_local_device(tw_lp *sender);
/* data structure for torus statistics */ /* data structure for torus statistics */
struct model_net_method torus_method = struct model_net_method torus_method =
{ {
...@@ -89,6 +91,7 @@ struct model_net_method torus_method = ...@@ -89,6 +91,7 @@ struct model_net_method torus_method =
.mn_get_lp_type = torus_get_lp_type, .mn_get_lp_type = torus_get_lp_type,
.mn_get_msg_sz = torus_get_msg_sz, .mn_get_msg_sz = torus_get_msg_sz,
.mn_report_stats = torus_report_stats, .mn_report_stats = torus_report_stats,
.model_net_method_find_local_device = torus_find_local_device,
}; };
/* event type of each torus message, can be packet generate, flit arrival, flit send or credit */ /* event type of each torus message, can be packet generate, flit arrival, flit send or credit */
......
...@@ -954,6 +954,17 @@ static const tw_lptype* dragonfly_get_router_lp_type(void) ...@@ -954,6 +954,17 @@ static const tw_lptype* dragonfly_get_router_lp_type(void)
return(&dragonfly_lps[1]); return(&dragonfly_lps[1]);
} }
static tw_lpid dragonfly_find_local_device(tw_lp *sender)
{
char lp_type_name[MAX_NAME_LENGTH], lp_group_name[MAX_NAME_LENGTH];
int mapping_grp_id, mapping_rep_id, mapping_type_id, mapping_offset;
tw_lpid dest_id;
codes_mapping_get_lp_info(sender->gid, lp_group_name, &mapping_grp_id, &mapping_type_id, lp_type_name, &mapping_rep_id, &mapping_offset);
codes_mapping_get_lp_id(lp_group_name, "modelnet_dragonfly", mapping_rep_id, mapping_offset, &dest_id);
return(dest_id);
}
/* /*
......
...@@ -121,6 +121,8 @@ static void loggp_packet_event_rc(tw_lp *sender); ...@@ -121,6 +121,8 @@ static void loggp_packet_event_rc(tw_lp *sender);
static void loggp_report_stats(); static void loggp_report_stats();
static tw_lpid loggp_find_local_device(tw_lp *sender);
static struct param_table_entry* find_params(int msg_size); static struct param_table_entry* find_params(int msg_size);
/* data structure for model-net statistics */ /* data structure for model-net statistics */
...@@ -133,6 +135,7 @@ struct model_net_method loggp_method = ...@@ -133,6 +135,7 @@ struct model_net_method loggp_method =
.mn_get_lp_type = loggp_get_lp_type, .mn_get_lp_type = loggp_get_lp_type,
.mn_get_msg_sz = loggp_get_msg_sz, .mn_get_msg_sz = loggp_get_msg_sz,
.mn_report_stats = loggp_report_stats, .mn_report_stats = loggp_report_stats,
.model_net_method_find_local_device = loggp_find_local_device,
}; };
static void loggp_init( static void loggp_init(
...@@ -615,6 +618,19 @@ static struct param_table_entry* find_params(int msg_size) ...@@ -615,6 +618,19 @@ static struct param_table_entry* find_params(int msg_size)
return(&param_table[i]); return(&param_table[i]);
} }
static tw_lpid loggp_find_local_device(tw_lp *sender)
{
char lp_type_name[MAX_NAME_LENGTH], lp_group_name[MAX_NAME_LENGTH];
int mapping_grp_id, mapping_rep_id, mapping_type_id, mapping_offset;
tw_lpid dest_id;
codes_mapping_get_lp_info(sender->gid, lp_group_name, &mapping_grp_id, &mapping_type_id, lp_type_name, &mapping_rep_id, &mapping_offset);
codes_mapping_get_lp_id(lp_group_name, "modelnet_loggp", mapping_rep_id, mapping_offset, &dest_id);
return(dest_id);
}
/* /*
* Local variables: * Local variables:
* c-indent-level: 4 * c-indent-level: 4
......
...@@ -478,6 +478,12 @@ void model_net_add_lp_type(int net_id) ...@@ -478,6 +478,12 @@ void model_net_add_lp_type(int net_id)
} }
} }
} }
tw_lpid model_net_find_local_device(int net_id, tw_lp *sender)
{
return(method_array[net_id]->model_net_method_find_local_device(sender));
}
/* /*
* Local variables: * Local variables:
* c-indent-level: 4 * c-indent-level: 4
......
...@@ -112,6 +112,8 @@ static void simplenet_packet_event_rc(tw_lp *sender); ...@@ -112,6 +112,8 @@ static void simplenet_packet_event_rc(tw_lp *sender);
static void sn_report_stats(); static void sn_report_stats();
static tw_lpid sn_find_local_device(tw_lp *sender);
/* data structure for model-net statistics */ /* data structure for model-net statistics */
struct model_net_method simplenet_method = struct model_net_method simplenet_method =
{ {
...@@ -122,6 +124,7 @@ struct model_net_method simplenet_method = ...@@ -122,6 +124,7 @@ struct model_net_method simplenet_method =
.mn_get_lp_type = sn_get_lp_type, .mn_get_lp_type = sn_get_lp_type,
.mn_get_msg_sz = sn_get_msg_sz, .mn_get_msg_sz = sn_get_msg_sz,
.mn_report_stats = sn_report_stats, .mn_report_stats = sn_report_stats,
.model_net_method_find_local_device = sn_find_local_device,
}; };
static void sn_init( static void sn_init(
...@@ -540,6 +543,19 @@ static void simplenet_packet_event_rc(tw_lp *sender) ...@@ -540,6 +543,19 @@ static void simplenet_packet_event_rc(tw_lp *sender)
return; return;
} }
static tw_lpid sn_find_local_device(tw_lp *sender)
{
char lp_type_name[MAX_NAME_LENGTH], lp_group_name[MAX_NAME_LENGTH];
int mapping_grp_id, mapping_rep_id, mapping_type_id, mapping_offset;
tw_lpid dest_id;
codes_mapping_get_lp_info(sender->gid, lp_group_name, &mapping_grp_id, &mapping_type_id, lp_type_name, &mapping_rep_id, &mapping_offset);
codes_mapping_get_lp_id(lp_group_name, "modelnet_simplenet", mapping_rep_id, mapping_offset, &dest_id);
return(dest_id);
}
/* /*
* Local variables: * Local variables:
* c-indent-level: 4 * c-indent-level: 4
......
...@@ -625,6 +625,18 @@ static const tw_lptype* torus_get_lp_type(void) ...@@ -625,6 +625,18 @@ static const tw_lptype* torus_get_lp_type(void)
return(&torus_lp); return(&torus_lp);
} }
static tw_lpid torus_find_local_device(tw_lp *sender)
{
char lp_type_name[MAX_NAME_LENGTH], lp_group_name[MAX_NAME_LENGTH];
int mapping_grp_id, mapping_rep_id, mapping_type_id, mapping_offset;
tw_lpid dest_id;
codes_mapping_get_lp_info(sender->gid, lp_group_name, &mapping_grp_id, &mapping_type_id, lp_type_name, &mapping_rep_id, &mapping_offset);
codes_mapping_get_lp_id(lp_group_name, "modelnet_torus", mapping_rep_id, mapping_offset, &dest_id);
return(dest_id);
}
/* /*
* Local variables: * Local variables:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment