Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add missing calls to smpi_bench_begin() on error paths.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 1 Jun 2021 20:45:17 +0000 (22:45 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 1 Jun 2021 20:49:57 +0000 (22:49 +0200)
src/smpi/bindings/smpi_pmpi_coll.cpp
src/smpi/bindings/smpi_pmpi_file.cpp
src/smpi/bindings/smpi_pmpi_request.cpp

index e52ae3b..85bdb60 100644 (file)
@@ -927,8 +927,10 @@ int PMPI_Ialltoallw(const void* sendbuf, const int* sendcounts, const int* sendd
   const MPI_Datatype* real_sendtypes = sendtypes;
   unsigned long maxsize      = 0;
   for (int i = 0; i < size; i++) { // copy data to avoid bad free
-    if (recvtypes[i] == MPI_DATATYPE_NULL)
+    if (recvtypes[i] == MPI_DATATYPE_NULL) {
+      smpi_bench_begin();
       return MPI_ERR_TYPE;
+    }
     recv_size += recvcounts[i] * recvtypes[i]->size();
     trace_recvcounts->push_back(recvcounts[i] * recvtypes[i]->size());
     if ((recvdispls[i] + (recvcounts[i] * recvtypes[i]->size())) > maxsize)
index 1cf3dbe..d4be5c6 100644 (file)
@@ -208,9 +208,8 @@ int PMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, int count,MPI_D
   aid_t rank_traced = simgrid::s4u::this_actor::get_pid();
   TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::CpuTIData("IO - read", count * datatype->size()));
   int ret = fh->seek(offset,MPI_SEEK_SET);
-  if(ret!=MPI_SUCCESS)
-    return ret;
-  ret = simgrid::smpi::File::read(fh, buf, count, datatype, status);
+  if (ret == MPI_SUCCESS)
+    ret = simgrid::smpi::File::read(fh, buf, count, datatype, status);
   TRACE_smpi_comm_out(rank_traced);
   smpi_bench_begin();
   return ret;
@@ -224,9 +223,8 @@ int PMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count,M
   TRACE_smpi_comm_in(rank_traced, __func__,
                      new simgrid::instr::CpuTIData("IO - read_at_all", count * datatype->size()));
   int ret = fh->seek(offset,MPI_SEEK_SET);
-  if(ret!=MPI_SUCCESS)
-    return ret;
-  ret = fh->op_all<simgrid::smpi::File::read>(buf, count, datatype, status);
+  if (ret == MPI_SUCCESS)
+    ret = fh->op_all<simgrid::smpi::File::read>(buf, count, datatype, status);
   TRACE_smpi_comm_out(rank_traced);
   smpi_bench_begin();
   return ret;
@@ -240,9 +238,8 @@ int PMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int coun
   aid_t rank_traced = simgrid::s4u::this_actor::get_pid();
   TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::CpuTIData("IO - write", count * datatype->size()));
   int ret = fh->seek(offset,MPI_SEEK_SET);
-  if(ret!=MPI_SUCCESS)
-    return ret;
-  ret = simgrid::smpi::File::write(fh, const_cast<void*>(buf), count, datatype, status);
+  if (ret == MPI_SUCCESS)
+    ret = simgrid::smpi::File::write(fh, const_cast<void*>(buf), count, datatype, status);
   TRACE_smpi_comm_out(rank_traced);
   smpi_bench_begin();
   return ret;
@@ -256,9 +253,8 @@ int PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int
   TRACE_smpi_comm_in(rank_traced, __func__,
                      new simgrid::instr::CpuTIData("IO - write_at_all", count * datatype->size()));
   int ret = fh->seek(offset,MPI_SEEK_SET);
-  if(ret!=MPI_SUCCESS)
-    return ret;
-  ret = fh->op_all<simgrid::smpi::File::write>(const_cast<void*>(buf), count, datatype, status);
+  if (ret == MPI_SUCCESS)
+    ret = fh->op_all<simgrid::smpi::File::write>(const_cast<void*>(buf), count, datatype, status);
   TRACE_smpi_comm_out(rank_traced);
   smpi_bench_begin();
   return ret;
index 19de25e..44c748a 100644 (file)
@@ -311,8 +311,10 @@ int PMPI_Bsend(const void* buf, int count, MPI_Datatype datatype, int dst, int t
   void* bsend_buf = nullptr;
   smpi_process()->bsend_buffer(&bsend_buf, &bsend_buf_size);
   int size = datatype->get_extent() * count;
-  if(bsend_buf==nullptr || bsend_buf_size < size + MPI_BSEND_OVERHEAD )
+  if (bsend_buf == nullptr || bsend_buf_size < size + MPI_BSEND_OVERHEAD) {
+    smpi_bench_begin();
     return MPI_ERR_BUFFER;
+  }
   TRACE_smpi_comm_in(my_proc_id, __func__,
                      new simgrid::instr::Pt2PtTIData("bsend", dst,
                                                      datatype->is_replayable() ? count : count * datatype->size(),
@@ -337,8 +339,10 @@ int PMPI_Ibsend(const void* buf, int count, MPI_Datatype datatype, int dst, int
   void* bsend_buf = nullptr;
   smpi_process()->bsend_buffer(&bsend_buf, &bsend_buf_size);
   int size = datatype->get_extent() * count;
-  if(bsend_buf==nullptr || bsend_buf_size < size + MPI_BSEND_OVERHEAD )
+  if (bsend_buf == nullptr || bsend_buf_size < size + MPI_BSEND_OVERHEAD) {
+    smpi_bench_begin();
     return MPI_ERR_BUFFER;
+  }
   TRACE_smpi_comm_in(my_proc_id, __func__,
                      new simgrid::instr::Pt2PtTIData("ibsend", dst,
                                                      datatype->is_replayable() ? count : count * datatype->size(),