CUDA:跨不同内核使用共享内存

发布于 2024-11-01 06:14:09 字数 278 浏览 5 评论 0原文

这可能吗?
我试图在一个内核中定义一个共享内存数组,然后我需要在不同的内核中使用这些值。

我尝试声明

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

漫雪独思 2024-11-08 06:14:09

你是对的,共享内存不会在内核调用之间持续存在。相反,您必须使用全局内存(或纹理内存)并在每次内核调用中将其加载到共享内存中。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文