aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon')
-rw-r--r--src/backends/backendsCommon/CpuTensorHandle.cpp16
-rw-r--r--src/backends/backendsCommon/CpuTensorHandle.hpp21
2 files changed, 23 insertions, 14 deletions
diff --git a/src/backends/backendsCommon/CpuTensorHandle.cpp b/src/backends/backendsCommon/CpuTensorHandle.cpp
index 9dcd3f38df..de83048340 100644
--- a/src/backends/backendsCommon/CpuTensorHandle.cpp
+++ b/src/backends/backendsCommon/CpuTensorHandle.cpp
@@ -11,6 +11,22 @@
namespace armnn
{
+TensorShape GetUnpaddedTensorStrides(const TensorInfo& tensorInfo)
+{
+ TensorShape shape(tensorInfo.GetShape());
+ auto size = GetDataTypeSize(tensorInfo.GetDataType());
+ auto runningSize = size;
+ std::vector<unsigned int> strides(shape.GetNumDimensions());
+ auto lastIdx = shape.GetNumDimensions()-1;
+ for (unsigned int i=0; i < lastIdx ; i++)
+ {
+ strides[lastIdx-i] = runningSize;
+ runningSize *= shape[lastIdx-i];
+ }
+ strides[0] = runningSize;
+ return TensorShape(shape.GetNumDimensions(), strides.data());
+}
+
ConstCpuTensorHandle::ConstCpuTensorHandle(const TensorInfo& tensorInfo)
: m_TensorInfo(tensorInfo)
, m_Memory(nullptr)
diff --git a/src/backends/backendsCommon/CpuTensorHandle.hpp b/src/backends/backendsCommon/CpuTensorHandle.hpp
index dd6413f2e7..5fefc125c1 100644
--- a/src/backends/backendsCommon/CpuTensorHandle.hpp
+++ b/src/backends/backendsCommon/CpuTensorHandle.hpp
@@ -16,6 +16,10 @@
namespace armnn
{
+// Get a TensorShape representing the strides (in bytes) for each dimension
+// of a tensor, assuming fully packed data with no padding
+TensorShape GetUnpaddedTensorStrides(const TensorInfo& tensorInfo);
+
// Abstract tensor handles wrapping a CPU-readable region of memory, interpreting it as tensor data.
class ConstCpuTensorHandle : public ITensorHandle
{
@@ -41,18 +45,7 @@ public:
TensorShape GetStrides() const override
{
- TensorShape shape(m_TensorInfo.GetShape());
- auto size = GetDataTypeSize(m_TensorInfo.GetDataType());
- auto runningSize = size;
- std::vector<unsigned int> strides(shape.GetNumDimensions());
- auto lastIdx = shape.GetNumDimensions()-1;
- for (unsigned int i=0; i < lastIdx ; i++)
- {
- strides[lastIdx-i] = runningSize;
- runningSize *= shape[lastIdx-i];
- }
- strides[0] = runningSize;
- return TensorShape(shape.GetNumDimensions(), strides.data());
+ return GetUnpaddedTensorStrides(m_TensorInfo);
}
TensorShape GetShape() const override { return m_TensorInfo.GetShape(); }
@@ -63,8 +56,8 @@ protected:
private:
// Only used for testing
- void CopyOutTo(void *) const override {}
- void CopyInFrom(const void*) override {}
+ void CopyOutTo(void *) const override { BOOST_ASSERT_MSG(false, "Unimplemented"); }
+ void CopyInFrom(const void*) override { BOOST_ASSERT_MSG(false, "Unimplemented"); }
ConstCpuTensorHandle(const ConstCpuTensorHandle& other) = delete;
ConstCpuTensorHandle& operator=(const ConstCpuTensorHandle& other) = delete;