本地记忆:cuda演示

时间:2017-03-13 17:32:12

标签: cuda gpgpu gpu-local-memory

我正在阅读此演示文稿: http://on-demand.gputechconf.com/gtc-express/2011/presentations/register_spilling.pdf

在演示文稿的第3页中,作者说:

商店总是在加载之前发生 - 只有GPU线程可以访问LMEM地址

有人可以向我解释原因吗?他的意思是什么时候首次初始化本地内存?

2 个答案:

答案 0 :(得分:3)

在这方面,本地内存就像共享内存。

  1. 为了对共享内存执行任何有用的操作,您必须首先初始化(存储某些内容)。本地记忆也是如此。

  2. 只有CUDA线程代码才能访问本地内存。没有像cudaMemcpy这样可以访问本地内存的CUDA API调用。无法从主机代码初始化本地内存。

  3. 对于共享内存,相同的评论基本上都是正确的。

答案 1 :(得分:1)

"他的意思是什么时候首次初始化本地内存?" - 是的。

你不能" cudaMemcpy()"到本地内存,因为它在全局地址空间之外。如果您尝试显式初始化局部变量,则编译器会将存储生成到本地内存,因为需要为每个块重复初始化。所以没有办法在本地存储器中定义一个值而不先将它写在那里。