diff options
author | Jim Flynn <jim.flynn@arm.com> | 2021-10-26 21:26:10 +0100 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2021-10-26 21:27:22 +0100 |
commit | e1fdd2866b0f403b5e80994890d62c2c038c16c9 (patch) | |
tree | d7398443532cbafde7c6824015397e6bac6dd502 /src/armnn/Runtime.cpp | |
parent | ca5883951ab51191eb19502459f0936fc96e14f1 (diff) | |
download | armnn-e1fdd2866b0f403b5e80994890d62c2c038c16c9.tar.gz |
IVGCVSW-6470 Create MemoryStrategyBenchmark
* Refactor the strategy library to be more generic
* Shorten the names of the current strategies
* Change validatorStrat to throw exceptions
Change-Id: I0d9c9ef609b2d8675e5788610d1accac6767c660
Signed-off-by: Finn Williams <finwil01@e127804.cambridge.arm.com>
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Diffstat (limited to 'src/armnn/Runtime.cpp')
-rw-r--r-- | src/armnn/Runtime.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp index ca28199aae..9e212306c4 100644 --- a/src/armnn/Runtime.cpp +++ b/src/armnn/Runtime.cpp @@ -12,7 +12,7 @@ #include <armnn/backends/IBackendContext.hpp> #include <backendsCommon/DynamicBackendUtils.hpp> -#include <backendsCommon/MemoryOptimizerStrategyLibrary.hpp> +#include <backendsCommon/memoryOptimizerStrategyLibrary/MemoryOptimizerStrategyLibrary.hpp> #include <armnn/utility/PolymorphicDowncast.hpp> #include <common/include/LabelsAndEventClasses.hpp> @@ -425,11 +425,33 @@ RuntimeImpl::RuntimeImpl(const IRuntime::CreationOptions& options) }); if (memoryOptimizerStrategyName != "") { - MemoryOptimizerStrategyLibrary memoryOptimizerStrategyLibrary; - if (memoryOptimizerStrategyLibrary.SetMemoryOptimizerStrategy(id, memoryOptimizerStrategyName)) + std::shared_ptr<IMemoryOptimizerStrategy> strategy = + GetMemoryOptimizerStrategy(memoryOptimizerStrategyName); + + if (!strategy) { - ARMNN_LOG(info) << "MemoryOptimizerStrategy " - << memoryOptimizerStrategyName << " set for the backend " << id << "."; + ARMNN_LOG(warning) << "MemoryOptimizerStrategy: " << memoryOptimizerStrategyName + << " was not found \n"; + } + else + { + using BackendCapability = BackendOptions::BackendOption; + auto strategyType = GetMemBlockStrategyTypeName(strategy->GetMemBlockStrategyType()); + BackendCapability memOptimizeStrategyCapability {strategyType, true}; + if (HasCapability(memOptimizeStrategyCapability, id)) + { + BackendRegistryInstance().RegisterMemoryOptimizerStrategy(id, strategy); + + ARMNN_LOG(info) << "MemoryOptimizerStrategy: " + << memoryOptimizerStrategyName << " set for the backend " << id << "."; + } + else + { + ARMNN_LOG(warning) << "Backend " + << id + << " does not have multi-axis packing capability and cannot support" + << "MemoryOptimizerStrategy: " << memoryOptimizerStrategyName << "\n"; + } } } } |