Opencl 如果只有一个工作项读取和写入内存,是否需要全局内存屏障

Opencl 如果只有一个工作项读取和写入内存,是否需要全局内存屏障,opencl,Opencl,在我的内核中,每个工作项在缓冲区中都有一个保留内存区域 只有它才能写入和读取 在这种情况下有必要使用记忆屏障吗 编辑: 我在每次写入和读取之前调用mem\u fence(CLK\u GLOBAL\u mem\u fence)。这是否足以保证加载/存储一致性 此外,如果只有一个工作项正在将存储加载到此内存区域,这是否有必要 请参阅另一个堆栈溢出问题: 内存屏障在工作组级别工作,即停止属于同一线程块的线程,直到所有线程都到达屏障。如果不同工作项的内存空间之间没有交集,则不需要任何额外的同步点 此外,

在我的内核中,每个工作项在缓冲区中都有一个保留内存区域 只有它才能写入和读取

在这种情况下有必要使用记忆屏障吗

编辑:

我在每次写入和读取之前调用
mem\u fence(CLK\u GLOBAL\u mem\u fence)
。这是否足以保证加载/存储一致性

此外,如果只有一个工作项正在将存储加载到此内存区域,这是否有必要

请参阅另一个堆栈溢出问题:


内存屏障在工作组级别工作,即停止属于同一线程块的线程,直到所有线程都到达屏障。如果不同工作项的内存空间之间没有交集,则不需要任何额外的同步点

此外,如果只有一个工作项正在将存储加载到此内存区域,这是否有必要

从理论上讲,mem_fence只保证在以后的内存访问之前提交以前的内存访问。在我的例子中,我从未看到使用或不使用这个mem_-fence调用的应用程序的结果存在差异


致以最诚挚的问候

你的问题太宽泛了。请描述你正在努力实现的目标。从你所说的情况来看,可能不需要全球壁垒,但可能需要本地(每个群体)壁垒。