我需要知道一些关于CUDA共享内存的事情。假设我在G80卡中分配了50个块,每个块有10个线程。G80的每个SM处理器可以同时处理8个数据块。假设在进行了一些计算之后,共享内存已被完全占用。
当下8个新数据块到达时,共享内存中的值是什么?之前的值会保留在那里吗?或者之前的值将被复制到全局内存中,并为下一个8个数据块刷新共享内存?
发布于 2011-02-18 02:02:25
它说明了类型限定符:
线程寄存器中的应用程序类型变量、线程的全局内存中的应用程序类型变量、块的共享内存中的kernel
__device__ __shared__类型变量、网格的全局内存中的kernel
__device__类型变量、网格的应用程序exits
__device__ __constant__
之前
因此,从这个参考中,你的问题的答案是,如果它们驻留在设备的共享内存中,则应该刷新下8个块的内存。
发布于 2011-04-17 02:38:10
对于内核块,执行顺序和SMs是随机分配的。我怀疑有没有办法做到这一点。模块之间的通信通过片外存储器完成。与片外存储器相关的延迟是性能杀手,这使得gpu编程变得棘手。
https://stackoverflow.com/questions/5032505
复制相似问题