我正在尝试定义一个全局共享变量,它计算输入中的非零元素,如下所示:
counter = 0
N += select(input[x,y] > 10, 1, 0)
然而,这在卤化物方面非常困难,是否存在针对此目标的任何全局共享变量?
答案 0 :(得分:0)
一般来说,Halide旨在避免可变状态,因为它限制了可能的转换和优化 - 它是便携式性能的敌人。但是,在这种情况下,您可以通过将counter
设为0维Func
并使用RDom
迭代input
中的元素来完成您想要的操作:< / p>
Func counter;
RDom r(0, input.width(), 0, input.height());
counter() = 0;
counter() += select(input(r.x, r.y) > 10, 1, 0);
您还可以使用sum
帮助程序以许多其他方式编写此代码,可能使用r.where
作为谓词,并使用counter.rfactor
调度指令来并行缩减。