Halide算法描述

下面以简单的函数来演示Halide语言的基本数据结构。

函数Func

和数学上的函数类似,定义了一个计算过程。复杂的计算过程可以拆成多个小函数来实现。 例子:函数f的每个像素的值是其x和y坐标之和。

f(x, y) = x + y;

例子:多个函数的定义,函数g调用函数f, 函数h调用函数g。

f(x, y) = x + y;   
g(x, y) = f(x, y) + 1;
h(x, y) = g(x, y) * 2;

变量Var

可以理解为函数的自变量,比如要描述一个图像的像素,需要两个变量x和y来描述 w维度和h维度的坐标。

blur_x(x , y) = (input(x-1, y) + input(x, y) + input(x+1, y))/3;

Expr

表达式 Expression 和函数Func类似,定义一个计算过程

Expr e = x + y;     
Output(x, y) = 3*e + x;