• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()