Skip to content

Commit 933a1cf

Browse files
nikhil-jainmmubarak
authored andcommitted
Add Express Mesh as a network option.
-- Some commits include fixes in other networks
1 parent f2d4cad commit 933a1cf

13 files changed

+3078
-110
lines changed

codes/model-net-lp.h

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ extern "C" {
2929
#include "net/simplenet-upd.h"
3030
#include "net/simplep2p.h"
3131
#include "net/torus.h"
32+
#include "net/express-mesh.h"
3233

3334
extern int model_net_base_magic;
3435

@@ -132,6 +133,7 @@ typedef struct model_net_wrap_msg {
132133
sn_message m_snet; // simplenet
133134
sp_message m_sp2p; // simplep2p
134135
nodes_message m_torus; // torus
136+
em_message m_em; // express-mesh
135137
// add new ones here
136138
} msg;
137139
} model_net_wrap_msg;

codes/model-net.h

+2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ typedef struct mn_stats mn_stats;
7272
X(DRAGONFLY_CUSTOM, "modelnet_dragonfly_custom", "dragonfly_custom", &dragonfly_custom_method)\
7373
X(DRAGONFLY_CUSTOM_ROUTER, "modelnet_dragonfly_custom_router", "dragonfly_custom_router", &dragonfly_custom_router_method)\
7474
X(LOGGP, "modelnet_loggp", "loggp", &loggp_method)\
75+
X(EXPRESS_MESH, "modelnet_express_mesh", "express_mesh", &express_mesh_method)\
76+
X(EXPRESS_MESH_ROUTER, "modelnet_express_mesh_router", "express_mesh_router", &express_mesh_router_method)\
7577
X(MAX_NETS, NULL, NULL, NULL)
7678

7779
#define X(a,b,c,d) a,

codes/net/common-net.h

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
#ifndef COMMON_NET_H
2+
#define COMMON_NET_H
3+
#include "codes/model-net-lp.h"
4+
#include "codes/quickhash.h"
5+
6+
#ifdef __cplusplus
7+
extern "C" {
8+
#endif
9+
10+
11+
struct mn_hash_key
12+
{
13+
uint64_t message_id;
14+
tw_lpid sender_id;
15+
};
16+
17+
struct mn_qhash_entry
18+
{
19+
struct mn_hash_key key;
20+
char * remote_event_data;
21+
int num_chunks;
22+
int remote_event_size;
23+
struct qhash_head hash_link;
24+
};
25+
26+
extern int mn_rank_hash_compare(void *key, struct qhash_head *link);
27+
28+
extern int mn_hash_func(void *k, int table_size);
29+
30+
extern void free_tmp(void * ptr);
31+
32+
typedef struct message_list message_list;
33+
34+
struct message_list {
35+
union {
36+
terminal_message dfly_msg;
37+
em_message em_msg;
38+
};
39+
char* event_data;
40+
message_list *next;
41+
message_list *prev;
42+
int port, index;
43+
message_list *altq_next, *altq_prev;
44+
int in_alt_q, altq_port;
45+
};
46+
47+
extern void append_to_message_list(
48+
message_list ** thisq,
49+
message_list ** thistail,
50+
int index,
51+
message_list *msg);
52+
53+
extern void prepend_to_message_list(
54+
message_list ** thisq,
55+
message_list ** thistail,
56+
int index,
57+
message_list *msg);
58+
59+
extern message_list* return_head(
60+
message_list ** thisq,
61+
message_list ** thistail,
62+
int index);
63+
64+
extern message_list* return_tail(
65+
message_list ** thisq,
66+
message_list ** thistail,
67+
int index);
68+
69+
extern void delete_from_message_list(
70+
message_list *** allq,
71+
message_list *** alltail,
72+
message_list *msg);
73+
74+
extern void add_to_message_list(
75+
message_list *** allq,
76+
message_list *** alltail,
77+
message_list *msg);
78+
79+
extern void altq_append_to_message_list(
80+
message_list ** thisq,
81+
message_list ** thistail,
82+
int index,
83+
message_list *msg);
84+
85+
extern void altq_prepend_to_message_list(
86+
message_list ** thisq,
87+
message_list ** thistail,
88+
int index,
89+
message_list *msg);
90+
91+
extern message_list* altq_return_head(
92+
message_list ** thisq,
93+
message_list ** thistail,
94+
int index);
95+
96+
extern message_list* altq_return_tail(
97+
message_list ** thisq,
98+
message_list ** thistail,
99+
int index);
100+
101+
extern void altq_delete_from_message_list(
102+
message_list *** allq,
103+
message_list *** alltail,
104+
message_list *msg);
105+
106+
extern void altq_add_to_message_list(
107+
message_list *** allq,
108+
message_list *** alltail,
109+
message_list *msg);
110+
111+
extern void delete_message_list(void *thism);
112+
extern tw_stime bytes_to_ns(uint64_t bytes, double GB_p_s);
113+
114+
#ifdef __cplusplus
115+
}
116+
#endif
117+
118+
#endif

codes/net/express-mesh.h

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* Copyright (C) 2014 University of Chicago.
3+
* See COPYRIGHT notice in top-level directory.
4+
*
5+
*/
6+
7+
#ifndef EXPRESS_MESH_H
8+
#define EXPRESS_MESH_H
9+
10+
#ifdef __cplusplus
11+
extern "C" {
12+
#endif
13+
14+
#include <ross.h>
15+
16+
typedef struct em_message em_message;
17+
18+
struct em_message
19+
{
20+
/* magic number */
21+
int magic;
22+
/* flit travel start time*/
23+
tw_stime travel_start_time;
24+
/* packet ID of the flit */
25+
unsigned long long packet_ID;
26+
/* event type of the flit */
27+
short type;
28+
/* category: comes from codes */
29+
char category[CATEGORY_NAME_MAX];
30+
31+
/* final destination LP ID, this comes from codes can be a server or any other LP type*/
32+
tw_lpid final_dest_gid;
33+
/*sending LP ID from CODES, can be a server or any other LP type */
34+
tw_lpid sender_lp;
35+
tw_lpid sender_mn_lp; // source modelnet id
36+
/* destination terminal ID */
37+
tw_lpid dest_terminal_id;
38+
int dest_terminal;
39+
/* source terminal ID */
40+
tw_lpid src_terminal_id;
41+
42+
short saved_channel;
43+
short my_N_hop;
44+
short hops[8];
45+
46+
/* Intermediate LP ID from which this message is coming */
47+
unsigned int intm_lp_id;
48+
short saved_vc;
49+
short dim_change;
50+
/* last hop of the message, can be a terminal, local router or global router */
51+
int last_hop;
52+
/* For routing */
53+
uint64_t chunk_id;
54+
uint64_t packet_size;
55+
uint64_t message_id;
56+
uint64_t total_size;
57+
58+
int saved_remote_esize;
59+
int remote_event_size_bytes;
60+
int local_event_size_bytes;
61+
62+
// For buffer message
63+
int vc_index;
64+
int output_chan;
65+
model_net_event_return event_rc;
66+
int is_pull;
67+
uint64_t pull_size;
68+
69+
/* for reverse computation */
70+
tw_stime saved_available_time;
71+
tw_stime saved_avg_time;
72+
tw_stime saved_rcv_time;
73+
tw_stime saved_busy_time;
74+
tw_stime saved_total_time;
75+
tw_stime saved_hist_start_time;
76+
tw_stime saved_sample_time;
77+
tw_stime msg_start_time;
78+
79+
int saved_hist_num;
80+
int saved_occupancy;
81+
};
82+
83+
#ifdef __cplusplus
84+
}
85+
#endif
86+
87+
#endif
88+

src/Makefile.subdir

+4
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,15 @@ nobase_include_HEADERS = \
8787
codes/model-net-lp.h \
8888
codes/model-net-sched.h \
8989
codes/model-net-inspect.h \
90+
codes/net/common-net.h \
9091
codes/net/dragonfly.h \
9192
codes/net/dragonfly-custom.h \
9293
codes/net/slimfly.h \
9394
codes/net/fattree.h \
9495
codes/net/loggp.h \
9596
codes/net/simplenet-upd.h \
9697
codes/net/simplep2p.h \
98+
codes/net/express-mesh.h \
9799
codes/net/torus.h \
98100
codes/codes-mpi-replay.h \
99101
codes/configfile.h
@@ -149,8 +151,10 @@ src_libcodes_la_SOURCES = \
149151
codes/rc-stack.h \
150152
src/util/rc-stack.c \
151153
src/networks/model-net/model-net.c \
154+
src/networks/model-net/common-net.c \
152155
src/networks/model-net/simplenet-upd.c \
153156
src/networks/model-net/torus.c \
157+
src/networks/model-net/express-mesh.C \
154158
src/networks/model-net/dragonfly.c \
155159
src/networks/model-net/dragonfly-custom.C \
156160
src/networks/model-net/slimfly.c \

0 commit comments

Comments
 (0)