Problem Description: Example: The axis of s[conv2d_bias_stage].op is dim= [1,1,16,16] , But, In the process of ScheduleOps, dim[2]=16 is optimized by GatherBound to dim[2] = 1(Only one of the 16 data of dim[2] is valid. I want to keep dim[2] = 16 not optimized. I found that there is a storage_align method in schedule. So I tried to do this: nns, mm, m16, n16= s[conv2d_bias_stage].op.axis s[conv2d_bias_stage].storage_align(m16, 16,0) But the actual effect is still optimized.
IR:
// attr [conv2d_bias] storage_scope = "local.out_buffer"
allocate conv2d_bias[float16 * 16]
produce conv2d_bias {
for (m16.inner, 0, 1) {
for (n16, 0, 16) {
xxxxxx
}
}
}
IR wanted:
// attr [conv2d_bias] storage_scope = "local.out_buffer"
allocate conv2d_bias[float16 * 16]
produce conv2d_bias {
for (m16.inner, 0, 16) {
for (n16, 0, 16) {
xxxxxx
}
}
}
Question : How can I use storage_align? Is it possible to achieve this goal?