blob: deaf55f6e554dbab039d637d39ff0de0b8ef4a09 [file] [log] [blame]
Jan Eilers45274902020-10-15 18:34:43 +01001//
2// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <armnn/BackendId.hpp>
9#include <armnn/Tensor.hpp>
10
Colm Donelan3cff15a2021-10-12 15:06:19 +010011#if defined(ARMNN_TFLITE_DELEGATE)
12#include <DelegateOptions.hpp>
13#endif
14
Jan Eilers45274902020-10-15 18:34:43 +010015/// Holds all parameters necessary to execute a network
16/// Check ExecuteNetworkProgramOptions.cpp for a description of each parameter
17struct ExecuteNetworkParams
18{
19 using TensorShapePtr = std::unique_ptr<armnn::TensorShape>;
20
Finn Williamsf806c4d2021-02-22 15:13:12 +000021 enum class TfLiteExecutor
22 {
23 ArmNNTfLiteParser,
24 ArmNNTfLiteDelegate,
25 TfliteInterpreter
26 };
27
Matthew Sloyan42432112021-01-08 10:30:51 +000028 std::string m_CachedNetworkFilePath;
Jan Eilers45274902020-10-15 18:34:43 +010029 std::vector<armnn::BackendId> m_ComputeDevices;
Sadik Armagana04a9d72021-04-27 10:02:10 +010030 bool m_Concurrent;
Jan Eilers45274902020-10-15 18:34:43 +010031 bool m_DequantizeOutput;
32 std::string m_DynamicBackendsPath;
33 bool m_EnableBf16TurboMode;
34 bool m_EnableFastMath = false;
35 bool m_EnableFp16TurboMode;
36 bool m_EnableLayerDetails = false;
37 bool m_EnableProfiling;
38 bool m_GenerateTensorData;
39 bool m_InferOutputShape = false;
Sadik Armagan5d03e312020-11-17 16:43:56 +000040 bool m_EnableDelegate = false;
Jan Eilers45274902020-10-15 18:34:43 +010041 std::vector<std::string> m_InputNames;
42 std::vector<std::string> m_InputTensorDataFilePaths;
43 std::vector<TensorShapePtr> m_InputTensorShapes;
44 std::vector<std::string> m_InputTypes;
45 bool m_IsModelBinary;
46 size_t m_Iterations;
47 std::string m_ModelFormat;
48 std::string m_ModelPath;
Matthew Sloyan0a7dc6b2021-02-10 16:50:53 +000049 unsigned int m_NumberOfThreads;
Keith Davisf4874862021-08-09 16:49:18 +010050 bool m_OutputDetailsToStdOut;
Keith Davis4914d0c2021-08-18 17:14:05 +010051 bool m_OutputDetailsOnlyToStdOut;
Jan Eilers45274902020-10-15 18:34:43 +010052 std::vector<std::string> m_OutputNames;
53 std::vector<std::string> m_OutputTensorFiles;
54 std::vector<std::string> m_OutputTypes;
55 bool m_ParseUnsupported = false;
56 bool m_PrintIntermediate;
Jan Eilers284b5d12021-09-07 12:46:15 +010057 bool m_DontPrintOutputs;
Jan Eilers45274902020-10-15 18:34:43 +010058 bool m_QuantizeInput;
Matthew Sloyan42432112021-01-08 10:30:51 +000059 bool m_SaveCachedNetwork;
Sadik Armagana04a9d72021-04-27 10:02:10 +010060 size_t m_SimultaneousIterations;
Jan Eilers45274902020-10-15 18:34:43 +010061 size_t m_SubgraphId;
62 double m_ThresholdTime;
63 int m_TuningLevel;
64 std::string m_TuningPath;
Finn Williams40646322021-02-11 16:16:42 +000065 std::string m_MLGOTuningFilePath;
Finn Williamsf806c4d2021-02-22 15:13:12 +000066 TfLiteExecutor m_TfLiteExecutor;
Kevin Mayb4b3ac92021-05-21 16:42:21 +010067 size_t m_ThreadPoolSize;
Jim Flynn15425812022-02-15 16:53:13 +000068 bool m_ImportInputsIfAligned;
Jan Eilers45274902020-10-15 18:34:43 +010069
70 // Ensures that the parameters for ExecuteNetwork fit together
71 void ValidateParams();
Colm Donelan3cff15a2021-10-12 15:06:19 +010072
73#if defined(ARMNN_TFLITE_DELEGATE)
74 /// A utility method that populates a DelegateOptions object from this ExecuteNetworkParams.
75 armnnDelegate::DelegateOptions ToDelegateOptions() const;
76#endif
77
Jan Eilers45274902020-10-15 18:34:43 +010078};