Skip to content

Commit ac9749d

Browse files
author
Min Chen
committed
Rename IntegerSet to PresburgerSet
1 parent 745ecc2 commit ac9749d

File tree

5 files changed

+62
-62
lines changed

5 files changed

+62
-62
lines changed

python/tvm/arith/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from .int_set import (
2020
IntSet,
2121
IntervalSet,
22-
IntegerSet,
22+
PresburgerSet,
2323
estimate_region_lower_bound,
2424
estimate_region_strict_bound,
2525
estimate_region_upper_bound,

python/tvm/arith/int_set.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ def __init__(self, min_value, max_value):
8181
self.__init_handle_by_constructor__(_ffi_api.IntervalSet, min_value, max_value)
8282

8383

84-
@tvm._ffi.register_object("arith.IntegerSet")
85-
class IntegerSet(IntSet):
84+
@tvm._ffi.register_object("arith.PresburgerSet")
85+
class PresburgerSet(IntSet):
8686
"""Represent of Presburger Set
8787
8888
Parameters
@@ -95,7 +95,7 @@ class IntegerSet(IntSet):
9595
"""
9696

9797
def __init__(self, constraint, domain_vars):
98-
self.__init_handle_by_constructor__(_ffi_api.IntegerSet, constraint, domain_vars)
98+
self.__init_handle_by_constructor__(_ffi_api.PresburgerSet, constraint, domain_vars)
9999

100100

101101
def estimate_region_lower_bound(region, var_dom, predicate):

src/arith/integer_set.cc renamed to src/arith/presburger_set.cc

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
*/
1919

2020
/*!
21-
* \file integer_set.cc
22-
* \brief The integer set functions
21+
* \file presburger_set.cc
22+
* \brief The presburger set functions
2323
*/
2424
#include <tvm/arith/int_set.h>
2525
#include <tvm/runtime/registry.h>
@@ -34,7 +34,7 @@
3434
#include <utility>
3535

3636
#include "constraint_extract.h"
37-
#include "integer_set.h"
37+
#include "presburger_set.h"
3838
#include "interval_set.h"
3939

4040
namespace tvm {
@@ -45,7 +45,7 @@ using namespace tir;
4545

4646

4747
void Update(const PrimExpr& constraint,
48-
IntegerSetNode& intset) {
48+
PresburgerSetNode& intset) {
4949
auto& space = intset.space;
5050
auto constraints_union = ExtractComponents(constraint);
5151
for (const PrimExpr& subconstraint : constraints_union) {
@@ -87,7 +87,7 @@ void Update(const PrimExpr& constraint,
8787
}
8888
}
8989

90-
IntegerSet::IntegerSet(const PrimExpr& constraint) {
90+
PresburgerSet::PresburgerSet(const PrimExpr& constraint) {
9191
Array<Var> vars;
9292
PostOrderVisit(constraint, [&vars](const ObjectRef& obj) {
9393
if (const VarNode* new_var = obj.as<VarNode>()) {
@@ -102,25 +102,25 @@ IntegerSet::IntegerSet(const PrimExpr& constraint) {
102102
Analyzer analyzer;
103103
PrimExpr simplified_constraint = analyzer.Simplify(constraint, kSimplifyRewriteCanonicalRewrite);
104104
auto space = PresburgerSpace::getRelationSpace(vars.size(), 0, 0, 0);
105-
auto node = make_object<IntegerSetNode>(std::move(space), vars);
105+
auto node = make_object<PresburgerSetNode>(std::move(space), vars);
106106
node->SetVars(vars);
107107
Update(simplified_constraint, *node);
108108
data_ = std::move(node);
109109
}
110110

111-
IntegerSet::IntegerSet(const std::vector<IntegerRelation>& disjuncts, const Array<Var>& vars) {
112-
auto node = make_object<IntegerSetNode>(disjuncts, disjuncts[0].getSpace(), vars);
111+
PresburgerSet::PresburgerSet(const std::vector<IntegerRelation>& disjuncts, const Array<Var>& vars) {
112+
auto node = make_object<PresburgerSetNode>(disjuncts, disjuncts[0].getSpace(), vars);
113113
data_ = std::move(node);
114114
}
115115

116-
void IntegerSetNode::UpdateConstraint(const PrimExpr& constraint, const Array<Var>& vars) {
116+
void PresburgerSetNode::UpdateConstraint(const PrimExpr& constraint, const Array<Var>& vars) {
117117
Analyzer analyzer;
118118
PrimExpr simplified_constraint = analyzer.Simplify(constraint, kSimplifyRewriteCanonicalRewrite);
119119
Update(simplified_constraint, *this);
120120
SetVars(vars);
121121
}
122122

123-
PrimExpr IntegerSetNode::GenerateConstraint() const {
123+
PrimExpr PresburgerSetNode::GenerateConstraint() const {
124124
PrimExpr constraint = Bool(0);
125125
for (const IntegerRelation &disjunct : disjuncts) {
126126
PrimExpr union_entry = Bool(1);
@@ -166,18 +166,18 @@ PrimExpr IntegerSetNode::GenerateConstraint() const {
166166
return constraint;
167167
}
168168

169-
IntegerSet Union(Array<IntegerSet> sets) {
169+
PresburgerSet Union(Array<PresburgerSet> sets) {
170170
CHECK_GT(sets.size(), 0);
171171
if (sets.size() == 1) return sets[0];
172172
auto relations = sets[0]->disjuncts;
173173
for (size_t i = 1; i < sets.size(); ++i) {
174174
for (const auto rel : sets[i]->disjuncts)
175175
relations.push_back(rel);
176176
}
177-
return IntegerSet(std::move(relations), sets[0]->GetVars());
177+
return PresburgerSet(std::move(relations), sets[0]->GetVars());
178178
}
179179

180-
IntegerSet Intersect(const Array<IntegerSet>& sets) {
180+
PresburgerSet Intersect(const Array<PresburgerSet>& sets) {
181181
CHECK_GT(sets.size(), 0);
182182
if (sets.size() == 1) return sets[0];
183183
auto relations = sets[0]->disjuncts;
@@ -193,10 +193,10 @@ IntegerSet Intersect(const Array<IntegerSet>& sets) {
193193
}
194194
}
195195
}
196-
return IntegerSet(std::move(relations), sets[0]->GetVars());
196+
return PresburgerSet(std::move(relations), sets[0]->GetVars());
197197
}
198198

199-
IntSet EvalSet(const PrimExpr& e, const IntegerSet& set) {
199+
IntSet EvalSet(const PrimExpr& e, const PresburgerSet& set) {
200200
auto tvm_coeffs = DetectLinearEquation(e, set->GetVars());
201201
SmallVector<int64_t> coeffs;
202202
coeffs.reserve(tvm_coeffs.size());
@@ -221,24 +221,24 @@ IntSet EvalSet(const PrimExpr& e, const IntegerSet& set) {
221221
}
222222

223223
TVM_STATIC_IR_FUNCTOR(ReprPrinter, vtable)
224-
.set_dispatch<IntegerSetNode>([](const ObjectRef& node, ReprPrinter* p) {
225-
auto set = node.as<IntegerSetNode>();
224+
.set_dispatch<PresburgerSetNode>([](const ObjectRef& node, ReprPrinter* p) {
225+
auto set = node.as<PresburgerSetNode>();
226226
ICHECK(ret) << "Unknown type:" << node->GetTypeKey();
227227
p->stream << "{";
228228
p->stream << set->GetVars() << ": ";
229-
p->stream << node.as<IntegerSetNode>()->GenerateConstraint();
229+
p->stream << node.as<PresburgerSetNode>()->GenerateConstraint();
230230
p->stream << "}";
231231
});
232232

233233
#endif
234234

235-
IntegerSet MakeIntegerSet(const PrimExpr& constraint) {
236-
return IntegerSet(constraint);
235+
PresburgerSet MakePresburgerSet(const PrimExpr& constraint) {
236+
return PresburgerSet(constraint);
237237
}
238238

239-
TVM_REGISTER_GLOBAL("arith.IntegerSet").set_body_typed(MakeIntegerSet);
239+
TVM_REGISTER_GLOBAL("arith.PresburgerSet").set_body_typed(MakePresburgerSet);
240240

241-
TVM_REGISTER_NODE_TYPE(IntegerSetNode);
241+
TVM_REGISTER_NODE_TYPE(PresburgerSetNode);
242242

243243
} // namespace arith
244244
} // namespace tvm

src/arith/integer_set.h renamed to src/arith/presburger_set.h

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
*/
1919

2020
/*!
21-
* \file integer_set.h
21+
* \file presburger_set.h
2222
* \brief Integer set based on MLIR Presburger set
2323
*/
24-
#ifndef TVM_ARITH_INTEGER_SET_H_
25-
#define TVM_ARITH_INTEGER_SET_H_
24+
#ifndef TVM_ARITH_PRESBURGER_SET_H_
25+
#define TVM_ARITH_PRESBURGER_SET_H_
2626

2727
#ifdef TVM_MLIR_VERSION
2828
#include <mlir/Analysis/Presburger/PresburgerRelation.h>
@@ -44,20 +44,20 @@ namespace arith {
4444
using namespace mlir;
4545
using namespace presburger;
4646

47-
// Acknowledgement: IntegerSet is based on Presburger set of MLIR.
47+
// Acknowledgement: PresburgerSet is based on Presburger set of MLIR.
4848
/*!
4949
* \brief Symbolic integer set.
5050
*
51-
* \note IntegerSet aims to provide compatible APIs with IntSet,
51+
* \note PresburgerSet aims to provide compatible APIs with IntSet,
5252
* and some additional APIs that analyze and solve
5353
* multi-dimension interger set problems
5454
*/
55-
class IntegerSetNode : public IntSetNode {
55+
class PresburgerSetNode : public IntSetNode {
5656
public:
57-
explicit IntegerSetNode(const PresburgerSpace &space, const Array<Var> &vars)
57+
explicit PresburgerSetNode(const PresburgerSpace &space, const Array<Var> &vars)
5858
: disjuncts({}), space(space), vars(vars) {};
59-
explicit IntegerSetNode() : space(PresburgerSpace::getRelationSpace()) {};
60-
explicit IntegerSetNode(const std::vector<IntegerRelation> &disjuncts,
59+
explicit PresburgerSetNode() : space(PresburgerSpace::getRelationSpace()) {};
60+
explicit PresburgerSetNode(const std::vector<IntegerRelation> &disjuncts,
6161
const PresburgerSpace &space,
6262
const Array<Var> &vars)
6363
: disjuncts(disjuncts), space(space), vars(vars) {}
@@ -90,7 +90,7 @@ class IntegerSetNode : public IntSetNode {
9090

9191
/*!
9292
* \brief Update int set with given constraint
93-
* \param constraint The added constraint to the IntegerSet.
93+
* \param constraint The added constraint to the PresburgerSet.
9494
* \param vars The specified domain vars in constraint expression.
9595
*/
9696
void UpdateConstraint(const PrimExpr& constraint, const Array<Var>& vars);
@@ -120,58 +120,58 @@ class IntegerSetNode : public IntSetNode {
120120
std::mem_fn(&IntegerRelation::isIntegerEmpty));
121121
}
122122

123-
static constexpr const char* _type_key = "arith.IntegerSet";
124-
TVM_DECLARE_FINAL_OBJECT_INFO(IntegerSetNode, IntSetNode);
123+
static constexpr const char* _type_key = "arith.PresburgerSet";
124+
TVM_DECLARE_FINAL_OBJECT_INFO(PresburgerSetNode, IntSetNode);
125125

126126
private:
127127
Array<Var> vars;
128128
};
129129

130130
/*!
131131
* \brief Integer set used for multi-dimension integer analysis.
132-
* \sa IntegerSetNode
132+
* \sa PresburgerSetNode
133133
*/
134-
class IntegerSet : public IntSet {
134+
class PresburgerSet : public IntSet {
135135
public:
136136
/*!
137-
* \brief Make a new instance of IntegerSet.
137+
* \brief Make a new instance of PresburgerSet.
138138
* \param disjuncts The disjunts to construct the set.
139139
* \param vars The variables that the constraint describes about.
140-
* \return The created IntegerSet.
140+
* \return The created PresburgerSet.
141141
*/
142-
TVM_DLL IntegerSet(const std::vector<IntegerRelation>& disjuncts, const Array<Var>& vars);
142+
TVM_DLL PresburgerSet(const std::vector<IntegerRelation>& disjuncts, const Array<Var>& vars);
143143

144144
/*!
145-
* \brief Make a new instance of IntegerSet, collect all vars as space vars.
145+
* \brief Make a new instance of PresburgerSet, collect all vars as space vars.
146146
* \param constraint The constraint to construct the set.
147-
* \return The created IntegerSet.
147+
* \return The created PresburgerSet.
148148
*/
149-
TVM_DLL IntegerSet(const PrimExpr& constraint);
149+
TVM_DLL PresburgerSet(const PrimExpr& constraint);
150150

151-
TVM_DEFINE_OBJECT_REF_COW_METHOD(IntegerSetNode);
152-
TVM_DEFINE_OBJECT_REF_METHODS(IntegerSet, IntSet, IntegerSetNode);
151+
TVM_DEFINE_OBJECT_REF_COW_METHOD(PresburgerSetNode);
152+
TVM_DEFINE_OBJECT_REF_METHODS(PresburgerSet, IntSet, PresburgerSetNode);
153153
};
154154
#else
155155
// Class definition when MLIR is not enabled, to prevent compile-time error.
156-
class IntegerSetNode : public IntSetNode {
156+
class PresburgerSetNode : public IntSetNode {
157157
public:
158158
// dummy visitor overload.
159159
void VisitAttrs(tvm::AttrVisitor* v) {
160160
LOG(FATAL) << "MLIR is not enabled!";
161161
}
162162

163-
static constexpr const char* _type_key = "arith.IntegerSet";
164-
TVM_DECLARE_FINAL_OBJECT_INFO(IntegerSetNode, IntSetNode);
163+
static constexpr const char* _type_key = "arith.PresburgerSet";
164+
TVM_DECLARE_FINAL_OBJECT_INFO(PresburgerSetNode, IntSetNode);
165165
};
166166

167-
class IntegerSet : public IntSet {
167+
class PresburgerSet : public IntSet {
168168
public:
169169
/*!
170170
* \brief Constructor interface to prompt when MLIR is not enabled.
171171
* \param constraint The constraint to construct the set.
172172
* \return The created set.
173173
*/
174-
TVM_DLL IntegerSet(const PrimExpr& constraint) {
174+
TVM_DLL PresburgerSet(const PrimExpr& constraint) {
175175
LOG(FATAL) << "MLIR is not enabled!";
176176
}
177177
};
@@ -181,24 +181,24 @@ class IntegerSet : public IntSet {
181181
* \param sets The sets to be combined
182182
* \return the set after union
183183
*/
184-
IntegerSet Union(const Array<IntegerSet> sets);
184+
PresburgerSet Union(const Array<PresburgerSet> sets);
185185

186186
/*!
187187
* \brief Create an intersected set of all sets
188188
* \param sets The sets to be intersected
189189
* \return The intersect set
190190
*/
191-
IntegerSet Intersect(const Array<IntegerSet>& sets);
191+
PresburgerSet Intersect(const Array<PresburgerSet>& sets);
192192

193193
/*!
194194
* \brief Evaluate the range of given expression based on the constraint
195-
* in given IntegerSet
195+
* in given PresburgerSet
196196
* \param e The target expresision to be evaluated.
197-
* \param set The IntegerSet defining the constraint.
197+
* \param set The PresburgerSet defining the constraint.
198198
*/
199-
IntSet EvalSet(const PrimExpr& e, const IntegerSet& set);
199+
IntSet EvalSet(const PrimExpr& e, const PresburgerSet& set);
200200

201201
} // namespace arith
202202
} // namespace tvm
203203

204-
#endif // TVM_ARITH_INTEGER_SET_H_
204+
#endif // TVM_ARITH_PRESBURGER_SET_H_

tests/cpp/arith_integer_set_test.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@
2323
#include <tvm/arith/analyzer.h>
2424
#include <tvm/te/operation.h>
2525

26-
#include "../src/arith/integer_set.h"
26+
#include "../src/arith/presburger_set.h"
2727

28-
TEST(IntegerSet, eval) {
28+
TEST(PresburgerSet, eval) {
2929
auto x = tvm::tir::Var("x");
3030
auto y = tvm::tir::Var("y");
3131
auto sub_constraint0 = (x + y < 20) && (x - y <= 0);
3232
auto sub_constraint1 = x >= 0 && x < 20 && y >=0 && y < 20;
3333
auto constraint = sub_constraint0 && sub_constraint1;
34-
auto set = tvm::arith::IntegerSet(constraint);
34+
auto set = tvm::arith::PresburgerSet(constraint);
3535

3636
auto target = x + 2*y;
3737
auto result = EvalSet(target, set);

0 commit comments

Comments
 (0)