1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "../TestUtils.hpp"
7
8 #include <Optimizer.hpp>
9
10 #include <boost/test/unit_test.hpp>
11
12 BOOST_AUTO_TEST_SUITE(Optimizer)
13 using namespace armnn::optimizations;
14
BOOST_AUTO_TEST_CASE(Fp32NetworkToFp16OptimizationTest)15 BOOST_AUTO_TEST_CASE(Fp32NetworkToFp16OptimizationTest)
16 {
17 armnn::Graph graph;
18
19 const armnn::TensorInfo infoFP32({ 2, 2, 1, 3 }, armnn::DataType::Float32);
20
21 // Create the simple test network
22 auto input = graph.AddLayer<armnn::InputLayer>(0, "input");
23 input->GetOutputSlot().SetTensorInfo(infoFP32);
24
25 auto floor = graph.AddLayer<armnn::FloorLayer>("floor");
26 floor->GetOutputSlot().SetTensorInfo(infoFP32);
27
28 auto output = graph.AddLayer<armnn::OutputLayer>(1, "output");
29
30 // Connect up the layers
31 input->GetOutputSlot().Connect(floor->GetInputSlot(0));
32 floor->GetOutputSlot().Connect(output->GetInputSlot(0));
33
34 BOOST_TEST(CheckSequence(graph.cbegin(), graph.cend(), &IsLayerOfType<armnn::InputLayer>,
35 &IsLayerOfType<armnn::FloorLayer>, &IsLayerOfType<armnn::OutputLayer>));
36
37 // Run the optimizer
38 armnn::Optimizer::Pass(graph, armnn::MakeOptimizations(Fp32NetworkToFp16Converter()));
39
40 BOOST_TEST(CheckSequence(graph.cbegin(), graph.cend(), &IsLayerOfType<armnn::InputLayer>,
41 &IsLayerOfType<armnn::ConvertFp32ToFp16Layer>, &IsLayerOfType<armnn::FloorLayer>,
42 &IsLayerOfType<armnn::ConvertFp16ToFp32Layer>, &IsLayerOfType<armnn::OutputLayer>));
43 }
44
45 BOOST_AUTO_TEST_SUITE_END()