What happened to x86 winograd?

Since this PR https://github.com/apache/incubator-tvm/pull/2111 was closed, I remember @cbalint13 took over the PR. I wonder what happened since then? Are there still interest in integrating x86 winograd?

Recently I got an access to Cascadelake with VNNI instruction, and that revived my interest in Winograd (I had some experience in the past). If I find enough time, I may be able to work on it.

cc @cbalint13 @yzhliu @yidawang @ajtulloch

2 Likes

Hi @masahi , one concern is that Winograd is not numerical stable. So if using lower precision to implement Winograd, the accuracy may be affected. Do you happen to have the accuracy loss data? We can discuss offline sometime if you like.

Best, Zhen

I don’t have concrete data to show how much accuracy loss we would hit with winograd, but from my experience of implementing and using winograd x86 in production (though only for SSE, that was my target), I don’t think it really matters for DL use cases.

Note that we are already using winograd for cuda and ARM, so the accuracy issue shouldn’t block adding winograd to x86 as well.

One citation might be: if we using F(4,3) or F(6,3) with FP32, then we may only use F(4,3) or F(2,3) for lower precision due to the accuracy loss. Anyway, since I do have the accuracy loss data with low precision. it is hard to say. Another alternative for low precision is FFT, which is numerical stable.