aboutsummaryrefslogtreecommitdiff
path: root/src/graph/detail/ExecutionHelpers.cpp
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-05-03 20:47:16 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:51:50 +0000
commit3d1489de593574e65ef1e64a7ae64e4e56c2978b (patch)
treef87f3df521cb5ed8bd383dad89cbeb92c49670ac /src/graph/detail/ExecutionHelpers.cpp
parent54d6fae4dbb4f556cc5ec484c51681ad84c015a7 (diff)
downloadComputeLibrary-3d1489de593574e65ef1e64a7ae64e4e56c2978b.tar.gz
COMPMID-605: Transition buffer memory manager
Change-Id: Ide7c6124eb19f13f15f517e62d705646a0cd1ecd Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/130184 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'src/graph/detail/ExecutionHelpers.cpp')
-rw-r--r--src/graph/detail/ExecutionHelpers.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/graph/detail/ExecutionHelpers.cpp b/src/graph/detail/ExecutionHelpers.cpp
index c1304436f6..c370fdf916 100644
--- a/src/graph/detail/ExecutionHelpers.cpp
+++ b/src/graph/detail/ExecutionHelpers.cpp
@@ -143,7 +143,9 @@ ExecutionWorkload configure_all_nodes(Graph &g, GraphContext &ctx)
{
ExecutionWorkload workload;
workload.graph = &g;
- auto &nodes = g.nodes();
+ workload.ctx = &ctx;
+
+ auto &nodes = g.nodes();
// Create tasks
for(auto &node : nodes)
@@ -235,10 +237,31 @@ void prepare_all_tasks(ExecutionWorkload &workload)
void call_all_tasks(ExecutionWorkload &workload)
{
+ ARM_COMPUTE_ERROR_ON(workload.ctx == nullptr);
+
+ // Acquire memory for the transition buffers
+ for(auto &mm_ctx : workload.ctx->memory_managers())
+ {
+ if(mm_ctx.second.cross_group != nullptr)
+ {
+ mm_ctx.second.cross_group->acquire();
+ }
+ }
+
+ // Execute tasks
for(auto &task : workload.tasks)
{
task();
}
+
+ // Release memory for the transition buffers
+ for(auto &mm_ctx : workload.ctx->memory_managers())
+ {
+ if(mm_ctx.second.cross_group != nullptr)
+ {
+ mm_ctx.second.cross_group->release();
+ }
+ }
}
void call_all_output_node_accessors(ExecutionWorkload &workload)