aboutsummaryrefslogtreecommitdiff
path: root/src/backends/aclCommon/ArmComputeTensorUtils.cpp
diff options
context:
space:
mode:
authorCathal Corbett <cathal.corbett@arm.com>2022-05-11 20:12:17 +0100
committerCathal Corbett <cathal.corbett@arm.com>2022-05-12 13:41:56 +0100
commit4b19d2249e3b8f9216ec5b410fad20c41b4c6053 (patch)
treeb7511932f11b2c27f39e1e76ac290ba3baca0fda /src/backends/aclCommon/ArmComputeTensorUtils.cpp
parent50bc39e401532f9aa838e3d9b1f3e3ae5845e37f (diff)
downloadarmnn-4b19d2249e3b8f9216ec5b410fad20c41b4c6053.tar.gz
IVGCVSW-6940 ConstTensorsAsInput: DepthwiseConvolution2d - Complete ACL
* Added backend specific optimization & test for CpuAcc and GpuAcc: PermuteDepthwiseConv2dWeights Signed-off-by: Cathal Corbett <cathal.corbett@arm.com> Change-Id: I600476b2e9c557a39818a574c1091c9d650b21b1
Diffstat (limited to 'src/backends/aclCommon/ArmComputeTensorUtils.cpp')
-rw-r--r--src/backends/aclCommon/ArmComputeTensorUtils.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.cpp b/src/backends/aclCommon/ArmComputeTensorUtils.cpp
index e476eb38a1..1960332ccf 100644
--- a/src/backends/aclCommon/ArmComputeTensorUtils.cpp
+++ b/src/backends/aclCommon/ArmComputeTensorUtils.cpp
@@ -8,6 +8,8 @@
#include "armnn/Exceptions.hpp"
#include <armnn/Descriptors.hpp>
+#include <fmt/format.h>
+
namespace armnn
{
namespace armcomputetensorutils
@@ -342,5 +344,26 @@ arm_compute::PixelValue GetPixelValue(const arm_compute::ITensorInfo* tensorInfo
}
}
+unsigned int ComputeDepthwiseConv2dDepthMultiplier(armnn::DataLayout layout,
+ const arm_compute::TensorShape& weightsShape,
+ const arm_compute::TensorShape& inputShape)
+{
+ unsigned int depthMultiplier;
+ if (layout == armnn::DataLayout::NHWC)
+ {
+ depthMultiplier = static_cast<uint32_t>(weightsShape[0]) / static_cast<uint32_t>(inputShape[0]);
+ }
+ else if (layout == armnn::DataLayout::NCHW)
+ {
+ depthMultiplier = static_cast<uint32_t>(weightsShape[2]) / static_cast<uint32_t>(inputShape[2]);
+ }
+ else
+ {
+ throw InvalidArgumentException(fmt::format("Unknown data layout for tensor conversion: {}",
+ GetDataLayoutName(layout)));
+ }
+ return depthMultiplier;
+}
+
} // namespace armcomputetensorutils
} // namespace armnn