X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4cf3bb0a2130b6a14986504ef1cd414472b91ede..7a9f189671058667e1d80feeb12f78c35de05c6b:/src/smpi/internals/smpi_replay.cpp diff --git a/src/smpi/internals/smpi_replay.cpp b/src/smpi/internals/smpi_replay.cpp index 74c51fe375..4be3f61a3e 100644 --- a/src/smpi/internals/smpi_replay.cpp +++ b/src/smpi/internals/smpi_replay.cpp @@ -594,8 +594,7 @@ static void action_gatherv(const char *const *action) { CHECK_ACTION_PARAMS(action, comm_size+1, 2) int send_size = parse_double(action[2]); std::vector disps(comm_size, 0); - int recvcounts[comm_size]; - int recv_sum=0; + std::shared_ptr> recvcounts(new std::vector(comm_size)); MPI_CURRENT_TYPE = (action[4 + comm_size] && action[5 + comm_size]) ? decode_datatype(action[4 + comm_size]) : MPI_DEFAULT_TYPE; @@ -605,9 +604,9 @@ static void action_gatherv(const char *const *action) { void *send = smpi_get_tmp_sendbuffer(send_size* MPI_CURRENT_TYPE->size()); void *recv = nullptr; for(int i=0;ibegin(), recvcounts->end(), 0); int root = (action[3 + comm_size]) ? atoi(action[3 + comm_size]) : 0; int rank = MPI_COMM_WORLD->rank(); @@ -615,13 +614,11 @@ static void action_gatherv(const char *const *action) { if(rank==root) recv = smpi_get_tmp_recvbuffer(recv_sum* MPI_CURRENT_TYPE2->size()); - std::vector* trace_recvcounts = new std::vector(recvcounts, recvcounts + comm_size); - TRACE_smpi_comm_in(rank, __FUNCTION__, new simgrid::instr::VarCollTIData( - "gatherV", root, send_size, nullptr, -1, trace_recvcounts, + "gatherV", root, send_size, nullptr, -1, recvcounts, encode_datatype(MPI_CURRENT_TYPE), encode_datatype(MPI_CURRENT_TYPE2))); - Colls::gatherv(send, send_size, MPI_CURRENT_TYPE, recv, recvcounts, disps.data(), MPI_CURRENT_TYPE2, root, + Colls::gatherv(send, send_size, MPI_CURRENT_TYPE, recv, recvcounts->data(), disps.data(), MPI_CURRENT_TYPE2, root, MPI_COMM_WORLD); TRACE_smpi_comm_out(Actor::self()->getPid());