CUDA:跨不同内核使用共享内存
这可能吗?
我试图在一个内核中定义一个共享内存数组,然后我需要在不同的内核中使用这些值。
我尝试声明
extern __shared__ float sharedMem[];
外部所有函数,然后在一个内核中写入它,并尝试在不同的内核中访问它。 sharedMem
数组在第一个内核中被正确写入,但是当我尝试在第二个内核中访问它时,这些值都是 0。所以我猜测这不会工作或者我正在做有事吗。
有人可以帮我解决这个问题吗?
Is this possible?
I am trying to define a shared memory array in one kernel and then I need to use those values in a different kernel.
I tried declaring the
extern __shared__ float sharedMem[];
outside all functions and then wrote to it in one kernel and tried to access it in a different kernel. The sharedMem
array is written to properly in the first kernel, but when I try to access it in the second kernel, the values are all 0. So I am guessing this won't work or I am doing something wrong.
Can someone please help me out on this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你是对的,共享内存不会在内核调用之间持续存在。相反,您必须使用全局内存(或纹理内存)并在每次内核调用中将其加载到共享内存中。
You are correct, shared memory does not persist across kernel calls. Instead you must use global memory (or texture memory) and load it into shared memory in each kernel call.