【问题标题】:Halide sum loops nesting卤化物总和循环嵌套
【发布时间】:2017-01-16 11:56:53
【问题描述】:

Halide::sum 的打印循环嵌套并不等同于 tutorial 中所写的最佳循环。

此代码为零初始化和求和提供了单独的循环。

  Halide::Func f("f");
  Halide::Var x("x");
  Halide::RDom r(0, 3);

  f(x) = Halide::sum(r + x);
  f.print_loop_nest();

  f.realize(10);

输出:

produce f:
  for x:
    produce sum:
      for x:
        sum(...) = ...
      for x:
        for r4:
          sum(...) = ...
    consume sum:
      f(...) = ...

可以融合这个循环还是不影响性能?谢谢!


更新:像这样熔断:

produce f:
  for x:
    produce sum:
      for x:
        sum(...) = ...
        for r4:
          sum(...) = ...
    consume sum:
      f(...) = ...

【问题讨论】:

    标签: sum nested-loops reduction halide


    【解决方案1】:

    这是一个 print_loop_nest 令人困惑的例子。 x 上的内部循环的大小为 1,因此它消失了。编译的循环嵌套是您想要的。 x 上的外部循环是不平凡的,所以这就是真正发生的事情:

    produce f:
      for x:
        produce sum:
          sum(...) = ...
          for r4:
            sum(...) = ...
        consume sum:
          f(...) = ...
    

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多