From 73c0dafdcc6aaeeba571c5b48ec62f86e7a83ea0 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 23 Jan 2025 09:50:00 +0100 Subject: [PATCH 1/3] fixed: use a vector in mpibuffer this was being copied and it had pointer members --- opm/models/parallel/mpibuffer.hh | 36 +++++++++++--------------------- 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/opm/models/parallel/mpibuffer.hh b/opm/models/parallel/mpibuffer.hh index 9eb7d9e6e..b2c2995ac 100644 --- a/opm/models/parallel/mpibuffer.hh +++ b/opm/models/parallel/mpibuffer.hh @@ -29,12 +29,12 @@ #if HAVE_MPI #include +#include #endif -#include - -#include #include +#include +#include namespace Opm { @@ -47,35 +47,24 @@ class MpiBuffer public: MpiBuffer() { - data_ = NULL; - dataSize_ = 0; - setMpiDataType_(); updateMpiDataSize_(); } explicit MpiBuffer(size_t size) { - data_ = new DataType[size]; - dataSize_ = size; + data_.resize(size); setMpiDataType_(); updateMpiDataSize_(); } - MpiBuffer(const MpiBuffer&) = default; - - ~MpiBuffer() - { delete[] data_; } - /*! * \brief Set the size of the buffer */ void resize(size_t newSize) { - delete[] data_; - data_ = new DataType[newSize]; - dataSize_ = newSize; + data_.resize(newSize); updateMpiDataSize_(); } @@ -85,7 +74,7 @@ public: void send([[maybe_unused]] unsigned peerRank) { #if HAVE_MPI - MPI_Isend(data_, + MPI_Isend(data_.data(), static_cast(mpiDataSize_), mpiDataType_, static_cast(peerRank), @@ -111,7 +100,7 @@ public: void receive([[maybe_unused]] unsigned peerRank) { #if HAVE_MPI - MPI_Recv(data_, + MPI_Recv(data_.data(), static_cast(mpiDataSize_), mpiDataType_, static_cast(peerRank), @@ -157,14 +146,14 @@ public: * \brief Returns the number of data objects in the buffer */ size_t size() const - { return dataSize_; } + { return data_.size(); } /*! * \brief Provide access to the buffer data. */ DataType& operator[](size_t i) { - assert(i < dataSize_); + assert(i < data_.size()); return data_[i]; } @@ -173,7 +162,7 @@ public: */ const DataType& operator[](size_t i) const { - assert(i < dataSize_); + assert(i < data_.size()); return data_[i]; } @@ -217,14 +206,13 @@ private: void updateMpiDataSize_() { #if HAVE_MPI - mpiDataSize_ = dataSize_; + mpiDataSize_ = data_.size(); if (mpiDataType_ == MPI_BYTE) mpiDataSize_ *= sizeof(DataType); #endif // HAVE_MPI } - DataType *data_; - size_t dataSize_; + std::vector data_; #if HAVE_MPI size_t mpiDataSize_; MPI_Datatype mpiDataType_; From fbd4e5c1d59dff08e8470a5cab44c2bebc45f508 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 23 Jan 2025 09:51:08 +0100 Subject: [PATCH 2/3] mpibuffer: change to std::size_t --- opm/models/parallel/mpibuffer.hh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/opm/models/parallel/mpibuffer.hh b/opm/models/parallel/mpibuffer.hh index b2c2995ac..239008cfb 100644 --- a/opm/models/parallel/mpibuffer.hh +++ b/opm/models/parallel/mpibuffer.hh @@ -33,7 +33,7 @@ #endif #include -#include +#include #include namespace Opm { @@ -51,7 +51,7 @@ public: updateMpiDataSize_(); } - explicit MpiBuffer(size_t size) + explicit MpiBuffer(std::size_t size) { data_.resize(size); @@ -62,7 +62,7 @@ public: /*! * \brief Set the size of the buffer */ - void resize(size_t newSize) + void resize(std::size_t newSize) { data_.resize(newSize); updateMpiDataSize_(); @@ -145,13 +145,13 @@ public: /*! * \brief Returns the number of data objects in the buffer */ - size_t size() const + std::size_t size() const { return data_.size(); } /*! * \brief Provide access to the buffer data. */ - DataType& operator[](size_t i) + DataType& operator[](std::size_t i) { assert(i < data_.size()); return data_[i]; @@ -160,7 +160,7 @@ public: /*! * \brief Provide access to the buffer data. */ - const DataType& operator[](size_t i) const + const DataType& operator[](std::size_t i) const { assert(i < data_.size()); return data_[i]; @@ -214,7 +214,7 @@ private: std::vector data_; #if HAVE_MPI - size_t mpiDataSize_; + std::size_t mpiDataSize_; MPI_Datatype mpiDataType_; MPI_Request mpiRequest_; MPI_Status mpiStatus_; From 066f27bae5e3c0b1cd6090f5c1472b3d5aa73425 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 23 Jan 2025 09:54:38 +0100 Subject: [PATCH 3/3] mpibuffer: change to std::is_same_v --- opm/models/parallel/mpibuffer.hh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/opm/models/parallel/mpibuffer.hh b/opm/models/parallel/mpibuffer.hh index 239008cfb..fd6ac7200 100644 --- a/opm/models/parallel/mpibuffer.hh +++ b/opm/models/parallel/mpibuffer.hh @@ -171,31 +171,31 @@ private: { #if HAVE_MPI // set the MPI data type - if (std::is_same::value) + if (std::is_same_v) mpiDataType_ = MPI_CHAR; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_UNSIGNED_CHAR; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_SHORT; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_UNSIGNED_SHORT; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_INT; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_UNSIGNED; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_LONG; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_UNSIGNED_LONG; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_LONG_LONG; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_UNSIGNED_LONG_LONG; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_FLOAT; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_DOUBLE; - else if (std::is_same::value) + else if (std::is_same_v) mpiDataType_ = MPI_LONG_DOUBLE; else { mpiDataType_ = MPI_BYTE;