我试图用jcuda中的共享内存做一些非常简单的事情。我的内核:
__shared__ int testMe;
extern "C"
__global__ void test() {
testMe = 5;
}
使共享内存全局允许我在设备功能中使用它,遗憾的是,我甚至无法将共享内存声明为全局。 Cuda刚与内核崩溃无法启动问题。我也尝试过:
extern __shared__ int test
但是nvcc编译器给出了,不能外部链接共享内存错误。我真的想让这个工作更容易编写内核,但我没有看到方法。
答案 0 :(得分:1)
您无法在转换单元范围内定义静态共享内存,您必须在内核范围内声明它。如果这样做,则共享内存对于同一块中的每个线程都将是相同的内存。如果要在所有块中使用与每个线程相同的内存,则必须使用全局内存(在主机代码中调用cudaMalloc()并将内存指针传递给内核)。