I have been exploring sparse computations in TVM, and have been making sparse implementations of conv2d (the current one in the main repo does not cover enough cases for my needs).
I was pleased to see that newer versions of TVM now support Ansor (auto-scheduling) for sparse computations.
Thus, I rewrote my algorithm to support this. There is a tutorial on “sparse sketch rules”, which can apparently help the auto-scheduler find good schedules.
However, when I attempt to run the auto-scheduler I do not generate any valid schedules. I have tried playing around with the sketch rules, however my understanding is that this only gives the auto-scheduler a “better start”.
@jcf94 you wrote the tutorial on sparse sketch rules, and GitHub user @yuchaoli also has some key commits on this topic (though I can’t find their TVM forums handle). Anything I’m missing, or resources you could point me too?
I’ve made a fork here with my code.
Commit bab9e0ba77 is where I add my algorithm, defined under sparse_conv2d_direct.py
.
Commit c20c64f2e is where I explore sketch rules.
This simple gist is a single layer sparse CNN that I’ve been using to test things.
Thoughts on what I may be missing here?