| // |
| // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| |
| #pragma once |
| |
| namespace armnn |
| { |
| |
| using NetworkId = int; |
| |
| namespace experimental |
| { |
| |
| struct WorkingMemDescriptor; |
| |
| class IWorkingMemHandle |
| { |
| public: |
| virtual ~IWorkingMemHandle() {}; |
| |
| /// Returns the NetworkId of the Network that this IWorkingMemHandle works with. |
| virtual NetworkId GetNetworkId() = 0; |
| |
| /// Allocate the backing memory required for execution. If this is not called, then allocation will be |
| /// deferred to execution time. |
| virtual void Allocate() = 0; |
| |
| /// Free the backing memory required for execution. |
| virtual void Free() = 0; |
| |
| /// IsAllocated returns true if the backing memory is currently allocated. |
| virtual bool IsAllocated() = 0; |
| |
| /// Get the WorkingMemDescriptor for a Layer. |
| virtual WorkingMemDescriptor& GetWorkingMemDescriptor(LayerGuid id) = 0; |
| |
| /// Get the WorkingMemDescriptor at an index. The WorkingMemDescriptors are stored in the same order as |
| /// the Workloads in a topologically sorted graph. |
| virtual WorkingMemDescriptor& GetWorkingMemDescriptorAt(unsigned int id) = 0; |
| }; |
| |
| } // end experimental namespace |
| |
| } // end armnn namespace |