I am trying to tile memrefs as tiles 32 x 32 (below):
<block argument> of type 'memref<500x500xf32, affine_map<(d0, d1) -> (d0 floordiv 32, d1 floordiv 32, d0 mod 32, d1 mod 32)>>' at index: 2
The issue arises when I attempt to lower an
ExtractSliceOp to a
SubViewOp - the following assert is thrown:
Assertion failed: (succeeded(res) && "SubViewOp expected strided memref type"), function inferResultType, file MemRefOps.cpp, line 1822.
My confusion arises as if I do not attempt to tile the
memref and pass it as is (i.e. without striding and tiling), then it lowers without any issues. It is only when I attempt to provide a layout map that it requests striding.
My questions is what is the relationship between striding and layout maps, and how do I create strided and tiled memrefs? Thanks