Commit b74da2c3 authored by Misbah Mubarak's avatar Misbah Mubarak

Merge branch 'qos-dev-merge-resolved' into 'master'

DFP QoS work and DFDally Custom Standalone model

See merge request !64
parents b734e145 24e8b225
...@@ -24,6 +24,7 @@ extern "C" { ...@@ -24,6 +24,7 @@ extern "C" {
#include "net/dragonfly.h" #include "net/dragonfly.h"
#include "net/dragonfly-custom.h" #include "net/dragonfly-custom.h"
#include "net/dragonfly-plus.h" #include "net/dragonfly-plus.h"
#include "net/dragonfly-dally.h"
#include "net/slimfly.h" #include "net/slimfly.h"
#include "net/fattree.h" #include "net/fattree.h"
#include "net/loggp.h" #include "net/loggp.h"
...@@ -133,6 +134,7 @@ typedef struct model_net_wrap_msg { ...@@ -133,6 +134,7 @@ typedef struct model_net_wrap_msg {
terminal_message m_dfly; // dragonfly terminal_message m_dfly; // dragonfly
terminal_custom_message m_custom_dfly; // dragonfly-custom terminal_custom_message m_custom_dfly; // dragonfly-custom
terminal_plus_message m_dfly_plus; // dragonfly plus terminal_plus_message m_dfly_plus; // dragonfly plus
terminal_dally_message m_dally_dfly; // dragonfly dally
slim_terminal_message m_slim; // slimfly slim_terminal_message m_slim; // slimfly
fattree_message m_fat; // fattree fattree_message m_fat; // fattree
loggp_message m_loggp; // loggp loggp_message m_loggp; // loggp
......
...@@ -76,6 +76,8 @@ typedef struct mn_stats mn_stats; ...@@ -76,6 +76,8 @@ typedef struct mn_stats mn_stats;
X(EXPRESS_MESH_ROUTER, "modelnet_express_mesh_router", "express_mesh_router", &express_mesh_router_method)\ X(EXPRESS_MESH_ROUTER, "modelnet_express_mesh_router", "express_mesh_router", &express_mesh_router_method)\
X(DRAGONFLY_PLUS, "modelnet_dragonfly_plus", "dragonfly_plus", &dragonfly_plus_method)\ X(DRAGONFLY_PLUS, "modelnet_dragonfly_plus", "dragonfly_plus", &dragonfly_plus_method)\
X(DRAGONFLY_PLUS_ROUTER, "modelnet_dragonfly_plus_router", "dragonfly_plus_router", &dragonfly_plus_router_method)\ X(DRAGONFLY_PLUS_ROUTER, "modelnet_dragonfly_plus_router", "dragonfly_plus_router", &dragonfly_plus_router_method)\
X(DRAGONFLY_DALLY, "modelnet_dragonfly_dally", "dragonfly_dally", &dragonfly_dally_method)\
X(DRAGONFLY_DALLY_ROUTER, "modelnet_dragonfly_dally_router", "dragonfly_dally_router", &dragonfly_dally_router_method)\
X(MAX_NETS, NULL, NULL, NULL) X(MAX_NETS, NULL, NULL, NULL)
#define X(a,b,c,d) a, #define X(a,b,c,d) a,
......
/*
* Copyright (C) 2014 University of Chicago.
* See COPYRIGHT notice in top-level directory.
*
*/
#ifndef DRAGONFLY_DALLY_H
#define DRAGONFLY_DALLY_H
#ifdef __cplusplus
extern "C" {
#endif
#include <ross.h>
typedef struct terminal_dally_message terminal_dally_message;
/* this message is used for both dragonfly compute nodes and routers */
struct terminal_dally_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];
/* store category hash in the event */
uint32_t category_hash;
/* 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;
/* message originating router id. MM: Can we calculate it through
* sender_mn_lp??*/
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;
short saved_vc;
int next_stop;
short nonmin_done;
/* Intermediate LP ID from which this message is coming */
unsigned int intm_lp_id;
/* last hop of the message, can be a terminal, local router or global router */
short last_hop;
/* For routing */
int intm_rtr_id;
int saved_src_dest;
int saved_src_chan;
uint32_t chunk_id;
uint32_t packet_size;
uint32_t message_id;
uint32_t total_size;
int remote_event_size_bytes;
int local_event_size_bytes;
// For buffer message
short vc_index;
int output_chan;
model_net_event_return event_rc;
int is_pull;
uint32_t pull_size;
int path_type;
/* for reverse computation */
short num_rngs;
short num_cll;
int qos_index;
short last_saved_qos;
short qos_reset1;
short qos_reset2;
tw_stime saved_available_time;
tw_stime saved_avg_time;
tw_stime saved_rcv_time;
tw_stime saved_busy_time;
tw_stime saved_total_time;
tw_stime saved_sample_time;
tw_stime msg_start_time;
tw_stime saved_busy_time_ross;
tw_stime saved_fin_chunks_ross;
};
#ifdef __cplusplus
}
#endif
#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
*/
...@@ -83,6 +83,21 @@ struct terminal_plus_message ...@@ -83,6 +83,21 @@ struct terminal_plus_message
int is_pull; int is_pull;
uint32_t pull_size; uint32_t pull_size;
/* for counting reverse calls */
short num_rngs;
short num_cll;
/* qos related attributes */
short last_saved_qos;
short qos_reset1;
short qos_reset2;
/* new qos rc - These are calloced in forward events, free'd in RC or commit_f */
/* note: dynamic memory here is OK since it's only accessed by the LP that alloced it in the first place. */
short rc_is_qos_set;
unsigned long long * rc_qos_data;
int * rc_qos_status;
/* for reverse computation */ /* for reverse computation */
int path_type; int path_type;
tw_stime saved_available_time; tw_stime saved_available_time;
......
...@@ -230,4 +230,7 @@ AC_CONFIG_FILES([Makefile]) ...@@ -230,4 +230,7 @@ AC_CONFIG_FILES([Makefile])
AC_OUTPUT([maint/codes.pc]) AC_OUTPUT([maint/codes.pc])
AC_OUTPUT([src/network-workloads/conf/dragonfly-custom/modelnet-test-dragonfly-1728-nodes.conf]) AC_OUTPUT([src/network-workloads/conf/dragonfly-custom/modelnet-test-dragonfly-1728-nodes.conf])
AC_OUTPUT([src/network-workloads/conf/dragonfly-plus/modelnet-test-dragonfly-plus.conf])
AC_OUTPUT([src/network-workloads/conf/dragonfly-dally/modelnet-test-dragonfly-dally.conf])
CONT rand
3456 1024
2 2
1 1
1024 128 512 512
...@@ -94,8 +94,9 @@ nobase_include_HEADERS = \ ...@@ -94,8 +94,9 @@ nobase_include_HEADERS = \
codes/connection-manager.h \ codes/connection-manager.h \
codes/net/common-net.h \ codes/net/common-net.h \
codes/net/dragonfly.h \ codes/net/dragonfly.h \
codes/net/dragonfly-plus.h \
codes/net/dragonfly-custom.h \ codes/net/dragonfly-custom.h \
codes/net/dragonfly-dally.h \
codes/net/dragonfly-plus.h \
codes/net/slimfly.h \ codes/net/slimfly.h \
codes/net/fattree.h \ codes/net/fattree.h \
codes/net/loggp.h \ codes/net/loggp.h \
...@@ -164,6 +165,7 @@ src_libcodes_la_SOURCES = \ ...@@ -164,6 +165,7 @@ src_libcodes_la_SOURCES = \
src/networks/model-net/dragonfly.c \ src/networks/model-net/dragonfly.c \
src/networks/model-net/dragonfly-custom.C \ src/networks/model-net/dragonfly-custom.C \
src/networks/model-net/dragonfly-plus.C \ src/networks/model-net/dragonfly-plus.C \
src/networks/model-net/dragonfly-dally.C \
src/networks/model-net/slimfly.c \ src/networks/model-net/slimfly.c \
src/networks/model-net/fattree.c \ src/networks/model-net/fattree.c \
src/networks/model-net/loggp.c \ src/networks/model-net/loggp.c \
...@@ -198,6 +200,7 @@ bin_PROGRAMS += src/network-workloads/model-net-synthetic-custom-dfly ...@@ -198,6 +200,7 @@ bin_PROGRAMS += src/network-workloads/model-net-synthetic-custom-dfly
bin_PROGRAMS += src/network-workloads/model-net-synthetic-slimfly bin_PROGRAMS += src/network-workloads/model-net-synthetic-slimfly
bin_PROGRAMS += src/network-workloads/model-net-synthetic-fattree bin_PROGRAMS += src/network-workloads/model-net-synthetic-fattree
bin_PROGRAMS += src/network-workloads/model-net-synthetic-dfly-plus bin_PROGRAMS += src/network-workloads/model-net-synthetic-dfly-plus
bin_PROGRAMS += src/network-workloads/model-net-synthetic-dally-dfly
src_workload_codes_workload_dump_SOURCES = \ src_workload_codes_workload_dump_SOURCES = \
...@@ -212,6 +215,7 @@ src_network_workloads_model_net_mpi_replay_CFLAGS = $(AM_CFLAGS) ...@@ -212,6 +215,7 @@ src_network_workloads_model_net_mpi_replay_CFLAGS = $(AM_CFLAGS)
src_network_workloads_model_net_synthetic_SOURCES = src/network-workloads/model-net-synthetic.c src_network_workloads_model_net_synthetic_SOURCES = src/network-workloads/model-net-synthetic.c
src_network_workloads_model_net_synthetic_custom_dfly_SOURCES = src/network-workloads/model-net-synthetic-custom-dfly.c src_network_workloads_model_net_synthetic_custom_dfly_SOURCES = src/network-workloads/model-net-synthetic-custom-dfly.c
src_network_workloads_model_net_synthetic_dfly_plus_SOURCES = src/network-workloads/model-net-synthetic-dfly-plus.c src_network_workloads_model_net_synthetic_dfly_plus_SOURCES = src/network-workloads/model-net-synthetic-dfly-plus.c
src_network_workloads_model_net_synthetic_dally_dfly_SOURCES = src/network-workloads/model-net-synthetic-dally-dfly.c
src_networks_model_net_topology_test_SOURCES = src/networks/model-net/topology-test.c src_networks_model_net_topology_test_SOURCES = src/networks/model-net/topology-test.c
#bin_PROGRAMS += src/network-workload/codes-nw-test #bin_PROGRAMS += src/network-workload/codes-nw-test
......
LPGROUPS
{
MODELNET_GRP
{
repetitions="1040";
# name of this lp changes according to the model
nw-lp="8";
# these lp names will be the same for dragonfly-custom model
modelnet_dragonfly_dally="8";
modelnet_dragonfly_dally_router="1";
}
}
PARAMS
{
# packet size in the network
packet_size="4096";
modelnet_order=( "dragonfly_dally","dragonfly_dally_router" );
# scheduler options
modelnet_scheduler="fcfs";
# chunk size in the network (when chunk size = packet size, packets will not be
# divided into chunks)
chunk_size="4096";
# modelnet_scheduler="round-robin";
num_router_rows="1";
# intra-group columns for routers
num_router_cols="16";
# number of groups in the network
num_groups="65";
# buffer size in bytes for local virtual channels
local_vc_size="16384";
#buffer size in bytes for global virtual channels
global_vc_size="16384";
#buffer size in bytes for compute node virtual channels
cn_vc_size="32768";
#bandwidth in GiB/s for local channels
local_bandwidth="2.0";
# bandwidth in GiB/s for global channels
global_bandwidth="2.0";
# bandwidth in GiB/s for compute node-router channels
cn_bandwidth="2.0";
# Number of row channels
num_row_chans="1";
# Number of column channels
num_col_chans="1";
# ROSS message size
message_size="656";
# number of compute nodes connected to router, dictated by dragonfly config
# file
num_cns_per_router="8";
# number of global channels per router
num_global_channels="8";
# network config file for intra-group connections
intra-group-connections="../src/network-workloads/conf/dragonfly-dally/dfdally_8k_intra";
# network config file for inter-group connections
inter-group-connections="../src/network-workloads/conf/dragonfly-dally/dfdally_8k_inter";
# routing protocol to be used
routing="prog-adaptive";
adaptive_threshold="131072";
minimal-bias="1";
df-dally-vc = "1";
}
LPGROUPS
{
MODELNET_GRP
{
repetitions="1040";
# name of this lp changes according to the model
nw-lp="8";
# these lp names will be the same for dragonfly-custom model
modelnet_dragonfly_dally="8";
modelnet_dragonfly_dally_router="1";
}
}
PARAMS
{
# packet size in the network
packet_size="4096";
modelnet_order=( "dragonfly_dally","dragonfly_dally_router" );
# scheduler options
modelnet_scheduler="fcfs";
# chunk size in the network (when chunk size = packet size, packets will not be
# divided into chunks)
chunk_size="4096";
# modelnet_scheduler="round-robin";
num_router_rows="1";
# intra-group columns for routers
num_router_cols="16";
# number of groups in the network
num_groups="65";
# buffer size in bytes for local virtual channels
local_vc_size="16384";
#buffer size in bytes for global virtual channels
global_vc_size="16384";
#buffer size in bytes for compute node virtual channels
cn_vc_size="32768";
#bandwidth in GiB/s for local channels
local_bandwidth="2.0";
# bandwidth in GiB/s for global channels
global_bandwidth="2.0";
# bandwidth in GiB/s for compute node-router channels
cn_bandwidth="2.0";
# Number of row channels
num_row_chans="1";
# Number of column channels
num_col_chans="1";
# ROSS message size
message_size="656";
# number of compute nodes connected to router, dictated by dragonfly config
# file
num_cns_per_router="8";
# number of global channels per router
num_global_channels="8";
# network config file for intra-group connections
intra-group-connections="../src/network-workloads/conf/dragonfly-dally/dfdally_8k_intra";
# network config file for inter-group connections
inter-group-connections="../src/network-workloads/conf/dragonfly-dally/dfdally_8k_inter";
# routing protocol to be used
routing="prog-adaptive";
adaptive_threshold="131072";
minimal-bias="1";
df-dally-vc = "1";
}
LPGROUPS
{
MODELNET_GRP
{
repetitions="1040";
# name of this lp changes according to the model
nw-lp="8";
# these lp names will be the same for dragonfly-custom model
modelnet_dragonfly_dally="8";
modelnet_dragonfly_dally_router="1";
}
}
PARAMS
{
# packet size in the network
packet_size="4096";
modelnet_order=( "dragonfly_dally","dragonfly_dally_router" );
# scheduler options
modelnet_scheduler="fcfs";
# chunk size in the network (when chunk size = packet size, packets will not be
# divided into chunks)
chunk_size="4096";
# modelnet_scheduler="round-robin";
num_router_rows="1";
# intra-group columns for routers
num_router_cols="16";
# number of groups in the network
num_groups="65";
# buffer size in bytes for local virtual channels
local_vc_size="16384";
#buffer size in bytes for global virtual channels
global_vc_size="16384";
#buffer size in bytes for compute node virtual channels
cn_vc_size="32768";
#bandwidth in GiB/s for local channels
local_bandwidth="2.0";
# bandwidth in GiB/s for global channels
global_bandwidth="2.0";
# bandwidth in GiB/s for compute node-router channels
cn_bandwidth="2.0";
# Number of row channels
num_row_chans="1";
# Number of column channels
num_col_chans="1";
# ROSS message size
message_size="656";
# number of compute nodes connected to router, dictated by dragonfly config
# file
num_cns_per_router="8";
# number of global channels per router
num_global_channels="8";
# network config file for intra-group connections
intra-group-connections="../src/network-workloads/conf/dragonfly-dally/dfdally_8k_intra";
# network config file for inter-group connections
inter-group-connections="../src/network-workloads/conf/dragonfly-dally/dfdally_8k_inter";
# routing protocol to be used
routing="prog-adaptive";
adaptive_threshold="131072";
minimal-bias="1";
df-dally-vc = "1";
}
...@@ -47,9 +47,9 @@ PARAMS ...@@ -47,9 +47,9 @@ PARAMS
# number of global channels per router # number of global channels per router
num_global_connections="16"; num_global_connections="16";
# network config file for intra-group connections # network config file for intra-group connections
intra-group-connections="/gpfs/u/home/SPNR/SPNRmcgl/barn/dfp-df-comparisons/experiments/network_configs/dfp_8k_intra"; intra-group-connections="../src/network-workloads/conf/dragonfly-plus/dfp_8k_intra";
# network config file for inter-group connections # network config file for inter-group connections
inter-group-connections="/gpfs/u/home/SPNR/SPNRmcgl/barn/dfp-df-comparisons/experiments/network_configs/dfp_8k_inter"; inter-group-connections="../src/network-workloads/conf/dragonfly-plus/dfp_8k_inter";
# routing protocol to be used - 'minimal', 'non-minimal-spine', 'non-minimal-leaf', 'prog-adaptive' # routing protocol to be used - 'minimal', 'non-minimal-spine', 'non-minimal-leaf', 'prog-adaptive'
routing="prog-adaptive"; routing="prog-adaptive";
# route scoring protocol to be used - options are 'alpha', 'beta', or 'delta' - 'gamma' has been deprecated # route scoring protocol to be used - options are 'alpha', 'beta', or 'delta' - 'gamma' has been deprecated
......
...@@ -2,61 +2,59 @@ LPGROUPS ...@@ -2,61 +2,59 @@ LPGROUPS
{ {
MODELNET_GRP MODELNET_GRP
{ {
repetitions="12"; repetitions="1056";
# name of this lp changes according to the model # name of this lp changes according to the model
nw-lp="4"; nw-lp="8";
# these lp names will be the same for dragonfly-custom model # these lp names will be the same for dragonfly-custom model
modelnet_dragonfly_plus="4"; modelnet_dragonfly_plus="8";
modelnet_dragonfly_plus_router="2"; modelnet_dragonfly_plus_router="1";
} }
} }
PARAMS PARAMS
{ {
# packet size in the network # packet size in the network
packet_size="1024"; packet_size="4096";
# order of LPs, mapping for modelnet grp
modelnet_order=( "dragonfly_plus","dragonfly_plus_router" ); modelnet_order=( "dragonfly_plus","dragonfly_plus_router" );
# scheduler options # scheduler options
modelnet_scheduler="fcfs"; modelnet_scheduler="fcfs";
# chunk size in the network (when chunk size = packet size, packets will not be # chunk size in the network (when chunk size = packet size, packets will not be divided into chunks)
# divided into chunks) chunk_size="4096";
chunk_size="1024"; # number of spine routers per group
# modelnet_scheduler="round-robin"; num_router_spine="16";
# number of routers within each group # number of leaf routers per group
# each router row corresponds to a chassis in Cray systems num_router_leaf="16";
num_router_spine="4"; # number of links connecting between group levels per router
# each router column corresponds to a slot in a chassis
num_router_leaf="4";
# number of links connecting between group levels per router
num_level_chans="1"; num_level_chans="1";
# number of groups in the network # number of groups in the network
num_groups="3"; num_groups="33";
# predefined threshold (T) deciding when to reassign packet to a lower priority queue
queue_threshold="50";
# buffer size in bytes for local virtual channels # buffer size in bytes for local virtual channels
local_vc_size="8192"; local_vc_size="32768";
#buffer size in bytes for global virtual channels # buffer size in bytes for global virtual channels
global_vc_size="16384"; global_vc_size="32768";
#buffer size in bytes for compute node virtual channels # buffer size in bytes for compute node virtual channels
cn_vc_size="8192"; cn_vc_size="32768";
#bandwidth in GiB/s for local channels # bandwidth in GiB/s for local channels
local_bandwidth="5.25"; local_bandwidth="25.0";
# bandwidth in GiB/s for global channels # bandwidth in GiB/s for global channels
global_bandwidth="1.5"; global_bandwidth="25.0";
# bandwidth in GiB/s for compute node-router channels # bandwidth in GiB/s for compute node-router channels
cn_bandwidth="8.0"; cn_bandwidth="25.0";
# ROSS message size # ROSS message size
message_size="608"; message_size="640";
# number of compute nodes connected to router, dictated by dragonfly config # number of compute nodes connected to router, dictated by dragonfly config file
# file num_cns_per_router="16";
num_cns_per_router="4";
# number of global channels per router # number of global channels per router
num_global_connections="4"; num_global_connections="16";
# network config file for intra-group connections # network config file for intra-group connections
intra-group-connections="../src/network-workloads/conf/dragonfly-plus/neil-intra"; intra-group-connections="../src/network-workloads/conf/dragonfly-plus/dfp_8k_intra";
# network config file for inter-group connections # network config file for inter-group connections
inter-group-connections="../src/network-workloads/conf/dragonfly-plus/neil-inter"; inter-group-connections="../src/network-workloads/conf/dragonfly-plus/dfp_8k_inter";
# routing protocol to be used # routing protocol to be used - 'minimal', 'non-minimal-spine', 'non-minimal-leaf', 'prog-adaptive'
routing="minimal"; routing="prog-adaptive";
# route scoring protocol to be used - options are 'alpha', 'beta', or 'delta' - 'gamma' has been deprecated
route_scoring_metric="delta";
# minimal route threshold before considering non-minimal paths
adaptive_threshold="131072"; #1/16 of 32768
} }
LPGROUPS
{
MODELNET_GRP
{
repetitions="1056";
# name of this lp changes according to the model
nw-lp="8";
# these lp names will be the same for dragonfly-custom model
modelnet_dragonfly_plus="8";
modelnet_dragonfly_plus_router="1";
}
}
PARAMS
{
# packet size in the network
packet_size="4096";
# order of LPs, mapping for modelnet grp
modelnet_order=( "dragonfly_plus","dragonfly_plus_router" );
# scheduler options
modelnet_scheduler="fcfs";
# chunk size in the network (when chunk size = packet size, packets will not be divided into chunks)
chunk_size="4096";
# number of spine routers per group
num_router_spine="16";
# number of leaf routers per group
num_router_leaf="16";
# number of links connecting between group levels per router
num_level_chans="1";
# number of groups in the network
num_groups="33";
# buffer size in bytes for local virtual channels
local_vc_size="32768";
# buffer size in bytes for global virtual channels
global_vc_size="32768";
# buffer size in bytes for compute node virtual channels
cn_vc_size="32768";
# bandwidth in GiB/s for local channels
local_bandwidth="25.0";
# bandwidth in GiB/s for global channels
global_bandwidth="25.0";
# bandwidth in GiB/s for compute node-router channels
cn_bandwidth="25.0";
# ROSS message size
message_size="640";
# number of compute nodes connected to router, dictated by dragonfly config file
num_cns_per_router="16";
# number of global channels per router
num_global_connections="16";
# network config file for intra-group connections
intra-group-connections="../src/network-workloads/conf/dragonfly-plus/dfp_8k_intra";
# network config file for inter-group connections
inter-group-connections="../src/network-workloads/conf/dragonfly-plus/dfp_8k_inter";
# routing protocol to be used - 'minimal', 'non-minimal-spine', 'non-minimal-leaf', 'prog-adaptive'
routing="prog-adaptive";
# route scoring protocol to be used - options are 'alpha', 'beta', or 'delta' - 'gamma' has been deprecated
route_scoring_metric="delta";
# minimal route threshold before considering non-minimal paths
adaptive_threshold="131072"; #1/16 of 32768
}
...@@ -21,13 +21,15 @@ ...@@ -21,13 +21,15 @@
#define MN_LP_NM "modelnet_dragonfly_custom" #define MN_LP_NM "modelnet_dragonfly_custom"
#define CONTROL_MSG_SZ 64 #define CONTROL_MSG_SZ 64
#define TRACE -1 #define TRACE -1
#define MAX_WAIT_REQS 512 #define MAX_WAIT_REQS 1024
#define CS_LP_DBG 1 #define CS_LP_DBG 1
#define RANK_HASH_TABLE_SZ 2000 #define RANK_HASH_TABLE_SZ 2000
#define NW_LP_NM "nw-lp" #define NW_LP_NM "nw-lp"
#define lprintf(_fmt, ...) \ #define lprintf(_fmt, ...) \
do {if (CS_LP_DBG) printf(_fmt, __VA_ARGS__);} while (0) do {if (CS_LP_DBG) printf(_fmt, __VA_ARGS__);} while (0)
#define MAX_STATS 65536 #define MAX_STATS 65536
#define COL_TAG 1235
#define BAR_TAG 1234
static int msg_size_hash_compare( static int msg_size_hash_compare(
void *key, struct qhash_head *link); void *key, struct qhash_head *link);
...@@ -42,6 +44,7 @@ static int synthetic_pattern = 1; ...@@ -42,6 +44,7 @@ static int synthetic_pattern = 1;
static int preserve_wait_ordering = 0; static int preserve_wait_ordering = 0;
static int enable_msg_tracking = 0; static int enable_msg_tracking = 0;
static int is_synthetic = 0; static int is_synthetic = 0;
static unsigned long long max_gen_data = 1310720;
tw_lpid TRACK_LP = -1; tw_lpid TRACK_LP = -1;
int nprocs = 0; int nprocs = 0;
static double total_syn_data = 0; static double total_syn_data = 0;
...@@ -52,6 +55,7 @@ char workload_file[8192]; ...@@ -52,6 +55,7 @@ char workload_file[8192];
char offset_file[8192]; char offset_file[8192];
static int wrkld_id; static int wrkld_id;
static int num_net_traces = 0; static int num_net_traces = 0;
static int priority_type = 0;
static int num_dumpi_traces = 0; static int num_dumpi_traces = 0;
static int64_t EAGER_THRESHOLD = 8192; static int64_t EAGER_THRESHOLD = 8192;
...@@ -110,11 +114,11 @@ FILE * workload_meta_log = NULL; ...@@ -110,11 +114,11 @@ FILE * workload_meta_log = NULL;
static uint64_t sample_bytes_written = 0; static uint64_t sample_bytes_written = 0;
long long num_bytes_sent=0; unsigned long long num_bytes_sent=0;
long long num_bytes_recvd=0; unsigned long long num_bytes_recvd=0;
long long num_syn_bytes_sent = 0; unsigned long long num_syn_bytes_sent = 0;
long long num_syn_bytes_recvd = 0; unsigned long long num_syn_bytes_recvd = 0;
double max_time = 0, max_comm_time = 0, max_wait_time = 0, max_send_time = 0, max_recv_time = 0; double max_time = 0, max_comm_time = 0, max_wait_time = 0, max_send_time = 0, max_recv_time = 0;
double avg_time = 0, avg_comm_time = 0, avg_wait_time = 0, avg_send_time = 0, avg_recv_time = 0; double avg_time = 0, avg_comm_time = 0, avg_wait_time = 0, avg_send_time = 0, avg_recv_time = 0;
...@@ -256,6 +260,8 @@ struct nw_state ...@@ -256,6 +260,8 @@ struct nw_state
double compute_time; double compute_time;
/* time spent in message send/isend */ /* time spent in message send/isend */
double send_time; double send_time;
/* max time for synthetic traffic message */
double max_time;
/* time spent in message receive */ /* time spent in message receive */
double recv_time; double recv_time;
/* time spent in wait operation */ /* time spent in wait operation */
...@@ -278,14 +284,14 @@ struct nw_state ...@@ -278,14 +284,14 @@ struct nw_state