嗨,我有内核函数,我需要比较字节。我要搜索的区域被划分为块,因此 4k 字节的数组被划分为 4k/256 = 16 个块。块中的每个线程读取 idx 上的数组并将其与另一个数组进行比较,这就是我要搜索的内容。我通过两种方式做到了这一点:
1.比较全局内存中的数据,但经常block中的线程需要读取相同的地址。
2.将全局内存中的数据复制到共享内存中,并按照上述方法比较共享内存中的字节数。读取相同的地址仍然有问题。复制到共享内存如下所示:
myArray[idx] = global[someIndex-idx];
whatToSearch[idx] = global[someIndex+idx];
其余代码相同。只有示例 2 中的数据操作在共享数组中执行。
但是第一个选项比共享内存快 10%,为什么?谢谢你的解释。