如何命名函数的多个输出(元组)?

时间:2017-01-31 10:48:06

标签: halide

假设我有一个生成器,用于生成Ahead of Time编译函数,如下所示。

Halide::Func build(){
   Halide::Func func1("func1"), func2("func2"), func3("func3");
   Halide::Func result("result");
   func1(x,y) = input(x,y) * 3; func2(x,y) = y; func3(x,y) = x + y;
   result(x,y) = Halide::Tuple({func1(x,y), func2(x,y), func3(x,y)});
   return result;
}

编译成对象和头文件后,生成器的签名如下所示。

int myFunction(buffer_t * input, buffer_t * result_0_buffer, buffer_t * result_1_buffer, buffer_t * result_2_buffer);

如何重命名myFunction的输出参数?

result_0_buffer => func1

result_1_buffer => func2

result_2_buffer => func3

谢谢

1 个答案:

答案 0 :(得分:1)

如果编译管道并将单个Func作为输出而不是使用元组添加到管道,则结果参数应采用添加到管道的Func的名称。我没有测试过这个,但它看起来像这样: Halide::Pipeline pipeline({func1, func2, func3}); pipeline.compile_to(...);

管道也更灵活,输出可以有不同的形状/尺寸。