假设我们有以下内容:
Var idx;
Func out;
out(idx) = select(idx == 0, VAL_1, select(idx == 1, VAL_2, VAL3));
如果能够强制 Halide 在循环体中为此使用 if/then/else 结构,而不是选择,那就太好了。我假设这是使用specialize() 调度命令完成的:
out.specialize(idx == 0);
out.specialize(idx == 1);
但是,这似乎是被禁止的:
"Error at (...): Specialization condition (...) depends on Var or RVar idx.
Specialization conditions may not depend on any Vars or RVars.
存在这种限制是否有特殊原因?或者,除了展开之外,还有其他方法可以达到预期的行为?
谢谢和亲切的问候,
桑德