X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7644d8282ec471a055d7e8208c48799d8972c607..f892a79cccc53305bc9610fa00573c56a0ac6ac3:/src/smpi/bindings/smpi_pmpi_file.cpp diff --git a/src/smpi/bindings/smpi_pmpi_file.cpp b/src/smpi/bindings/smpi_pmpi_file.cpp index 1faed5f72f..2fa04be9eb 100644 --- a/src/smpi/bindings/smpi_pmpi_file.cpp +++ b/src/smpi/bindings/smpi_pmpi_file.cpp @@ -200,9 +200,12 @@ int PMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, int count,MPI_D const SmpiBenchGuard suspend_bench; 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())); + MPI_Offset prev; + fh->get_position(&prev); int ret = fh->seek(offset,MPI_SEEK_SET); if (ret == MPI_SUCCESS) ret = simgrid::smpi::File::read(fh, buf, count, datatype, status); + fh->seek(prev,MPI_SEEK_SET); TRACE_smpi_comm_out(rank_traced); return ret; } @@ -215,9 +218,12 @@ int PMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count,M aid_t rank_traced = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::CpuTIData("IO - read_at_all", count * datatype->size())); + MPI_Offset prev; + fh->get_position(&prev); int ret = fh->seek(offset,MPI_SEEK_SET); if (ret == MPI_SUCCESS) ret = fh->op_all(buf, count, datatype, status); + fh->seek(prev,MPI_SEEK_SET); TRACE_smpi_comm_out(rank_traced); return ret; } @@ -229,9 +235,12 @@ int PMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int coun const SmpiBenchGuard suspend_bench; 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())); + MPI_Offset prev; + fh->get_position(&prev); int ret = fh->seek(offset,MPI_SEEK_SET); if (ret == MPI_SUCCESS) ret = simgrid::smpi::File::write(fh, const_cast(buf), count, datatype, status); + fh->seek(prev,MPI_SEEK_SET); TRACE_smpi_comm_out(rank_traced); return ret; } @@ -244,9 +253,12 @@ int PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int aid_t rank_traced = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::CpuTIData("IO - write_at_all", count * datatype->size())); + MPI_Offset prev; + fh->get_position(&prev); int ret = fh->seek(offset,MPI_SEEK_SET); if (ret == MPI_SUCCESS) ret = fh->op_all(const_cast(buf), count, datatype, status); + fh->seek(prev,MPI_SEEK_SET); TRACE_smpi_comm_out(rank_traced); return ret; }