1 // 2 // Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include <armnn/INetwork.hpp> 7 8 #include <GraphUtils.hpp> 9 #include <TestUtils.hpp> 10 11 #include <doctest/doctest.h> 12 13 TEST_SUITE("TosaReferenceOptimizedNetwork") 14 { 15 16 TEST_CASE("SimpleSupportedOptimizedNetwork") 17 { 18 armnn::IRuntime::CreationOptions options; 19 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options)); 20 armnn::INetworkPtr network(armnn::INetwork::Create()); 21 22 auto inputLayer1 = network->AddInputLayer(0, "input_1"); 23 auto inputLayer2 = network->AddInputLayer(1, "input_2"); 24 ARMNN_NO_DEPRECATE_WARN_BEGIN 25 auto addLayer = network->AddAdditionLayer("add"); 26 ARMNN_NO_DEPRECATE_WARN_END 27 auto outputLayer = network->AddOutputLayer(2, "output"); 28 29 armnn::TensorInfo tensorInfo{{4}, armnn::DataType::Float32}; 30 31 inputLayer1->GetOutputSlot(0).Connect(addLayer->GetInputSlot(0)); 32 inputLayer1->GetOutputSlot(0).SetTensorInfo(tensorInfo); 33 34 inputLayer2->GetOutputSlot(0).Connect(addLayer->GetInputSlot(1)); 35 inputLayer2->GetOutputSlot(0).SetTensorInfo(tensorInfo); 36 37 addLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0)); 38 addLayer->GetOutputSlot(0).SetTensorInfo(tensorInfo); 39 40 std::vector<armnn::BackendId> backends = { "TosaRef" }; 41 42 armnn::OptimizerOptionsOpaque optimizedOptions; 43 armnn::IOptimizedNetworkPtr optNet = Optimize(*network, backends, runtime->GetDeviceSpec(), optimizedOptions); 44 CHECK(optNet); 45 46 armnn::Graph& graph = GetGraphForTesting(optNet.get()); 47 48 // Check graph layer sequence to ensure that the network has been replaced with a PreCompiledLayer 49 CHECK(CheckSequence(graph.cbegin(), graph.cend(), 50 &IsLayerOfType<armnn::InputLayer>, 51 &IsLayerOfType<armnn::InputLayer>, 52 &IsLayerOfType<armnn::PreCompiledLayer>, 53 &IsLayerOfType<armnn::OutputLayer>)); 54 } 55 56 } 57