aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/test/OptimizerTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnn/test/OptimizerTests.cpp')
-rw-r--r--src/armnn/test/OptimizerTests.cpp558
1 files changed, 0 insertions, 558 deletions
diff --git a/src/armnn/test/OptimizerTests.cpp b/src/armnn/test/OptimizerTests.cpp
index b06403c8d6..c0ad9c8927 100644
--- a/src/armnn/test/OptimizerTests.cpp
+++ b/src/armnn/test/OptimizerTests.cpp
@@ -17,45 +17,6 @@ using namespace armnn;
namespace
{
-template <typename LayerT>
-bool IsLayerOfType(const armnn::Layer* const layer)
-{
- return (layer->GetType() == armnn::LayerEnumOf<LayerT>());
-}
-
-bool CheckSequence(const armnn::Graph::ConstIterator first, const armnn::Graph::ConstIterator last)
-{
- return (first == last);
-}
-
-/// Checks each unary function in Us evaluates true for each correspondent layer in the sequence [first, last).
-template <typename U, typename... Us>
-bool CheckSequence(const armnn::Graph::ConstIterator first,
- const armnn::Graph::ConstIterator last,
- U&& u,
- Us&&... us)
-{
- return u(*first) && CheckSequence(std::next(first), last, us...);
-}
-
-template <typename LayerT>
-bool CheckRelatedLayers(armnn::Graph& graph, const std::list<std::string>& testRelatedLayers)
-{
- for (auto& layer : graph)
- {
- if (layer->GetType() == armnn::LayerEnumOf<LayerT>())
- {
- auto& relatedLayers = layer->GetRelatedLayerNames();
- if(!std::equal(relatedLayers.begin(), relatedLayers.end(),
- testRelatedLayers.begin(), testRelatedLayers.end()))
- {
- return false;
- }
- }
- }
-
- return true;
-}
void CreateLSTMLayerHelper(Graph &graph, bool CifgEnabled)
{
@@ -168,38 +129,6 @@ void CreateLSTMLayerHelper(Graph &graph, bool CifgEnabled)
BOOST_AUTO_TEST_SUITE(Optimizer)
using namespace armnn::optimizations;
-BOOST_AUTO_TEST_CASE(OptimizeInversePermutesTest)
-{
- armnn::Graph graph;
-
- auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
-
- graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
-
- // Inserts two permutes, one the inverse of the other.
- graph.InsertNewLayer<armnn::PermuteLayer>(output->GetInputSlot(0),
- armnn::PermuteDescriptor({0, 2, 3, 1}),
- "perm0231");
- graph.InsertNewLayer<armnn::PermuteLayer>(output->GetInputSlot(0),
- armnn::PermuteDescriptor({0, 3, 1, 2}),
- "perm0312");
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(OptimizeInversePermutes()));
-
- // The permutes are removed.
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-}
-
BOOST_AUTO_TEST_CASE(LSTMValidateTensorShapesFromInputsCIFGDisabledTest)
{
Graph graph;
@@ -222,421 +151,6 @@ BOOST_AUTO_TEST_CASE(LSTMValidateTensorShapesFromInputsCIFGEnabledTest)
BOOST_CHECK_NO_THROW(graph.InferTensorInfos());
}
-BOOST_AUTO_TEST_CASE(MovePermuteUpTest)
-{
- const armnn::TensorInfo info({ 1, 5, 2, 3 }, armnn::DataType::Float32);
- const armnn::TensorInfo permuted({ 1, 3, 5, 2 }, armnn::DataType::Float32);
-
- armnn::Graph graph;
-
- armnn::LayerBindingId inputId = 0;
-
- armnn::Layer* head = graph.AddLayer<armnn::OutputLayer>(0, "output");
-
- std::string permuteLayerName = "original_permute";
-
- // Insert permute
- head = graph.InsertNewLayer<armnn::PermuteLayer>(head->GetInputSlot(0),
- armnn::PermuteDescriptor({ 0, 2, 3, 1 }),
- permuteLayerName.c_str());
-
- head->GetOutputHandler().SetTensorInfo(permuted);
-
- // Inserts layers that don't care about data format.
- head = graph.InsertNewLayer<armnn::ActivationLayer>(head->GetInputSlot(0),
- armnn::ActivationDescriptor{}, "");
- head->GetOutputHandler().SetTensorInfo(info);
-
- head = graph.InsertNewLayer<armnn::AdditionLayer>(head->GetInputSlot(0), "");
- head->GetOutputHandler().SetTensorInfo(info);
-
- // Inserts input for 2nd input of Addition.
- graph.InsertNewLayer<armnn::InputLayer>(head->GetInputSlot(1), inputId++, "")
- ->GetOutputHandler().SetTensorInfo(info);
-
- head = graph.InsertNewLayer<armnn::FakeQuantizationLayer>(head->GetInputSlot(0),
- armnn::FakeQuantizationDescriptor{}, "");
- head->GetOutputHandler().SetTensorInfo(info);
-
- head = graph.InsertNewLayer<armnn::FloorLayer>(head->GetInputSlot(0), "");
- head->GetOutputHandler().SetTensorInfo(info);
-
- head = graph.InsertNewLayer<armnn::MemCopyLayer>(head->GetInputSlot(0), "");
- head->GetOutputHandler().SetTensorInfo(info);
-
- head = graph.InsertNewLayer<armnn::MultiplicationLayer>(head->GetInputSlot(0), "");
- head->GetOutputHandler().SetTensorInfo(info);
-
- // Inserts input for 2nd input of Multiplication.
- graph.InsertNewLayer<armnn::InputLayer>(head->GetInputSlot(1), inputId++, "")
- ->GetOutputHandler().SetTensorInfo(info);
-
- // Inserts input.
- graph.InsertNewLayer<armnn::InputLayer>(head->GetInputSlot(0), inputId++, "")
- ->GetOutputHandler().SetTensorInfo(info);
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::MultiplicationLayer>,
- &IsLayerOfType<armnn::MemCopyLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::FakeQuantizationLayer>,
- &IsLayerOfType<armnn::AdditionLayer>,
- &IsLayerOfType<armnn::ActivationLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(MovePermuteUp()));
-
- // The permute is moved to the top. New permutes for layers with multiple inputs.
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::MultiplicationLayer>,
- &IsLayerOfType<armnn::MemCopyLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::FakeQuantizationLayer>,
- &IsLayerOfType<armnn::AdditionLayer>,
- &IsLayerOfType<armnn::ActivationLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- std::list<std::string> testRelatedLayers = { permuteLayerName };
-
- BOOST_TEST(CheckRelatedLayers<armnn::PermuteLayer>(graph, testRelatedLayers));
-}
-
-BOOST_AUTO_TEST_CASE(PermuteAsReshapeTest)
-{
- armnn::Graph graph;
-
- std::string permuteLayerName = "permute";
-
- const armnn::TensorInfo infoIn({ 1, 2, 3, 1 }, armnn::DataType::Float32);
- const armnn::TensorInfo infoOut({ 1, 1, 2, 3 }, armnn::DataType::Float32);
-
- auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
-
- graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input")
- ->GetOutputHandler().SetTensorInfo(infoIn);
-
- // Inserts permute.
- graph.InsertNewLayer<armnn::PermuteLayer>(output->GetInputSlot(0),
- armnn::PermuteDescriptor({ 0, 2, 3, 1 }), permuteLayerName.c_str())
- ->GetOutputHandler().SetTensorInfo(infoOut);
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(PermuteAsReshape()));
-
- // The permute is replaced by an equivalent reshape.
-
- auto checkReshape = [&infoOut](const armnn::Layer* const layer) -> bool
- {
- const auto reshapeLayer = static_cast<const armnn::ReshapeLayer*>(layer);
- return IsLayerOfType<armnn::ReshapeLayer>(layer) &&
- (reshapeLayer->GetParameters().m_TargetShape == infoOut.GetShape()) &&
- (reshapeLayer->GetOutputHandler().GetTensorInfo().GetShape() == infoOut.GetShape());
- };
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- checkReshape,
- &IsLayerOfType<armnn::OutputLayer>));
-
-
- std::list<std::string> testRelatedLayers = { permuteLayerName };
- BOOST_TEST(CheckRelatedLayers<armnn::ReshapeLayer>(graph, testRelatedLayers));
-}
-
-BOOST_AUTO_TEST_CASE(OptimizeConsecutiveReshapesTest)
-{
- armnn::Graph graph;
-
- const armnn::TensorInfo info0({ 1, 2, 3, 5 }, armnn::DataType::Float32);
-
- auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
- auto input = graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
-
- input->GetOutputHandler().SetTensorInfo(info0);
-
- {
- // Inserts two reshapes.
- const armnn::TensorInfo info1({1, 30, 1, 1}, armnn::DataType::Float32);
- const armnn::TensorInfo info2({1, 2, 1, 15}, armnn::DataType::Float32);
-
- std::string reshape1Name = "reshape1";
- std::string reshape2Name = "reshape2";
-
- auto reshape1 = graph.InsertNewLayer<armnn::ReshapeLayer>(output->GetInputSlot(0),
- armnn::ReshapeDescriptor{ info1.GetShape() },
- reshape1Name.c_str());
- auto reshape2 = graph.InsertNewLayer<armnn::ReshapeLayer>(output->GetInputSlot(0),
- armnn::ReshapeDescriptor{ info2.GetShape() },
- reshape2Name.c_str());
-
- reshape1->GetOutputHandler().SetTensorInfo(info1);
- reshape2->GetOutputHandler().SetTensorInfo(info2);
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::ReshapeLayer>,
- &IsLayerOfType<armnn::ReshapeLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(OptimizeConsecutiveReshapes()));
-
- auto checkReshape = [&info2](const armnn::Layer* const layer) -> bool
- {
- const auto reshapeLayer = static_cast<const armnn::ReshapeLayer*>(layer);
- return IsLayerOfType<armnn::ReshapeLayer>(layer) &&
- (reshapeLayer->GetParameters().m_TargetShape == info2.GetShape()) &&
- (reshapeLayer->GetOutputHandler().GetTensorInfo().GetShape() == info2.GetShape());
- };
-
- // The two reshapes are replaced by a single equivalent reshape.
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- checkReshape,
- &IsLayerOfType<armnn::OutputLayer>));
-
- // Check the new reshape layer has the other two reshapes as related layers
- std::list<std::string> testRelatedLayers = { reshape2Name, reshape1Name };
-
- BOOST_TEST(CheckRelatedLayers<armnn::ReshapeLayer>(graph, testRelatedLayers));
- }
-
- {
- // Inserts a reshape to the input shape.
- auto reshapeToIn = graph.InsertNewLayer<armnn::ReshapeLayer>(output->GetInputSlot(0),
- armnn::ReshapeDescriptor{ info0.GetShape() },
- "reshapeToIn");
-
- reshapeToIn->GetOutputHandler().SetTensorInfo(info0);
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(OptimizeConsecutiveReshapes()));
-
- // The two reshapes are removed.
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
- }
-}
-
-BOOST_AUTO_TEST_CASE(SquashEqualSiblingsTest)
-{
- armnn::Graph graph;
-
- armnn::LayerBindingId outputId = 0;
-
- const armnn::TensorInfo info({ 1, 2, 3, 5 }, armnn::DataType::Float32);
- const armnn::TensorInfo permuted({ 1, 5, 2, 3 }, armnn::DataType::Float32);
-
- auto input = graph.AddLayer<armnn::InputLayer>(0, "input");
- input->GetOutputSlot().SetTensorInfo(info);
-
- // Inserts equal permutes, equal reshapes and something else.
- const armnn::PermuteDescriptor permDesc({ 0, 2, 3, 1 });
- const armnn::ReshapeDescriptor reshapeDesc{ { 1, 3, 1, 5 } };
-
- armnn::Layer* layer;
-
- layer = graph.AddLayer<armnn::PermuteLayer>(permDesc, "");
- layer->GetOutputSlot().SetTensorInfo(permuted);
- layer->GetOutputSlot().Connect(graph.AddLayer<armnn::OutputLayer>(outputId++, "")->GetInputSlot(0));
- input->GetOutputSlot().Connect(layer->GetInputSlot(0));
-
- layer = graph.AddLayer<armnn::ReshapeLayer>(reshapeDesc, "");
- layer->GetOutputSlot().Connect(graph.AddLayer<armnn::OutputLayer>(outputId++, "")->GetInputSlot(0));
- input->GetOutputSlot().Connect(layer->GetInputSlot(0));
-
- layer = graph.AddLayer<armnn::FloorLayer>("");
- layer->GetOutputSlot().Connect(graph.AddLayer<armnn::OutputLayer>(outputId++, "")->GetInputSlot(0));
- input->GetOutputSlot().Connect(layer->GetInputSlot(0));
-
- layer = graph.AddLayer<armnn::ReshapeLayer>(reshapeDesc, "");
- layer->GetOutputSlot().Connect(graph.AddLayer<armnn::OutputLayer>(outputId++, "")->GetInputSlot(0));
- input->GetOutputSlot().Connect(layer->GetInputSlot(0));
-
- layer = graph.AddLayer<armnn::PermuteLayer>(permDesc, "");
- layer->GetOutputSlot().SetTensorInfo(permuted);
- layer->GetOutputSlot().Connect(graph.AddLayer<armnn::OutputLayer>(outputId++, "")->GetInputSlot(0));
- input->GetOutputSlot().Connect(layer->GetInputSlot(0));
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::ReshapeLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::ReshapeLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(SquashEqualPermuteSiblings(),
- SquashEqualReshapeSiblings()));
-
- // The permutes and reshapes are squashed.
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::PermuteLayer>,
- &IsLayerOfType<armnn::ReshapeLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-}
-
-BOOST_AUTO_TEST_CASE(ConvertConstantsHalfToFloatTest)
-{
- armnn::Graph graph;
-
- const armnn::TensorInfo info({ 1,1,1,2 }, armnn::DataType::Float32);
-
- // Create the half precision input data
- unsigned int dims[] = { 4,1,1,1 };
- std::vector<float> convWeightsData{1.f, 2.f, 3.f, 4.f};
- std::vector<uint16_t> halfWeights(4);
- armnnUtils::FloatingPointConverter::ConvertFloat32To16(convWeightsData.data(),
- convWeightsData.size(),
- halfWeights.data());
- armnn::ConstTensor weights(armnn::TensorInfo(4, dims, armnn::DataType::Float16), halfWeights);
-
- //Create the simple test network
- auto input = graph.AddLayer<armnn::InputLayer>(0, "input");
- input->GetOutputSlot().SetTensorInfo(info);
-
- auto fc = graph.AddLayer<armnn::FullyConnectedLayer>(armnn::FullyConnectedDescriptor(), "fc");
- fc->m_Weight = std::make_unique<armnn::ScopedCpuTensorHandle>(weights);
- fc->GetOutputSlot().SetTensorInfo(info);
-
- auto output = graph.AddLayer<armnn::OutputLayer>(1, "output");
-
- //Connect up the layers
- input->GetOutputSlot().Connect(fc->GetInputSlot(0));
- fc->GetOutputSlot().Connect(output->GetInputSlot(0));
-
- //Test the tensor info is correct.
- BOOST_CHECK(fc->m_Weight->GetTensorInfo().GetDataType() == armnn::DataType::Float16);
-
- // Run the optimizer
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(ConvertConstantsHalfToFloat()));
-
- //Test the tensor info is correct.
- BOOST_CHECK(fc->m_Weight->GetTensorInfo().GetDataType() == armnn::DataType::Float32);
-
- // Now test the data matches float32 data
- float* data = fc->m_Weight->GetTensor<float>();
- BOOST_CHECK(1.0f == data[0]);
- BOOST_CHECK(2.0f == data[1]);
- BOOST_CHECK(3.0f == data[2]);
- BOOST_CHECK(4.0f == data[3]);
-}
-
-BOOST_AUTO_TEST_CASE(ConvertConstantsFloatToHalfTest)
-{
- armnn::Graph graph;
-
- const armnn::TensorInfo info({ 1, 1, 1, 2 }, armnn::DataType::Float16);
-
- // Create const tensor from fp32 data
- unsigned int dims[] = { 4, 1, 1, 1 };
- std::vector<float> floatWeights{ 1.0f, 2.0f, 3.0f, 4.0f };
- armnn::ConstTensor weights(armnn::TensorInfo(4, dims, armnn::DataType::Float32), floatWeights);
-
- // Create simple test network
- auto input = graph.AddLayer<armnn::InputLayer>(0, "input");
- input->GetOutputSlot().SetTensorInfo(info);
-
- auto fc = graph.AddLayer<armnn::FullyConnectedLayer>(armnn::FullyConnectedDescriptor(), "fc");
- fc->m_Weight = std::make_unique<armnn::ScopedCpuTensorHandle>(weights);
- fc->GetOutputSlot().SetTensorInfo(info);
-
- auto output = graph.AddLayer<armnn::OutputLayer>(1, "output");
-
- // Connect up the layers
- input->GetOutputSlot().Connect(fc->GetInputSlot(0));
- fc->GetOutputSlot().Connect(output->GetInputSlot(0));
-
- // Check tensor data type before conversion
- BOOST_CHECK(fc->m_Weight->GetTensorInfo().GetDataType() == armnn::DataType::Float32);
-
- // Run the optimizer
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(ConvertConstantsFloatToHalf()));
-
- // Check tensor data type after conversion
- BOOST_CHECK(fc->m_Weight->GetTensorInfo().GetDataType() == armnn::DataType::Float16);
-
- // Check whether data matches expected fp16 data
- Half* data = fc->m_Weight->GetTensor<Half>();
- BOOST_CHECK(data[0] == Half(1.0f));
- BOOST_CHECK(data[1] == Half(2.0f));
- BOOST_CHECK(data[2] == Half(3.0f));
- BOOST_CHECK(data[3] == Half(4.0f));
-}
-
-BOOST_AUTO_TEST_CASE(OptimizeInverseConversionsTest)
-{
- armnn::Graph graph;
-
- auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
-
- graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
-
- // Fp32ToFp16 conversion followed by an inverse Fp16ToFp32 conversion
- graph.InsertNewLayer<armnn::ConvertFp32ToFp16Layer>(output->GetInputSlot(0), "convert1");
- graph.InsertNewLayer<armnn::ConvertFp16ToFp32Layer>(output->GetInputSlot(0), "convert2");
-
- graph.InsertNewLayer<armnn::Convolution2dLayer>(output->GetInputSlot(0), Convolution2dDescriptor(), "conv");
-
- // Fp16ToFp32 conversion followed by an inverse Fp32ToFp16 conversion
- graph.InsertNewLayer<armnn::ConvertFp16ToFp32Layer>(output->GetInputSlot(0), "convert3");
- graph.InsertNewLayer<armnn::ConvertFp32ToFp16Layer>(output->GetInputSlot(0), "convert4");
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::ConvertFp32ToFp16Layer>,
- &IsLayerOfType<armnn::ConvertFp16ToFp32Layer>,
- &IsLayerOfType<armnn::Convolution2dLayer>,
- &IsLayerOfType<armnn::ConvertFp16ToFp32Layer>,
- &IsLayerOfType<armnn::ConvertFp32ToFp16Layer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(OptimizeInverseConversionsFp16(),
- OptimizeInverseConversionsFp32()));
-
- // Check that all consecutive inverse conversions are removed
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::Convolution2dLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-}
-
BOOST_AUTO_TEST_CASE(InsertConvertersTest)
{
const armnn::TensorInfo info({ 1, 5, 2, 3 }, armnn::DataType::Float16);
@@ -728,79 +242,7 @@ BOOST_AUTO_TEST_CASE(InsertConvertersTest)
&IsLayerOfType<armnn::OutputLayer>));
}
-BOOST_AUTO_TEST_CASE(Fp32NetworkToFp16OptimizationTest)
-{
- armnn::Graph graph;
-
- const armnn::TensorInfo infoFP32({ 2,2,1,3 }, armnn::DataType::Float32);
-
- // Create the simple test network
- auto input = graph.AddLayer<armnn::InputLayer>(0, "input");
- input->GetOutputSlot().SetTensorInfo(infoFP32);
-
- auto floor = graph.AddLayer<armnn::FloorLayer>("floor");
- floor->GetOutputSlot().SetTensorInfo(infoFP32);
-
- auto output = graph.AddLayer<armnn::OutputLayer>(1, "output");
-
- // Connect up the layers
- input->GetOutputSlot().Connect(floor->GetInputSlot(0));
- floor->GetOutputSlot().Connect(output->GetInputSlot(0));
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- // Run the optimizer
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(Fp32NetworkToFp16Converter()));
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::ConvertFp32ToFp16Layer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::ConvertFp16ToFp32Layer>,
- &IsLayerOfType<armnn::OutputLayer>));
-}
-
-BOOST_AUTO_TEST_CASE(InsertDebugOptimizationTest)
-{
- armnn::Graph graph;
-
- const armnn::TensorInfo info({ 2,2,1,3 }, armnn::DataType::Float32);
-
- // Create the simple test network
- auto input = graph.AddLayer<armnn::InputLayer>(0, "input");
- input->GetOutputSlot().SetTensorInfo(info);
- auto floor = graph.AddLayer<armnn::FloorLayer>("floor");
- floor->GetOutputSlot().SetTensorInfo(info);
-
- auto output = graph.AddLayer<armnn::OutputLayer>(1, "output");
-
- // Connect up the layers
- input->GetOutputSlot().Connect(floor->GetInputSlot(0));
- floor->GetOutputSlot().Connect(output->GetInputSlot(0));
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-
- // Run the optimizer
- armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(InsertDebugLayer()));
-
- BOOST_TEST(CheckSequence(graph.cbegin(),
- graph.cend(),
- &IsLayerOfType<armnn::InputLayer>,
- &IsLayerOfType<armnn::DebugLayer>,
- &IsLayerOfType<armnn::FloorLayer>,
- &IsLayerOfType<armnn::DebugLayer>,
- &IsLayerOfType<armnn::OutputLayer>));
-}
void CreateConvolution2dGraph(Graph &graph, const unsigned int* inputShape,
const unsigned int* weightsShape, const unsigned int* outputShape,