首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Halide::GeneratorInput<Halide::Func>中没有名为dim的成员

Halide::GeneratorInput<Halide::Func>中没有名为dim的成员
EN

Stack Overflow用户
提问于 2017-07-12 23:12:10
回答 2查看 284关注 0票数 0

我正在尝试将卤化物存储库中的resize app从内联声明转换为生成器。一切似乎都很好,除了下面这一点:

代码语言:javascript
复制
Func clamped = BoundaryConditions::repeat_edge(input);`

在原始代码中,input的声明类似于ImageParam input(Float(32), 3)。在我的生成器中,我已经将其转换为:Input<Func> input { "input", Float(32), 3 }。然后,我将以与原始代码完全相同的方式声明clamped。在编译时,我得到了这个错误:

代码语言:javascript
复制
Halide.h:15202:50: error: no member named 'dim' in 'Halide::GeneratorInput<Halide::Func>'
    object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) });
                                   ~~~~~~~~~ ^

有没有办法在Input<Func>上创建BoundaryConditions::repeat_edge

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-13 03:24:03

有,请将Buffer<>与其关联。(在您的情况下,可能是一个缓冲区,请尝试一下)。

代码语言:javascript
复制
 struct MyGen : Generator<MyGen> {
     Input<Buffer<>> dim_only_input_buffer{ "dim_only_input_buffer", 3 }; 
     ... 
  };

我遇到了类似的东西,你可以在这个github issue中看到更多关于这方面的信息

票数 1
EN

Stack Overflow用户

发布于 2017-07-13 01:30:31

Input<Func>的想法是,当将生成器组合在一起时,它可以用另一个Func实例化。(例如,一个生成器的输出可能是另一个生成器的输入,所有连接的生成器的图形被编译为单个Halide程序。)问题是Funcs没有像Buffers那样的固定界限。因此一个人不能要求(例如)Func的宽度。

对于被设计为总是与具体内存一起使用的生成器,可以使用输入。要在输入上施加边界条件,需要将边界作为显式参数传递给生成器。例如作为其它Inputs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45061567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档