ArmNN
 21.11
SingleAxisPriorityList.hpp
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 #pragma once
6 
7 #include <armnn/Types.hpp>
9 #include <tuple>
10 #include <utility>
11 #include <algorithm>
12 
13 #include <list>
14 
15 namespace armnn
16 {
17 
18  /// SingleAxisPriorityList sorts the MemBlocks according to some priority,
19  /// then trys to place them into as few bins as possible
21  {
22  public:
24  : m_Name(std::string("SingleAxisPriorityList"))
25  , m_MemBlockStrategyType(MemBlockStrategyType::SingleAxisPacking) {}
26 
27  std::string GetName() const override;
28 
30 
31  std::vector<MemBin> Optimize(std::vector<MemBlock>& memBlocks) override;
32 
33  private:
34 
35  // Tracks all memBlocks and their positions in a bin as well as their maximum memSize
36  struct BinTracker;
37 
38  // PlaceBlocks takes a list of MemBlock* and fits them into n bins.
39  // A block can only fit into an existing bin if it's lifetime does not overlap with the lifetime of the
40  // blocks already in a bin.
41  // If no appropriate bin is available a new one is created.
42  void PlaceBlocks(const std::list<MemBlock*>& priorityList,
43  std::vector<BinTracker>& placedBlocks,
44  const unsigned int maxLifetime);
45 
46  std::string m_Name;
47  MemBlockStrategyType m_MemBlockStrategyType;
48  };
49 
50 } // namespace armnn
Copyright (c) 2021 ARM Limited and Contributors.
std::vector< MemBin > Optimize(std::vector< MemBlock > &memBlocks) override
MemBlockStrategyType GetMemBlockStrategyType() const override
MemBlockStrategyType
Definition: Types.hpp:226
std::string GetName() const override
SingleAxisPriorityList sorts the MemBlocks according to some priority, then trys to place them into a...