我有这个示例生成器用黑色填充区域(0,0,100,100):
class MyGen : public Generator<MyGen>
{
public:
Var x, y;
Output<Func> output { "output", Int(32), 2 };
void generate()
{
output(x, y) = x + y;
RDom dom = RDom(0, 100, 0, 100);
output(dom.x, dom.y) = 0;
}
void schedule()
{
}
};
区域填充正确,但由于纯粹的定义,图像的其余部分是渐变(x + y)。
有没有办法编写一个不会执行的纯定义(例如output(x,y)= output(x,y))?
我可以在特定域(例如定义区域的Func
)上执行Input<int>
而不会影响图像的其余部分吗?
答案 0 :(得分:2)
以下是您编写未执行的纯定义的方法:
output(x, y) = undef<int>();
除了输出之外的其他任何东西都有点危险,因为Halide不会静态检查使用未定义的值。 valgrind是你的朋友。