Hi, could you try following changes?
--- a/src/tir/transforms/ir_utils.cc
+++ b/src/tir/transforms/ir_utils.cc
@@ -417,7 +417,8 @@ Array<PrimExpr> GetBufferAllocationShape(const Buffer& buffer) {
if (buffer->strides.size()) {
ICHECK_EQ(buffer->shape.size(), buffer->strides.size());
for (size_t i = buffer->strides.size() - 1; i > 0; --i) {
- ICHECK(is_zero(floormod(buffer->strides[i - 1], buffer->strides[i])));
+ ICHECK(
+ arith::Analyzer().CanProveEqual(floormod(buffer->strides[i - 1], buffer->strides[i]), 0));
alloc_shape.Set(i, buffer->strides[i - 1] / buffer->strides[i]);
}
}
Generally not. The TIR part is shared. It would not be a surprise that current TIR handling encounter certain issue on dynamic shape workloads from unity. For this case, it just do not know c * some_index
is divisible by c
. If it works, do you mind send this quick fix for the TVM repo? Thank you!