We need a way to select the appropriate schedule in the Kernel Bench tester (see #124).
One way described in #140 is to have a simple naming scheme: levelX-KernelY-DataType-Arch.yaml, and a simpler function that returns that, if it exists, or the default loops lowering if not. And reuse would work as a symlink, or something. It could also be a sub-dir LevelX/KernelY/... and we have a full-blown network of schedules.
Another way is to come up with a dynamic way of building descriptors. We may want to have that anyway, so it may be simpler to create that in the beginning that start with a convoluted network of schedules and sub-schedules, and then change to the dynamic later.
We'll also need a way to select the target architecture with higher precision. For example, we don't just need to know if the arch is x86_64 or aarch64, we also want to know if target.hasAMX or target.hasSVE and other properties.
We need a way to select the appropriate schedule in the Kernel Bench tester (see #124).
One way described in #140 is to have a simple naming scheme:
levelX-KernelY-DataType-Arch.yaml, and a simpler function that returns that, if it exists, or the default loops lowering if not. And reuse would work as a symlink, or something. It could also be a sub-dirLevelX/KernelY/...and we have a full-blown network of schedules.Another way is to come up with a dynamic way of building descriptors. We may want to have that anyway, so it may be simpler to create that in the beginning that start with a convoluted network of schedules and sub-schedules, and then change to the dynamic later.
We'll also need a way to select the target architecture with higher precision. For example, we don't just need to know if the arch is
x86_64oraarch64, we also want to know iftarget.hasAMXortarget.hasSVEand other properties.