Halide:将一块内存复制到重叠位置(同一图像)

问题描述:

我需要将区域从纹理移动到另一个位置。如果两个街区不重叠,那里没有问题。我知道Halide是正确的解决方案,但我无法弄清楚在写入重叠像素之前如何等待读取数据......我可以根据移动的方向重复一种或另一种方式,但是我无法找到一种方法在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来确定哪个方向正确地处理重叠并调度到合适的时间表,但是,从extent方法中减去的RDom可能是唯一的选择。)

+0

谢谢!是否有任何方法可以从发生器获取'Input '并从中获取范围,或者是否将宽度/高度作为参数传递? –

+0

对于输入,您必须传递任何范围作为参数。使用'输入>''''''''''''''''''''''''''''''''''''''''''''''应该可以使用'width() –