aboutsummaryrefslogtreecommitdiff
path: root/src/armnnUtils
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnnUtils')
-rw-r--r--src/armnnUtils/PrototxtConversions.cpp14
-rw-r--r--src/armnnUtils/PrototxtConversions.hpp8
-rw-r--r--src/armnnUtils/test/PrototxtConversionsTest.cpp97
3 files changed, 119 insertions, 0 deletions
diff --git a/src/armnnUtils/PrototxtConversions.cpp b/src/armnnUtils/PrototxtConversions.cpp
index 1a6c053355..cc86321a27 100644
--- a/src/armnnUtils/PrototxtConversions.cpp
+++ b/src/armnnUtils/PrototxtConversions.cpp
@@ -4,6 +4,7 @@
//
#include "PrototxtConversions.hpp"
+#include "armnn/Tensor.hpp"
#include <boost/format.hpp>
@@ -29,4 +30,17 @@ std::string ConvertInt32ToOctalString(int value)
return returnString;
}
+/// Converts an TensorShape into Prototxt representation
+std::string ConvertTensorShapeToString(const armnn::TensorShape& shape)
+{
+ std::stringstream ss;
+ for (unsigned int i = 0 ; i < shape.GetNumDimensions() ; i++)
+ {
+ ss << "dim {\n";
+ ss << "size: " << std::to_string(shape[i]) << "\n";
+ ss << "}\n";
+ }
+ return ss.str();
+
+}
} // namespace armnnUtils
diff --git a/src/armnnUtils/PrototxtConversions.hpp b/src/armnnUtils/PrototxtConversions.hpp
index c90af9edff..fb066729fe 100644
--- a/src/armnnUtils/PrototxtConversions.hpp
+++ b/src/armnnUtils/PrototxtConversions.hpp
@@ -7,10 +7,18 @@
#include <string>
+namespace armnn
+{
+class TensorShape;
+} // namespace armnn
+
namespace armnnUtils
{
/// Converts an int value into the Prototxt octal representation
std::string ConvertInt32ToOctalString(int value);
+/// Converts an TensorShape into Prototxt representation
+std::string ConvertTensorShapeToString(const armnn::TensorShape& shape);
+
} // namespace armnnUtils
diff --git a/src/armnnUtils/test/PrototxtConversionsTest.cpp b/src/armnnUtils/test/PrototxtConversionsTest.cpp
index e06fbe0f2e..f263a52340 100644
--- a/src/armnnUtils/test/PrototxtConversionsTest.cpp
+++ b/src/armnnUtils/test/PrototxtConversionsTest.cpp
@@ -4,6 +4,7 @@
//
#include <PrototxtConversions.hpp>
+#include "armnn/Tensor.hpp"
#include <boost/test/unit_test.hpp>
@@ -38,4 +39,100 @@ BOOST_AUTO_TEST_CASE(ConvertInt32ToOctalStringTest)
BOOST_ASSERT(octalString.compare("\\\\000\\\\000\\\\000\\\\377"));
}
+BOOST_AUTO_TEST_CASE(ConvertTensorShapeToStringTest)
+{
+ using armnnUtils::ConvertTensorShapeToString;
+ using armnn::TensorShape;
+
+ auto createAndConvert = [](std::initializer_list<unsigned int> dims) -> std::string
+ {
+ auto shape = TensorShape{dims};
+ return ConvertTensorShapeToString(shape);
+ };
+
+ auto output_string = createAndConvert({5});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 5\n"
+ "}"));
+
+ output_string = createAndConvert({4, 5});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 4\n"
+ "}\n"
+ "dim {\n"
+ "size: 5\n"
+ "}"
+ ));
+
+ output_string = createAndConvert({3, 4, 5});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 3\n"
+ "}\n"
+ "dim {\n"
+ "size: 4\n"
+ "}\n"
+ "dim {\n"
+ "size: 5\n"
+ "}"
+ ));
+
+ output_string = createAndConvert({2, 3, 4, 5});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 2\n"
+ "}\n"
+ "dim {\n"
+ "size: 3\n"
+ "}\n"
+ "dim {\n"
+ "size: 4\n"
+ "}\n"
+ "dim {\n"
+ "size: 5\n"
+ "}"
+ ));
+
+ output_string = createAndConvert({1, 2, 3, 4, 5});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 1\n"
+ "}\n"
+ "dim {\n"
+ "size: 2\n"
+ "}\n"
+ "dim {\n"
+ "size: 3\n"
+ "}\n"
+ "dim {\n"
+ "size: 4\n"
+ "}\n"
+ "dim {\n"
+ "size: 5\n"
+ "}"
+ ));
+
+ output_string = createAndConvert({0xffffffff, 0xffffffff});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 4294967295\n"
+ "}\n"
+ "dim {\n"
+ "size: 4294967295\n"
+ "}"
+ ));
+
+ output_string = createAndConvert({1, 0});
+ BOOST_ASSERT(output_string.compare(
+ "dim {\n"
+ "size: 1\n"
+ "}\n"
+ "dim {\n"
+ "size: 0\n"
+ "}"
+ ));
+}
+
BOOST_AUTO_TEST_SUITE_END()