From 0e10d7744c614384e872e4c95ebb022f4fec916c Mon Sep 17 00:00:00 2001 From: mubarak Date: Fri, 20 Apr 2018 14:48:22 -0400 Subject: [PATCH] adding optional bias towards minimal routing --- src/networks/model-net/dragonfly-custom.C | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/networks/model-net/dragonfly-custom.C b/src/networks/model-net/dragonfly-custom.C index 1f88489..e0277ef 100644 --- a/src/networks/model-net/dragonfly-custom.C +++ b/src/networks/model-net/dragonfly-custom.C @@ -43,6 +43,7 @@ #define LP_CONFIG_NM_ROUT (model_net_lp_config_names[DRAGONFLY_CUSTOM_ROUTER]) #define LP_METHOD_NM_ROUT (model_net_method_names[DRAGONFLY_CUSTOM_ROUTER]) +static int BIAS_MIN = 0; static int DF_DALLY = 0; using namespace std; @@ -524,6 +525,11 @@ static void dragonfly_read_config(const char * anno, dragonfly_param *params){ if(rc) { DF_DALLY = 0; } + + rc = configuration_get_value_int(&config, "PARAMS", "minimal-bias", anno, &BIAS_MIN); + if(rc) { + BIAS_MIN = 0; + } rc = configuration_get_value_int(&config, "PARAMS", "cn_vc_size", anno, &p->cn_vc_size); if(rc) { p->cn_vc_size = 1024; @@ -2500,6 +2506,14 @@ static void do_local_adaptive_routing(router_state * s, int local_stop = -1; tw_lpid global_stop; + if(BIAS_MIN == 1) + { + if(min_port_count > 0) + { + min_port_count = min_port_count / 2; + } + } + // if(nonmin_port_count * num_intra_nonmin_hops > min_port_count * num_intra_min_hops) if(nonmin_port_count > min_port_count) { @@ -2704,6 +2718,13 @@ static int do_global_adaptive_routing( router_state * s, next_min_stop = min_chan_a; } + if(BIAS_MIN == 1) + { + if(next_min_count > 0) + { + next_min_count = next_min_count / 2; + } + } /* Now compare the least congested minimal and non-minimal routes */ if(next_nonmin_count >= next_min_count) { -- 2.26.2