Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove explicit conversion to std::string when it's not required.
[simgrid.git] / src / smpi / bindings / smpi_pmpi_coll.cpp
index a8da1d4..f83a8d3 100644 (file)
@@ -76,8 +76,9 @@ int PMPI_Ibcast(void* buf, int count, MPI_Datatype datatype, int root, MPI_Comm
                      new simgrid::instr::CollTIData(request == MPI_REQUEST_IGNORED ? "bcast" : "ibcast", root, -1.0,
                                                     count, 0,
                                                     simgrid::smpi::Datatype::encode(datatype), ""));
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // No barrier in Ibcast
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   if (comm->size() > 1) {
     if (request == MPI_REQUEST_IGNORED)
@@ -120,7 +121,7 @@ int PMPI_Igather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void
   }
   CHECK_ROOT(7)
   CHECK_REQUEST(9)
-  CHECK_COLLECTIVE(comm, std::string(request == MPI_REQUEST_IGNORED ? "PMPI_Gather" : "PMPI_Igather") + +" with root " +
+  CHECK_COLLECTIVE(comm, std::string(request == MPI_REQUEST_IGNORED ? "PMPI_Gather" : "PMPI_Igather") + " with root " +
                              std::to_string(root))
 
   const void* real_sendbuf   = sendbuf;
@@ -138,8 +139,9 @@ int PMPI_Igather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, void
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Igather
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   aid_t pid = simgrid::s4u::this_actor::get_pid();
 
@@ -197,8 +199,9 @@ int PMPI_Igatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype, voi
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Igatherv
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   const void* real_sendbuf   = sendbuf;
   int real_sendcount         = sendcount;
@@ -270,9 +273,6 @@ int PMPI_Iallgather(const void* sendbuf, int sendcount, MPI_Datatype sendtype, v
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   aid_t pid = simgrid::s4u::this_actor::get_pid();
 
   TRACE_smpi_comm_in(pid, request == MPI_REQUEST_IGNORED ? "PMPI_Allgather" : "PMPI_Iallggather",
@@ -320,9 +320,6 @@ int PMPI_Iallgatherv(const void* sendbuf, int sendcount, MPI_Datatype sendtype,
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   if (sendbuf == MPI_IN_PLACE) {
     sendbuf   = static_cast<char*>(recvbuf) + recvtype->get_extent() * displs[comm->rank()];
     sendcount = recvcounts[comm->rank()];
@@ -391,8 +388,9 @@ int PMPI_Iscatter(const void* sendbuf, int sendcount, MPI_Datatype sendtype, voi
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Iscatter
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   aid_t pid = simgrid::s4u::this_actor::get_pid();
 
@@ -450,8 +448,9 @@ int PMPI_Iscatterv(const void* sendbuf, const int* sendcounts, const int* displs
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Iscatterv
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   aid_t pid        = simgrid::s4u::this_actor::get_pid();
 
@@ -504,8 +503,9 @@ int PMPI_Ireduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype dat
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Ireduce
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   aid_t pid = simgrid::s4u::this_actor::get_pid();
 
@@ -560,9 +560,6 @@ int PMPI_Iallreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   std::vector<unsigned char> tmp_sendbuf;
   const void* real_sendbuf = smpi_get_in_place_buf(sendbuf, recvbuf, tmp_sendbuf, count, datatype);
 
@@ -603,8 +600,9 @@ int PMPI_Iscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datat
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Iscan
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   aid_t pid = simgrid::s4u::this_actor::get_pid();
   std::vector<unsigned char> tmp_sendbuf;
@@ -644,8 +642,9 @@ int PMPI_Iexscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype dat
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
+  if (simgrid::config::get_value<bool>("smpi/barrier-collectives") &&
+      request == MPI_REQUEST_IGNORED) // no barrier in Iexscan
+    smpi_deployment_startup_barrier(smpi_process()->get_instance_id());
 
   aid_t pid = simgrid::s4u::this_actor::get_pid();
   std::vector<unsigned char> tmp_sendbuf;
@@ -691,9 +690,6 @@ int PMPI_Ireduce_scatter(const void *sendbuf, void *recvbuf, const int *recvcoun
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   aid_t pid                          = simgrid::s4u::this_actor::get_pid();
   auto trace_recvcounts              = std::make_shared<std::vector<int>>();
   trace_recvcounts->insert(trace_recvcounts->end(), &recvcounts[0], &recvcounts[comm->size()]);
@@ -744,9 +740,6 @@ int PMPI_Ireduce_scatter_block(const void* sendbuf, void* recvbuf, int recvcount
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   int count = comm->size();
 
   aid_t pid                          = simgrid::s4u::this_actor::get_pid();
@@ -814,9 +807,6 @@ int PMPI_Ialltoall(const void* sendbuf, int sendcount, MPI_Datatype sendtype, vo
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   TRACE_smpi_comm_in(pid, request == MPI_REQUEST_IGNORED ? "PMPI_Alltoall" : "PMPI_Ialltoall",
                      new simgrid::instr::CollTIData(
                          request == MPI_REQUEST_IGNORED ? "alltoall" : "ialltoall", -1, -1.0,
@@ -870,9 +860,6 @@ int PMPI_Ialltoallv(const void* sendbuf, const int* sendcounts, const int* sendd
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   int send_size                      = 0;
   int recv_size                      = 0;
   auto trace_sendcounts              = std::make_shared<std::vector<int>>();
@@ -968,9 +955,6 @@ int PMPI_Ialltoallw(const void* sendbuf, const int* sendcounts, const int* sendd
 
   const SmpiBenchGuard suspend_bench;
 
-  if(simgrid::config::get_value<bool>("smpi/colls-inject-barrier"))
-    simgrid::smpi::colls::barrier(comm);
-
   int send_size                      = 0;
   int recv_size                      = 0;
   auto trace_sendcounts              = std::make_shared<std::vector<int>>();