Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Replay: Remove local variables from action_reducescatter
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Tue, 13 Mar 2018 13:59:20 +0000 (14:59 +0100)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Wed, 28 Mar 2018 15:31:38 +0000 (17:31 +0200)
src/smpi/internals/smpi_replay.cpp

index 0241c05..db6dd83 100644 (file)
@@ -12,6 +12,7 @@
 #include "smpi_request.hpp"
 #include "xbt/replay.hpp"
 
+#include <numeric>
 #include <unordered_map>
 #include <vector>
 
@@ -688,17 +689,14 @@ static void action_reducescatter(const char *const *action) {
   int comm_size = MPI_COMM_WORLD->size();
   CHECK_ACTION_PARAMS(action, comm_size+1, 1)
   int comp_size = parse_double(action[2+comm_size]);
-  int recvcounts[comm_size];
   int my_proc_id                     = Actor::self()->getPid();
-  int size = 0;
   std::vector<int>* trace_recvcounts = new std::vector<int>;
   MPI_CURRENT_TYPE = (action[3 + comm_size]) ? decode_datatype(action[3 + comm_size]) : MPI_DEFAULT_TYPE;
 
   for(int i=0;i<comm_size;i++) {
-    recvcounts[i] = atoi(action[i+2]);
-    trace_recvcounts->push_back(recvcounts[i]);
-    size+=recvcounts[i];
+    trace_recvcounts->push_back(atoi(action[i + 2]));
   }
+  int size{std::accumulate(trace_recvcounts->begin(), trace_recvcounts->end(), 0)};
 
   TRACE_smpi_comm_in(my_proc_id, __FUNCTION__,
                      new simgrid::instr::VarCollTIData("reduceScatter", -1, 0, nullptr, -1, trace_recvcounts,
@@ -708,7 +706,7 @@ static void action_reducescatter(const char *const *action) {
   void *sendbuf = smpi_get_tmp_sendbuffer(size* MPI_CURRENT_TYPE->size());
   void *recvbuf = smpi_get_tmp_recvbuffer(size* MPI_CURRENT_TYPE->size());
 
-  Colls::reduce_scatter(sendbuf, recvbuf, recvcounts, MPI_CURRENT_TYPE, MPI_OP_NULL, MPI_COMM_WORLD);
+  Colls::reduce_scatter(sendbuf, recvbuf, trace_recvcounts->data(), MPI_CURRENT_TYPE, MPI_OP_NULL, MPI_COMM_WORLD);
   smpi_execute_flops(comp_size);
 
   TRACE_smpi_comm_out(my_proc_id);