this is before compute at
// attr [compute(AL1, 0x11eb670)] realize_scope = "local.L1"
realize AL1([0, 1], [0, 6], [0, 36], [0, 64], [0, 16]) {
produce AL1 {
for (j, 0, 6) {
for (k, 0, 36) {
for (l, 0, 64) {
for (n, 0, 16) {
if (likely((k < (32 - 0)))) {
AL1(0, j, k, l, n) =im2col(A(0, j, k, (j/2), n), 5, 5, 2, 1, 1, 32, 1024, 128, 32, 6)
}
}
}
}
}
}
// attr [compute(Res, 0x171d870)] realize_scope = ""
realize Res([0, 8], [0, 64], [0, 16], [0, 16]) {
produce Res {
for (bo.inner.outer, 0, 8) {
for (bo.outer, 0, 2) {
// attr [compute(Res.local.UB.local.L0C, 0x1729950)] realize_scope = "local.L0C"
realize Res.local.UB.local.L0C([0, 8], [(((bo.outer*8) + bo.inner.outer)*4), 4], [0, 16], [0, 16]) {
produce Res.local.UB.local.L0C {
for (co.c.c.init, 0, 8) {
for (bo.c.c.init, 0, 4) {
for (bi.c.c.init, 0, 16) {
for (ci.c.c.init, 0, 16) {
Res.local.UB.local.L0C(co.c.c.init, (bo.c.c.init + (((bo.outer*8) + bo.inner.outer)*4)), bi.c.c.init, ci.c.c.init) =0.000000h
}
}
}
}
this is after s[AL1].compute_at(s[Res], xbo21)
// attr [compute(Res, 0xf92190)] realize_scope = ""
realize Res([0, 8], [0, 64], [0, 16], [0, 16]) {
produce Res {
for (bo.inner.outer, 0, 8) {
// attr [compute(AL1, 0xf06f60)] realize_scope = "local.L1"
realize AL1([(bo.inner.outer/16), ((((bo.inner.outer*64) + 1599)/1024) - (bo.inner.outer/16))], [0, 6], [0, 36], [(bo.inner.outer*4), 36], [0, 16]) {
produce AL1 {
for (i, 0, ((((bo.inner.outer*64) + 1599)/1024) - (bo.inner.outer/16))) {
for (j, 0, 6) {
for (k, 0, 36) {
for (l, 0, 36) {
for (n, 0, 16) {
if (likely(((i + (bo.inner.outer/16)) < (1 - 0)))) {
if (likely((k < (32 - 0)))) {
AL1((i + (bo.inner.outer/16)), j, k, (l + (bo.inner.outer*4)), n) =im2col(A((i + (bo.inner.outer/16)), j, k, (j/2), n), 5, 5, 2, 1, 1, 32, 1024, 128, 32, 6)
}
}
}
}
}
}
}
}
AL1 has variable shape after compute at, why tvm stop relaxing when has compute at?