我为这个问题搜索了一个月。我无法同步 CUDA 中的块。
我读过很多关于atomicAdd、合作组等的文章。我决定使用一个全局数组,这样一个块就可以在全局数组的一个元素上写入。写入之后,块的线程将等待(即陷入 while 循环),直到所有块都写入全局数组。
当我使用 3 个块时,我的同步效果很好(因为我有 3 个 SM)。但使用 3 个街区可以让我获得 12% 的入住率。所以我需要使用更多的块,但它们无法同步。问题是:SM 上的一个块等待其他块,因此 SM 无法获取另一个块。
我能做些什么?当区块数量超过SM数量时,如何同步区块?
CUDA-GPU 规范:CC。6.1、3 SM、Windows 10、VS2015、GeForce MX150 显卡。请帮助我解决这个问题。我使用了很多代码,但没有一个起作用。