aboutsummaryrefslogtreecommitdiff
path: root/src/armnnCaffeParser/test
diff options
context:
space:
mode:
authortelsoa01 <telmo.soares@arm.com>2018-08-31 09:22:23 +0100
committertelsoa01 <telmo.soares@arm.com>2018-08-31 09:22:23 +0100
commitc577f2c6a3b4ddb6ba87a882723c53a248afbeba (patch)
treebd7d4c148df27f8be6649d313efb24f536b7cf34 /src/armnnCaffeParser/test
parent4c7098bfeab1ffe1cdc77f6c15548d3e73274746 (diff)
downloadarmnn-c577f2c6a3b4ddb6ba87a882723c53a248afbeba.tar.gz
Release 18.08
Diffstat (limited to 'src/armnnCaffeParser/test')
-rw-r--r--src/armnnCaffeParser/test/TestAdd.cpp2
-rw-r--r--src/armnnCaffeParser/test/TestConcat.cpp2
-rw-r--r--src/armnnCaffeParser/test/TestConvolution.cpp133
-rw-r--r--src/armnnCaffeParser/test/TestDropout.cpp2
-rw-r--r--src/armnnCaffeParser/test/TestInPlace.cpp4
-rw-r--r--src/armnnCaffeParser/test/TestInputs.cpp22
-rw-r--r--src/armnnCaffeParser/test/TestMul.cpp2
-rw-r--r--src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp2
-rw-r--r--src/armnnCaffeParser/test/TestPooling2d.cpp2
-rw-r--r--src/armnnCaffeParser/test/TestSplit.cpp2
10 files changed, 154 insertions, 19 deletions
diff --git a/src/armnnCaffeParser/test/TestAdd.cpp b/src/armnnCaffeParser/test/TestAdd.cpp
index 7d91924638..1ee593739e 100644
--- a/src/armnnCaffeParser/test/TestAdd.cpp
+++ b/src/armnnCaffeParser/test/TestAdd.cpp
@@ -8,7 +8,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct AddFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct AddFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
AddFixture()
{
diff --git a/src/armnnCaffeParser/test/TestConcat.cpp b/src/armnnCaffeParser/test/TestConcat.cpp
index 441c28c837..52ef4aff4b 100644
--- a/src/armnnCaffeParser/test/TestConcat.cpp
+++ b/src/armnnCaffeParser/test/TestConcat.cpp
@@ -8,7 +8,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct ConcatFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct ConcatFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
ConcatFixture()
{
diff --git a/src/armnnCaffeParser/test/TestConvolution.cpp b/src/armnnCaffeParser/test/TestConvolution.cpp
new file mode 100644
index 0000000000..4e3af3ca85
--- /dev/null
+++ b/src/armnnCaffeParser/test/TestConvolution.cpp
@@ -0,0 +1,133 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// See LICENSE file in the project root for full license information.
+//
+#include <boost/test/unit_test.hpp>
+#include "armnnCaffeParser/ICaffeParser.hpp"
+#include "ParserPrototxtFixture.hpp"
+#include <sstream>
+#include <initializer_list>
+
+namespace
+{
+
+template <typename T>
+std::string TaggedSequence(const std::string & tag, const std::initializer_list<T> & data)
+{
+ bool first = true;
+ std::stringstream ss;
+ for (auto && d : data)
+ {
+ if (!first)
+ {
+ ss << " , ";
+ }
+ else
+ {
+ first = false;
+ }
+ ss << " " << tag << " : " << d << " ";
+ }
+ return ss.str();
+}
+
+template <typename T>
+std::string TaggedSequence(const std::string & tag, T data, unsigned int n)
+{
+ std::stringstream ss;
+ for (unsigned int i=0; i<n; ++i)
+ {
+ if (i>0)
+ {
+ ss << " , ";
+ }
+ ss << " " << tag << " : " << data << " ";
+ }
+ return ss.str();
+}
+
+} // namespace <anonymous>
+
+BOOST_AUTO_TEST_SUITE(CaffeParser)
+
+struct ConvolutionFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+{
+ ConvolutionFixture(const std::initializer_list<unsigned int> & inputDims,
+ const std::initializer_list<float> & filterData,
+ unsigned int kernelSize,
+ unsigned int numOutput=1,
+ unsigned int group=1)
+ {
+ m_Prototext = R"(
+ name: "ConvolutionTest"
+ layer {
+ name: "input1"
+ type: "Input"
+ top: "input1"
+ input_param { shape: { )" + TaggedSequence("dim", inputDims) + R"( } }
+ }
+ layer {
+ name: "conv1"
+ type: "Convolution"
+ bottom: "input1"
+ top: "conv1"
+ blobs: { )" + TaggedSequence("data", filterData) + R"( }
+ blobs: { )" + TaggedSequence("data", 0, numOutput) + R"( }
+ convolution_param {
+ num_output: )" + std::to_string(numOutput) + R"(
+ pad: 0
+ kernel_size: )" + std::to_string(kernelSize) + R"(
+ stride: 1
+ group: )" + std::to_string(group) + R"(
+ }
+ }
+ )";
+ SetupSingleInputSingleOutput("input1", "conv1");
+ }
+};
+
+struct SimpleConvolutionFixture : public ConvolutionFixture
+{
+ SimpleConvolutionFixture()
+ : ConvolutionFixture( {1, 1, 2, 2}, {1.0f, 1.0f, 1.0f, 1.0f}, 2)
+ {
+ }
+};
+
+BOOST_FIXTURE_TEST_CASE(SimpleConvolution, SimpleConvolutionFixture)
+{
+ RunTest<4>({ 1, 3, 5, 7 }, { 16 });
+}
+
+struct GroupConvolutionFixture : public ConvolutionFixture
+{
+ GroupConvolutionFixture()
+ : ConvolutionFixture(
+ {1, 2, 2, 2},
+ {
+ 1.0f, 1.0f, 1.0f, 1.0f, // filter for channel #0
+ 2.0f, 2.0f, 2.0f, 2.0f // filter for channel #1
+ },
+ 2, // kernel size is 2x2
+ 2, // number of output channels is 2
+ 2) // number of groups (separate filters)
+ {
+ }
+};
+
+BOOST_FIXTURE_TEST_CASE(GroupConvolution, GroupConvolutionFixture)
+{
+ RunTest<4>(
+ {
+ 1, 2, 3, 4, // input channel #0
+ 5, 6, 7, 8, // input channel #1
+ },
+ {
+ 10, // convolution result for channel #0 applying filter #0
+ 52 // same for channel #1 and filter #1
+ }
+ );
+}
+
+
+BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file
diff --git a/src/armnnCaffeParser/test/TestDropout.cpp b/src/armnnCaffeParser/test/TestDropout.cpp
index 16f2c2728c..66135251e0 100644
--- a/src/armnnCaffeParser/test/TestDropout.cpp
+++ b/src/armnnCaffeParser/test/TestDropout.cpp
@@ -9,7 +9,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct DropoutFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct DropoutFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
DropoutFixture()
{
diff --git a/src/armnnCaffeParser/test/TestInPlace.cpp b/src/armnnCaffeParser/test/TestInPlace.cpp
index 3954baa75b..623f01c8f1 100644
--- a/src/armnnCaffeParser/test/TestInPlace.cpp
+++ b/src/armnnCaffeParser/test/TestInPlace.cpp
@@ -9,7 +9,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
// The pooling layer should take its input from the relu, not the add directly.
-struct InPlaceFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct InPlaceFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
InPlaceFixture()
{
@@ -59,7 +59,7 @@ BOOST_FIXTURE_TEST_CASE(ParseInPlace, InPlaceFixture)
// The requested output of the network is a layer which has an activation attached.
// The output of the network should therefore actually be the activation layer.
-struct InPlaceOutputFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct InPlaceOutputFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
InPlaceOutputFixture()
{
diff --git a/src/armnnCaffeParser/test/TestInputs.cpp b/src/armnnCaffeParser/test/TestInputs.cpp
index f0e2343a33..b8458de5a7 100644
--- a/src/armnnCaffeParser/test/TestInputs.cpp
+++ b/src/armnnCaffeParser/test/TestInputs.cpp
@@ -35,16 +35,18 @@ BOOST_AUTO_TEST_CASE(InputShapes)
std::string implicitInputNoShape = "name: \"Minimal\"\n"
"input: \"data\" \n";
- armnn::IRuntimePtr runtime(armnn::IRuntime::Create(armnn::Compute::CpuRef));
+ armnn::IRuntime::CreationOptions options;
+ armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
armnnCaffeParser::ICaffeParserPtr parser(armnnCaffeParser::ICaffeParser::Create());
armnn::INetworkPtr network(nullptr, nullptr);
armnn::NetworkId netId;
// Check everything works normally
+ std::vector<armnn::Compute> backends = {armnn::Compute::CpuRef};
{
network = parser->CreateNetworkFromString(explicitInput.c_str(), {}, { "data" });
BOOST_TEST(network.get());
- runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec()));
+ runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec()));
armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data");
armnn::TensorInfo inputTensorInfo = inputBindingInfo.second;
@@ -56,11 +58,11 @@ BOOST_AUTO_TEST_CASE(InputShapes)
BOOST_TEST(inputTensorInfo.GetShape()[3] == 4);
}
- // Check everything works with implicit input
+ // Checks everything works with implicit input.
{
network = parser->CreateNetworkFromString(implicitInput.c_str(), {}, { "data" });
BOOST_TEST(network.get());
- runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec()));
+ runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec()));
armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data");
armnn::TensorInfo inputTensorInfo = inputBindingInfo.second;
@@ -72,11 +74,11 @@ BOOST_AUTO_TEST_CASE(InputShapes)
BOOST_TEST(inputTensorInfo.GetShape()[3] == 4);
}
- // Check everything works with implicit and passing shape
+ // Checks everything works with implicit and passing shape.
{
network = parser->CreateNetworkFromString(implicitInput.c_str(), { {"data", { 2, 2, 3, 4 } } }, { "data" });
BOOST_TEST(network.get());
- runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec()));
+ runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec()));
armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data");
armnn::TensorInfo inputTensorInfo = inputBindingInfo.second;
@@ -88,11 +90,11 @@ BOOST_AUTO_TEST_CASE(InputShapes)
BOOST_TEST(inputTensorInfo.GetShape()[3] == 4);
}
- // Check everything works with implicit (no shape) and passing shape
+ // Checks everything works with implicit (no shape) and passing shape.
{
network = parser->CreateNetworkFromString(implicitInputNoShape.c_str(), {{"data", {2, 2, 3, 4} }}, { "data" });
BOOST_TEST(network.get());
- runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec()));
+ runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec()));
armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data");
armnn::TensorInfo inputTensorInfo = inputBindingInfo.second;
@@ -104,13 +106,13 @@ BOOST_AUTO_TEST_CASE(InputShapes)
BOOST_TEST(inputTensorInfo.GetShape()[3] == 4);
}
- // Check exception on incompatible shapes
+ // Checks exception on incompatible shapes.
{
BOOST_CHECK_THROW(parser->CreateNetworkFromString(implicitInput.c_str(), {{"data",{ 2, 2, 3, 2 }}}, {"data"}),
armnn::ParseException);
}
- // Check exception when no shape available
+ // Checks exception when no shape available.
{
BOOST_CHECK_THROW(parser->CreateNetworkFromString(implicitInputNoShape.c_str(), {}, { "data" }),
armnn::ParseException);
diff --git a/src/armnnCaffeParser/test/TestMul.cpp b/src/armnnCaffeParser/test/TestMul.cpp
index b53318e81e..dc72780a47 100644
--- a/src/armnnCaffeParser/test/TestMul.cpp
+++ b/src/armnnCaffeParser/test/TestMul.cpp
@@ -8,7 +8,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct MulFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct MulFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
MulFixture()
{
diff --git a/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp b/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp
index cd87246bee..ebda3ce1b8 100644
--- a/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp
+++ b/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp
@@ -8,7 +8,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct MultiInputsOutputsFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct MultiInputsOutputsFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
MultiInputsOutputsFixture()
{
diff --git a/src/armnnCaffeParser/test/TestPooling2d.cpp b/src/armnnCaffeParser/test/TestPooling2d.cpp
index 25cd124648..b48693129c 100644
--- a/src/armnnCaffeParser/test/TestPooling2d.cpp
+++ b/src/armnnCaffeParser/test/TestPooling2d.cpp
@@ -8,7 +8,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct GlobalPoolingFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct GlobalPoolingFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
GlobalPoolingFixture()
{
diff --git a/src/armnnCaffeParser/test/TestSplit.cpp b/src/armnnCaffeParser/test/TestSplit.cpp
index c2f29fb4f3..a84d7ec70a 100644
--- a/src/armnnCaffeParser/test/TestSplit.cpp
+++ b/src/armnnCaffeParser/test/TestSplit.cpp
@@ -8,7 +8,7 @@
BOOST_AUTO_TEST_SUITE(CaffeParser)
-struct SplitFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
+struct SplitFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser>
{
SplitFixture()
{