0

我的目标是获得一些内核,它的计算满足一个条件。条件可能是value == 0

我试图找到一些内置的信号量函数来完成此任务,但我找不到任何适用于 OpenCL 的函数。我不想将结果 blit 到 CPU 内存中,因为这会有点低效。

我尝试或想象的另一件事是使用错误使某些内核崩溃,然后使用一些调试代码来检索崩溃内核的数量。然后我可以编写类似的东西1/value,每个内核,只要满足我的条件就会崩溃。不幸的是,我找不到这样的 OpenCL(调试)功能来检索此信息。
我想,这种方法可能比使用信号量的方法慢一些,因为它可能会触发一些后备/清理代码。

进一步的限制是,主机上的代码只能为此使用 OpenCL 标头。

有什么想法可以在不涉及 CPU 的情况下检索多个满足条件的内核吗?

4

1 回答 1

0

正如 pmdj 建议的那样:
OpenCL 提供原子操作,包括全局(和本地)缓冲区的原子增量:atomic_incunsigned int atomic_inc(volatile __global unsigned int *p)
更好的是,此功能不需要任何 OpenCL 扩展。

于 2022-01-12T18:14:27.540 回答