ArmNN
 22.05.01
CustomMemoryOptimizerStrategyTests.cpp File Reference
#include <armnn/IRuntime.hpp>
#include <armnn/Utils.hpp>
#include <armnn/BackendRegistry.hpp>
#include <armnn/backends/IMemoryOptimizerStrategy.hpp>
#include <neon/NeonBackend.hpp>
#include <doctest/doctest.h>

Go to the source code of this file.

Functions

 TEST_SUITE ("CustomMemoryOptimizerStrategyTests")
 

Function Documentation

◆ TEST_SUITE()

TEST_SUITE ( "CustomMemoryOptimizerStrategyTests"  )

Definition at line 47 of file CustomMemoryOptimizerStrategyTests.cpp.

References IRuntime::CreationOptions::m_MemoryOptimizerStrategyMap.

48 {
49 
50 // Only run this test if CpuRef is enabled
51 #if defined(ARMNNREF_ENABLED)
52 TEST_CASE("RefCustomMemoryOptimizerStrategyTest")
53 {
54  using namespace armnn;
55 
56  // Create ArmNN runtime
57  IRuntime::CreationOptions options; // default options
58  auto customMemoryOptimizerStrategy = std::make_shared<SampleMemoryOptimizerStrategy>();
59  options.m_MemoryOptimizerStrategyMap = {{"CpuRef", std::move(customMemoryOptimizerStrategy)}};
60  IRuntimePtr run = IRuntime::Create(options);
61 
62  CHECK(!BackendRegistryInstance().GetMemoryOptimizerStrategies().empty());
63  CHECK(BackendRegistryInstance().GetMemoryOptimizerStrategies().size() == 1);
64  CHECK(BackendRegistryInstance().GetMemoryOptimizerStrategies().at(RefBackend::GetIdStatic()));
66  CHECK(optimizerStrategy->GetName() == std::string("SampleMemoryOptimizerStrategy"));
67 
68  // De-register the memory optimizer
70  CHECK(BackendRegistryInstance().GetMemoryOptimizerStrategies().empty());
71 
72 }
73 
74 TEST_CASE("CpuRefSetMemoryOptimizerStrategyTest")
75 {
76  using namespace armnn;
77 
78  // Create ArmNN runtime
79  IRuntime::CreationOptions options; // default options
80  options.m_BackendOptions.emplace_back(
81  BackendOptions{"CpuRef",
82  {
83  {"MemoryOptimizerStrategy", "ConstantMemoryStrategy"}
84  }
85  });
86 
87  IRuntimePtr run = IRuntime::Create(options);
88 
89  // ConstantMemoryStrategy should be registered for CpuRef
90  CHECK(!BackendRegistryInstance().GetMemoryOptimizerStrategies().empty());
91  CHECK(BackendRegistryInstance().GetMemoryOptimizerStrategies().size() == 1);
92  CHECK(BackendRegistryInstance().GetMemoryOptimizerStrategies().at(RefBackend::GetIdStatic()));
94  CHECK(optimizerStrategy->GetName() == std::string("ConstantMemoryStrategy"));
96 }
97 
98 #endif
99 
100 // Only run this test if CpuAcc is enabled
101 #if defined(ARMCOMPUTENEON_ENABLED)
102 
103 TEST_CASE("CpuAccSetMemoryOptimizerStrategyTest")
104 {
105  using namespace armnn;
106 
107  // Create ArmNN runtime
108  IRuntime::CreationOptions options; // default options
109  options.m_BackendOptions.emplace_back(
110  BackendOptions{"CpuAcc",
111  {
112  {"MemoryOptimizerStrategy", "NotExistMemoryOptimizerStrategy"}
113  }
114  });
115 
116  IRuntimePtr run = IRuntime::Create(options);
117 
118  // No MemoryOptimizerStrategy should be registered..
119  CHECK(armnn::BackendRegistryInstance().GetMemoryOptimizerStrategies().empty());
121 }
122 
123 #endif
124 
125 }
static IRuntimePtr Create(const CreationOptions &options)
Definition: Runtime.cpp:49
MemoryOptimizerStrategiesMapRef GetMemoryOptimizerStrategies()
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
Definition: IRuntime.hpp:33
BackendRegistry & BackendRegistryInstance()
static const BackendId & GetIdStatic()
Definition: RefBackend.cpp:23
std::map< BackendId, std::shared_ptr< IMemoryOptimizerStrategy > > m_MemoryOptimizerStrategyMap
A map to define a custom memory optimizer strategy for specific backend Ids.
Definition: IRuntime.hpp:122
Copyright (c) 2021 ARM Limited and Contributors.
std::vector< BackendOptions > m_BackendOptions
Pass backend specific options.
Definition: IRuntime.hpp:189
void DeregisterMemoryOptimizerStrategy(const BackendId &id)
Struct for the users to pass backend specific options.
static const BackendId & GetIdStatic()
Definition: NeonBackend.cpp:44