aboutsummaryrefslogtreecommitdiff
path: root/src/profiling
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2020-03-24 13:46:22 +0000
committerfinn.williams <finn.williams@arm.com>2020-03-24 15:59:39 +0000
commitb6a402f46231688f7684dcb8c8e4ef5f4579b011 (patch)
treeef0a54d225b6ea473f33811245bcd4873b996a80 /src/profiling
parentac47210621a601a2b6ded78e003d136626434f50 (diff)
downloadarmnn-b6a402f46231688f7684dcb8c8e4ef5f4579b011.tar.gz
IVGCVSW-4596 Fix BufferManager's packet order
Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: I35e0a891cd69f2c130b8886460089c441d8e666d
Diffstat (limited to 'src/profiling')
-rw-r--r--src/profiling/BufferManager.cpp9
-rw-r--r--src/profiling/BufferManager.hpp3
-rw-r--r--src/profiling/test/ProfilingTestUtils.cpp12
3 files changed, 12 insertions, 12 deletions
diff --git a/src/profiling/BufferManager.cpp b/src/profiling/BufferManager.cpp
index f5ab729259..a7b71e5fa1 100644
--- a/src/profiling/BufferManager.cpp
+++ b/src/profiling/BufferManager.cpp
@@ -45,7 +45,7 @@ void BufferManager::Commit(IPacketBufferPtr& packetBuffer, unsigned int size, bo
std::unique_lock<std::mutex> readableListLock(m_ReadableMutex, std::defer_lock);
packetBuffer->Commit(size);
readableListLock.lock();
- m_ReadableList.push_back(std::move(packetBuffer));
+ m_ReadableList.push(std::move(packetBuffer));
readableListLock.unlock();
if (notifyConsumer)
@@ -62,7 +62,6 @@ void BufferManager::Initialize()
IPacketBufferPtr buffer = std::make_unique<PacketBuffer>(m_MaxBufferSize);
m_AvailableList.emplace_back(std::move(buffer));
}
- m_ReadableList.reserve(m_NumberOfBuffers);
}
void BufferManager::Release(IPacketBufferPtr& packetBuffer)
@@ -81,7 +80,7 @@ void BufferManager::Reset()
std::lock_guard<std::mutex> availableListLock(m_AvailableMutex);
m_AvailableList.clear();
- m_ReadableList.clear();
+ std::queue<IPacketBufferPtr>().swap(m_ReadableList);
Initialize();
}
@@ -91,8 +90,8 @@ IPacketBufferPtr BufferManager::GetReadableBuffer()
std::unique_lock<std::mutex> readableListLock(m_ReadableMutex);
if (!m_ReadableList.empty())
{
- IPacketBufferPtr buffer = std::move(m_ReadableList.back());
- m_ReadableList.pop_back();
+ IPacketBufferPtr buffer = std::move(m_ReadableList.front());
+ m_ReadableList.pop();
readableListLock.unlock();
return buffer;
}
diff --git a/src/profiling/BufferManager.hpp b/src/profiling/BufferManager.hpp
index d678cd3ec0..f4e63dab11 100644
--- a/src/profiling/BufferManager.hpp
+++ b/src/profiling/BufferManager.hpp
@@ -11,6 +11,7 @@
#include <condition_variable>
#include <mutex>
#include <vector>
+#include <queue>
namespace armnn
{
@@ -56,7 +57,7 @@ private:
std::vector<IPacketBufferPtr> m_AvailableList;
// List of readable packet buffers
- std::vector<IPacketBufferPtr> m_ReadableList;
+ std::queue<IPacketBufferPtr> m_ReadableList;
// Mutex for available packet buffer list
std::mutex m_AvailableMutex;
diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp
index 325cb40111..74e140c093 100644
--- a/src/profiling/test/ProfilingTestUtils.cpp
+++ b/src/profiling/test/ProfilingTestUtils.cpp
@@ -773,17 +773,17 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId)
// Does the inference.
runtime.EnqueueWorkload(netId, inputTensors, outputTensors);
- // Get readable buffer for inference timeline
- auto inferenceReadableBuffer = bufferManager.GetReadableBuffer();
- BOOST_CHECK(inferenceReadableBuffer != nullptr);
+ // Get readable buffer for input workload
+ auto inputReadableBuffer = bufferManager.GetReadableBuffer();
+ BOOST_CHECK(inputReadableBuffer != nullptr);
// Get readable buffer for output workload
auto outputReadableBuffer = bufferManager.GetReadableBuffer();
BOOST_CHECK(outputReadableBuffer != nullptr);
- // Get readable buffer for input workload
- auto inputReadableBuffer = bufferManager.GetReadableBuffer();
- BOOST_CHECK(inputReadableBuffer != nullptr);
+ // Get readable buffer for inference timeline
+ auto inferenceReadableBuffer = bufferManager.GetReadableBuffer();
+ BOOST_CHECK(inferenceReadableBuffer != nullptr);
// Validate input workload data
size = inputReadableBuffer->GetSize();