aboutsummaryrefslogtreecommitdiff
path: root/delegate/src
diff options
context:
space:
mode:
authorJan Eilers <jan.eilers@arm.com>2021-10-26 14:56:47 +0100
committerTeresaARM <teresa.charlinreyes@arm.com>2021-10-29 10:20:16 +0000
commitb1c62f11881e0d528bea5b3664a8f36e4c03b508 (patch)
tree970be1e2fde222603fa3aa05c87b22cb30035be2 /delegate/src
parent05eccac1433a6637ef09bb30811c8c842116456d (diff)
downloadarmnn-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.cpp10
-rw-r--r--delegate/src/armnn_delegate.cpp16
-rw-r--r--delegate/src/armnn_external_delegate.cpp16
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);