0

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

__shared__ int testMe;

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

使共享内存成为全局允许我在设备函数中使用它,不幸的是,我什至不能将共享内存声明为全局的。Cuda 只是因内核崩溃而无法启动问题。我也试过这样做:

extern __shared__ int test

然而 nvcc 编译器给出的,不能外部链接共享内存错误。我真的想让它工作以使编写内核更容易,但我看不到办法。

4

1 回答 1

1

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

于 2015-06-26T09:01:50.970 回答