From 156cbee5176cf2d442eb821999bf8f17bf23b9d7 Mon Sep 17 00:00:00 2001 From: Noah Wolfe Date: Tue, 9 Feb 2016 12:13:28 -0500 Subject: [PATCH] Updated Codes to compile and run new slim fly model. --- codes/model-net-lp.h | 14 ++- codes/model-net.h | 1 + codes/net/slimfly.h | 106 ++++++++++++++++++ src/Makefile.subdir | 4 + .../conf/modelnet-synthetic-slimfly-min.conf | 14 +-- src/networks/model-net/model-net-lp.c | 2 + src/networks/model-net/model-net.c | 1 + 7 files changed, 129 insertions(+), 13 deletions(-) create mode 100644 codes/net/slimfly.h diff --git a/codes/model-net-lp.h b/codes/model-net-lp.h index 32d150c..acf92e1 100644 --- a/codes/model-net-lp.h +++ b/codes/model-net-lp.h @@ -22,6 +22,7 @@ extern "C" { #include "model-net.h" #include "model-net-sched.h" #include "net/dragonfly.h" +#include "net/slimfly.h" #include "net/loggp.h" #include "net/simplenet-upd.h" #include "net/simplep2p.h" @@ -120,12 +121,13 @@ typedef struct model_net_base_msg { typedef struct model_net_wrap_msg { msg_header h; union { - model_net_base_msg m_base; // base lp - terminal_message m_dfly; // dragonfly - loggp_message m_loggp; // loggp - sn_message m_snet; // simplenet - sp_message m_sp2p; // simplep2p - nodes_message m_torus; // torus + model_net_base_msg m_base; // base lp + terminal_message m_dfly; // dragonfly + slim_terminal_message m_slim; // slimfly + loggp_message m_loggp; // loggp + sn_message m_snet; // simplenet + sp_message m_sp2p; // simplep2p + nodes_message m_torus; // torus // add new ones here } msg; } model_net_wrap_msg; diff --git a/codes/model-net.h b/codes/model-net.h index b1ce481..da36aa3 100644 --- a/codes/model-net.h +++ b/codes/model-net.h @@ -60,6 +60,7 @@ typedef struct mn_stats mn_stats; X(SIMPLENET, "modelnet_simplenet", "simplenet", &simplenet_method)\ X(SIMPLEP2P, "modelnet_simplep2p", "simplep2p", &simplep2p_method)\ X(TORUS, "modelnet_torus", "torus", &torus_method)\ + X(SLIMFLY, "modelnet_slimfly", "slimfly", &slimfly_method)\ X(DRAGONFLY, "modelnet_dragonfly", "dragonfly", &dragonfly_method)\ X(DRAGONFLY_ROUTER, "modelnet_dragonfly_router", "dragonfly_router", &dragonfly_router_method)\ X(LOGGP, "modelnet_loggp", "loggp", &loggp_method)\ diff --git a/codes/net/slimfly.h b/codes/net/slimfly.h new file mode 100644 index 0000000..895cb35 --- /dev/null +++ b/codes/net/slimfly.h @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2014 University of Chicago. + * See COPYRIGHT notice in top-level directory. + * + */ + +#ifndef SLIMFLY_H +#define SLIMFLY_H + +#include + +typedef struct slim_terminal_message slim_terminal_message; + +/* this message is used for both dragonfly compute nodes and routers */ +struct slim_terminal_message +{ + /* magic number */ + int magic; + /* flit travel start time*/ + tw_stime travel_start_time; + /* packet ID of the flit */ + unsigned long long packet_ID; + /* event type of the flit */ + short type; + /* category: comes from codes */ + char category[CATEGORY_NAME_MAX]; + /* final destination LP ID, this comes from codes can be a server or any other LP type*/ + tw_lpid final_dest_gid; + /*sending LP ID from CODES, can be a server or any other LP type */ + tw_lpid sender_lp; + tw_lpid sender_mn_lp; // source modelnet id + /* destination terminal ID of the dragonfly */ + tw_lpid dest_terminal_id; + /* source terminal ID of the dragonfly */ + unsigned int src_terminal_id; + /* local LP ID to calculate the radix of the sender node/router */ + unsigned int local_id; + /* message originating router id */ + unsigned int origin_router_id; + + /* number of hops traversed by the packet */ + short my_N_hop; + short my_l_hop, my_g_hop; + short saved_channel; + + /* Intermediate LP ID from which this message is coming */ + unsigned int intm_lp_id; + short new_vc; + short saved_vc; + /* last hop of the message, can be a terminal, local router or global router */ + short last_hop; + /* For routing */ + int intm_group_id; + int intm_router_id; + int chunk_id; + uint64_t packet_size; + uint64_t message_id; + uint64_t total_size; + + int saved_remote_esize; + int remote_event_size_bytes; + int local_event_size_bytes; + + // For buffer message + short vc_index; + int sender_radix; + int output_chan; + model_net_event_return event_rc; + int is_pull; + uint64_t pull_size; + + /* for reverse computation */ + short path_type; + tw_stime saved_available_time; + tw_stime saved_avg_time; + tw_stime saved_credit_time; + tw_stime saved_collective_init_time; + tw_stime saved_hist_start_time; + tw_stime msg_start_time; + + short saved_completed_chunks; + int saved_hist_num; + int saved_occupancy; + + + /* for reverse computation of a node's fan in*/ + int saved_fan_nodes; + tw_lpid sender_svr; + + /* LP ID of the sending node, has to be a network node in the dragonfly */ + tw_lpid sender_node; + tw_lpid next_stop; + + struct sfly_qhash_entry * saved_hash; +}; + +#endif /* end of include guard: DRAGONFLY_H */ + +/* + * Local variables: + * c-indent-level: 4 + * c-basic-offset: 4 + * End: + * + * vim: ft=c ts=8 sts=4 sw=4 expandtab + */ diff --git a/src/Makefile.subdir b/src/Makefile.subdir index 6f4d9fe..f4e6a74 100644 --- a/src/Makefile.subdir +++ b/src/Makefile.subdir @@ -80,6 +80,7 @@ nobase_include_HEADERS = \ codes/model-net-sched.h \ codes/model-net-inspect.h \ codes/net/dragonfly.h \ + codes/net/slimfly.h \ codes/net/loggp.h \ codes/net/simplenet-upd.h \ codes/net/simplep2p.h \ @@ -139,6 +140,7 @@ src_libcodes_a_SOURCES = \ src/networks/model-net/simplenet-upd.c \ src/networks/model-net/torus.c \ src/networks/model-net/dragonfly.c \ + src/networks/model-net/slimfly.c \ src/networks/model-net/loggp.c \ src/networks/model-net/simplep2p.c \ src/networks/model-net/model-net-lp.c \ @@ -148,6 +150,7 @@ src_libcodes_a_SOURCES = \ src/network-workloads/model-net-mpi-wrklds.c \ src/network-workloads/model-net-mpi-replay.c \ src/network-workloads/model-net-synthetic.c \ + src/network-workloads/model-net-synthetic-slimfly.c \ src/network-workloads/model-net-dumpi-traces-dump.c @@ -178,6 +181,7 @@ src_network_workloads_model_net_mpi_replay_SOURCES = src/network-workloads/model src_network_workloads_model_net_mpi_wrklds_SOURCES = src/network-workloads/model-net-mpi-wrklds.c src_network_workloads_model_net_synthetic_SOURCES = src/network-workloads/model-net-synthetic.c +src_network_workloads_model_net_synthetic_slimfly_SOURCES = src/network-workloads/model-net-synthetic-slimfly.c src_network_workloads_model_net_dumpi_traces_dump_SOURCES = src/network-workloads/model-net-dumpi-traces-dump.c #bin_PROGRAMS += src/network-workload/codes-nw-test diff --git a/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf b/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf index 4e58071..2d3d1a8 100644 --- a/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf +++ b/src/network-workloads/conf/modelnet-synthetic-slimfly-min.conf @@ -2,9 +2,9 @@ LPGROUPS { MODELNET_GRP { - repetitions="338"; # The number of repetitions of this modelnet group - server="9"; # The number of servers attached to a terminal (should always equal num_terminals) - modelnet_slimfly="9"; # The number of terminals attached to a router + 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 } } @@ -17,10 +17,10 @@ PARAMS chunk_size="256"; # modelnet_scheduler="round-robin"; num_vcs="4"; - num_routers="13"; # The number of routers in a slimfly group - num_terminals="9"; # The number of terminals connected to a router (should be same as "modelnet_slimfly" above) - global_channels="13"; - local_channels="6"; + 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) + global_channels="5"; + local_channels="2"; local_vc_size="25600"; global_vc_size="25600"; cn_vc_size="25600"; diff --git a/src/networks/model-net/model-net-lp.c b/src/networks/model-net/model-net-lp.c index e496272..17f7161 100644 --- a/src/networks/model-net/model-net-lp.c +++ b/src/networks/model-net/model-net-lp.c @@ -257,6 +257,8 @@ void model_net_base_configure(){ // note: dragonfly router uses the same event struct msg_offsets[DRAGONFLY_ROUTER] = offsetof(model_net_wrap_msg, msg.m_dfly); + msg_offsets[SLIMFLY] = + offsetof(model_net_wrap_msg, msg.m_slim); msg_offsets[LOGGP] = offsetof(model_net_wrap_msg, msg.m_loggp); diff --git a/src/networks/model-net/model-net.c b/src/networks/model-net/model-net.c index 3982131..472e9dc 100644 --- a/src/networks/model-net/model-net.c +++ b/src/networks/model-net/model-net.c @@ -21,6 +21,7 @@ extern struct model_net_method simplenet_method; extern struct model_net_method simplep2p_method; extern struct model_net_method torus_method; extern struct model_net_method dragonfly_method; +extern struct model_net_method slimfly_method; extern struct model_net_method dragonfly_router_method; extern struct model_net_method loggp_method; -- 2.26.2