aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Runtime.cpp
diff options
context:
space:
mode:
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";
+ }
}
}
}