Halide 如何使用任何二进制运算符示例或自定义函数定义泛型约化?

Halide 如何使用任何二进制运算符示例或自定义函数定义泛型约化?,halide,Halide,我相信Halide目前支持总和、最小值、最大值和产品,它们与RDom一起工作。我想写一个函数,它对自定义二进制操作进行归约,例如“AND(&&&)”、“OR(| |)'、“(&)”、(|)等。如何在卤化物中实现这一点 以下是我对这个问题的看法: 假设我们有一个uint8\t输入,并使用(|)执行缩减 RDom-rw(0,宽度);相对湿度(0,高度); 函数f,g; f(y)=铸造(0); f(y)=f(y)|输入(rw,y); g(x)=铸造(0); g(x)=g(x)| f(rh); 最好有

我相信Halide目前支持
总和
最小值
最大值
产品
,它们与
RDom
一起工作。我想写一个函数,它对自定义二进制操作进行归约,例如“AND(&&&)”、“OR(| |)'、“(&)”、(|)等。如何在卤化物中实现这一点

以下是我对这个问题的看法: 假设我们有一个
uint8\t输入
,并使用
(|)
执行缩减

RDom-rw(0,宽度);相对湿度(0,高度);
函数f,g;
f(y)=铸造(0);
f(y)=f(y)|输入(rw,y);
g(x)=铸造(0);
g(x)=g(x)| f(rh);
最好有一个卤化物函数,它可以通过指定一个归约函数(两个输入)来执行一般归约


提前感谢您的回复

helpers sum、product等实际上不是内置的。它们只是用Halide前端语言本身编写的助手,因此您可以根据需要定义更多内容,或者制作一个接受二进制运算符的泛型。我会先看看


大部分的魔法只是自动捕获自由变量,其余的就像您编写的代码。

帮助程序总和、乘积等实际上不是内置的。它们只是用Halide前端语言本身编写的助手,因此您可以根据需要定义更多内容,或者制作一个接受二进制运算符的泛型。我会先看看

大部分的魔法只是自动捕获自由变量,其余的就像您编写的代码一样

RDom rw(0,width); rh(0,height);
Func f,g;
f(y) = cast<uint8_t>(0);
f(y) = f(y) | input(rw,y);
g(x) = cast<uint8_t>(0);
g(x) = g(x) | f(rh);