Commit 6a8d31e6 authored by Matthieu Dorier's avatar Matthieu Dorier

Merge branch 'master' into cortex

parents 3dc640f0 3058124b
......@@ -49,9 +49,9 @@ PARAMS
# number of global channels per router
num_global_channels="10";
# network config file for intra-group connections
intra-group-connections="/Users/mmubarak/Documents/software_development/dragonfly-cray/codes-conflict/scripts/gen-cray-topo/intra-custom";
intra-group-connections="../src/network-workloads/conf/dragonfly-custom/intra-custom";
# network config file for inter-group connections
inter-group-connections="/Users/mmubarak/Documents/software_development/dragonfly-cray/codes-conflict/scripts/gen-cray-topo/inter-custom";
inter-group-connections="../src/network-workloads/conf/dragonfly-custom/inter-custom";
# routing protocol to be used
routing="prog-adaptive";
}
......@@ -48,9 +48,9 @@ PARAMS
# number of global channels per router
num_global_channels="10";
# network config file for intra-group connections
intra-group-connections="/Users/mmubarak/Documents/software_development/dragonfly-cray/codes-conflict/scripts/gen-cray-topo/intra-edison";
intra-group-connections="../src/network-workloads/conf/dragonfly-custom/intra-edison";
# network config file for inter-group connections
inter-group-connections="/Users/mmubarak/Documents/software_development/dragonfly-cray/codes-conflict/scripts/gen-cray-topo/inter-edison";
inter-group-connections="../src/network-workloads/conf/dragonfly-custom/inter-edison";
# routing protocol to be used
routing="minimal";
}
......@@ -48,9 +48,9 @@ PARAMS
# number of global channels per router
num_global_channels="10";
# network config file for intra-group connections
intra-group-connections="/Users/mmubarak/Documents/software_development/test_versions/codes/scripts/gen-cray-topo/intra-theta";
intra-group-connections="../src/network-workloads/conf/dragonfly-custom/intra-theta";
# network config file for inter-group connections
inter-group-connections="/Users/mmubarak/Documents/software_development/test_versions/codes/scripts/gen-cray-topo/inter-theta";
inter-group-connections="../src/network-workloads/conf/dragonfly-custom/inter-theta";
# routing protocol to be used
routing="adaptive";
}
......@@ -2,31 +2,31 @@ LPGROUPS
{
MODELNET_GRP
{
repetitions="4"; #Number of leaf level switches
server="2";
modelnet_fattree="2";
fattree_switch="2";
repetitions="32"; # repetitions = Ne = total # of edge switches. For type0 Ne = Np*Ns = ceil(N/Ns*(k/2))*(k/2) = ceil(N/(k/2)^2)*(k/2)
server="4";
modelnet_fattree="4";
fattree_switch="3";
}
}
PARAMS
{
ft_type="1"; # Only appears to be one type (type=0) in fattree.c
num_levels="2"; # Must be 1 < num_levels < 4
switch_count="2,4"; # Some sort of csv string. I'm thinking it's the number of switches per level
switch_radix="4,4"; # Another csv string. I'm thinking it's the radix of the switches per level. All switches within same level have same radix
ft_type="0";
packet_size="512";
modelnet_order=( "fattree" );
# scheduler options
modelnet_scheduler="fcfs";
chunk_size="32";
# modelnet_scheduler="round-robin";
num_vcs="1";
vc_size="16384";
cn_vc_size="16384";
link_bandwidth="5";
cn_bandwidth="5";
message_size="512";
routing="minimal";
router_delay="50";
chunk_size="512";
modelnet_scheduler="fcfs";
#modelnet_scheduler="round-robin";
modelnet_order=( "fattree" );
num_levels="3";
switch_count="32"; # = repititions
switch_radix="8";
router_delay="90";
terminal_radix="1";
soft_delay="1000";
vc_size="65536";
cn_vc_size="65536";
link_bandwidth="12.5";
cn_bandwidth="12.5";
routing="adaptive";
rail_routing="adaptive";
}
......@@ -22,7 +22,7 @@
#define DUMP_CONNECTIONS 0
#define CREDIT_SIZE 8
#define DFLY_HASH_TABLE_SIZE 262144
#define DFLY_HASH_TABLE_SIZE 5000
// debugging parameters
#define TRACK -1
......@@ -834,11 +834,8 @@ terminal_custom_init( terminal_state * s,
s->vc_occupancy[i]=0;
}
s->rank_tbl = qhash_init(dragonfly_rank_hash_compare, dragonfly_hash_func, DFLY_HASH_TABLE_SIZE);
if(!s->rank_tbl)
tw_error(TW_LOC, "\n Hash table not initialized! ");
s->rank_tbl = NULL;
s->terminal_msgs =
(terminal_custom_message_list**)malloc(s->num_vcs*sizeof(terminal_custom_message_list*));
s->terminal_msgs_tail =
......@@ -1426,6 +1423,9 @@ static void packet_arrive_rc(terminal_state * s, tw_bf * bf, terminal_custom_mes
struct dfly_qhash_entry * d_entry_pop = (dfly_qhash_entry *)rc_stack_pop(s->st);
qhash_add(s->rank_tbl, &key, &(d_entry_pop->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= DFLY_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in dragonfly model");
hash_link = &(d_entry_pop->hash_link);
tmp = d_entry_pop;
......@@ -1479,6 +1479,9 @@ static void packet_arrive(terminal_state * s, tw_bf * bf, terminal_custom_messag
// NIC aggregation - should this be a separate function?
// Trigger an event on receiving server
if(!s->rank_tbl)
s->rank_tbl = qhash_init(dragonfly_rank_hash_compare, dragonfly_hash_func, DFLY_HASH_TABLE_SIZE);
struct dfly_hash_key key;
key.message_id = msg->message_id;
key.sender_id = msg->sender_lp;
......@@ -1611,6 +1614,9 @@ static void packet_arrive(terminal_state * s, tw_bf * bf, terminal_custom_messag
d_entry->remote_event_size = 0;
qhash_add(s->rank_tbl, &key, &(d_entry->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= DFLY_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in dragonfly model");
hash_link = &(d_entry->hash_link);
tmp = d_entry;
......@@ -2026,8 +2032,10 @@ dragonfly_custom_terminal_final( terminal_state * s,
//if(s->packet_gen != s->packet_fin)
// printf("\n generated %d finished %d ", s->packet_gen, s->packet_fin);
if(s->rank_tbl)
qhash_finalize(s->rank_tbl);
qhash_finalize(s->rank_tbl);
rc_stack_destroy(s->st);
free(s->vc_occupancy);
free(s->terminal_msgs);
......
......@@ -33,7 +33,7 @@
#define COLLECTIVE_COMPUTATION_DELAY 5700
#define DRAGONFLY_FAN_OUT_DELAY 20.0
#define WINDOW_LENGTH 0
#define DFLY_HASH_TABLE_SIZE 262144
#define DFLY_HASH_TABLE_SIZE 5000
// debugging parameters
#define TRACK -1
......@@ -757,11 +757,8 @@ terminal_init( terminal_state * s,
s->vc_occupancy[i]=0;
}
s->rank_tbl = qhash_init(dragonfly_rank_hash_compare, dragonfly_hash_func, DFLY_HASH_TABLE_SIZE);
if(!s->rank_tbl)
tw_error(TW_LOC, "\n Hash table not initialized! ");
s->rank_tbl = NULL;
s->terminal_msgs =
(terminal_message_list**)malloc(1*sizeof(terminal_message_list*));
s->terminal_msgs_tail =
......@@ -1439,6 +1436,9 @@ static void packet_arrive_rc(terminal_state * s, tw_bf * bf, terminal_message *
qhash_add(s->rank_tbl, &key, &(d_entry_pop->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= DFLY_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in dragonfly model");
hash_link = &(d_entry_pop->hash_link);
tmp = d_entry_pop;
......@@ -1491,6 +1491,9 @@ static void packet_arrive(terminal_state * s, tw_bf * bf, terminal_message * msg
// NIC aggregation - should this be a separate function?
// Trigger an event on receiving server
if(!s->rank_tbl)
s->rank_tbl = qhash_init(dragonfly_rank_hash_compare, dragonfly_hash_func, DFLY_HASH_TABLE_SIZE);
struct dfly_hash_key key;
key.message_id = msg->message_id;
key.sender_id = msg->sender_lp;
......@@ -1623,6 +1626,9 @@ static void packet_arrive(terminal_state * s, tw_bf * bf, terminal_message * msg
d_entry->remote_event_size = 0;
qhash_add(s->rank_tbl, &key, &(d_entry->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= DFLY_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in dragonfly model");
hash_link = &(d_entry->hash_link);
tmp = d_entry;
......@@ -2341,7 +2347,7 @@ dragonfly_terminal_final( terminal_state * s,
sprintf(meta_fname, "dragonfly-msg-stats.meta");
FILE * fp = fopen(meta_fname, "w");
fprintf(fp, "# Format <LP id> <Terminal ID> <Total Data Size> <Avg packet latency> <# Flits/Packets finished> <Avg hops> <Busy Time>");
fprintf(fp, "# Format <LP id> <Terminal ID> <Total Data Size> <Aggregate packet latency> <# Flits/Packets finished> <Avg hops> <Busy Time>");
fclose(fp);
}
......@@ -2351,7 +2357,7 @@ dragonfly_terminal_final( terminal_state * s,
written = sprintf(s->output_buf, "# Format <LP id> <Terminal ID> <Total Data Size> <Aggregate packet latency> <# Flits/Packets finished> <Avg hops> <Busy Time>");
written += sprintf(s->output_buf + written, "\n %llu %u %ld %lf %ld %lf %lf",
LLU(lp->gid), s->terminal_id, s->total_msg_size, s->total_time,
LLU(lp->gid), s->terminal_id, s->total_msg_size, (double)s->total_time/s->finished_packets,
s->finished_packets, (double)s->total_hops/s->finished_chunks,
s->busy_time);
......@@ -2363,8 +2369,10 @@ dragonfly_terminal_final( terminal_state * s,
//if(s->packet_gen != s->packet_fin)
// printf("\n generated %d finished %d ", s->packet_gen, s->packet_fin);
if(s->rank_tbl)
qhash_finalize(s->rank_tbl);
qhash_finalize(s->rank_tbl);
rc_stack_destroy(s->st);
free(s->vc_occupancy);
free(s->terminal_msgs);
......
......@@ -17,7 +17,7 @@
#define MEAN_PROCESS 1.0
#define TERMINAL_GUID_PREFIX ((uint64_t)(64) << 32)
#define FTREE_HASH_TABLE_SIZE 262144
#define FTREE_HASH_TABLE_SIZE 5000
// debugging parameters
#define TRACK_PKT -1
......@@ -965,9 +965,9 @@ void ft_terminal_init( ft_terminal_state * s, tw_lp * lp )
s->in_send_loop = 0;
s->issueIdle = 0;
s->rank_tbl = qhash_init(fattree_rank_hash_compare, fattree_hash_func, FTREE_HASH_TABLE_SIZE);
if(!s->rank_tbl)
tw_error(TW_LOC, "\n Hash table not initialized! ");
s->rank_tbl = NULL;
//if(!s->rank_tbl)
// tw_error(TW_LOC, "\n Hash table not initialized! ");
s->params->num_terminals = codes_mapping_get_lp_count(lp_group_name, 0,
LP_CONFIG_NM, s->anno, 0);
......@@ -2361,6 +2361,9 @@ void ft_packet_arrive_rc(ft_terminal_state * s, tw_bf * bf, fattree_message * ms
struct ftree_qhash_entry * d_entry_pop = rc_stack_pop(s->st);
qhash_add(s->rank_tbl, &key, &(d_entry_pop->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= FTREE_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in fattree model");
hash_link = &(d_entry_pop->hash_link);
tmp = d_entry_pop;
......@@ -2381,6 +2384,8 @@ void ft_packet_arrive_rc(ft_terminal_state * s, tw_bf * bf, fattree_message * ms
void ft_packet_arrive(ft_terminal_state * s, tw_bf * bf, fattree_message * msg,
tw_lp * lp) {
if(!s->rank_tbl)
s->rank_tbl = qhash_init(fattree_rank_hash_compare, fattree_hash_func, FTREE_HASH_TABLE_SIZE);
//Establish msg hash keys
struct ftree_hash_key key;
key.message_id = msg->message_id;
......@@ -2501,6 +2506,9 @@ void ft_packet_arrive(ft_terminal_state * s, tw_bf * bf, fattree_message * msg,
d_entry->remote_event_size = 0;
qhash_add(s->rank_tbl, &key, &(d_entry->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= FTREE_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in fattree model");
hash_link = &(d_entry->hash_link);
}
......
......@@ -25,7 +25,7 @@
#define MEAN_PROCESS 1.0
/* collective specific parameters */
#define DFLY_HASH_TABLE_SIZE 65536
#define SFLY_HASH_TABLE_SIZE 5000
// debugging parameters
#define TRACK 4
......@@ -840,10 +840,9 @@ void slim_terminal_init( terminal_state * s,
s->vc_occupancy[i]=0;
}
s->rank_tbl = qhash_init(slimfly_rank_hash_compare, slimfly_hash_func, DFLY_HASH_TABLE_SIZE);
if(!s->rank_tbl)
tw_error(TW_LOC, "\n Hash table not initialized! ");
s->rank_tbl = NULL;
// if(!s->rank_tbl)
// tw_error(TW_LOC, "\n Hash table not initialized! ");
s->terminal_msgs =
(slim_terminal_message_list**)malloc(1*sizeof(slim_terminal_message_list*));
......@@ -1616,6 +1615,9 @@ void slim_packet_arrive_rc(terminal_state * s, tw_bf * bf, slim_terminal_message
struct sfly_qhash_entry * d_entry_pop = msg->saved_hash;
qhash_add(s->rank_tbl, &key, &(d_entry_pop->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= SFLY_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in slim fly model");
hash_link = qhash_search(s->rank_tbl, &key);
tmp = qhash_entry(hash_link, struct sfly_qhash_entry, hash_link);
......@@ -1664,6 +1666,9 @@ void slim_packet_arrive(terminal_state * s, tw_bf * bf, slim_terminal_message *
// NIC aggregation - should this be a separate function?
// Trigger an event on receiving server
if(!s->rank_tbl)
s->rank_tbl = qhash_init(slimfly_rank_hash_compare, slimfly_hash_func, SFLY_HASH_TABLE_SIZE);
tw_stime ts = g_tw_lookahead + s->params->credit_delay + tw_rand_unif(lp->rng);
if(msg->packet_ID == TRACK)
......@@ -1800,6 +1805,9 @@ void slim_packet_arrive(terminal_state * s, tw_bf * bf, slim_terminal_message *
d_entry->remote_event_size = 0;
qhash_add(s->rank_tbl, &key, &(d_entry->hash_link));
s->rank_tbl_pop++;
if(s->rank_tbl_pop >= SFLY_HASH_TABLE_SIZE)
tw_error(TW_LOC, "\n Exceeded allocated qhash size, increase hash size in slimfly model");
hash_link = qhash_search(s->rank_tbl, &key);
tmp = qhash_entry(hash_link, struct sfly_qhash_entry, hash_link);
......@@ -1996,7 +2004,9 @@ void slimfly_terminal_final( terminal_state * s,
if(s->terminal_msgs[0] != NULL)
// printf("[%lu] leftover terminal messages \n", lp->gid);
qhash_finalize(s->rank_tbl);
if(s->rank_tbl)
qhash_finalize(s->rank_tbl);
rc_stack_destroy(s->st);
free(s->vc_occupancy);
free(s->terminal_msgs);
......
......@@ -9,6 +9,10 @@ check_PROGRAMS += tests/lp-io-test \
tests/map-ctx-test \
tests/modelnet-test \
tests/modelnet-p2p-bw \
src/network-workloads/model-net-synthetic \
src/network-workloads/model-net-synthetic-fattree \
src/network-workloads/model-net-synthetic-slimfly \
src/network-workloads/model-net-synthetic-custom-dfly \
tests/concurrent-msg-recv tests/modelnet-simplep2p-test \
tests/modelnet-test-collective \
tests/modelnet-prio-sched-test \
......@@ -27,6 +31,10 @@ TESTS += tests/lp-io-test.sh \
tests/modelnet-test-loggp.sh \
tests/modelnet-test-dragonfly.sh \
tests/modelnet-test-slimfly.sh \
tests/modelnet-test-dragonfly-synthetic.sh \
tests/modelnet-test-dragonfly-custom-synthetic.sh \
tests/modelnet-test-fattree-synthetic.sh \
tests/modelnet-test-slimfly-synthetic.sh \
tests/modelnet-p2p-bw-loggp.sh \
tests/modelnet-prio-sched-test.sh
......
#!/bin/bash
if [ -z $srcdir ]; then
echo srcdir variable not set.
exit 1
fi
src/network-workloads/model-net-synthetic-custom-dfly --sync=1 --num_messages=1 -- $srcdir/src/network-workloads/conf/dragonfly-custom/modelnet-test-dragonfly-theta.conf
#!/bin/bash
if [ -z $srcdir ]; then
echo srcdir variable not set.
exit 1
fi
src/network-workloads/model-net-synthetic --sync=1 --num_messages=1 -- $srcdir/src/network-workloads/conf/modelnet-synthetic-dragonfly.conf
#!/bin/bash
tests/modelnet-test --sync=1 -- tests/conf/modelnet-test-dragonfly.conf
#!/bin/bash
if [ -z $srcdir ]; then
echo srcdir variable not set.
exit 1
fi
src/network-workloads/model-net-synthetic-fattree --sync=1 -- $srcdir/src/network-workloads/conf/modelnet-synthetic-fattree.conf
#!/bin/bash
if [ -z $srcdir ]; then
echo srcdir variable not set.
exit 1
fi
src/network-workloads/model-net-synthetic-slimfly --sync=1 -- $srcdir/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf
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