说我的计算类似于
Image resultA, resultB;
Func A, B, C, D, E;
Var x, y;
A(x,y) = C(x,y) * D(x,y);
B(x,y) = C(x,y) - D(x,y);
E(x,y) = abs(A(x,y)/B(x,y));
resultA(x,y) = sqrt(E(x,y));
resultB(x,y) = 2.f * E(x,y) + C(x,y);
如何定义AOT计划,以便我可以保存resultA
和resultB
?
E(x,y)
计算resultA
和resultB
时常见{。}}。
提前谢谢
答案 0 :(得分:2)
如果结果在所有维度中都是相同的大小,则可以返回元组:
result(x, y) = Tuple(resultA, resultB);
如果它们的大小不同,可以将它们添加到Pipeline中,并且可以将Pipeline编译为返回多个Func的过滤器。
请参阅:
https://github.com/halide/Halide/blob/master/test/correctness/multiple_outputs.cpp