blob: db8194b3f93ed64919191fb934fd90e9ea088a54 [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
11/// Holds all parameters necessary to execute a network
12/// Check ExecuteNetworkProgramOptions.cpp for a description of each parameter
13struct ExecuteNetworkParams
14{
15 using TensorShapePtr = std::unique_ptr<armnn::TensorShape>;
16
Finn Williamsf806c4d2021-02-22 15:13:12 +000017 enum class TfLiteExecutor
18 {
19 ArmNNTfLiteParser,
20 ArmNNTfLiteDelegate,
21 TfliteInterpreter
22 };
23
Matthew Sloyan42432112021-01-08 10:30:51 +000024 std::string m_CachedNetworkFilePath;
Jan Eilers45274902020-10-15 18:34:43 +010025 std::vector<armnn::BackendId> m_ComputeDevices;
Sadik Armagana04a9d72021-04-27 10:02:10 +010026 bool m_Concurrent;
Jan Eilers45274902020-10-15 18:34:43 +010027 bool m_DequantizeOutput;
28 std::string m_DynamicBackendsPath;
29 bool m_EnableBf16TurboMode;
30 bool m_EnableFastMath = false;
31 bool m_EnableFp16TurboMode;
32 bool m_EnableLayerDetails = false;
33 bool m_EnableProfiling;
34 bool m_GenerateTensorData;
35 bool m_InferOutputShape = false;
Sadik Armagan5d03e312020-11-17 16:43:56 +000036 bool m_EnableDelegate = false;
Jan Eilers45274902020-10-15 18:34:43 +010037 std::vector<std::string> m_InputNames;
38 std::vector<std::string> m_InputTensorDataFilePaths;
39 std::vector<TensorShapePtr> m_InputTensorShapes;
40 std::vector<std::string> m_InputTypes;
41 bool m_IsModelBinary;
42 size_t m_Iterations;
43 std::string m_ModelFormat;
44 std::string m_ModelPath;
Matthew Sloyan0a7dc6b2021-02-10 16:50:53 +000045 unsigned int m_NumberOfThreads;
Keith Davisf4874862021-08-09 16:49:18 +010046 bool m_OutputDetailsToStdOut;
Keith Davis4914d0c2021-08-18 17:14:05 +010047 bool m_OutputDetailsOnlyToStdOut;
Jan Eilers45274902020-10-15 18:34:43 +010048 std::vector<std::string> m_OutputNames;
49 std::vector<std::string> m_OutputTensorFiles;
50 std::vector<std::string> m_OutputTypes;
51 bool m_ParseUnsupported = false;
52 bool m_PrintIntermediate;
Jan Eilers284b5d12021-09-07 12:46:15 +010053 bool m_DontPrintOutputs;
Jan Eilers45274902020-10-15 18:34:43 +010054 bool m_QuantizeInput;
Matthew Sloyan42432112021-01-08 10:30:51 +000055 bool m_SaveCachedNetwork;
Sadik Armagana04a9d72021-04-27 10:02:10 +010056 size_t m_SimultaneousIterations;
Jan Eilers45274902020-10-15 18:34:43 +010057 size_t m_SubgraphId;
58 double m_ThresholdTime;
59 int m_TuningLevel;
60 std::string m_TuningPath;
Finn Williams40646322021-02-11 16:16:42 +000061 std::string m_MLGOTuningFilePath;
Finn Williamsf806c4d2021-02-22 15:13:12 +000062 TfLiteExecutor m_TfLiteExecutor;
Kevin Mayb4b3ac92021-05-21 16:42:21 +010063 size_t m_ThreadPoolSize;
Jan Eilers45274902020-10-15 18:34:43 +010064
65 // Ensures that the parameters for ExecuteNetwork fit together
66 void ValidateParams();
67};