Commit 4b5962ca authored by Misbah Mubarak's avatar Misbah Mubarak

adding modifications to workload generator

parent b8df46df
...@@ -57,6 +57,12 @@ AM_CPPFLAGS += ${RECORDER_CPPFLAGS} ...@@ -57,6 +57,12 @@ AM_CPPFLAGS += ${RECORDER_CPPFLAGS}
src_libcodes_la_SOURCES += src/workload/methods/codes-recorder-io-wrkld.c src_libcodes_la_SOURCES += src/workload/methods/codes-recorder-io-wrkld.c
endif endif
if USE_ONLINE
AM_CPPFLAGS += ${ARGOBOTS_CFLAGS} ${SWM_CFLAGS} -DUSE_ONLINE=1
LDADD += ${SWM_LIBS} ${ARGOBOTS_LIBS}
src_libcodes_la_SOURCES += src/workload/methods/codes-online-comm-wrkld.C
endif
if USE_DUMPI if USE_DUMPI
AM_CPPFLAGS += ${DUMPI_CFLAGS} -DUSE_DUMPI=1 AM_CPPFLAGS += ${DUMPI_CFLAGS} -DUSE_DUMPI=1
src_libcodes_la_SOURCES += src/workload/methods/codes-dumpi-trace-nw-wrkld.c src_libcodes_la_SOURCES += src/workload/methods/codes-dumpi-trace-nw-wrkld.c
......
...@@ -19,6 +19,9 @@ extern "C" { ...@@ -19,6 +19,9 @@ extern "C" {
#include <ross.h> #include <ross.h>
#include "configuration.h" #include "configuration.h"
#ifdef USE_ONLINE
#include <abt.h>
#endif
#define MAX_NAME_LENGTH_WKLD 512 #define MAX_NAME_LENGTH_WKLD 512
/* implementations included with codes */ /* implementations included with codes */
...@@ -30,6 +33,7 @@ typedef struct recorder_params recorder_params; ...@@ -30,6 +33,7 @@ typedef struct recorder_params recorder_params;
/* struct to hold the actual data from a single MPI event*/ /* struct to hold the actual data from a single MPI event*/
typedef struct dumpi_trace_params dumpi_trace_params; typedef struct dumpi_trace_params dumpi_trace_params;
typedef struct checkpoint_wrkld_params checkpoint_wrkld_params; typedef struct checkpoint_wrkld_params checkpoint_wrkld_params;
typedef struct online_comm_params online_comm_params;
struct iomock_params struct iomock_params
{ {
...@@ -77,6 +81,11 @@ struct dumpi_trace_params { ...@@ -77,6 +81,11 @@ struct dumpi_trace_params {
#endif #endif
}; };
struct online_comm_params {
char workload_name[MAX_NAME_LENGTH_WKLD];
char file_path[MAX_NAME_LENGTH_WKLD];
int nprocs;
};
struct checkpoint_wrkld_params struct checkpoint_wrkld_params
{ {
int nprocs; /* number of workload processes */ int nprocs; /* number of workload processes */
...@@ -306,6 +315,13 @@ int codes_workload_get_rank_cnt( ...@@ -306,6 +315,13 @@ int codes_workload_get_rank_cnt(
const char* params, const char* params,
int app_id); int app_id);
/* Finalize the workload */
int codes_workload_finalize(
const char* type,
const char* params,
int app_id,
int rank);
/* for debugging/logging: print an individual operation to the specified file */ /* for debugging/logging: print an individual operation to the specified file */
void codes_workload_print_op( void codes_workload_print_op(
FILE *f, FILE *f,
...@@ -324,6 +340,7 @@ struct codes_workload_method ...@@ -324,6 +340,7 @@ struct codes_workload_method
void (*codes_workload_get_next)(int app_id, int rank, struct codes_workload_op *op); void (*codes_workload_get_next)(int app_id, int rank, struct codes_workload_op *op);
void (*codes_workload_get_next_rc2)(int app_id, int rank); void (*codes_workload_get_next_rc2)(int app_id, int rank);
int (*codes_workload_get_rank_cnt)(const char* params, int app_id); int (*codes_workload_get_rank_cnt)(const char* params, int app_id);
int (*codes_workload_finalize)(const char* params, int app_id, int rank);
}; };
......
...@@ -104,6 +104,24 @@ fi ...@@ -104,6 +104,24 @@ fi
AM_CONDITIONAL(USE_DARSHAN, [test "x${use_darshan}" = xyes]) AM_CONDITIONAL(USE_DARSHAN, [test "x${use_darshan}" = xyes])
# check for Argobots
AC_ARG_WITH([online],[AS_HELP_STRING([--with-online@<:@=DIR@:>@],
[Build with the online workloads and argobots support])],
[use_online=yes],[use_online=no])
if test "x${use_online}" != "x" ; then
AM_CONDITIONAL(USE_ONLINE, true)
PKG_CHECK_MODULES_STATIC([ARGOBOTS], [argobots], [],
[AC_MSG_ERROR([Could not find working argobots installation via pkg-config])])
PKG_CHECK_MODULES_STATIC([SWM], [swm], [],
[AC_MSG_ERROR([Could not find working swm installation via pkg-config])])
PKG_CHECK_VAR([SWM_DATAROOTDIR], [swm], [datarootdir], [],
[AC_MSG_ERROR[Could not find shared directory in SWM]])
AC_DEFINE_UNQUOTED([SWM_DATAROOTDIR], ["$SWM_DATAROOTDIR"], [if using json
data files])
else
AM_CONDITIONAL(USE_ONLINE, false)
fi
# check for Recorder # check for Recorder
AM_CONDITIONAL(USE_RECORDER, true) AM_CONDITIONAL(USE_RECORDER, true)
RECORDER_CPPFLAGS="-DUSE_RECORDER=1" RECORDER_CPPFLAGS="-DUSE_RECORDER=1"
......
...@@ -14,11 +14,15 @@ python_cflags=@PYTHON_CFLAGS@ ...@@ -14,11 +14,15 @@ python_cflags=@PYTHON_CFLAGS@
python_libs=@PYTHON_LIBS@ python_libs=@PYTHON_LIBS@
boost_cflags=@BOOST_CFLAGS@ boost_cflags=@BOOST_CFLAGS@
boost_libs=@BOOST_LIBS@ boost_libs=@BOOST_LIBS@
argobots_libs=@ARGOBOTS_LIBS@
argobots_cflags=@ARGOBOTS_CFLAGS@
swm_libs=@SWM_LIBS@
swm_cflags=@SWM_CFLAGS@
Name: codes-base Name: codes-base
Description: Base functionality for CODES storage simulation Description: Base functionality for CODES storage simulation
Version: @PACKAGE_VERSION@ Version: @PACKAGE_VERSION@
URL: http://trac.mcs.anl.gov/projects/CODES URL: http://trac.mcs.anl.gov/projects/CODES
Requires: Requires:
Libs: -L${libdir} -lcodes ${ross_libs} ${darshan_libs} ${dumpi_libs} ${cortex_libs} Libs: -L${libdir} -lcodes ${ross_libs} ${argobots_libs} ${swm_libs} ${darshan_libs} ${dumpi_libs} ${cortex_libs}
Cflags: -I${includedir} ${ross_cflags} ${darshan_cflags} ${dumpi_cflags} ${cortex_cflags} Cflags: -I${includedir} ${swm_datarootdir} ${ross_cflags} ${darshan_cflags} ${swm_cflags} ${argobots_cflags} ${dumpi_cflags} ${cortex_cflags}
...@@ -142,7 +142,7 @@ src_libcodes_la_SOURCES = \ ...@@ -142,7 +142,7 @@ src_libcodes_la_SOURCES = \
src/util/jobmap-impl/jobmap-list.c\ src/util/jobmap-impl/jobmap-list.c\
src/util/jobmap-impl/jobmap-identity.c\ src/util/jobmap-impl/jobmap-identity.c\
src/util/codes-mapping-context.c \ src/util/codes-mapping-context.c \
src/util/codes-comm.c \ src/util/codes-comm.c \
src/workload/codes-workload.c \ src/workload/codes-workload.c \
src/workload/methods/codes-iolang-wrkld.c \ src/workload/methods/codes-iolang-wrkld.c \
src/workload/methods/codes-checkpoint-wrkld.c \ src/workload/methods/codes-checkpoint-wrkld.c \
......
...@@ -16,6 +16,7 @@ static darshan_params d_params = {"", 0}; ...@@ -16,6 +16,7 @@ static darshan_params d_params = {"", 0};
static iolang_params i_params = {0, 0, "", ""}; static iolang_params i_params = {0, 0, "", ""};
static recorder_params r_params = {"", 0}; static recorder_params r_params = {"", 0};
static dumpi_trace_params du_params = {"", 0}; static dumpi_trace_params du_params = {"", 0};
static online_comm_params oc_params = {"", "", 0};
static checkpoint_wrkld_params c_params = {0, 0, 0, 0, 0}; static checkpoint_wrkld_params c_params = {0, 0, 0, 0, 0};
static iomock_params im_params = {0, 0, 1, 0, 0, 0}; static iomock_params im_params = {0, 0, 1, 0, 0, 0};
static int n = -1; static int n = -1;
...@@ -33,6 +34,7 @@ static struct option long_opts[] = ...@@ -33,6 +34,7 @@ static struct option long_opts[] =
{"r-trace-dir", required_argument, NULL, 'd'}, {"r-trace-dir", required_argument, NULL, 'd'},
{"r-nprocs", required_argument, NULL, 'x'}, {"r-nprocs", required_argument, NULL, 'x'},
{"dumpi-log", required_argument, NULL, 'w'}, {"dumpi-log", required_argument, NULL, 'w'},
{"workload-name", required_argument, NULL, 'b'},
{"chkpoint-size", required_argument, NULL, 'S'}, {"chkpoint-size", required_argument, NULL, 'S'},
{"chkpoint-bw", required_argument, NULL, 'B'}, {"chkpoint-bw", required_argument, NULL, 'B'},
{"chkpoint-iters", required_argument, NULL, 'i'}, {"chkpoint-iters", required_argument, NULL, 'i'},
...@@ -62,6 +64,8 @@ void usage(){ ...@@ -62,6 +64,8 @@ void usage(){
"--r-nprocs: number of ranks in original recorder workload\n" "--r-nprocs: number of ranks in original recorder workload\n"
"DUMPI TRACE OPTIONS (dumpi-trace-workload) \n" "DUMPI TRACE OPTIONS (dumpi-trace-workload) \n"
"--dumpi-log: dumpi log file \n" "--dumpi-log: dumpi log file \n"
"ONLINE COMM OPTIONS (online_comm_workload) \n"
"--workload-name : name of the workload (lammps or nekbone) \n"
"CHECKPOINT OPTIONS (checkpoint_io_workload)\n" "CHECKPOINT OPTIONS (checkpoint_io_workload)\n"
"--chkpoint-size: size of aggregate checkpoint to write\n" "--chkpoint-size: size of aggregate checkpoint to write\n"
"--chkpoint-bw: checkpointing bandwidth\n" "--chkpoint-bw: checkpointing bandwidth\n"
...@@ -79,6 +83,9 @@ void usage(){ ...@@ -79,6 +83,9 @@ void usage(){
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#ifdef USE_ONLINE
ABT_init(argc, argv);
#endif
int print_stats = 0; int print_stats = 0;
double total_delay = 0.0; double total_delay = 0.0;
int64_t num_barriers = 0; int64_t num_barriers = 0;
...@@ -120,7 +127,7 @@ int main(int argc, char *argv[]) ...@@ -120,7 +127,7 @@ int main(int argc, char *argv[])
int64_t num_testalls = 0; int64_t num_testalls = 0;
char ch; char ch;
while ((ch = getopt_long(argc, argv, "t:n:l:a:m:sp:wr:S:B:R:M:Q:N:z:f:u", while ((ch = getopt_long(argc, argv, "t:n:l:b:a:m:sp:wr:S:B:R:M:Q:N:z:f:u",
long_opts, NULL)) != -1){ long_opts, NULL)) != -1){
switch (ch){ switch (ch){
case 't': case 't':
...@@ -133,6 +140,9 @@ int main(int argc, char *argv[]) ...@@ -133,6 +140,9 @@ int main(int argc, char *argv[])
case 'l': case 'l':
strcpy(d_params.log_file_path, optarg); strcpy(d_params.log_file_path, optarg);
break; break;
case 'b':
strcpy(oc_params.workload_name, optarg);
break;
case 'a': case 'a':
d_params.aggregator_cnt = atol(optarg); d_params.aggregator_cnt = atol(optarg);
break; break;
...@@ -215,6 +225,18 @@ int main(int argc, char *argv[]) ...@@ -215,6 +225,18 @@ int main(int argc, char *argv[])
wparams = (char*)&d_params; wparams = (char*)&d_params;
} }
} }
else if(strcmp(type, "online_comm_workload") == 0){
if (n == -1){
fprintf(stderr,
"Expected \"--num-ranks\" argument for online workload\n");
usage();
return 1;
}
else{
oc_params.nprocs = n;
}
wparams = (char *)&oc_params;
}
else if (strcmp(type, "iolang_workload") == 0){ else if (strcmp(type, "iolang_workload") == 0){
if (n == -1){ if (n == -1){
fprintf(stderr, fprintf(stderr,
...@@ -422,6 +444,11 @@ int main(int argc, char *argv[]) ...@@ -422,6 +444,11 @@ int main(int argc, char *argv[])
op.op_type); op.op_type);
} }
} while (op.op_type != CODES_WK_END); } while (op.op_type != CODES_WK_END);
if(strcmp(type, "online_comm_workload") == 0)
{
codes_workload_finalize(type, wparams, 0, i);
}
} }
if (print_stats) if (print_stats)
...@@ -467,6 +494,9 @@ int main(int argc, char *argv[]) ...@@ -467,6 +494,9 @@ int main(int argc, char *argv[])
fprintf(stderr, "NUM_TESTALLS: %"PRId64"\n", num_testalls); fprintf(stderr, "NUM_TESTALLS: %"PRId64"\n", num_testalls);
} }
#ifdef USE_ONLINE
ABT_finalize();
#endif
return 0; return 0;
} }
......
...@@ -24,6 +24,9 @@ extern struct codes_workload_method darshan_io_workload_method; ...@@ -24,6 +24,9 @@ extern struct codes_workload_method darshan_io_workload_method;
#ifdef USE_RECORDER #ifdef USE_RECORDER
extern struct codes_workload_method recorder_io_workload_method; extern struct codes_workload_method recorder_io_workload_method;
#endif #endif
#ifdef USE_ONLINE
extern struct codes_workload_method online_comm_workload_method;
#endif
extern struct codes_workload_method checkpoint_workload_method; extern struct codes_workload_method checkpoint_workload_method;
extern struct codes_workload_method iomock_workload_method; extern struct codes_workload_method iomock_workload_method;
...@@ -37,6 +40,9 @@ static struct codes_workload_method const * method_array_default[] = ...@@ -37,6 +40,9 @@ static struct codes_workload_method const * method_array_default[] =
#ifdef USE_DARSHAN #ifdef USE_DARSHAN
&darshan_io_workload_method, &darshan_io_workload_method,
#endif #endif
#ifdef USE_ONLINE
&online_comm_workload_method,
#endif
#ifdef USE_RECORDER #ifdef USE_RECORDER
&recorder_io_workload_method, &recorder_io_workload_method,
#endif #endif
...@@ -89,6 +95,7 @@ static void init_workload_methods(void) ...@@ -89,6 +95,7 @@ static void init_workload_methods(void)
// note - includes null char // note - includes null char
int num_default_methods = int num_default_methods =
(sizeof(method_array_default) / sizeof(method_array_default[0])); (sizeof(method_array_default) / sizeof(method_array_default[0]));
printf("\n Num default methods %d ", num_default_methods);
method_array = realloc(method_array, method_array = realloc(method_array,
(num_default_methods + num_user_methods + 1) * (num_default_methods + num_user_methods + 1) *
sizeof(*method_array)); sizeof(*method_array));
...@@ -152,6 +159,7 @@ int codes_workload_load( ...@@ -152,6 +159,7 @@ int codes_workload_load(
for(i=0; method_array[i] != NULL; i++) for(i=0; method_array[i] != NULL; i++)
{ {
printf("\n loading for workload %s %s ", type, method_array[i]->method_name);
if(strcmp(method_array[i]->method_name, type) == 0) if(strcmp(method_array[i]->method_name, type) == 0)
{ {
/* load appropriate workload generator */ /* load appropriate workload generator */
...@@ -264,6 +272,27 @@ void codes_workload_get_next_rc2( ...@@ -264,6 +272,27 @@ void codes_workload_get_next_rc2(
method_array[wkld_id]->codes_workload_get_next_rc2(app_id, rank); method_array[wkld_id]->codes_workload_get_next_rc2(app_id, rank);
} }
/* Finalize the workload */
int codes_workload_finalize(
const char* type,
const char* params,
int app_id,
int rank)
{
int i;
for(i=0; method_array[i] != NULL; i++)
{
if(strcmp(method_array[i]->method_name, type) == 0)
{
return method_array[i]->codes_workload_finalize(
params, app_id, rank);
}
}
fprintf(stderr, "Error: failed to find workload generator %s\n", type);
return(-1);
}
int codes_workload_get_rank_cnt( int codes_workload_get_rank_cnt(
const char* type, const char* type,
const char* params, const char* params,
...@@ -428,7 +457,7 @@ void codes_workload_print_op( ...@@ -428,7 +457,7 @@ void codes_workload_print_op(
void codes_workload_add_method(struct codes_workload_method const * method) void codes_workload_add_method(struct codes_workload_method const * method)
{ {
static int method_array_cap = 8; static int method_array_cap = 10;
if (is_workloads_init) if (is_workloads_init)
tw_error(TW_LOC, tw_error(TW_LOC,
"adding a workload method after initialization is forbidden"); "adding a workload method after initialization is forbidden");
......
...@@ -783,8 +783,11 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank) ...@@ -783,8 +783,11 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank)
if(rank >= dumpi_params->num_net_traces) if(rank >= dumpi_params->num_net_traces)
return -1; return -1;
int hash_size = (dumpi_params->num_net_traces / dumpi_params->nprocs) + 1; int hash_size = 1;
if(!rank_tbl) if(dumpi_params->nprocs > 0)
hash_size = (dumpi_params->num_net_traces / dumpi_params->nprocs) + 1;
if(!rank_tbl)
{ {
rank_tbl = qhash_init(hash_rank_compare, quickhash_64bit_hash, hash_size); rank_tbl = qhash_init(hash_rank_compare, quickhash_64bit_hash, hash_size);
if(!rank_tbl) if(!rank_tbl)
...@@ -850,12 +853,12 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank) ...@@ -850,12 +853,12 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank)
#endif #endif
/* handle MPI function calls */ /* handle MPI function calls */
callbacks.on_init = handleDUMPIInit; callbacks.on_init = handleDUMPIInit;
callbacks.on_send = (dumpi_send_call)handleDUMPISend; callbacks.on_send = (dumpi_send_call)handleDUMPISend;
callbacks.on_recv = (dumpi_recv_call)handleDUMPIRecv; callbacks.on_recv = (dumpi_recv_call)handleDUMPIRecv;
callbacks.on_isend = (dumpi_isend_call)handleDUMPIISend; callbacks.on_isend = (dumpi_isend_call)handleDUMPIISend;
callbacks.on_irecv = (dumpi_irecv_call)handleDUMPIIRecv; callbacks.on_irecv = (dumpi_irecv_call)handleDUMPIIRecv;
callbacks.on_allreduce = (dumpi_allreduce_call)handleDUMPIAllreduce; callbacks.on_allreduce = (dumpi_allreduce_call)handleDUMPIAllreduce;
callbacks.on_bcast = (dumpi_bcast_call)handleDUMPIBcast; callbacks.on_bcast = (dumpi_bcast_call)handleDUMPIBcast;
callbacks.on_get_count = (dumpi_get_count_call)handleDUMPIIgnore; callbacks.on_get_count = (dumpi_get_count_call)handleDUMPIIgnore;
callbacks.on_bsend = (dumpi_bsend_call)handleDUMPIIgnore; callbacks.on_bsend = (dumpi_bsend_call)handleDUMPIIgnore;
...@@ -890,28 +893,28 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank) ...@@ -890,28 +893,28 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank)
callbacks.on_sendrecv_replace = (dumpi_sendrecv_replace_call)handleDUMPIIgnore; callbacks.on_sendrecv_replace = (dumpi_sendrecv_replace_call)handleDUMPIIgnore;
callbacks.on_type_contiguous = (dumpi_type_contiguous_call)handleDUMPIIgnore; callbacks.on_type_contiguous = (dumpi_type_contiguous_call)handleDUMPIIgnore;
callbacks.on_barrier = (dumpi_barrier_call)handleDUMPIIgnore; callbacks.on_barrier = (dumpi_barrier_call)handleDUMPIIgnore;
callbacks.on_gather = (dumpi_gather_call)handleDUMPIIgnore; callbacks.on_gather = (dumpi_gather_call)handleDUMPIIgnore;
callbacks.on_gatherv = (dumpi_gatherv_call)handleDUMPIIgnore; callbacks.on_gatherv = (dumpi_gatherv_call)handleDUMPIIgnore;
callbacks.on_scatter = (dumpi_scatter_call)handleDUMPIIgnore; callbacks.on_scatter = (dumpi_scatter_call)handleDUMPIIgnore;
callbacks.on_scatterv = (dumpi_scatterv_call)handleDUMPIIgnore; callbacks.on_scatterv = (dumpi_scatterv_call)handleDUMPIIgnore;
callbacks.on_allgather = (dumpi_allgather_call)handleDUMPIIgnore; callbacks.on_allgather = (dumpi_allgather_call)handleDUMPIIgnore;
callbacks.on_allgatherv = (dumpi_allgatherv_call)handleDUMPIIgnore; callbacks.on_allgatherv = (dumpi_allgatherv_call)handleDUMPIIgnore;
callbacks.on_alltoall = (dumpi_alltoall_call)handleDUMPIIgnore; callbacks.on_alltoall = (dumpi_alltoall_call)handleDUMPIIgnore;
callbacks.on_alltoallv = (dumpi_alltoallv_call)handleDUMPIIgnore; callbacks.on_alltoallv = (dumpi_alltoallv_call)handleDUMPIIgnore;
callbacks.on_alltoallw = (dumpi_alltoallw_call)handleDUMPIIgnore; callbacks.on_alltoallw = (dumpi_alltoallw_call)handleDUMPIIgnore;
callbacks.on_reduce = (dumpi_reduce_call)handleDUMPIIgnore; callbacks.on_reduce = (dumpi_reduce_call)handleDUMPIIgnore;
callbacks.on_reduce_scatter = (dumpi_reduce_scatter_call)handleDUMPIIgnore; callbacks.on_reduce_scatter = (dumpi_reduce_scatter_call)handleDUMPIIgnore;
callbacks.on_group_size = (dumpi_group_size_call)handleDUMPIIgnore; callbacks.on_group_size = (dumpi_group_size_call)handleDUMPIIgnore;
callbacks.on_group_rank = (dumpi_group_rank_call)handleDUMPIIgnore; callbacks.on_group_rank = (dumpi_group_rank_call)handleDUMPIIgnore;
callbacks.on_comm_size = (dumpi_comm_size_call)handleDUMPIIgnore; callbacks.on_comm_size = (dumpi_comm_size_call)handleDUMPIIgnore;
callbacks.on_comm_rank = (dumpi_comm_rank_call)handleDUMPIIgnore; callbacks.on_comm_rank = (dumpi_comm_rank_call)handleDUMPIIgnore;
callbacks.on_comm_get_attr = (dumpi_comm_get_attr_call)handleDUMPIIgnore; callbacks.on_comm_get_attr = (dumpi_comm_get_attr_call)handleDUMPIIgnore;
callbacks.on_comm_dup = (dumpi_comm_dup_call)handleDUMPIError; callbacks.on_comm_dup = (dumpi_comm_dup_call)handleDUMPIError;
callbacks.on_comm_create = (dumpi_comm_create_call)handleDUMPIError; callbacks.on_comm_create = (dumpi_comm_create_call)handleDUMPIError;
callbacks.on_wtime = (dumpi_wtime_call)handleDUMPIIgnore; callbacks.on_wtime = (dumpi_wtime_call)handleDUMPIIgnore;
callbacks.on_finalize = (dumpi_finalize_call)handleDUMPIFinalize; callbacks.on_finalize = (dumpi_finalize_call)handleDUMPIFinalize;
libundumpi_populate_callbacks(&callbacks, callarr); libundumpi_populate_callbacks(&callbacks, callarr);
#ifdef ENABLE_CORTEX #ifdef ENABLE_CORTEX
#ifdef ENABLE_CORTEX_PYTHON #ifdef ENABLE_CORTEX_PYTHON
...@@ -924,7 +927,7 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank) ...@@ -924,7 +927,7 @@ int dumpi_trace_nw_workload_load(const char* params, int app_id, int rank)
libundumpi_populate_callbacks(CORTEX_MPICH_TRANSLATION, transarr); libundumpi_populate_callbacks(CORTEX_MPICH_TRANSLATION, transarr);
#endif #endif
#endif #endif
DUMPI_START_STREAM_READ(profile); DUMPI_START_STREAM_READ(profile);
//dumpi_header* trace_header = undumpi_read_header(profile); //dumpi_header* trace_header = undumpi_read_header(profile);
//dumpi_free_header(trace_header); //dumpi_free_header(trace_header);
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment