We should verify that the reduction and workgroup tile sizes are arrays of the same length as the number of loops in the linalg op (here, same as the number of iterator types). If the sizes don't match, we should error out instead of implicitly padding with zeros (like we currently do).
This is less obvious with named ops that don't have indexing maps attached to them, for example something like:
has 7 loops, which is not immediately obvious. The error message should explain how many tile sizes were expected.
As for the reproducer for this, you can write a sample dispatch by hand and compile it with --iree-hal-dump-executable-files-to=dir, modify the configured dispatch by changing the tile sizes, and resuming compilation with --compile-from=executable-sources.
The
lowering_config
attribute can be attached to linalg ops to configure them outside of the heuristic inKernelConfig.cpp
.For example:
We should verify that the
reduction
andworkgroup
tile sizes are arrays of the same length as the number of loops in the linalg op (here, same as the number of iterator types). If the sizes don't match, we should error out instead of implicitly padding with zeros (like we currently do).This is less obvious with named ops that don't have indexing maps attached to them, for example something like:
has 7 loops, which is not immediately obvious. The error message should explain how many tile sizes were expected.
As for the reproducer for this, you can write a sample dispatch by hand and compile it with
--iree-hal-dump-executable-files-to=dir
, modify the configured dispatch by changing the tile sizes, and resuming compilation with--compile-from=executable-sources
.