Does auto-scheduling recognize devices?

Hello folks,

I have followed Auto-scheduling a Neural Network for ARM CPU to do auto-scheduling for my network.

I have one PC and one Hikey 970 board. I tuned my BERT model both on PC and on Hikey970 and try to compare with each other. I have checked the tuninglog.json and found out some parameters are different. Does anyone know if auto-scheduling tuning optimizes for PC CPU or for Hikey ARM CPU especially or does scheduler regard them as the same device?

More detail:

Tuning on my PC (Much faster)
{"i": [["[\"f145aab4de339ce56aaf587dee4ed4ec\", [1, 128], [128, 128], [1, 128], [1, 128]]", "llvm -keys=cpu -link-params=0", [2, 64, 64, 0, 0, 0, 0, 0], "", 2, []], [[], [["CI", 4], ["SP", 2, 0, 1, [1, 1, 1], 1], ["SP", 2, 4, 128, [1, 2, 4], 1], ["SP", 2, 8, 128, [8], 1], ["RE", 2, [0, 4, 1, 5, 8, 2, 6, 9, 3, 7]], ["FSP", 5, 0, 1, 2], ["FSP", 5, 3, 2, 2], ["RE", 5, [0, 3, 1, 4, 2, 5]], ["CA", 2, 5, 3], ["FU", 5, [0, 1, 2, 3]], ["AN", 5, 0, 3], ["PR", 2, 0, "auto_unroll_max_step$0"], ["AN", 2, 9, 2], ["AN", 5, 2, 2]]]], "r": [[2.73595e-06], 0, 1.05405, 1632751895], "v": "v0.6"}
Tuning On hikey (very slow...)
{"i": [["[\"f145aab4de339ce56aaf587dee4ed4ec\", [1, 128], [128, 128], [1, 128], [1, 128]]", "llvm -keys=cpu -link-params=0", [8, 64, 64, 0, 0, 0, 0, 0], "", 2, []], [[], [["CI", 4], ["SP", 2, 0, 1, [1, 1, 1], 1], ["SP", 2, 4, 128, [1, 32, 4], 1], ["SP", 2, 8, 128, [8], 1], ["RE", 2, [0, 4, 1, 5, 8, 2, 6, 9, 3, 7]], ["CR", 5], ["FU", 2, [0, 1, 2, 3]], ["AN", 2, 0, 3], ["FU", 5, [0, 1]], ["AN", 5, 0, 3], ["PR", 2, 0, "auto_unroll_max_step$0"], ["AN", 2, 6, 2]]]], "r": [[7.98441e-05], 0, 1.39153, 1632717416], "v": "v0.6"}

Thanks for help from community in advance :slight_smile:

After some testing, I believe Auto-scheduling is optimized for special CPU (i.e. ARM CPU and x86 CPU are different).

Correct me if I am wrong.

1 Like