diff --git a/src/core/mpi/BufferSystem.cpp b/src/core/mpi/BufferSystem.cpp index cfe037d8fbf8a56282a9a9798630e1321920ee3a..a6e64b887be17fe5aaf3a91c160c61a2363b8467 100644 --- a/src/core/mpi/BufferSystem.cpp +++ b/src/core/mpi/BufferSystem.cpp @@ -56,6 +56,7 @@ void BufferSystem::iterator::operator++() } else { bufferSystem_.bytesReceived_ += currentRecvBuffer_->size() * sizeof(RecvBuffer::ElementType); + bufferSystem_.numberOfReceives_ += 1; } } @@ -307,7 +308,8 @@ void BufferSystem::sendAll() { if ( iter->second.buffer.size() > 0 ) { - bytesSent_ += iter->second.buffer.size() * sizeof(SendBuffer::ElementType); + bytesSent_ += iter->second.buffer.size() * sizeof(SendBuffer::ElementType); + numberOfSends_ += 1; currentComm_->send( iter->first, iter->second.buffer ); } @@ -338,7 +340,8 @@ void BufferSystem::send( MPIRank rank ) if ( iter->second.buffer.size() > 0 ) { - bytesSent_ += iter->second.buffer.size() * sizeof(SendBuffer::ElementType); + bytesSent_ += iter->second.buffer.size() * sizeof(SendBuffer::ElementType); + numberOfSends_ += 1; currentComm_->send( rank, iter->second.buffer ); } @@ -372,8 +375,11 @@ void BufferSystem::startCommunication() currentComm_->scheduleReceives( recvInfos_ ); communicationRunning_ = true; - bytesSent_ = 0; - bytesReceived_ = 0; + bytesSent_ = 0; + bytesReceived_ = 0; + + numberOfSends_ = 0; + numberOfReceives_ = 0; } diff --git a/src/core/mpi/BufferSystem.h b/src/core/mpi/BufferSystem.h index 03ea8bcbe058513fbb04222df6ec089895a64f3f..926a7181ffca5cab7ff418cef67057aef20c2066 100644 --- a/src/core/mpi/BufferSystem.h +++ b/src/core/mpi/BufferSystem.h @@ -193,9 +193,16 @@ public: //@} //******************************************************************************************************************* + ///Bytes sent during the current or last communication int64_t getBytesSent() const { return bytesSent_; } + ///Bytes received during the current or last communication int64_t getBytesReceived() const { return bytesReceived_; } + ///Communication partners during current or last send operation + int64_t getNumberOfSends() const { return numberOfSends_; } + ///Communication partners during current or last receive operation + int64_t getNumberOfReceives() const { return numberOfReceives_; } + //* Rank Ranges ************************************************************************************************* /*! \name Rank Ranges */ @@ -244,8 +251,11 @@ protected: //each concurrently running communication uses different tags static std::set<int> activeTags_; - int64_t bytesSent_ = 0; ///< number of bytes sent during last communication - int64_t bytesReceived_ = 0; ///< number of bytes received during last communication + int64_t bytesSent_ = 0; ///< number of bytes sent during last communication + int64_t bytesReceived_ = 0; ///< number of bytes received during last communication + + int64_t numberOfSends_ = 0; ///< number of communication partners during last send + int64_t numberOfReceives_ = 0; ///< number of communication partners during last receive };