在将本地内存写入全局时,是否需要本地和全局内存屏障

时间:2015-02-02 20:21:34

标签: opencl

在我的内核中,每个线程都写入本地内存中的某个区域,然后是它们 从本地内存复制到全局内存。永远不会在内核中读取全局内存,只写入。但是,本地内存缓冲区随后在全局复制完成后写入。

在复制代码之后是否需要全局内存屏障以及本地内存屏障,或者只是本地内存屏障:

1 个答案:

答案 0 :(得分:4)

  

在复制代码之后,还是只需要本地内存屏障,是否需要全局内存屏障以及本地内存屏障?

这取决于。没有代码,很难回答你的问题。

  

在我的内核中,每个线程都写入本地内存中的一个区域,然后它们从本地内存复制到全局内存。

如果没有看到代码,我无法回答您的确切情况,但基本上只有两种情况:

  1. 从他们写入的相同内存中读取的工作项(数据在工作项之间共享):内存障碍不需要
  2. 从其他工作项写入的内存中读取的工作项。 (数据在工作项之间共享):内存障碍必需
  3.   

    永远不会在内核中读取全局内存,只写入。

    然后您不需要全局内存屏障。当您需要在读者和作者之间订购操作时,需要障碍。如果没有读者(或没有作家),那么障碍就是多余的。