Halide :: Expr'不能在上下文中转换为'bool' - 在变量中存储函数的值

0 halide

我是使用Halide的新手,我正在尝试先实现算法.我正在尝试编写一个函数,根据它周围的8个像素的值,跳过下一个像素或进行一些处理,然后移动到下一个像素.尝试写这个时,我得到以下编译器错误:

84:5:错误:'Halide :: Expr'类型的值不能在上下文中转换为'bool'

    if(input(x,y) > 0)
Run Code Online (Sandbox Code Playgroud)

我已经完成了所有的教程,并且已经看到select函数是一个选项,但有没有办法比较函数的值或将它们存储在某个地方?

我也可能认为这个问题是错误的,或者可能没有用正确的"Halide心态"来实现它,所以任何建议都会很棒.提前谢谢你的一切!

jrk*_*jrk 5

这里的根本问题是,虽然它们在语法上是交错的,而Halide代码是通过运行C++代码构建的,但Halide代码不是C++代码,反之亦然.Halide代码完全由您在Funcs中构建的Halide ::*数据结构定义.if是C控制流构造; 你可以用它来建立有条件不同卤化物程序,但你不能用它里面卤化物程序的逻辑(一Expr的/ FUNC内).select是Halide(有条件地评估为两个值中的一个的Expr),如同/是C(有条件地执行两个子语句之一的语句).

请放心,你很难在早期就出现这种混乱.我想写一篇专门讲解如何思考Halide中的分阶段编程的教程.

在那之前,简短的,"我怎么做我想要的"回答是你所怀疑的,正如Khouri指出的那样:使用一个选择.