diff options
author | Jan Eilers <jan.eilers@arm.com> | 2021-10-26 14:56:47 +0100 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2021-10-29 10:20:16 +0000 |
commit | b1c62f11881e0d528bea5b3664a8f36e4c03b508 (patch) | |
tree | 970be1e2fde222603fa3aa05c87b22cb30035be2 /delegate/src | |
parent | 05eccac1433a6637ef09bb30811c8c842116456d (diff) | |
download | armnn-b1c62f11881e0d528bea5b3664a8f36e4c03b508.tar.gz |
Fix armnn_external_delegate option parsing
* Fixed the mechanism in armnn_delegate.cpp which creates the runtime
options by moving it to DelegateOptions. BackendOptions are used in
the runtime options as well as in the optimizer options but need
to be processed separately.
* Added runtime options to DelegateOptions to make it easier to differ
between backend options of the runtime and the optimization
* Updated armnn_external_delegate to use runtime options
* Added explanations to OptimizerOptions
Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I34235474147def261821e4576dd41a83ad492258
Diffstat (limited to 'delegate/src')
-rw-r--r-- | delegate/src/DelegateOptions.cpp | 10 | ||||
-rw-r--r-- | delegate/src/armnn_delegate.cpp | 16 | ||||
-rw-r--r-- | delegate/src/armnn_external_delegate.cpp | 16 |
3 files changed, 17 insertions, 25 deletions
diff --git a/delegate/src/DelegateOptions.cpp b/delegate/src/DelegateOptions.cpp index d4d906a83a..c19697d6c6 100644 --- a/delegate/src/DelegateOptions.cpp +++ b/delegate/src/DelegateOptions.cpp @@ -11,15 +11,17 @@ namespace armnnDelegate DelegateOptions::DelegateOptions(armnn::Compute computeDevice, const std::vector<armnn::BackendOptions>& backendOptions, const armnn::Optional<armnn::LogSeverity> logSeverityLevel) - : m_Backends({computeDevice}), m_BackendOptions(backendOptions), m_LoggingSeverity(logSeverityLevel) + : m_Backends({computeDevice}), m_RuntimeOptions(), m_LoggingSeverity(logSeverityLevel) { + m_RuntimeOptions.m_BackendOptions = backendOptions; } DelegateOptions::DelegateOptions(const std::vector<armnn::BackendId>& backends, const std::vector<armnn::BackendOptions>& backendOptions, const armnn::Optional<armnn::LogSeverity> logSeverityLevel) - : m_Backends(backends), m_BackendOptions(backendOptions), m_LoggingSeverity(logSeverityLevel) + : m_Backends(backends), m_RuntimeOptions(), m_LoggingSeverity(logSeverityLevel) { + m_RuntimeOptions.m_BackendOptions = backendOptions; } DelegateOptions::DelegateOptions(armnn::Compute computeDevice, @@ -27,7 +29,7 @@ DelegateOptions::DelegateOptions(armnn::Compute computeDevice, const armnn::Optional<armnn::LogSeverity>& logSeverityLevel, const armnn::Optional<armnn::DebugCallbackFunction>& func) : m_Backends({computeDevice}), - m_BackendOptions({}), + m_RuntimeOptions(), m_OptimizerOptions(optimizerOptions), m_LoggingSeverity(logSeverityLevel), m_DebugCallbackFunc(func) @@ -39,7 +41,7 @@ DelegateOptions::DelegateOptions(const std::vector<armnn::BackendId>& backends, const armnn::Optional<armnn::LogSeverity>& logSeverityLevel, const armnn::Optional<armnn::DebugCallbackFunction>& func) : m_Backends(backends), - m_BackendOptions({}), + m_RuntimeOptions(), m_OptimizerOptions(optimizerOptions), m_LoggingSeverity(logSeverityLevel), m_DebugCallbackFunc(func) diff --git a/delegate/src/armnn_delegate.cpp b/delegate/src/armnn_delegate.cpp index ae25430e0d..966d17ca98 100644 --- a/delegate/src/armnn_delegate.cpp +++ b/delegate/src/armnn_delegate.cpp @@ -137,21 +137,7 @@ Delegate::Delegate(armnnDelegate::DelegateOptions options) } // Create ArmNN Runtime - armnn::IRuntime::CreationOptions runtimeOptions; - runtimeOptions.m_DynamicBackendsPath = m_Options.GetDynamicBackendsPath(); - runtimeOptions.m_EnableGpuProfiling = m_Options.GetGpuProfilingState(); - runtimeOptions.m_ProfilingOptions = m_Options.GetExternalProfilingParams(); - - auto backendOptions = m_Options.GetBackendOptions(); - if (!backendOptions.empty()) - { - runtimeOptions.m_BackendOptions = backendOptions; - } - else if (!m_Options.GetOptimizerOptions().m_ModelOptions.empty()) - { - runtimeOptions.m_BackendOptions = m_Options.GetOptimizerOptions().m_ModelOptions; - } - m_Runtime = armnn::IRuntime::Create(runtimeOptions); + m_Runtime = armnn::IRuntime::Create(options.GetRuntimeOptions()); std::vector<armnn::BackendId> backends; if (m_Runtime) diff --git a/delegate/src/armnn_external_delegate.cpp b/delegate/src/armnn_external_delegate.cpp index 4f583e80d4..5919a6c5ab 100644 --- a/delegate/src/armnn_external_delegate.cpp +++ b/delegate/src/armnn_external_delegate.cpp @@ -171,6 +171,8 @@ TfLiteDelegate* tflite_plugin_create_delegate(char** options_keys, { // (Initializes with CpuRef backend) armnnDelegate::DelegateOptions options = armnnDelegate::TfLiteArmnnDelegateOptionsDefault(); + + armnn::IRuntime::CreationOptions runtimeOptions; armnn::OptimizerOptions optimizerOptions; bool internalProfilingState = false; armnn::ProfilingDetailsMethod internalProfilingDetail = armnn::ProfilingDetailsMethod::DetailsWithEvents; @@ -194,7 +196,7 @@ TfLiteDelegate* tflite_plugin_create_delegate(char** options_keys, // Process dynamic-backends-path else if (std::string(options_keys[i]) == std::string("dynamic-backends-path")) { - options.SetDynamicBackendsPath(std::string(options_values[i])); + runtimeOptions.m_DynamicBackendsPath = std::string(options_values[i]); } // Process logging level else if (std::string(options_keys[i]) == std::string("logging-severity")) @@ -205,26 +207,26 @@ TfLiteDelegate* tflite_plugin_create_delegate(char** options_keys, else if (std::string(options_keys[i]) == std::string("gpu-tuning-level")) { armnn::BackendOptions option("GpuAcc", {{"TuningLevel", atoi(options_values[i])}}); - options.AddBackendOption(option); + runtimeOptions.m_BackendOptions.push_back(option); } else if (std::string(options_keys[i]) == std::string("gpu-mlgo-tuning-file")) { armnn::BackendOptions option("GpuAcc", {{"MLGOTuningFilePath", std::string(options_values[i])}}); - options.AddBackendOption(option); + optimizerOptions.m_ModelOptions.push_back(option); } else if (std::string(options_keys[i]) == std::string("gpu-tuning-file")) { armnn::BackendOptions option("GpuAcc", {{"TuningFile", std::string(options_values[i])}}); - options.AddBackendOption(option); + runtimeOptions.m_BackendOptions.push_back(option); } else if (std::string(options_keys[i]) == std::string("gpu-enable-profiling")) { - options.SetGpuProfilingState(*options_values[i] != '0'); + runtimeOptions.m_EnableGpuProfiling = (*options_values[i] != '0'); } else if (std::string(options_keys[i]) == std::string("gpu-kernel-profiling-enabled")) { armnn::BackendOptions option("GpuAcc", {{"KernelProfilingEnabled", (*options_values[i] != '0')}}); - options.AddBackendOption(option); + runtimeOptions.m_BackendOptions.push_back(option); } else if (std::string(options_keys[i]) == std::string("save-cached-network")) { @@ -340,6 +342,8 @@ TfLiteDelegate* tflite_plugin_create_delegate(char** options_keys, throw armnn::Exception("Unknown option for the ArmNN Delegate given: " + std::string(options_keys[i])); } } + + options.SetRuntimeOptions(runtimeOptions); options.SetOptimizerOptions(optimizerOptions); options.SetInternalProfilingParams(internalProfilingState, internalProfilingDetail); options.SetExternalProfilingParams(extProfilingParams); |