diff --git a/src/network-workloads/model-net-synthetic.c b/src/network-workloads/model-net-synthetic.c index 89913d88e46066c870e1011ef125c38b9ec8849b..a747535ff7a2d0fdb19b5896c82e9bf6350d0d8e 100644 --- a/src/network-workloads/model-net-synthetic.c +++ b/src/network-workloads/model-net-synthetic.c @@ -163,7 +163,10 @@ static void handle_kickoff_rev_event( if(m->incremented_flag) return; - model_net_event_rc(net_id, lp, PAYLOAD_SZ); + if(b->c1) + tw_rand_reverse_unif(lp->rng); + + model_net_event_rc(net_id, lp, PAYLOAD_SZ); ns->msg_sent_count--; tw_rand_reverse_unif(lp->rng); } @@ -194,16 +197,14 @@ static void handle_kickoff_event( m_remote->svr_event_type = REMOTE; assert(net_id == DRAGONFLY); /* only supported for dragonfly model right now. */ - ns->start_ts = tw_now(lp); - - codes_mapping_get_lp_info(lp->gid, group_name, &group_index, lp_type_name, &lp_type_index, anno, &rep_id, &offset); - - int local_id = codes_mapping_get_lp_relative_id(lp->gid, 0, 0); + codes_mapping_get_lp_info(lp->gid, group_name, &group_index, lp_type_name, &lp_type_index, anno, &rep_id, &offset); + int local_id = codes_mapping_get_lp_relative_id(lp->gid, 0, 0); /* in case of uniform random traffic, send to a random destination. */ if(traffic == UNIFORM) { + b->c1 = 1; local_dest = tw_rand_integer(lp->rng, 0, num_nodes - 1); } else if(traffic == NEAREST_GROUP) @@ -367,7 +368,7 @@ int main( /* 5 days of simulation time */ g_tw_ts_end = s_to_ns(5 * 24 * 60 * 60); - //model_net_enable_sampling(8000, 10000); + model_net_enable_sampling(8000, 16000); if(net_id != DRAGONFLY) { diff --git a/src/networks/model-net/dragonfly.c b/src/networks/model-net/dragonfly.c index 0bf5743c62cee96474a45ead84054292911a9887..1797839befd3d6fc72631d98a47e0e1f3090f754 100644 --- a/src/networks/model-net/dragonfly.c +++ b/src/networks/model-net/dragonfly.c @@ -80,6 +80,9 @@ FILE * dragonfly_log = NULL; int sample_bytes_written = 0; int sample_rtr_bytes_written = 0; +char cn_sample_file[MAX_NAME_LENGTH]; +char router_sample_file[MAX_NAME_LENGTH]; + typedef struct terminal_message_list terminal_message_list; struct terminal_message_list { terminal_message msg; @@ -521,6 +524,11 @@ static void dragonfly_read_config(const char * anno, dragonfly_param *params){ configuration_get_value_double(&config, "PARAMS", "router_delay", anno, &p->router_delay); + configuration_get_value(&config, "PARAMS", "cn_sample_file", anno, cn_sample_file, + MAX_NAME_LENGTH); + configuration_get_value(&config, "PARAMS", "rt_sample_file", anno, router_sample_file, + MAX_NAME_LENGTH); + char routing_str[MAX_NAME_LENGTH]; configuration_get_value(&config, "PARAMS", "routing", anno, routing_str, MAX_NAME_LENGTH); @@ -1983,13 +1991,17 @@ void dragonfly_rsample_fin(router_state * s, p->radix, p->radix); fclose(fp); } - char file_name[64]; - sprintf(file_name, "dragonfly-router-sampling-%ld.bin", g_tw_mynode); + char cn_fn[MAX_NAME_LENGTH]; + if(strcmp(router_sample_file, "") == 0) + sprintf(cn_fn, "dragonfly-router-sampling-%ld.bin", g_tw_mynode); + else + sprintf(cn_fn, "%s-%ld.bin", router_sample_file, g_tw_mynode); + int i = 0; int j = 0; int size_sample = sizeof(tw_lpid) + p->radix * (sizeof(int64_t) + sizeof(tw_stime)) + sizeof(tw_stime); - FILE * fp = fopen(file_name, "a"); + FILE * fp = fopen(cn_fn, "wa"); fseek(fp, sample_rtr_bytes_written, SEEK_SET); for(; i < s->op_arr_size; i++) @@ -2132,16 +2144,18 @@ void dragonfly_sample_fin(terminal_state * s, "data size per sample \t finished hops \t time to finish chunks \t busy time \t sample end time"); fclose(fp); } - char file_name[64]; - sprintf(file_name, "dragonfly-cn-sampling-%ld.bin", g_tw_mynode); + char rt_fn[MAX_NAME_LENGTH]; + if(strncmp(router_sample_file, "", 10) == 0) + sprintf(rt_fn, "dragonfly-cn-sampling-%ld.bin", g_tw_mynode); + else + sprintf(rt_fn, "%s-%ld.bin", cn_sample_file, g_tw_mynode); - FILE * fp = fopen(file_name, "a"); + FILE * fp = fopen(rt_fn, "wa"); fseek(fp, sample_bytes_written, SEEK_SET); fwrite(s->sample_stat, sizeof(struct dfly_cn_sample), s->op_arr_size, fp); fclose(fp); sample_bytes_written += (s->op_arr_size * sizeof(struct dfly_cn_sample)); - //printf("\n Bytes written %ld ", sample_bytes_written); } void terminal_buf_update_rc(terminal_state * s, diff --git a/tests/conf/modelnet-test-dragonfly.conf b/tests/conf/modelnet-test-dragonfly.conf index 7c754a9283ed53095e6f9941a11906429a7a9556..ae49e1c14b7b02216e4ccc686ca7b27f7cff3c8c 100644 --- a/tests/conf/modelnet-test-dragonfly.conf +++ b/tests/conf/modelnet-test-dragonfly.conf @@ -25,4 +25,6 @@ PARAMS cn_bandwidth="5.25"; message_size="368"; routing="nonminimal"; + cn_sample_file = "dragonfly-sample-ur"; + rt_sample_file = "dragonfly-router-ur"; }