Open pruhnuhv opened 9 months ago
position-skipping
is a feature that we unfortunately have not had the opportunity to pull into the mainline dev branch yet. It's only available in the MICRO artifact version, which is based off of v2.0. Note that position skipping is supported only in the innermost tiling level, and was coded specifically to model the DSTC and SCNN dataflows. If you do not need any of the v3.x features (specifically Ruby) then we recommend using this artifact version.
I've built Timeloop v3.0.1 from source, and I'm using the input_specs for DSTC as per your Micro-22 Artifact. On the first try, trying to map a SpMM kernel onto DSTC fails with this error:
On further examination, I realize that it is the sparse optimization configuration that is causing this error. And rightly so, passing the other input files to timeloop-mapper apart from the sparse optimization file makes it work. But we need it to work with sparse optimization. Now, after a bit of debugging, I see that it is failing during the optimization steps at the last level of the memory hierarchy. On referring to the Micro paper, I see that the last level skipping of A <-> B is not properly referred to in this configuration and I correspondingly add that. Now the next issue is the fact that the action-optimization "position-skipping" is no longer a valid type in Timeloop.
Changing the type from "position-skipping" to "skipping", I can get the mapper to start the mapping space search (currently trying for a workload with M, K, N = 1024, 256, 196) however it fails at one point.
I am not even sure if "skipping" is a like-for-like replacement for "position-skipping" in the DSTC architecture. I've attached the sparse-opt.txt config file here. The rest of the config stays the same from the original DSTC setup in the MICRO artifact.