From: Arnaud Giersch Date: Tue, 1 Jun 2021 20:45:17 +0000 (+0200) Subject: Add missing calls to smpi_bench_begin() on error paths. X-Git-Tag: v3.28~178 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0d39fe22fa68344d00c93a2bbc0af4ce11c32191 Add missing calls to smpi_bench_begin() on error paths. --- diff --git a/src/smpi/bindings/smpi_pmpi_coll.cpp b/src/smpi/bindings/smpi_pmpi_coll.cpp index e52ae3b6d5..85bdb605b6 100644 --- a/src/smpi/bindings/smpi_pmpi_coll.cpp +++ b/src/smpi/bindings/smpi_pmpi_coll.cpp @@ -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) diff --git a/src/smpi/bindings/smpi_pmpi_file.cpp b/src/smpi/bindings/smpi_pmpi_file.cpp index 1cf3dbee0e..d4be5c6ce9 100644 --- a/src/smpi/bindings/smpi_pmpi_file.cpp +++ b/src/smpi/bindings/smpi_pmpi_file.cpp @@ -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(buf, count, datatype, status); + if (ret == MPI_SUCCESS) + ret = fh->op_all(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(buf), count, datatype, status); + if (ret == MPI_SUCCESS) + ret = simgrid::smpi::File::write(fh, const_cast(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(const_cast(buf), count, datatype, status); + if (ret == MPI_SUCCESS) + ret = fh->op_all(const_cast(buf), count, datatype, status); TRACE_smpi_comm_out(rank_traced); smpi_bench_begin(); return ret; diff --git a/src/smpi/bindings/smpi_pmpi_request.cpp b/src/smpi/bindings/smpi_pmpi_request.cpp index 19de25e0c9..44c748a183 100644 --- a/src/smpi/bindings/smpi_pmpi_request.cpp +++ b/src/smpi/bindings/smpi_pmpi_request.cpp @@ -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(),