2016-05-13 52 views
0

我一直在探索Halide几个星期的可能性,为了更好地理解Halide在做什么,我想尝试使用卤化物探查器。可以说我有一个Func测试。 (为了便于阅读,我省略了变量声明等)。 f=Func(test); f(x,y)=some_image(x,y)*2; 如果我想运行此操作,请拨打f.realize(some_image.width(),some_image.height())。现在,如果我理解正确,当想要分析这个我需要使用类halide_profiler_func_stats。但是我找不到任何方法来访问这个和/或另一种获取分析数据的方式。如何使用Halide探查器

到现在为止,我一直在我的软件中运行一个单独的计时器,但我希望看到自Halide本身的探查器功能。我该怎么做呢?

+0

对于其他人,这是我使用的代码: 'Target t = get_host_target(); t.setfeature(Target :: Profile); myfunc.compile_jit(t); result = myfunc.realize(width,height);' – pietervanderstar

+0

我有一个后续问题。现在分析器只能运行一次,但我如何设置它,比如说100?我只找到返回执行次数的函数。将实现放在一个循环中让Profiler运行100次,运行1次,这并不是我正在寻找的。 – pietervanderstar

+0

我尝试编译AOT,然后在所有运行中累积分析器。 @安德鲁亚当斯,它没有给我一个思想HalideRuntime.h – pietervanderstar

回答

1

使用该配置文件的常用方法是将“-profile”添加到HL_TARGET或HL_JIT_TARGET,或用于构建等效的Target对象并将其传递到实现。这会在每次运行后打印出所有的分析信息。

如果您正在编译AOT并希望以某种特殊方式报告分析信息或使用代码检查它,那么您需要担心HalideRuntime.h中的内容。

+0

这有助于确认我是在正确的轨道上,我认为本周的新开始也有帮助。我发现我曾两次调用jit_compile,一次使用配置文件功能,一次没有。这意味着分析器不活跃。 – pietervanderstar

0

在HalideRuntime.h头文件中,位于与Halide.h相同的包含目录中,您将找到一个halide_profiler_get_state()函数,该函数将返回一个halide_profiler_state ptr;然后可以使用该ptr来获取funcs成员变量所包含的函数数组,该变量是halide_profiler_func_stats的ptr。