Halide学习笔记---Halide语言设计的初衷
2017-11-30 14:00
579 查看
Halide语言设计初衷
我们正处于一个数据密集的时代,4D广场相机、图形渲染、3D打印、图像传感器、高质量医学图像等,每天生产大量的图像数据,面对这样一个图像时代,急需要针对图像处理算法设计的高性能图像处理编程语言,在这样的需求下,Halide应运而生。应用当前存在的编程工具编写高性能的图像处理程序需要牺牲可读性、可移植性和模块性。这可能是由于算法描述、数据存储和计算顺序杂糅在一起所致。Halide语言将算法描述与算法中数据存储与计算执行等调度方面的内容解耦合。从而算法的描述和性能的优化可以分开进行,可以在不改动算法的情况下对算法进行调优。
另一个方面需要回答的是:在同样的计算机下,从什么地方去挖掘和提升算法的计算性能?有如下的一个统计:
从上图可以看出,算术逻辑单元(ALU)进行一次操作在能量和时间上的消耗都是最小的,然而数据之间的访问通信占用了计算花费的大部分时间和能耗。因此,在计算的过程中减少数据的移动是一个很好的优化方向。另一方面,随着摩尔定律的逐渐失效,当今已经进入多核时代,将计算任务拆分,送到多个核心中并行计算,同一时刻进行计算,成倍缩短计算时间。然而,最小的数据移动并不利于计算任务的并行,考虑到算数逻辑单元的操作相对于数据移动来说小一个甚至多个数量级,因此考虑牺牲一部分数据移动性,冗余一部分计算,通过数据移动最小、计算冗余性和并行度之间的折中来达到提高性能计算性能的目的。
相关文章推荐
- 微型语言的设计——unix编程艺术学习笔记
- Java学习笔记--基础设计语言
- 学习 谭浩强c语言设计 & 慕课 笔记(2017.10.24)
- go语言学习笔记---非入侵式接口设计探究
- JavaScript权威设计--JavaScript语言核心(简要学习笔记一)
- 设计模式学习笔记-适配器模式
- 学习笔记 ---- 设计模式之装饰者模式
- 设计模式学习笔记之组合模式
- scala语言学习笔记
- 设计模式之策略模式——极客学院学习笔记
- 学习笔记总结:Android中OpenGL ES的着色语言
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第26讲_js函数调用过程内存分析_js函数细节_学习笔记_源代码图解_PPT文档整理
- 设计模式学习笔记-观察者模式
- 响应式网页设计——学习笔记二:HTML5
- Java学习笔记(4)界面设计
- 再起航,我的学习笔记之JavaScript设计模式20(策略模式)
- 设计模式学习笔记四【开放-封闭原则】
- 设计模式学习笔记之桥接模式
- 设计模式学习笔记二:工厂方法模式(Factory Method)
- 设计模式学习笔记(十四)—Command模式