aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/NEON/functions
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2021-07-08 18:14:45 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-07-16 14:39:47 +0000
commit2b147ee857eb237613670460c52efedd43601955 (patch)
tree2c2f66754dca6d83e4967daae600e84bca8ca6b4 /src/runtime/NEON/functions
parentd0c5df2695e6e30d600c0339f547373c0c6667b0 (diff)
downloadComputeLibrary-2b147ee857eb237613670460c52efedd43601955.tar.gz
Avoid multiple Rhs matrix transformation on ClGemm
ClWinogradConv2d was performing Rhs transformation on every step impacting the performance. Adds scope logging support through ARM_COMPUTE_LOG_MSG_WITH_FUNCNAME Resolves: COMPMID-4596 Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Change-Id: Ib329d3bc8d8aa21abae9fabfe61de35cc84d4819 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5925 Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/NEON/functions')
-rw-r--r--src/runtime/NEON/functions/NEGEMM.cpp4
-rw-r--r--src/runtime/NEON/functions/NEGEMMConv2d.cpp4
-rw-r--r--src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp4
-rw-r--r--src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp4
-rw-r--r--src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp4
5 files changed, 10 insertions, 10 deletions
diff --git a/src/runtime/NEON/functions/NEGEMM.cpp b/src/runtime/NEON/functions/NEGEMM.cpp
index 168d93022f..4bf330fa1e 100644
--- a/src/runtime/NEON/functions/NEGEMM.cpp
+++ b/src/runtime/NEON/functions/NEGEMM.cpp
@@ -114,12 +114,12 @@ void NEGEMM::prepare()
// Release temporary tensors that are only used in prepare stage
for(auto &ws : _impl->workspace)
{
- const int slot = ws.first;
+ const int slot = ws.slot;
for(auto &m : _impl->aux_mem_req)
{
if(m.slot == slot && m.lifetime == MemoryLifetime::Prepare)
{
- auto tensor = ws.second.get();
+ auto tensor = ws.tensor.get();
tensor->allocator()->free();
break;
}
diff --git a/src/runtime/NEON/functions/NEGEMMConv2d.cpp b/src/runtime/NEON/functions/NEGEMMConv2d.cpp
index 3ca5239ae3..7e2ce70444 100644
--- a/src/runtime/NEON/functions/NEGEMMConv2d.cpp
+++ b/src/runtime/NEON/functions/NEGEMMConv2d.cpp
@@ -104,12 +104,12 @@ void NEGEMMConv2d::prepare()
// Release temporary tensors that are only used in prepare stage
for(auto &ws : _impl->workspace)
{
- const int slot = ws.first;
+ const int slot = ws.slot;
for(auto &m : _impl->aux_mem_req)
{
if(m.slot == slot && m.lifetime == MemoryLifetime::Prepare)
{
- auto tensor = ws.second.get();
+ auto tensor = ws.tensor.get();
tensor->allocator()->free();
break;
}
diff --git a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
index 6386a678db..23ffbce954 100644
--- a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
@@ -107,12 +107,12 @@ void NEGEMMConvolutionLayer::prepare()
}
for(auto &ws : _impl->workspace_tensors)
{
- const int slot = ws.first;
+ const int slot = ws.slot;
for(auto &m : _impl->aux_mem_req)
{
if(m.slot == slot && m.lifetime == MemoryLifetime::Prepare)
{
- auto tensor = ws.second.get();
+ auto tensor = ws.tensor.get();
tensor->allocator()->free();
break;
}
diff --git a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp
index 641a2c2b5f..64507495ca 100644
--- a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp
+++ b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp
@@ -110,12 +110,12 @@ void NEGEMMLowpMatrixMultiplyCore::prepare()
// Release temporary tensors that are only used in prepare stage
for(auto &ws : _impl->workspace_tensors)
{
- const int slot = ws.first;
+ const int slot = ws.slot;
for(auto &m : _impl->aux_mem_req)
{
if(m.slot == slot && m.lifetime == MemoryLifetime::Prepare)
{
- auto tensor = ws.second.get();
+ auto tensor = ws.tensor.get();
tensor->allocator()->free();
break;
}
diff --git a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
index 745179c050..b91048a426 100644
--- a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
@@ -99,12 +99,12 @@ void NEWinogradConvolutionLayer::prepare()
// Release temporary tensors that are only used in prepare stage
for(auto &ws : _impl->workspace)
{
- const int slot = ws.first;
+ const int slot = ws.slot;
for(auto &m : _impl->aux_mem_req)
{
if(m.slot == slot && m.lifetime == MemoryLifetime::Prepare)
{
- auto tensor = ws.second.get();
+ auto tensor = ws.tensor.get();
tensor->allocator()->free();
break;
}