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
Matthieu Dorier
codes
Commits
241264b9
Commit
241264b9
authored
Feb 27, 2015
by
Misbah Mubarak
Browse files
removing duplicate files, fixing minor merge bug
parent
59db60d9
Changes
2
Hide whitespace changes
Inline
Side-by-side
codes/codes-nw-workload.h
deleted
100644 → 0
View file @
59db60d9
/*
* Copyright (C) 2013 University of Chicago.
* See COPYRIGHT notice in top-level directory.
*
*/
#ifndef CODES_NW_WORKLOAD_H
#define CODES_NW_WORKLOAD_H
#include "ross.h"
#define MAX_LENGTH 512
#define MAX_REQUESTS 128
/* struct to hold the actual data from a single MPI event*/
typedef
struct
mpi_event_list
mpi_event_list
;
typedef
struct
scala_trace_params
scala_trace_params
;
typedef
struct
dumpi_trace_params
dumpi_trace_params
;
struct
scala_trace_params
{
char
offset_file_name
[
MAX_LENGTH
];
char
nw_wrkld_file_name
[
MAX_LENGTH
];
};
struct
dumpi_trace_params
{
int
num_net_traces
;
char
file_name
[
MAX_LENGTH
];
};
enum
NW_WORKLOADS
{
SCALA_TRACE
=
1
,
#ifdef USE_DUMPI
DUMPI
,
#endif
OTHERS
,
/* add the names of other workload generators here */
};
enum
mpi_workload_type
{
/* sleep/delay to simulate computation or other activity */
CODES_NW_DELAY
=
1
,
/* MPI wait all operation */
CODES_NW_WAITALL
,
/* MPI Wait operation */
CODES_NW_WAIT
,
/* MPI Waitsome operation */
CODES_NW_WAITSOME
,
/* MPI Waitany operation */
CODES_NW_WAITANY
,
/* terminator; there are no more operations for this rank */
CODES_NW_END
,
/* MPI blocking send operation */
CODES_NW_SEND
,
/* MPI blocking recv operation */
CODES_NW_RECV
,
/* MPI non-blocking send operation */
CODES_NW_ISEND
,
/* MPI non-blocking receive operation */
CODES_NW_IRECV
,
/* MPI broadcast operation */
CODES_NW_BCAST
,
/* MPI Allgather operation */
CODES_NW_ALLGATHER
,
/* MPI Allgatherv operation */
CODES_NW_ALLGATHERV
,
/* MPI Alltoall operation */
CODES_NW_ALLTOALL
,
/* MPI Alltoallv operation */
CODES_NW_ALLTOALLV
,
/* MPI Reduce operation */
CODES_NW_REDUCE
,
/* MPI Allreduce operation */
CODES_NW_ALLREDUCE
,
/* MPI test all operation */
CODES_NW_TESTALL
,
/* MPI test operation */
CODES_NW_TEST
,
/* Generic collective operation */
CODES_NW_COL
,
};
/* data structure for holding data from a MPI event (coming through scala-trace)
* can be a delay, isend, irecv or a collective call */
struct
mpi_event_list
{
/* what type of operation this is */
enum
mpi_workload_type
op_type
;
double
start_time
;
double
end_time
;
double
sim_start_time
;
/* parameters for each operation type */
union
{
struct
{
double
nsecs
;
double
seconds
;
}
delay
;
struct
{
int
source_rank
;
/* source rank of MPI send message */
int
dest_rank
;
/* dest rank of MPI send message */
int
num_bytes
;
/* number of bytes to be transferred over the network */
short
data_type
;
/* MPI data type to be matched with the recv */
int
count
;
/* number of elements to be received */
int
tag
;
/* tag of the message */
int16_t
req_id
;
}
send
;
struct
{
int
source_rank
;
/* source rank of MPI recv message */
int
dest_rank
;
/* dest rank of MPI recv message */
int
num_bytes
;
/* number of bytes to be transferred over the network */
short
data_type
;
/* MPI data type to be matched with the send */
int
count
;
/* number of elements to be sent */
int
tag
;
/* tag of the message */
int16_t
req_id
;
}
recv
;
struct
{
int
num_bytes
;
}
collective
;
struct
{
int
count
;
int16_t
*
req_ids
;
}
waits
;
struct
{
int16_t
req_id
;
}
wait
;
}
u
;
};
/* read in the metadata file about the MPI event information
and populate the MPI events array */
int
codes_nw_workload_load
(
const
char
*
type_name
,
const
char
*
params
,
int
rank
);
/* retrieves the next network operation to execute. the wkld_id is the
identifier returned by the init() function. The op argument is a pointer
to a structure to be filled in with network operation information */
void
codes_nw_workload_get_next
(
int
wkld_id
,
int
rank
,
struct
mpi_event_list
*
op
);
/* Reverse of the above function */
void
codes_nw_workload_get_next_rc
(
int
wkld_id
,
int
rank
,
const
struct
mpi_event_list
*
op
);
void
codes_nw_workload_print_op
(
FILE
*
f
,
struct
mpi_event_list
*
op
,
int
rank
);
#endif
/* CODES_NW_WORKLOAD_H */
/*
* Local variables:
* c-indent-level: 4
* c-basic-offset: 4
* End:
*
* vim: ft=c ts=8 sts=4 sw=4 expandtab
*/
src/workload/methods/codes-dumpi-trace-nw-wrkld.c
View file @
241264b9
...
...
@@ -17,10 +17,10 @@
#include "src/workload/codes-workload-method.h"
#include "codes/quickhash.h"
#define RANK_HASH_TABLE_SIZE 400
#define MAX_LENGTH 512
#define MAX_OPERATIONS 32768
#define DUMPI_IGNORE_DELAY 100
#define RANK_HASH_TABLE_SIZE 400
static
struct
qhash_table
*
rank_tbl
=
NULL
;
static
int
rank_tbl_pop
=
0
;
...
...
@@ -171,7 +171,7 @@ int handleDUMPIWait(const dumpi_wait *prm, uint16_t thread,
rank_mpi_context
*
myctx
=
(
rank_mpi_context
*
)
userarg
;
struct
codes_workload_op
wrkld_per_rank
;
wrkld_per_rank
.
op_type
=
CODES_
N
W_WAIT
;
wrkld_per_rank
.
op_type
=
CODES_W
K
_WAIT
;
wrkld_per_rank
.
u
.
wait
.
req_id
=
prm
->
request
;
wrkld_per_rank
.
start_time
=
cpu
->
start
.
nsec
;
wrkld_per_rank
.
end_time
=
cpu
->
stop
.
nsec
;
...
...
@@ -189,7 +189,7 @@ int handleDUMPIWaitsome(const dumpi_waitsome *prm, uint16_t thread,
rank_mpi_context
*
myctx
=
(
rank_mpi_context
*
)
userarg
;
struct
codes_workload_op
wrkld_per_rank
;
wrkld_per_rank
.
op_type
=
CODES_
N
W_WAITSOME
;
wrkld_per_rank
.
op_type
=
CODES_W
K
_WAITSOME
;
wrkld_per_rank
.
u
.
waits
.
count
=
prm
->
count
;
wrkld_per_rank
.
u
.
waits
.
req_ids
=
(
int16_t
*
)
malloc
(
prm
->
count
*
sizeof
(
int16_t
));
...
...
@@ -213,7 +213,7 @@ int handleDUMPIWaitany(const dumpi_waitany *prm, uint16_t thread,
rank_mpi_context
*
myctx
=
(
rank_mpi_context
*
)
userarg
;
struct
codes_workload_op
wrkld_per_rank
;
wrkld_per_rank
.
op_type
=
CODES_
N
W_WAITANY
;
wrkld_per_rank
.
op_type
=
CODES_W
K
_WAITANY
;
wrkld_per_rank
.
u
.
waits
.
count
=
prm
->
count
;
wrkld_per_rank
.
u
.
waits
.
req_ids
=
(
int16_t
*
)
malloc
(
prm
->
count
*
sizeof
(
int16_t
));
...
...
@@ -236,7 +236,7 @@ int handleDUMPIWaitall(const dumpi_waitall *prm, uint16_t thread,
rank_mpi_context
*
myctx
=
(
rank_mpi_context
*
)
userarg
;
struct
codes_workload_op
wrkld_per_rank
;
wrkld_per_rank
.
op_type
=
CODES_
N
W_WAITALL
;
wrkld_per_rank
.
op_type
=
CODES_W
K
_WAITALL
;
wrkld_per_rank
.
u
.
waits
.
count
=
prm
->
count
;
wrkld_per_rank
.
u
.
waits
.
req_ids
=
(
int16_t
*
)
malloc
(
prm
->
count
*
sizeof
(
int16_t
));
...
...
@@ -512,7 +512,7 @@ int dumpi_trace_nw_workload_load(const char* params, int rank)
if
(
!
rank_tbl
)
{
rank_tbl
=
qhash_init
(
hash_rank_compare
,
quickhash_
64
bit_hash
,
RANK_HASH_TABLE_SIZE
);
rank_tbl
=
qhash_init
(
hash_rank_compare
,
quickhash_
32
bit_hash
,
RANK_HASH_TABLE_SIZE
);
if
(
!
rank_tbl
)
return
-
1
;
}
...
...
@@ -689,6 +689,7 @@ void dumpi_trace_nw_workload_get_next(int rank, struct codes_workload_op *op)
hash_link
=
qhash_search
(
rank_tbl
,
&
rank
);
if
(
!
hash_link
)
{
printf
(
"
\n
not found for rank id %d "
,
rank
);
op
->
op_type
=
CODES_WK_END
;
return
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment