【发布时间】:2019-06-10 17:31:54
【问题描述】:
您好,我正在开发一个应用程序,其中涉及处理 GPU 和 CPU 之间的共享数据。 我知道我可以分别对 GPU 和 CPU 进行原子操作。而且我不想在 CPU 和 GPU 之间使用事件同步。 有什么方法/命令可以让我在 OpenCL 中对 CPU 和集成 GPU 之间的共享数据进行原子操作?
【问题讨论】:
-
为什么不想使用事件同步?这是使用它的主要原因之一!听起来像是过早的优化。你到底想达到什么目标?
-
由于 cpu 和 gpu 都会定期访问共享数据,我认为同步不是一个好主意。
-
嗯,某种形式的同步对于在 CPU 和 GPU 之间共享数据是必不可少的,否则您将面临数据竞争和严重后果。它归结为访问模式、并发粒度和不同方法的相对开销。正如@mogu 所指出的,如果您的应用程序适合该模型,则可以在 OpenCL 上使用细粒度共享内存。还可以考虑重新设计您的数据结构,可能会显着避免或减少问题。