ArmNN
 21.05
WorkingMemHandle.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 #include "WorkingMemHandle.hpp"
8 #include "Network.hpp"
10 
11 namespace armnn
12 {
13 
14 namespace experimental
15 {
16 
18  NetworkId networkId,
19  std::vector<WorkingMemDescriptor> workingMemDescriptors,
20  std::unordered_map<LayerGuid, WorkingMemDescriptor> workingMemDescriptorMap,
21  std::vector<std::shared_ptr<IMemoryManager>> memoryManagers,
22  std::unordered_map<LayerGuid, std::vector<std::unique_ptr<ITensorHandle> > > ownedTensorHandles) :
23  m_NetworkId(networkId),
24  m_WorkingMemDescriptors(workingMemDescriptors),
25  m_WorkingMemDescriptorMap(workingMemDescriptorMap),
26  m_MemoryManagers(memoryManagers),
27  m_OwnedTensorHandles(std::move(ownedTensorHandles)),
28  m_IsAllocated(false),
29  m_Mutex(),
30  m_InferenceId(profiling::ProfilingService::GetNextGuid())
31 {
32 }
33 
35 {
36  if (m_IsAllocated)
37  {
38  return;
39  }
40  m_IsAllocated = true;
41 
42  for (auto& mgr : m_MemoryManagers)
43  {
44  mgr->Acquire();
45  }
46 }
47 
49 {
50  if (!m_IsAllocated)
51  {
52  return;
53  }
54  m_IsAllocated = false;
55 
56  for (auto& mgr : m_MemoryManagers)
57  {
58  mgr->Release();
59  }
60 }
61 
62 } // end experimental namespace
63 
64 } // end armnn namespace
DataLayout::NCHW false
Copyright (c) 2021 ARM Limited and Contributors.
int NetworkId
Definition: IRuntime.hpp:22
void Allocate() override
Allocate the backing memory required for execution.
WorkingMemHandle(NetworkId networkId, std::vector< WorkingMemDescriptor > workingMemDescriptors, std::unordered_map< LayerGuid, WorkingMemDescriptor > workingMemDescriptorMap, std::vector< std::shared_ptr< IMemoryManager >> memoryManagers, std::unordered_map< LayerGuid, std::vector< std::unique_ptr< ITensorHandle > > > ownedTensorHandles)
void Free() override
Free the backing memory required for execution. The mutex must be locked.