Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
switch from pid to rank for ti-tracing the wait action
authorAugustin Degomme <adegomme@users.noreply.github.com>
Fri, 6 Aug 2021 16:47:12 +0000 (18:47 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Fri, 6 Aug 2021 16:47:12 +0000 (18:47 +0200)
It was not working well before and was leading to discrepancies and impossible to replay traces.

src/smpi/bindings/smpi_pmpi_request.cpp
src/smpi/internals/smpi_replay.cpp

index 820a747..f903f06 100644 (file)
@@ -601,7 +601,9 @@ int PMPI_Wait(MPI_Request * request, MPI_Status * status)
 
     aid_t my_proc_id = (*request)->comm() != MPI_COMM_NULL ? simgrid::s4u::this_actor::get_pid() : -1;
     TRACE_smpi_comm_in(my_proc_id, __func__,
-                       new simgrid::instr::WaitTIData((*request)->src(), (*request)->dst(), (*request)->tag()));
+                       new simgrid::instr::WaitTIData(MPI_COMM_WORLD->group()->rank((*request)->src()),
+                                                      MPI_COMM_WORLD->group()->rank((*request)->dst()),
+                                                      (*request)->tag()));
 
     retval = simgrid::smpi::Request::wait(request, status);
 
index 784f32c..2ed50c2 100644 (file)
@@ -418,20 +418,18 @@ void WaitAction::kernel(simgrid::xbt::ReplayAction& action)
     return;
   }
 
-  aid_t rank = request->comm() != MPI_COMM_NULL ? request->comm()->rank() : -1;
-
   // Must be taken before Request::wait() since the request may be set to
   // MPI_REQUEST_NULL by Request::wait!
   bool is_wait_for_receive = (request->flags() & MPI_REQ_RECV);
-  // TODO: Here we take the rank while we normally take the process id (look for get_pid())
-  TRACE_smpi_comm_in(rank, __func__, new simgrid::instr::WaitTIData(args.src, args.dst, args.tag));
+
+  TRACE_smpi_comm_in(get_pid(), __func__, new simgrid::instr::WaitTIData(args.src, args.dst, args.tag));
 
   MPI_Status status;
   Request::wait(&request, &status);
 
-  TRACE_smpi_comm_out(rank);
+  TRACE_smpi_comm_out(get_pid());
   if (is_wait_for_receive)
-    TRACE_smpi_recv(args.src, args.dst, args.tag);
+    TRACE_smpi_recv(MPI_COMM_WORLD->group()->actor(args.src), MPI_COMM_WORLD->group()->actor(args.dst), args.tag);
 }
 
 void SendAction::kernel(simgrid::xbt::ReplayAction&)