1

说我有类似的计算

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 计划以便我可以保存resultAresultB?和
E(x,y)的计算是通用的。resultAresultB

先感谢您

4

1 回答 1

2

如果结果在所有维度上都相同大小,则可以返回一个元组:

result(x, y) = Tuple(resultA, resultB);

如果它们的大小不同,则可以将它们添加到 Pipeline 中,并且可以将 Pipeline 编译为返回多个 Funcs 的过滤器。

看:

https://github.com/halide/Halide/blob/master/test/correctness/multiple_outputs.cpp

于 2017-01-13T19:29:06.057 回答