From 18a0ae2a006b9eb80242e930eabbbc06b89e3f2e Mon Sep 17 00:00:00 2001 From: Noah Wolfe Date: Fri, 18 Mar 2016 11:23:35 -0400 Subject: [PATCH] Moved input of generator sets to config file. --- .../conf/modelnet-synthetic-slimfly-min.conf | 18 +++--- src/networks/model-net/slimfly.c | 55 ++++++++++++++----- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf b/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf index 2d3d1a8..fd80f8e 100644 --- a/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf +++ b/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf @@ -2,25 +2,27 @@ LPGROUPS { MODELNET_GRP { - repetitions="50"; # The number of repetitions of this modelnet group - server="3"; # The number of servers attached to a terminal (should always equal num_terminals) - modelnet_slimfly="3"; # The number of terminals attached to a router - slimfly_router="1"; # The number of routers in a modelnet group + repetitions="50"; + server="3"; + modelnet_slimfly="3"; + slimfly_router="1"; } } PARAMS { - packet_size="256"; # Size of packets/messages in the simulation + packet_size="256"; modelnet_order=( "slimfly" ); # scheduler options modelnet_scheduler="fcfs"; chunk_size="256"; # modelnet_scheduler="round-robin"; num_vcs="4"; - num_routers="5"; # The number of routers in a slimfly group - num_terminals="3"; # The number of terminals connected to a router (should be same as "modelnet_slimfly" above) + num_routers="5"; + num_terminals="3"; global_channels="5"; local_channels="2"; + generator_set_X=("1","4"); # : Subgraph 0 generator set + generator_set_X_prime=("2","3"); # : Subgraph 1 generator set local_vc_size="25600"; global_vc_size="25600"; cn_vc_size="25600"; @@ -29,6 +31,6 @@ PARAMS cn_bandwidth="9.0"; router_delay="0"; link_delay="0"; - message_size="512"; # Upper bound on MPI message size in ROSS + message_size="512"; routing="minimal"; } diff --git a/src/networks/model-net/slimfly.c b/src/networks/model-net/slimfly.c index fdcb104..3bc4464 100644 --- a/src/networks/model-net/slimfly.c +++ b/src/networks/model-net/slimfly.c @@ -35,7 +35,7 @@ #define DEBUG 1 #define DEBUG_ROUTING 0 #define USE_DIRECT_SCHEME 1 -#define LOAD_FROM_FILE 1 +#define LOAD_FROM_FILE 0 #define LP_CONFIG_NM (model_net_lp_config_names[SLIMFLY]) #define LP_METHOD_NM (model_net_method_names[SLIMFLY]) @@ -48,31 +48,26 @@ #define PARAMS_LOG 1 #define N_COLLECT_POINTS 100 //MMS7 -#define TEMP_NUM_GROUPS 10 #define TEMP_NUM_ROUTERS 50 #define TEMP_NUM_TERMINALS 150 #define TEMP_RADIX 10 #define TEMP_NUM_VC 4 //MMS19 -/*#define TEMP_NUM_GROUPS 26 -#define TEMP_NUM_ROUTERS 338 +/*#define TEMP_NUM_ROUTERS 338 #define TEMP_NUM_TERMINALS 3042 #define TEMP_RADIX 28 #define TEMP_NUM_VC 4 *///MMS43 -//#define TEMP_NUM_GROUPS 58 //#define TEMP_NUM_ROUTERS 1682 //#define TEMP_NUM_TERMINALS 18502 //#define TEMP_RADIX 43 //#define TEMP_NUM_VC 4 //MMS55 -//#define TEMP_NUM_GROUPS 37 //#define TEMP_NUM_ROUTERS 2738 //#define TEMP_NUM_TERMINALS 73926 //#define TEMP_RADIX 82 //#define TEMP_NUM_VC 4 //MMS245 -//#define TEMP_NUM_GROUPS 326 //#define TEMP_NUM_ROUTERS 53138 //#define TEMP_NUM_TERMINALS 1009622 //#define TEMP_RADIX 263 @@ -108,8 +103,8 @@ float adaptive_threshold = 0.1; float pe_throughput_percent = 0.0; float pe_throughput = 0.0; // MMS7 q=5 Slimfly basic configuration parameters -static int X[] = {1,4}; // : Subgraph 0 generator set -static int X_prime[] = {2,3}; // : Subgraph 1 generator set +//static int X[] = {1,4}; // : Subgraph 0 generator set +//static int X_prime[] = {2,3}; // : Subgraph 1 generator set //#define GLOBAL_CHANNELS 13 //(h): Number of global channels per router //#define LOCAL_CHANNELS 6 // : Number of local channels per router //#define NUM_ROUTER 13 //(a): Number of routers in each group @@ -122,6 +117,8 @@ static int X_prime[] = {2,3}; // : Subgraph 1 generator set //#define NUM_TERMINALS 9 //(p): Number of terminal connections per router //static int X[] = {1,10,9,12,3,4}; // : Subgraph 0 generator set //static int X_prime[] = {6,8,2,7,5,11}; // : Subgraph 1 generator set +int *X; +int *X_prime; // MMS43 q=29 Slimfly basic configuration parameters //static int X[] = {1,6,7,13,20,4,24,28,23,22,16,9,25,5}; @@ -603,6 +600,36 @@ static void slimfly_read_config(const char * anno, slimfly_param *params){ fprintf(stderr, "Router delay not specified, setting to %lf\n", p->router_delay); } + char **values; + size_t length; + int ret = configuration_get_multivalue(&config, "PARAMS", "generator_set_X", anno, &values, &length); + if (ret != 1) + tw_error(TW_LOC, "unable to read PARAMS:generator_set_X\n"); + if (length < 2) + fprintf(stderr, "generator set X less than 2 elements\n"); + + X = (int*)malloc(sizeof(int)*length); + for (size_t i = 0; i < length; i++) + { + X[i] = atoi(values[i]); + printf("X[%d]:%d\n",i,X[i]); + } + free(values); + + ret = configuration_get_multivalue(&config, "PARAMS", "generator_set_X_prime", anno, &values, &length); + if (ret != 1) + tw_error(TW_LOC, "unable to read PARAMS:generator_set_X_prime\n"); + if (length < 2) + fprintf(stderr, "generator set X_prime less than 2 elements\n"); + + X_prime = (int*)malloc(sizeof(int)*length); + for (size_t i = 0; i < length; i++) + { + X_prime[i] = atoi(values[i]); + printf("X_prime[%d]:%d\n",i,X_prime[i]); + } + free(values); + char routing_str[MAX_NAME_LENGTH]; configuration_get_value(&config, "PARAMS", "routing", anno, routing_str, MAX_NAME_LENGTH); @@ -1021,7 +1048,7 @@ void slim_router_setup(router_state * r, tw_lp * lp) int local_idx = 0; int global_idx = 0; int generator_size = sizeof(X)/sizeof(int); -printf("generator size:%d\n",generator_size); +//printf("generator size:%d\n",generator_size); for(rid_d=0;rid_dparams->slim_total_routers;rid_d++) { @@ -1060,7 +1087,7 @@ printf("generator size:%d\n",generator_size); if(abs(j_s-j_d)==X[k]) { r->local_channel[local_idx++] = rid_d; - printf("router%d,router%d\n",rid_s,rid_d); +// printf("router%d,router%d\n",rid_s,rid_d); } } } @@ -1071,7 +1098,7 @@ printf("generator size:%d\n",generator_size); if(j_s == (i_d*i_s + j_d) % r->params->num_routers) // equation (3) y=mx+c { r->global_channel[global_idx++] = rid_d; - printf("router%d,router%d\n",rid_s,rid_d); +// printf("router%d,router%d\n",rid_s,rid_d); } } } @@ -1114,7 +1141,7 @@ printf("generator size:%d\n",generator_size); if(abs(j_s-j_d)==X_prime[k]) { r->local_channel[local_idx++] = rid_d; - printf("router%d,router%d\n",rid_s,rid_d); +// printf("router%d,router%d\n",rid_s,rid_d); } } } @@ -1125,7 +1152,7 @@ printf("generator size:%d\n",generator_size); if(j_d == (i_s*i_d + j_s) % r->params->num_routers) // equation (3) y=mx+c { r->global_channel[global_idx++] = rid_d; - printf("router%d,router%d\n",rid_s,rid_d); +// printf("router%d,router%d\n",rid_s,rid_d); } } } -- 2.26.2