我需要将一个区域从纹理移动到另一个位置。如果这两个块不重叠,则没有问题。我知道 Halide 是正确的解决方案,但我不知道如何在写入重叠像素之前等待读取......我可以根据移动方向以一种或另一种方式进行迭代,但我不能找到一种在 Halide 中表达的方法。Halide 能够理解这些微妙之处吗?
反向迭代的方法是反转一个 RDom:
RDom range(0, width);
f(width - range.x) = g(width - range.x); // Copy value going from higher addresses to lower.
(为此提供语法糖已经在待办事项列表中一段时间了。我想我们也讨论了用于反转循环的调度指令。在这种情况下,您将使用 specialize 来决定哪个方向正确处理重叠并调度到适当的时间表。然而,目前,从范围方法中减去 RDom 可能是唯一的选择。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句