首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JCuda全局共享内存导致错误

JCuda全局共享内存导致错误
EN

Stack Overflow用户
提问于 2015-06-26 16:50:06
回答 1查看 152关注 0票数 0

我正在尝试用jcuda中的共享内存做一些非常简单的事情。我的内核:

代码语言:javascript
复制
__shared__ int testMe;

extern "C"
__global__ void test() {
  testMe = 5;
}

将共享内存设置为全局允许我在设备功能中使用它,不幸的是,我甚至不能声明共享内存是全局的。Cuda刚刚崩溃与内核无法启动的问题。我也尝试过这样做:

代码语言:javascript
复制
extern __shared__ int test

然而nvcc编译器给出的,不能外部链接共享内存的错误。我真的想让它工作起来,让编写内核变得更容易,但我看不到有什么方法。

EN

回答 1

Stack Overflow用户

发布于 2015-06-26 17:01:51

您不能在转换单元作用域中定义静态共享内存,必须在内核作用域中声明它。如果你这样做,你的共享内存将是同一块中的每个线程的相同内存。如果你想使用对所有块中的每个线程都相同的内存,你必须使用全局内存(在主机代码中调用cudaMalloc()并将内存的指针传递给内核)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31068816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档