aboutsummaryrefslogtreecommitdiff
path: root/src/backends/tosaCommon/test/OneToOneMappingTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/tosaCommon/test/OneToOneMappingTests.cpp')
-rw-r--r--src/backends/tosaCommon/test/OneToOneMappingTests.cpp146
1 files changed, 103 insertions, 43 deletions
diff --git a/src/backends/tosaCommon/test/OneToOneMappingTests.cpp b/src/backends/tosaCommon/test/OneToOneMappingTests.cpp
index af9f9e26df..b1fa6847bc 100644
--- a/src/backends/tosaCommon/test/OneToOneMappingTests.cpp
+++ b/src/backends/tosaCommon/test/OneToOneMappingTests.cpp
@@ -79,7 +79,7 @@ TEST_CASE("GetTosaMappingFromLayer_ConstantLayer")
std::vector<std::vector<int32_t>> outputShape = {{ 1, 2, 4, 2 }};
std::vector<float> data = GenerateRandomData<float>(info.GetNumElements());
- armnn::ConstTensor constTensor(info, data);
+ ConstTensor constTensor(info, data);
IConnectableLayer* constant = net->AddConstantLayer(constTensor, "constant");
IConnectableLayer* output = net->AddOutputLayer(0, "output");
@@ -95,7 +95,7 @@ TEST_CASE("GetTosaMappingFromLayer_ConstantLayer")
TEST_CASE("GetTosaMapping_Conv2dLayer")
{
- armnn::Convolution2dDescriptor descriptor;
+ Convolution2dDescriptor descriptor;
descriptor.m_PadLeft = 1;
descriptor.m_PadRight = 1;
descriptor.m_PadTop = 1;
@@ -106,10 +106,10 @@ TEST_CASE("GetTosaMapping_Conv2dLayer")
descriptor.m_DilationY = 2;
descriptor.m_BiasEnabled = true;
- const armnn::TensorInfo inputInfo ({ 1, 5, 5, 1 }, armnn::DataType::Float32);
- const armnn::TensorInfo outputInfo({ 1, 3, 3, 1 }, armnn::DataType::Float32);
- const armnn::TensorInfo weightsInfo({ 1, 3, 3, 1 }, armnn::DataType::Float32, 0.0f, 0, true);
- const armnn::TensorInfo biasesInfo ({ 1 }, armnn::DataType::Float32, 0.0f, 0, true);
+ const TensorInfo inputInfo ({ 1, 5, 5, 1 }, DataType::Float32);
+ const TensorInfo outputInfo({ 1, 3, 3, 1 }, DataType::Float32);
+ const TensorInfo weightsInfo({ 1, 3, 3, 1 }, DataType::Float32, 0.0f, 0, true);
+ const TensorInfo biasesInfo ({ 1 }, DataType::Float32, 0.0f, 0, true);
std::vector<std::vector<int32_t>> inputShape = {{ 1, 5, 5, 1 }, { 1, 3, 3, 1 }, { 1 }};
std::vector<std::vector<int32_t>> outputShape = {{ 1, 3, 3, 1 }};
@@ -131,7 +131,7 @@ TEST_CASE("GetTosaMappingFromLayer_Conv2dLayer")
// Builds up the structure of the network.
INetworkPtr net(INetwork::Create());
- armnn::Convolution2dDescriptor descriptor;
+ Convolution2dDescriptor descriptor;
descriptor.m_PadLeft = 1;
descriptor.m_PadRight = 1;
descriptor.m_PadTop = 1;
@@ -142,25 +142,25 @@ TEST_CASE("GetTosaMappingFromLayer_Conv2dLayer")
descriptor.m_DilationY = 2;
descriptor.m_BiasEnabled = true;
- const armnn::TensorInfo inputInfo ({ 1, 5, 5, 1 }, armnn::DataType::Float32);
- const armnn::TensorInfo outputInfo({ 1, 3, 3, 1 }, armnn::DataType::Float32);
- const armnn::TensorInfo weightsInfo({ 1, 3, 3, 1 }, armnn::DataType::Float32, 0.0f, 0, true);
- const armnn::TensorInfo biasesInfo ({ 1 }, armnn::DataType::Float32, 0.0f, 0, true);
+ const TensorInfo inputInfo ({ 1, 5, 5, 1 }, DataType::Float32);
+ const TensorInfo outputInfo({ 1, 3, 3, 1 }, DataType::Float32);
+ const TensorInfo weightsInfo({ 1, 3, 3, 1 }, DataType::Float32, 0.0f, 0, true);
+ const TensorInfo biasesInfo ({ 1 }, DataType::Float32, 0.0f, 0, true);
std::vector<std::vector<int32_t>> inputShape = {{ 1, 5, 5, 1 }};
std::vector<std::vector<int32_t>> outputShape = {{ 1, 3, 3, 1 }};
std::vector<float> weightsData = GenerateRandomData<float>(weightsInfo.GetNumElements());
- armnn::ConstTensor weights(weightsInfo, weightsData);
+ ConstTensor weights(weightsInfo, weightsData);
std::vector<float> biasesData = GenerateRandomData<float>(biasesInfo.GetNumElements());
- armnn::ConstTensor biases(biasesInfo, biasesData);
+ ConstTensor biases(biasesInfo, biasesData);
- armnn::IConnectableLayer* const inputLayer = net->AddInputLayer(0, "input0");
- armnn::IConnectableLayer* const weightsLayer = net->AddConstantLayer(weights, "weights");
- armnn::IConnectableLayer* const biasesLayer = net->AddConstantLayer(biases, "biases");
- armnn::IConnectableLayer* const convLayer = net->AddConvolution2dLayer(descriptor, "conv2d");
- armnn::IConnectableLayer* const outputLayer = net->AddOutputLayer(0);
+ IConnectableLayer* const inputLayer = net->AddInputLayer(0, "input0");
+ IConnectableLayer* const weightsLayer = net->AddConstantLayer(weights, "weights");
+ IConnectableLayer* const biasesLayer = net->AddConstantLayer(biases, "biases");
+ IConnectableLayer* const convLayer = net->AddConvolution2dLayer(descriptor, "conv2d");
+ IConnectableLayer* const outputLayer = net->AddOutputLayer(0);
inputLayer->GetOutputSlot(0).Connect(convLayer->GetInputSlot(0));
weightsLayer->GetOutputSlot(0).Connect(convLayer->GetInputSlot(1));
@@ -179,18 +179,18 @@ TEST_CASE("GetTosaMappingFromLayer_Conv2dLayer")
TEST_CASE("GetTosaMapping_MaxPool2DLayer")
{
- armnn::Pooling2dDescriptor descriptor;
- descriptor.m_PoolType = armnn::PoolingAlgorithm::Max;
+ Pooling2dDescriptor descriptor;
+ descriptor.m_PoolType = PoolingAlgorithm::Max;
descriptor.m_PoolWidth = descriptor.m_PoolHeight = 2;
descriptor.m_StrideX = descriptor.m_StrideY = 2;
descriptor.m_PadLeft = 1;
descriptor.m_PadRight = 1;
descriptor.m_PadTop = 1;
descriptor.m_PadBottom = 1;
- descriptor.m_PaddingMethod = armnn::PaddingMethod::Exclude;
+ descriptor.m_PaddingMethod = PaddingMethod::Exclude;
- armnn::TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
- armnn::TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
+ TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
+ TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
std::vector<std::vector<int32_t>> inputShape = {{ 1, 1, 4, 4 }};
std::vector<std::vector<int32_t>> outputShape = {{ 1, 1, 3, 3 }};
@@ -209,30 +209,30 @@ TEST_CASE("GetTosaMappingFromLayer_MaxPool2DLayer")
// Builds up the structure of the network.
INetworkPtr net(INetwork::Create());
- armnn::Pooling2dDescriptor descriptor;
- descriptor.m_PoolType = armnn::PoolingAlgorithm::Max;
+ Pooling2dDescriptor descriptor;
+ descriptor.m_PoolType = PoolingAlgorithm::Max;
descriptor.m_PoolWidth = descriptor.m_PoolHeight = 2;
descriptor.m_StrideX = descriptor.m_StrideY = 2;
descriptor.m_PadLeft = 1;
descriptor.m_PadRight = 1;
descriptor.m_PadTop = 1;
descriptor.m_PadBottom = 1;
- descriptor.m_PaddingMethod = armnn::PaddingMethod::Exclude;
+ descriptor.m_PaddingMethod = PaddingMethod::Exclude;
- IConnectableLayer* input0 = net->AddInputLayer(0, "input0");
- IConnectableLayer* pool = net->AddPooling2dLayer(descriptor, "pool");
- IConnectableLayer* output = net->AddOutputLayer(0, "output");
+ IConnectableLayer* input = net->AddInputLayer(0, "input0");
+ IConnectableLayer* pool = net->AddPooling2dLayer(descriptor, "pool");
+ IConnectableLayer* output = net->AddOutputLayer(0, "output");
- input0->GetOutputSlot(0).Connect(pool->GetInputSlot(0));
+ input->GetOutputSlot(0).Connect(pool->GetInputSlot(0));
pool->GetOutputSlot(0).Connect(output->GetInputSlot(0));
- armnn::TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
- armnn::TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
+ TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
+ TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
std::vector<std::vector<int32_t>> inputShape = {{ 1, 1, 4, 4 }};
std::vector<std::vector<int32_t>> outputShape = {{ 1, 1, 3, 3 }};
- input0->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
+ input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
pool->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
TosaSerializationBasicBlock* basicBlock =
@@ -243,18 +243,18 @@ TEST_CASE("GetTosaMappingFromLayer_MaxPool2DLayer")
TEST_CASE("GetTosaMapping_AvgPool2DLayer")
{
- armnn::Pooling2dDescriptor descriptor;
- descriptor.m_PoolType = armnn::PoolingAlgorithm::Average;
+ Pooling2dDescriptor descriptor;
+ descriptor.m_PoolType = PoolingAlgorithm::Average;
descriptor.m_PoolWidth = descriptor.m_PoolHeight = 2;
descriptor.m_StrideX = descriptor.m_StrideY = 2;
descriptor.m_PadLeft = 1;
descriptor.m_PadRight = 1;
descriptor.m_PadTop = 1;
descriptor.m_PadBottom = 1;
- descriptor.m_PaddingMethod = armnn::PaddingMethod::Exclude;
+ descriptor.m_PaddingMethod = PaddingMethod::Exclude;
- armnn::TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
- armnn::TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
+ TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
+ TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
std::vector<std::vector<int32_t>> inputShape = {{ 1, 1, 4, 4 }};
std::vector<std::vector<int32_t>> outputShape = {{ 1, 1, 3, 3 }};
@@ -278,15 +278,15 @@ TEST_CASE("GetTosaMappingFromLayer_AvgPool2DLayer")
// Builds up the structure of the network.
INetworkPtr net(INetwork::Create());
- armnn::Pooling2dDescriptor descriptor;
- descriptor.m_PoolType = armnn::PoolingAlgorithm::Average;
+ Pooling2dDescriptor descriptor;
+ descriptor.m_PoolType = PoolingAlgorithm::Average;
descriptor.m_PoolWidth = descriptor.m_PoolHeight = 2;
descriptor.m_StrideX = descriptor.m_StrideY = 2;
descriptor.m_PadLeft = 1;
descriptor.m_PadRight = 1;
descriptor.m_PadTop = 1;
descriptor.m_PadBottom = 1;
- descriptor.m_PaddingMethod = armnn::PaddingMethod::Exclude;
+ descriptor.m_PaddingMethod = PaddingMethod::Exclude;
IConnectableLayer* input0 = net->AddInputLayer(0, "input0");
IConnectableLayer* pool = net->AddPooling2dLayer(descriptor, "pool");
@@ -295,8 +295,8 @@ TEST_CASE("GetTosaMappingFromLayer_AvgPool2DLayer")
input0->GetOutputSlot(0).Connect(pool->GetInputSlot(0));
pool->GetOutputSlot(0).Connect(output->GetInputSlot(0));
- armnn::TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
- armnn::TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
+ TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
+ TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
std::vector<std::vector<int32_t>> inputShape = {{ 1, 1, 4, 4 }};
std::vector<std::vector<int32_t>> outputShape = {{ 1, 1, 3, 3 }};
@@ -315,6 +315,66 @@ TEST_CASE("GetTosaMappingFromLayer_AvgPool2DLayer")
LayerType::Pooling2d);
}
+TEST_CASE("GetTosaMapping_ReshapeLayer")
+{
+ TensorInfo inputInfo = TensorInfo({ 2, 3 }, DataType::Float32);
+ TensorInfo outputInfo = TensorInfo({ 6 }, DataType::Float32);
+
+ std::vector<std::vector<int32_t>> inputShape = {{ 2, 3 }};
+ std::vector<std::vector<int32_t>> outputShape = {{ 6 }};
+
+ ReshapeDescriptor descriptor;
+ descriptor.m_TargetShape = { 6 };
+
+ TosaSerializationBasicBlock* basicBlock =
+ GetTosaMapping(nullptr, LayerType::Reshape, {&inputInfo}, {&outputInfo}, descriptor);
+ AssertTosaOneToOneMappingBasicBlock(basicBlock,
+ inputShape,
+ outputShape,
+ Op_RESHAPE,
+ Attribute_ReshapeAttribute,
+ descriptor,
+ LayerType::Reshape);
+}
+
+TEST_CASE("GetTosaMappingFromLayer_ReshapeLayer")
+{
+ IRuntime::CreationOptions options;
+ IRuntimePtr runtime(IRuntime::Create(options));
+
+ // Builds up the structure of the network.
+ INetworkPtr net(INetwork::Create());
+
+ ReshapeDescriptor descriptor;
+ descriptor.m_TargetShape = { 6 };
+
+ IConnectableLayer* input = net->AddInputLayer(0, "input");
+ IConnectableLayer* reshape = net->AddReshapeLayer(descriptor, "reshape");
+ IConnectableLayer* output = net->AddOutputLayer(0, "output");
+
+ input->GetOutputSlot(0).Connect(reshape->GetInputSlot(0));
+ reshape->GetOutputSlot(0).Connect(output->GetInputSlot(0));
+
+ TensorInfo inputInfo = TensorInfo({ 2, 3 }, DataType::Float32);
+ TensorInfo outputInfo = TensorInfo({ 6 }, DataType::Float32);
+
+ input->GetOutputSlot(0).SetTensorInfo(inputInfo);
+ reshape->GetOutputSlot(0).SetTensorInfo(outputInfo);
+
+ std::vector<std::vector<int32_t>> inputShape = {{ 2, 3 }};
+ std::vector<std::vector<int32_t>> outputShape = {{ 6 }};
+
+ TosaSerializationBasicBlock* basicBlock =
+ GetTosaMappingFromLayer(PolymorphicDowncast<Layer*>(reshape));
+ AssertTosaOneToOneMappingBasicBlock(basicBlock,
+ inputShape,
+ outputShape,
+ Op_RESHAPE,
+ Attribute_ReshapeAttribute,
+ descriptor,
+ LayerType::Reshape);
+}
+
TEST_CASE("GetTosaMapping_Unimplemented")
{
TosaSerializationBasicBlock* basicBlock =