JCuda全局共享内存导致错误

时间:2015-06-26 08:50:06

标签: c++ c cuda jcuda

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

__shared__ int testMe;

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

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

extern __shared__ int test
但是nvcc编译器给出了,不能外部链接共享内存错误。我真的想让这个工作更容易编写内核,但我没有看到方法。

1 个答案:

答案 0 :(得分:1)

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