TVM  0.9.4
VariableCountingVector.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <tvm/api.h>
6 #include <tvm/defs.h>
7 
8 #include <tvm/Space.h>
9 #include <tvm/VariableVector.h>
11 #include <tvm/utils/internal/map.h>
12 
13 namespace tvm::internal
14 {
30 {
31 public:
40  VariableCountingVector(bool split = false) : split_(split) {}
42  bool add(VariablePtr v);
43  void add(const VariableVector & v);
45  bool remove(const Variable & v);
46  void remove(const VariableVector & v);
47 
48  void clear();
49 
50  void set(const VectorConstRef & val);
51 
53  const VariableVector & variables() const;
54 
66  const std::vector<uint8_t> simple() const;
67 
68  bool split() const { return split_; }
69 
72 
73 private:
74  struct SpaceRangeCounting
75  {
79 
80  bool add(const Space & start, const Space & dim);
81  bool remove(const Space & start, const Space & dim);
82  bool empty() const { return mSize_.empty(); }
83  int maxCount() const { return mSize_.maxCount(); }
84  };
85 
86  void update() const;
87 
89  bool split_;
90  mutable bool upToDate_ = false;
91  mutable VariableVector variables_;
92  mutable std::vector<uint8_t> simple_;
93 };
94 } // namespace tvm::internal
#define TVM_DLLAPI
Definition: api.h:35
Definition: Space.h:33
Definition: VariableVector.h:41
Definition: Variable.h:49
Definition: RangeCounting.h:55
bool empty() const
Definition: RangeCounting.h:94
Definition: VariableCountingVector.h:30
bool split() const
Definition: VariableCountingVector.h:68
bool remove(const Variable &v)
void add(const VariableVector &v)
const VariableVector & variables() const
const std::vector< uint8_t > simple() const
void set(const VectorConstRef &val)
VariableCountingVector(bool split=false)
Definition: VariableCountingVector.h:40
void remove(const VariableVector &v)
Definition: CallbackManager.h:12
std::map< KeyWithId, Value, IdLess< KeyWithId >, Allocator > map
Definition: map.h:41
std::shared_ptr< Variable > VariablePtr
Definition: defs.h:65
Eigen::Ref< const Eigen::VectorXd > VectorConstRef
Definition: defs.h:50