【tvm官网教程】AutoSchedule:无模板的自动调度
目的
autotvm是基于模板的调优,效果依赖于手动设计的搜索空间。
auto-scheduler不再基于模板,用户只需要编写计算声明,而无需任何调度命令或模板。auto-scheduler可以自动生成一个较大的搜索空间,并在该空间中找到良好的调度。
1. 自动调度GPU的卷积层
不需要定义搜索空间,但是还是要指定一些调度参数,知道在搜索过程中如何进行测量。
定义计算:
@auto_scheduler.register_workload
def conv2d_layer(N, H, W, CO, CI, KH, KW, stride, padding):
#### 计算声明
return [data, kernel, bias, out]
创建搜索任务:
target = tvm.target.Target("cuda")
N, H, W, CO, CI, KH, KW, strides, padding = 1, 7, 7, 512, 512, 3, 3, (1, 1), (1, 1)
task = auto_scheduler

本文介绍了无模板自动调度器在GPU卷积层和x86 CPU上的应用。自动调度器无需手动设计搜索空间,用户只需编写计算声明。在GPU上,调度器无需模板但需指定调度参数;而在CPU上,网络被切分成子图,每个子图单独优化。通过任务调度器分配时间资源并预测端到端执行时间,以提高性能。建议使用NHWC布局以获得最佳性能。
最低0.47元/天 解锁文章
843

被折叠的 条评论
为什么被折叠?



