aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon/test/WorkloadTestUtils.hpp')
-rw-r--r--src/backends/backendsCommon/test/WorkloadTestUtils.hpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/backends/backendsCommon/test/WorkloadTestUtils.hpp b/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
index 05f6dde35f..d03c5a9210 100644
--- a/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
+++ b/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
@@ -6,12 +6,18 @@
#include <armnn/Tensor.hpp>
+#include <backendsCommon/IBackendInternal.hpp>
+#include <backendsCommon/IMemoryManager.hpp>
+#include <backendsCommon/Workload.hpp>
#include <backendsCommon/WorkloadInfo.hpp>
namespace armnn
{
class ITensorHandle;
-}
+} // namespace armnn
+
+namespace
+{
template <typename QueueDescriptor>
void AddInputToWorkload(QueueDescriptor& descriptor,
@@ -53,4 +59,28 @@ void SetWorkloadOutput(QueueDescriptor& descriptor,
{
descriptor.m_Outputs[index] = tensorHandle;
info.m_OutputTensorInfos[index] = tensorInfo;
-} \ No newline at end of file
+}
+
+inline void ExecuteWorkload(armnn::IWorkload& workload,
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
+ bool memoryManagementRequested = true)
+{
+ const bool manageMemory = memoryManager && memoryManagementRequested;
+
+ // Acquire working memory (if needed)
+ if (manageMemory)
+ {
+ memoryManager->Acquire();
+ }
+
+ // Execute the workload
+ workload.Execute();
+
+ // Release working memory (if needed)
+ if (manageMemory)
+ {
+ memoryManager->Release();
+ }
+}
+
+} // anonymous namespace