From 0b8f994b3ef90cdc5129e1c830be1f434c69bbcc Mon Sep 17 00:00:00 2001 From: Christian Heinrich Date: Mon, 12 Mar 2018 17:05:52 +0100 Subject: [PATCH] [SMPI] Clean initialization of MPI_CURRENT_TYPE and root --- src/smpi/internals/smpi_replay.cpp | 142 +++++++++-------------------- 1 file changed, 42 insertions(+), 100 deletions(-) diff --git a/src/smpi/internals/smpi_replay.cpp b/src/smpi/internals/smpi_replay.cpp index 8591b82bec..9813e79f6b 100644 --- a/src/smpi/internals/smpi_replay.cpp +++ b/src/smpi/internals/smpi_replay.cpp @@ -216,10 +216,7 @@ static void action_send(const char *const *action) double size=parse_double(action[3]); double clock = smpi_process()->simulated_elapsed(); - if(action[4]) - MPI_CURRENT_TYPE=decode_datatype(action[4]); - else - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; int my_proc_id = Actor::self()->getPid(); int dst_traced = MPI_COMM_WORLD->group()->actor(to)->getPid(); @@ -243,10 +240,7 @@ static void action_Isend(const char *const *action) double size=parse_double(action[3]); double clock = smpi_process()->simulated_elapsed(); - if(action[4]) - MPI_CURRENT_TYPE=decode_datatype(action[4]); - else - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; int my_proc_id = Actor::self()->getPid(); int dst_traced = MPI_COMM_WORLD->group()->actor(to)->getPid(); @@ -271,10 +265,7 @@ static void action_recv(const char *const *action) { double clock = smpi_process()->simulated_elapsed(); MPI_Status status; - if(action[4]) - MPI_CURRENT_TYPE=decode_datatype(action[4]); - else - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; int my_proc_id = Actor::self()->getPid(); int src_traced = MPI_COMM_WORLD->group()->actor(from)->getPid(); @@ -305,10 +296,7 @@ static void action_Irecv(const char *const *action) double size=parse_double(action[3]); double clock = smpi_process()->simulated_elapsed(); - if(action[4]) - MPI_CURRENT_TYPE=decode_datatype(action[4]); - else - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; int my_proc_id = Actor::self()->getPid(); TRACE_smpi_comm_in(my_proc_id, __FUNCTION__, @@ -433,15 +421,11 @@ static void action_bcast(const char *const *action) CHECK_ACTION_PARAMS(action, 1, 2) double size = parse_double(action[2]); double clock = smpi_process()->simulated_elapsed(); - int root=0; + int root = (action[3]) ? atoi(action[3]) : 0; /* Initialize MPI_CURRENT_TYPE in order to decrease the number of the checks */ MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; - if(action[3]) { - root= atoi(action[3]); - if(action[4]) - MPI_CURRENT_TYPE=decode_datatype(action[4]); - } + MPI_CURRENT_TYPE = (action[3] && action[4]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; int my_proc_id = Actor::self()->getPid(); TRACE_smpi_comm_in(my_proc_id, __FUNCTION__, @@ -462,14 +446,9 @@ static void action_reduce(const char *const *action) double comm_size = parse_double(action[2]); double comp_size = parse_double(action[3]); double clock = smpi_process()->simulated_elapsed(); - int root=0; - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + int root = (action[4]) ? atoi(action[4]) : 0; - if(action[4]) { - root= atoi(action[4]); - if(action[5]) - MPI_CURRENT_TYPE=decode_datatype(action[5]); - } + MPI_CURRENT_TYPE = (action[4] && action[5]) ? decode_datatype(action[5]) : MPI_DEFAULT_TYPE; int my_proc_id = Actor::self()->getPid(); TRACE_smpi_comm_in(my_proc_id, __FUNCTION__, @@ -490,10 +469,7 @@ static void action_allReduce(const char *const *action) { double comm_size = parse_double(action[2]); double comp_size = parse_double(action[3]); - if(action[4]) - MPI_CURRENT_TYPE=decode_datatype(action[4]); - else - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; double clock = smpi_process()->simulated_elapsed(); int my_proc_id = Actor::self()->getPid(); @@ -515,14 +491,8 @@ static void action_allToAll(const char *const *action) { int comm_size = MPI_COMM_WORLD->size(); int send_size = parse_double(action[2]); int recv_size = parse_double(action[3]); - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; - - if(action[4] && action[5]) { - MPI_CURRENT_TYPE=decode_datatype(action[4]); - MPI_CURRENT_TYPE2=decode_datatype(action[5]); - } - else - MPI_CURRENT_TYPE=MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4] && action[5]) ? decode_datatype(action[4]) : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{(action[4] && action[5]) ? decode_datatype(action[5]) : MPI_DEFAULT_TYPE}; void *send = smpi_get_tmp_sendbuffer(send_size*comm_size* MPI_CURRENT_TYPE->size()); void *recv = smpi_get_tmp_recvbuffer(recv_size*comm_size* MPI_CURRENT_TYPE2->size()); @@ -554,18 +524,12 @@ static void action_gather(const char *const *action) { int comm_size = MPI_COMM_WORLD->size(); int send_size = parse_double(action[2]); int recv_size = parse_double(action[3]); - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; - if(action[4] && action[5]) { - MPI_CURRENT_TYPE=decode_datatype(action[5]); - MPI_CURRENT_TYPE2=decode_datatype(action[6]); - } else { - MPI_CURRENT_TYPE=MPI_DEFAULT_TYPE; - } + MPI_CURRENT_TYPE = (action[5] && action[6]) ? decode_datatype(action[5]) : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{(action[5] && action[6]) ? decode_datatype(action[6]) : MPI_DEFAULT_TYPE}; + void *send = smpi_get_tmp_sendbuffer(send_size* MPI_CURRENT_TYPE->size()); void *recv = nullptr; - int root=0; - if(action[4]) - root=atoi(action[4]); + int root = (action[4]) ? atoi(action[4]) : 0; int rank = MPI_COMM_WORLD->rank(); if(rank==root) @@ -597,18 +561,12 @@ static void action_scatter(const char* const* action) int comm_size = MPI_COMM_WORLD->size(); int send_size = parse_double(action[2]); int recv_size = parse_double(action[3]); - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; - if (action[4] && action[5]) { - MPI_CURRENT_TYPE = decode_datatype(action[5]); - MPI_CURRENT_TYPE2 = decode_datatype(action[6]); - } else { - MPI_CURRENT_TYPE = MPI_DEFAULT_TYPE; - } + MPI_CURRENT_TYPE = (action[5] && action[6]) ? decode_datatype(action[5]) : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{(action[5] && action[6]) ? decode_datatype(action[6]) : MPI_DEFAULT_TYPE}; + void* send = smpi_get_tmp_sendbuffer(send_size * MPI_CURRENT_TYPE->size()); void* recv = nullptr; - int root = 0; - if (action[4]) - root = atoi(action[4]); + int root = (action[4]) ? atoi(action[4]) : 0; int rank = MPI_COMM_WORLD->rank(); if (rank == root) @@ -642,12 +600,10 @@ static void action_gatherv(const char *const *action) { int recvcounts[comm_size]; int recv_sum=0; - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; - if(action[4+comm_size] && action[5+comm_size]) { - MPI_CURRENT_TYPE=decode_datatype(action[4+comm_size]); - MPI_CURRENT_TYPE2=decode_datatype(action[5+comm_size]); - } else - MPI_CURRENT_TYPE=MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = + (action[4 + comm_size] && action[5 + comm_size]) ? decode_datatype(action[4 + comm_size]) : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{ + (action[4 + comm_size] && action[5 + comm_size]) ? decode_datatype(action[5 + comm_size]) : MPI_DEFAULT_TYPE}; void *send = smpi_get_tmp_sendbuffer(send_size* MPI_CURRENT_TYPE->size()); void *recv = nullptr; @@ -657,7 +613,7 @@ static void action_gatherv(const char *const *action) { disps[i]=0; } - int root=atoi(action[3+comm_size]); + int root = (action[3 + comm_size]) ? atoi(action[3 + comm_size]) : 0; int rank = MPI_COMM_WORLD->rank(); if(rank==root) @@ -696,12 +652,10 @@ static void action_scatterv(const char* const* action) int sendcounts[comm_size]; int send_sum = 0; - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; - if (action[4 + comm_size] && action[5 + comm_size]) { - MPI_CURRENT_TYPE = decode_datatype(action[4 + comm_size]); - MPI_CURRENT_TYPE2 = decode_datatype(action[5 + comm_size]); - } else - MPI_CURRENT_TYPE = MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = + (action[4 + comm_size] && action[5 + comm_size]) ? decode_datatype(action[4 + comm_size]) : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{ + (action[4 + comm_size] && action[5 + comm_size]) ? decode_datatype(action[5 + comm_size]) : MPI_DEFAULT_TYPE}; void* send = nullptr; void* recv = smpi_get_tmp_recvbuffer(recv_size * MPI_CURRENT_TYPE->size()); @@ -711,7 +665,7 @@ static void action_scatterv(const char* const* action) disps[i] = 0; } - int root = atoi(action[3 + comm_size]); + int root = (action[3 + comm_size]) ? atoi(action[3 + comm_size]) : 0; int rank = MPI_COMM_WORLD->rank(); if (rank == root) @@ -747,10 +701,7 @@ static void action_reducescatter(const char *const *action) { int my_proc_id = Actor::self()->getPid(); int size = 0; std::vector* trace_recvcounts = new std::vector; - if(action[3+comm_size]) - MPI_CURRENT_TYPE=decode_datatype(action[3+comm_size]); - else - MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[3 + comm_size]) ? decode_datatype(action[3 + comm_size]) : MPI_DEFAULT_TYPE; for(int i=0;isize()); void *recvbuf = smpi_get_tmp_recvbuffer(recvcount* MPI_CURRENT_TYPE2->size()); @@ -827,13 +773,11 @@ static void action_allgatherv(const char *const *action) { int recvcounts[comm_size]; int disps[comm_size]; int recv_sum=0; - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; - if(action[3+comm_size] && action[4+comm_size]) { - MPI_CURRENT_TYPE = decode_datatype(action[3+comm_size]); - MPI_CURRENT_TYPE2 = decode_datatype(action[4+comm_size]); - } else - MPI_CURRENT_TYPE = MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = + (action[3 + comm_size] && action[4 + comm_size]) ? decode_datatype(action[3 + comm_size]) : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{ + (action[3 + comm_size] && action[4 + comm_size]) ? decode_datatype(action[4 + comm_size]) : MPI_DEFAULT_TYPE}; void *sendbuf = smpi_get_tmp_sendbuffer(sendcount* MPI_CURRENT_TYPE->size()); @@ -884,17 +828,15 @@ static void action_allToAllv(const char *const *action) { int senddisps[comm_size]; int recvdisps[comm_size]; - MPI_Datatype MPI_CURRENT_TYPE2 = MPI_DEFAULT_TYPE; + MPI_CURRENT_TYPE = (action[4 + 2 * comm_size] && action[5 + 2 * comm_size]) + ? decode_datatype(action[4 + 2 * comm_size]) + : MPI_DEFAULT_TYPE; + MPI_Datatype MPI_CURRENT_TYPE2{(action[4 + 2 * comm_size] && action[5 + 2 * comm_size]) + ? decode_datatype(action[5 + 2 * comm_size]) + : MPI_DEFAULT_TYPE}; int send_buf_size=parse_double(action[2]); int recv_buf_size=parse_double(action[3+comm_size]); - if(action[4+2*comm_size] && action[5+2*comm_size]) { - MPI_CURRENT_TYPE=decode_datatype(action[4+2*comm_size]); - MPI_CURRENT_TYPE2=decode_datatype(action[5+2*comm_size]); - } - else - MPI_CURRENT_TYPE=MPI_DEFAULT_TYPE; - int my_proc_id = Actor::self()->getPid(); void *sendbuf = smpi_get_tmp_sendbuffer(send_buf_size* MPI_CURRENT_TYPE->size()); void *recvbuf = smpi_get_tmp_recvbuffer(recv_buf_size* MPI_CURRENT_TYPE2->size()); -- 2.20.1