Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
codes
codes
Commits
75cdb76f
Commit
75cdb76f
authored
Jul 26, 2017
by
Misbah Mubarak
Browse files
Merging branch llnl-updates with master
parents
e7c122ef
101e99a7
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
codes/model-net-lp.h
View file @
75cdb76f
...
...
@@ -29,6 +29,7 @@ extern "C" {
#include "net/simplenet-upd.h"
#include "net/simplep2p.h"
#include "net/torus.h"
#include "net/express-mesh.h"
extern
int
model_net_base_magic
;
...
...
@@ -90,6 +91,8 @@ void model_net_method_send_msg_recv_event_rc(tw_lp *sender);
// method - strange and disturbing things will happen otherwise
void
model_net_method_idle_event
(
tw_stime
offset_ts
,
int
is_recv_queue
,
tw_lp
*
lp
);
void
model_net_method_idle_event2
(
tw_stime
offset_ts
,
int
is_recv_queue
,
int
queue_offset
,
tw_lp
*
lp
);
// Get a ptr to past the message struct area, where the self/remote events
// are located, given the type of network.
...
...
@@ -114,6 +117,8 @@ typedef struct model_net_base_msg {
// no need for event type - in wrap message
model_net_request
req
;
int
is_from_remote
;
int
isQueueReq
;
tw_stime
save_ts
;
// parameters to pass to new messages (via model_net_set_msg_params)
// TODO: make this a union for multiple types of parameters
mn_sched_params
sched_params
;
...
...
@@ -132,6 +137,7 @@ typedef struct model_net_wrap_msg {
sn_message
m_snet
;
// simplenet
sp_message
m_sp2p
;
// simplep2p
nodes_message
m_torus
;
// torus
em_message
m_em
;
// express-mesh
// add new ones here
}
msg
;
}
model_net_wrap_msg
;
...
...
codes/model-net.h
View file @
75cdb76f
...
...
@@ -72,6 +72,8 @@ typedef struct mn_stats mn_stats;
X(DRAGONFLY_CUSTOM, "modelnet_dragonfly_custom", "dragonfly_custom", &dragonfly_custom_method)\
X(DRAGONFLY_CUSTOM_ROUTER, "modelnet_dragonfly_custom_router", "dragonfly_custom_router", &dragonfly_custom_router_method)\
X(LOGGP, "modelnet_loggp", "loggp", &loggp_method)\
X(EXPRESS_MESH, "modelnet_express_mesh", "express_mesh", &express_mesh_method)\
X(EXPRESS_MESH_ROUTER, "modelnet_express_mesh_router", "express_mesh_router", &express_mesh_router_method)\
X(MAX_NETS, NULL, NULL, NULL)
#define X(a,b,c,d) a,
...
...
@@ -123,6 +125,7 @@ typedef struct model_net_request {
uint64_t
msg_id
;
int
net_id
;
int
is_pull
;
int
queue_offset
;
int
remote_event_size
;
int
self_event_size
;
char
category
[
CATEGORY_NAME_MAX
];
...
...
codes/net/common-net.h
0 → 100644
View file @
75cdb76f
#ifndef COMMON_NET_H
#define COMMON_NET_H
#include "codes/model-net-lp.h"
#include "codes/quickhash.h"
#ifdef __cplusplus
extern
"C"
{
#endif
struct
mn_hash_key
{
uint64_t
message_id
;
tw_lpid
sender_id
;
};
struct
mn_qhash_entry
{
struct
mn_hash_key
key
;
char
*
remote_event_data
;
int
num_chunks
;
int
remote_event_size
;
struct
qhash_head
hash_link
;
};
extern
int
mn_rank_hash_compare
(
void
*
key
,
struct
qhash_head
*
link
);
extern
int
mn_hash_func
(
void
*
k
,
int
table_size
);
extern
void
free_tmp
(
void
*
ptr
);
typedef
struct
message_list
message_list
;
struct
message_list
{
union
{
terminal_message
dfly_msg
;
em_message
em_msg
;
};
char
*
event_data
;
message_list
*
next
;
message_list
*
prev
;
int
port
,
index
;
message_list
*
altq_next
,
*
altq_prev
;
int
in_alt_q
,
altq_port
;
};
extern
void
append_to_message_list
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
,
message_list
*
msg
);
extern
void
prepend_to_message_list
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
,
message_list
*
msg
);
extern
message_list
*
return_head
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
);
extern
message_list
*
return_tail
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
);
extern
void
delete_from_message_list
(
message_list
***
allq
,
message_list
***
alltail
,
message_list
*
msg
);
extern
void
add_to_message_list
(
message_list
***
allq
,
message_list
***
alltail
,
message_list
*
msg
);
extern
void
altq_append_to_message_list
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
,
message_list
*
msg
);
extern
void
altq_prepend_to_message_list
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
,
message_list
*
msg
);
extern
message_list
*
altq_return_head
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
);
extern
message_list
*
altq_return_tail
(
message_list
**
thisq
,
message_list
**
thistail
,
int
index
);
extern
void
altq_delete_from_message_list
(
message_list
***
allq
,
message_list
***
alltail
,
message_list
*
msg
);
extern
void
altq_add_to_message_list
(
message_list
***
allq
,
message_list
***
alltail
,
message_list
*
msg
);
extern
void
delete_message_list
(
void
*
thism
);
extern
tw_stime
bytes_to_ns
(
uint64_t
bytes
,
double
GB_p_s
);
#ifdef __cplusplus
}
#endif
#endif
codes/net/express-mesh.h
0 → 100644
View file @
75cdb76f
/*
* Copyright (C) 2014 University of Chicago.
* See COPYRIGHT notice in top-level directory.
*
*/
#ifndef EXPRESS_MESH_H
#define EXPRESS_MESH_H
#ifdef __cplusplus
extern
"C"
{
#endif
#include <ross.h>
typedef
struct
em_message
em_message
;
struct
em_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 */
tw_lpid
dest_terminal_id
;
int
dest_terminal
;
/* source terminal ID */
tw_lpid
src_terminal_id
;
short
saved_channel
;
short
my_N_hop
;
short
hops
[
8
];
/* Intermediate LP ID from which this message is coming */
unsigned
int
intm_lp_id
;
short
saved_vc
;
short
dim_change
;
/* last hop of the message, can be a terminal, local router or global router */
int
last_hop
;
/* For routing */
uint64_t
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
int
vc_index
;
int
output_chan
;
model_net_event_return
event_rc
;
int
is_pull
;
uint64_t
pull_size
;
/* for reverse computation */
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_hist_start_time
;
tw_stime
saved_sample_time
;
tw_stime
msg_start_time
;
int
saved_hist_num
;
int
saved_occupancy
;
};
#ifdef __cplusplus
}
#endif
#endif
codes/net/fattree.h
View file @
75cdb76f
...
...
@@ -49,6 +49,7 @@ struct fattree_message
// For buffer message
short
vc_index
;
short
rail_id
;
short
vc_off
;
int
is_pull
;
model_net_event_return
event_rc
;
...
...
src/Makefile.subdir
View file @
75cdb76f
...
...
@@ -87,6 +87,7 @@ nobase_include_HEADERS = \
codes/model-net-lp.h
\
codes/model-net-sched.h
\
codes/model-net-inspect.h
\
codes/net/common-net.h
\
codes/net/dragonfly.h
\
codes/net/dragonfly-custom.h
\
codes/net/slimfly.h
\
...
...
@@ -94,6 +95,7 @@ nobase_include_HEADERS = \
codes/net/loggp.h
\
codes/net/simplenet-upd.h
\
codes/net/simplep2p.h
\
codes/net/express-mesh.h
\
codes/net/torus.h
\
codes/codes-mpi-replay.h
\
codes/configfile.h
...
...
@@ -149,8 +151,10 @@ src_libcodes_la_SOURCES = \
codes/rc-stack.h
\
src/util/rc-stack.c
\
src/networks/model-net/model-net.c
\
src/networks/model-net/common-net.c
\
src/networks/model-net/simplenet-upd.c
\
src/networks/model-net/torus.c
\
src/networks/model-net/express-mesh.C
\
src/networks/model-net/dragonfly.c
\
src/networks/model-net/dragonfly-custom.C
\
src/networks/model-net/slimfly.c
\
...
...
src/iokernellang/codeslexer.c
View file @
75cdb76f
#line 2 "codeslexer.c"
#line 2 "
../src/iokernellang/
codeslexer.c"
#line 4 "codeslexer.c"
#line 4 "
../src/iokernellang/
codeslexer.c"
#define YY_INT_ALIGNED short int
...
...
@@ -54,6 +54,7 @@ typedef int flex_int32_t;
typedef
unsigned
char
flex_uint8_t
;
typedef
unsigned
short
int
flex_uint16_t
;
typedef
unsigned
int
flex_uint32_t
;
#endif
/* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
...
...
@@ -84,8 +85,6 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
#endif
/* ! C99 */
#endif
/* ! FLEXINT_H */
#ifdef __cplusplus
...
...
@@ -159,15 +158,7 @@ typedef void* yyscan_t;
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k.
* Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
* Ditto for the __ia64__ case accordingly.
*/
#define YY_BUF_SIZE 32768
#else
#define YY_BUF_SIZE 16384
#endif
/* __ia64__ */
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
...
...
@@ -538,20 +529,20 @@ static yyconst flex_int32_t yy_rule_can_match_eol[37] =
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
#line 1 "codeslexer.l"
#line 1 "
../src/iokernellang/
codeslexer.l"
/*
* Copyright (C) 2013 University of Chicago.
* See COPYRIGHT notice in top-level directory.
*
*/
#line 8 "codeslexer.l"
#line 8 "
../src/iokernellang/
codeslexer.l"
#include <stdlib.h>
#include "CodesIOKernelTypes.h"
#include "CodesIOKernelParser.h"
#include "
src/iokernellang/
CodesIOKernelTypes.h"
#include "
src/iokernellang/
CodesIOKernelParser.h"
#define YY_NO_INPUT
#line 25 "codeslexer.l"
#line 25 "
../src/iokernellang/
codeslexer.l"
YYLTYPE
*
CodesIOKernel_get_lloc
(
yyscan_t
yyscanner
);
int
CodesIOKernel_lex_init
(
yyscan_t
*
scanner
);
int
CodesIOKernel_lex
(
YYSTYPE
*
lvalp
,
YYLTYPE
*
llocp
,
void
*
scanner
);
...
...
@@ -568,7 +559,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[37] =
#define YY_USER_ACTION
/* no user action */
;
#endif
#line 5
72 "
codeslexer.c"
#line 5
63 "../src/iokernellang/
codeslexer.c"
#define INITIAL 0
...
...
@@ -703,12 +694,7 @@ static int input (yyscan_t yyscanner );
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
#define YY_READ_BUF_SIZE 16384
#else
#define YY_READ_BUF_SIZE 8192
#endif
/* __ia64__ */
#endif
/* Copy whatever the last rule matched to the standard output. */
...
...
@@ -727,7 +713,7 @@ static int input (yyscan_t yyscanner );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
size_t
n; \
unsigned
n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
...
...
@@ -812,10 +798,10 @@ YY_DECL
register
int
yy_act
;
struct
yyguts_t
*
yyg
=
(
struct
yyguts_t
*
)
yyscanner
;
#line 43 "codeslexer.l"
#line 43 "
../src/iokernellang/
codeslexer.l"
#line 8
19 "
codeslexer.c"
#line 8
05 "../src/iokernellang/
codeslexer.c"
yylval
=
yylval_param
;
...
...
@@ -916,7 +902,7 @@ do_action: /* This label is used only to access EOF actions. */
case
1
:
YY_RULE_SETUP
#line 45 "codeslexer.l"
#line 45 "
../src/iokernellang/
codeslexer.l"
{
if
(
yyextra
->
text
!=
NULL
)
{
...
...
@@ -929,7 +915,7 @@ YY_RULE_SETUP
YY_BREAK
case
2
:
YY_RULE_SETUP
#line 55 "codeslexer.l"
#line 55 "
../src/iokernellang/
codeslexer.l"
{
if
(
yyextra
->
text
!=
NULL
)
{
...
...
@@ -942,7 +928,7 @@ YY_RULE_SETUP
YY_BREAK
case
3
:
YY_RULE_SETUP
#line 65 "codeslexer.l"
#line 65 "
../src/iokernellang/
codeslexer.l"
{
if
(
yyextra
->
text
!=
NULL
)
{
...
...
@@ -955,7 +941,7 @@ YY_RULE_SETUP
YY_BREAK
case
4
:
YY_RULE_SETUP
#line 75 "codeslexer.l"
#line 75 "
../src/iokernellang/
codeslexer.l"
{
if
(
yyextra
->
text
!=
NULL
)
{
...
...
@@ -967,166 +953,166 @@ YY_RULE_SETUP
YY_BREAK
case
5
:
YY_RULE_SETUP
#line 84 "codeslexer.l"
#line 84 "
../src/iokernellang/
codeslexer.l"
return
GE
;
YY_BREAK
case
6
:
YY_RULE_SETUP
#line 85 "codeslexer.l"
#line 85 "
../src/iokernellang/
codeslexer.l"
return
LE
;
YY_BREAK
case
7
:
YY_RULE_SETUP
#line 86 "codeslexer.l"
#line 86 "
../src/iokernellang/
codeslexer.l"
return
EQ
;
YY_BREAK
case
8
:
YY_RULE_SETUP
#line 87 "codeslexer.l"
#line 87 "
../src/iokernellang/
codeslexer.l"
return
NE
;
YY_BREAK
case
9
:
YY_RULE_SETUP
#line 88 "codeslexer.l"
#line 88 "
../src/iokernellang/
codeslexer.l"
return
WHILE
;
YY_BREAK
case
10
:
YY_RULE_SETUP
#line 89 "codeslexer.l"
#line 89 "
../src/iokernellang/
codeslexer.l"
return
IF
;
YY_BREAK
case
11
:
YY_RULE_SETUP
#line 90 "codeslexer.l"
#line 90 "
../src/iokernellang/
codeslexer.l"
return
ELSE
;
YY_BREAK
case
12
:
YY_RULE_SETUP
#line 91 "codeslexer.l"
#line 91 "
../src/iokernellang/
codeslexer.l"
return
PRINT
;
YY_BREAK
case
13
:
YY_RULE_SETUP
#line 92 "codeslexer.l"
#line 92 "
../src/iokernellang/
codeslexer.l"
return
WRITE
;
YY_BREAK
case
14
:
YY_RULE_SETUP
#line 93 "codeslexer.l"
#line 93 "
../src/iokernellang/
codeslexer.l"
return
WRITEAT
;
YY_BREAK
case
15
:
YY_RULE_SETUP
#line 94 "codeslexer.l"
#line 94 "
../src/iokernellang/
codeslexer.l"
return
WRITE_ALL
;
YY_BREAK
case
16
:
YY_RULE_SETUP
#line 95 "codeslexer.l"
#line 95 "
../src/iokernellang/
codeslexer.l"
return
WRITEAT_ALL
;
YY_BREAK
case
17
:
YY_RULE_SETUP
#line 96 "codeslexer.l"
#line 96 "
../src/iokernellang/
codeslexer.l"
return
READ
;
YY_BREAK
case
18
:
YY_RULE_SETUP
#line 97 "codeslexer.l"
#line 97 "
../src/iokernellang/
codeslexer.l"
return
READAT
;
YY_BREAK
case
19
:
YY_RULE_SETUP
#line 98 "codeslexer.l"
#line 98 "
../src/iokernellang/
codeslexer.l"
return
READ_ALL
;
YY_BREAK
case
20
:
YY_RULE_SETUP
#line 99 "codeslexer.l"
#line 99 "
../src/iokernellang/
codeslexer.l"
return
READAT_ALL
;
YY_BREAK
case
21
:
YY_RULE_SETUP
#line 100 "codeslexer.l"
#line 100 "
../src/iokernellang/
codeslexer.l"
return
SYNC
;
YY_BREAK
case
22
:
YY_RULE_SETUP
#line 101 "codeslexer.l"
#line 101 "
../src/iokernellang/
codeslexer.l"
return
DELETE
;
YY_BREAK
case
23
:
YY_RULE_SETUP
#line 102 "codeslexer.l"
#line 102 "
../src/iokernellang/
codeslexer.l"
return
SLEEP
;
YY_BREAK
case
24
:
YY_RULE_SETUP
#line 103 "codeslexer.l"
#line 103 "
../src/iokernellang/
codeslexer.l"
return
OPEN
;
YY_BREAK
case
25
:
YY_RULE_SETUP
#line 104 "codeslexer.l"
#line 104 "
../src/iokernellang/
codeslexer.l"
return
CLOSE
;
YY_BREAK
case
26
:
YY_RULE_SETUP
#line 105 "codeslexer.l"
#line 105 "
../src/iokernellang/
codeslexer.l"
return
FLUSH
;
YY_BREAK
case
27
:
YY_RULE_SETUP
#line 106 "codeslexer.l"
#line 106 "
../src/iokernellang/
codeslexer.l"
return
SEEK
;
YY_BREAK
case
28
:
YY_RULE_SETUP
#line 107 "codeslexer.l"
#line 107 "
../src/iokernellang/
codeslexer.l"
return
GETGROUPID
;
YY_BREAK
case
29
:
YY_RULE_SETUP
#line 108 "codeslexer.l"
#line 108 "
../src/iokernellang/
codeslexer.l"
return
GETNUMGROUPS
;
YY_BREAK
case
30
:
YY_RULE_SETUP
#line 109 "codeslexer.l"
#line 109 "
../src/iokernellang/
codeslexer.l"
return
GETGROUPRANK
;
YY_BREAK
case
31
:
YY_RULE_SETUP
#line 110 "codeslexer.l"
#line 110 "
../src/iokernellang/
codeslexer.l"
return
GETGROUPSIZE
;
YY_BREAK
case
32
:
YY_RULE_SETUP
#line 111 "codeslexer.l"
#line 111 "
../src/iokernellang/
codeslexer.l"
return
GETCURTIME
;
YY_BREAK
case
33
:
YY_RULE_SETUP
#line 112 "codeslexer.l"
#line 112 "
../src/iokernellang/
codeslexer.l"
return
EXIT
;
YY_BREAK
case
34
:
/* rule 34 can match eol */
YY_RULE_SETUP
#line 114 "codeslexer.l"
#line 114 "
../src/iokernellang/
codeslexer.l"
;
/* ignore whitespace */
YY_BREAK
case
35
:
YY_RULE_SETUP
#line 116 "codeslexer.l"
#line 116 "
../src/iokernellang/
codeslexer.l"
fprintf
(
stderr
,
"Unknown character
\n
"
);
YY_BREAK
case
36
:
YY_RULE_SETUP
#line 117 "codeslexer.l"
#line 117 "
../src/iokernellang/
codeslexer.l"
ECHO
;
YY_BREAK
#line 11
30 "
codeslexer.c"
#line 11
16 "../src/iokernellang/
codeslexer.c"
case
YY_STATE_EOF
(
INITIAL
):
yyterminate
();
...
...
@@ -1867,8 +1853,8 @@ YY_BUFFER_STATE CodesIOKernel__scan_string (yyconst char * yystr , yyscan_t yysc
/** Setup the input buffer state to scan the given bytes. The next call to CodesIOKernel_lex() will
* scan from a @e copy of @a bytes.
* @param
yy
bytes the byte buffer to scan
* @param
_yybytes_
len the number of bytes in the buffer pointed to by @a bytes.
* @param bytes the byte buffer to scan
* @param len the number of bytes in the buffer pointed to by @a bytes.
* @param yyscanner The scanner object.
* @return the newly allocated buffer state object.
*/
...
...
@@ -2274,7 +2260,7 @@ void CodesIOKernel_free (void * ptr , yyscan_t yyscanner)