Halide AOT编译

时间:2016-10-16 23:11:57

标签: arguments timing halide

我正在尝试使用Halide进行模板计算,这是C ++代码的一部分。我使用缓冲区指向我在C ++中定义的数据结构。我想花时间执行我的代码,所以我正在尝试使用AOT编译,以便我可以只执行执行而不是编译时间。 因此,在使用AOT编译时,在为输入声明类型为Argument的向量时,有没有办法使用Buffers? 如果没有,还有其他方法可以在使用Halide时执行时间吗?

2 个答案:

答案 0 :(得分:1)

您可以在AOT编译代码中使用缓冲区。如果将它们放在Argument向量中,它们将成为生成函数的参数。如果将它们遗漏,则它们将作为常量数组嵌入生成的目标文件中。这是关于AOT编译的教程:

http://halide-lang.org/tutorials/tutorial_lesson_10_aot_compilation_generate.html http://halide-lang.org/tutorials/tutorial_lesson_10_aot_compilation_run.html

答案 1 :(得分:0)

可以在Pipeline上调用“compile_jit”方法以使编译发生。然后可以通过“实现”或“评估”方法调用相同的Func并定时。这仍然使用JIT将执行时间与编译时间分开。如果你打算在你的应用程序中使用它,AOT可能更可取,但是如果使用JIT进行测试或简单的基准测试,则compile_jit技术很有用。

(还有一些其他的问题,将主机/ GPU缓冲区传输与时序循环分离,同时还确保GPU执行与时序循环不同步。覆盖这一点涉及更多,我不认为这是相关的。)