在不与OpenCL同步的情况下写入全局缓冲区是否可行?

问题描述 投票:0回答:2

我正在考虑一个有趣的问题,通过允许内核在不执行任何同步的情况下将其输出写入内存,可能有可能使性能超过典型程序。

我正在从网格中计算体素化,并且不需要填充网格内部的体素。这使问题更简单。

我希望应用非常简单的算法,其中内核仅计算与三角形相交的体素,然后将内核分配到网格的每个三角形上。

我当前的想法是简单地使内核将一个值写入它计算为与三角形相交的体素,而不应用任何同步。对我而言,对特定体素接触的三角形数量的计数无关紧要,我只在乎我保证可以识别所有接触任何三角形的体素。

因此,我是否可以期望这种简单的方法来“正常工作”,或者是否存在可能的竞赛条件,使得已经标记为占用的体素最终可能被清除?

如果可能出现问题,那么使商店成为原子商店(并导致性能下降)是否可以解决问题?

opencl
2个回答
1
投票

0
投票

AFAICT,除了结论外,noma回答中的所有内容都是正确的。从理论上讲,它应该起作用。实际上,这可能行不通。

© www.soinside.com 2019 - 2024. All rights reserved.