OpenCL 计数器变量

OpenCL counter variable

我正在执行 Otsu 的方法 (link https://en.wikipedia.org/wiki/Otsu%27s_method) 以确定原始帧中有多少黑色像素。我正在尝试优化过程,我想用 OpenCL 来完成。有什么方法可以将 单个变量 传递给 OpenCL 内核并递增它,而不是在不需要时传递 整个缓冲区 吗?

你要解决的问题很像全局还原。虽然您可以使用单个输出变量和原子 read/modify/write 访问,但它会非常慢(由于对原子的争用),除非您正在计算的东西非常稀疏(这里不是这种情况)。因此,您应该使用与缩减相同的技术,即并行进行部分求和,然后将它们合并在一起。 Google for "OpenCL reduction" 你会发现一些很好的例子,比如这个:https://developer.amd.com/resources/articles-whitepapers/opencl-optimization-case-study-simple-reductions/