How to get best performance for operator net out of TVM

I am trying to execute a net of operators using TVM. For best performance, I tried using AutoScheduler as described here, but even after 24h, the tuning did not find any valid schedules.

Can you suggest what the best alternative would be to get the highest performance out of TVM? Would using the schedules provided in TOPI result in the best performing TVM code?

Hi, @richard-wwu. Have you looked into each candidate during the tuning? Since you couldn’t find any valid schedule even after long enough tuning time, I suspect each candidate might be facing some runtime error or compilation errors. That would help to figure out the right next step.

Many thanks for your reply. This is the output of TVM:

----------------------------------------------------------------------
------------------------------  [ Search ]
----------------------------------------------------------------------
Generate Sketches               #s: 1
Sample Iter: 5  #Pop: 0 #Target: 50     fail_ct: 10240  Time elapsed: 22.54
#Target has been reduced to 25 due to too many failures or duplications
Sample Iter: 10 #Pop: 0 #Target: 25     fail_ct: 20480  Time elapsed: 42.35
#Target has been reduced to 12 due to too many failures or duplications
Sample Iter: 15 #Pop: 0 #Target: 12     fail_ct: 30720  Time elapsed: 62.17
#Target has been reduced to 6 due to too many failures or duplications
Sample Iter: 20 #Pop: 0 #Target: 6      fail_ct: 40960  Time elapsed: 81.98
#Target has been reduced to 3 due to too many failures or duplications
Sample Iter: 25 #Pop: 0 #Target: 3      fail_ct: 51200  Time elapsed: 101.80
#Target has been reduced to 1 due to too many failures or duplications
Sample Iter: 30 #Pop: 0 #Target: 1      fail_ct: 61440  Time elapsed: 121.61
Sample Iter: 35 #Pop: 0 #Target: 1      fail_ct: 71680  Time elapsed: 141.42
Sample Iter: 40 #Pop: 0 #Target: 1      fail_ct: 81920  Time elapsed: 161.23
Sample Iter: 45 #Pop: 0 #Target: 1      fail_ct: 92160  Time elapsed: 181.06
Sample Iter: 50 #Pop: 0 #Target: 1      fail_ct: 102400 Time elapsed: 200.87
Sample Iter: 55 #Pop: 0 #Target: 1      fail_ct: 112640 Time elapsed: 220.66
Sample Iter: 60 #Pop: 0 #Target: 1      fail_ct: 122880 Time elapsed: 240.46
Sample Iter: 65 #Pop: 0 #Target: 1      fail_ct: 133120 Time elapsed: 260.26
Sample Iter: 70 #Pop: 0 #Target: 1      fail_ct: 143360 Time elapsed: 280.07
Sample Iter: 75 #Pop: 0 #Target: 1      fail_ct: 153600 Time elapsed: 299.87
Sample Iter: 80 #Pop: 0 #Target: 1      fail_ct: 163840 Time elapsed: 319.67
Sample Iter: 85 #Pop: 0 #Target: 1      fail_ct: 174080 Time elapsed: 339.48
Sample Iter: 90 #Pop: 0 #Target: 1      fail_ct: 184320 Time elapsed: 359.29
Sample Iter: 95 #Pop: 0 #Target: 1      fail_ct: 194560 Time elapsed: 379.10
Sample Iter: 100        #Pop: 0 #Target: 1      fail_ct: 204800 Time elapsed: 398.90

...

Sample Iter: 3345       #Pop: 0 #Target: 1      fail_ct: 6850560        Time elapsed: 13263.46
Sample Iter: 3350       #Pop: 0 #Target: 1      fail_ct: 6860800        Time elapsed: 13283.27
Sample Iter: 3355       #Pop: 0 #Target: 1      fail_ct: 6871040        Time elapsed: 13303.08

As far as I understand it, TVM does not manage to find a candidate, no? It does not seem to get to the step where it compiles and runs candidates.