2021-02-27

HALIDE环境配置 添加链接描述

这篇文章的内容主要来自于Halide官方教程。Halide前端描述算法的计算方式和流水调度,让算法运行得尽可能地快。算法调度的内容牵扯到计算平台架构和算法,为便于调整代码的性能,Halide里的调度原语可用于屏蔽底层硬件的底层细节。这篇简要记录官方教程第四节到第八节,包括相关API。

常用的调度原语包括:

  1. reorder:改变各层循环的遍历顺序(默认行序遍历,如可修改成列序遍历);
  2. split:拆解一个循环成两个循环;
  3. fuse:合并两个循环成一个循环;
  4. split+reorder:实现分块遍历图像;
  5. tile: 等效于两个split,产生分块遍历;
  6. vectorize:指定某个循环维度,进行向量化;
  7. parallel:指定某个循环纬度,进行并行化;
  8. print_loop_nest:打印循环遍历的顺序;
  9. compute_root:提前计算该变量的状态值,并保存(等同于分段处理);
  10. p.compute_at(c,y): 对于c,每个y坐标值需计算p,即p计算循环在c的y上,把算完p所在的行,再算c,相当于按行分割计算为两阶段(把p的代码放在c 的for y循环里,节省内存,因为只留行buffer);
  11. store_root:在最外层循环外,预留buffer内存保存所有结果。教程例子清楚地显示,对于有重复计算中间结果的算法,保存中间结果,省去冗余计算;
  12. store_root + compute_at:可使数据存取调度单位更小(compute_at利用刚用过的数据,再次用速度会快很多,compute_root会等到全部计算完毕再开始下一个阶段)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值