aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Runtime.cpp
diff options
context:
space:
mode:
authorJim Flynn <jim.flynn@arm.com>2021-10-26 21:26:10 +0100
committerJim Flynn <jim.flynn@arm.com>2021-10-26 21:27:22 +0100
commite1fdd2866b0f403b5e80994890d62c2c038c16c9 (patch)
treed7398443532cbafde7c6824015397e6bac6dd502 /src/armnn/Runtime.cpp
parentca5883951ab51191eb19502459f0936fc96e14f1 (diff)
downloadarmnn-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.cpp32
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";
+ }
}
}
}