c++ - JCuda全局共享内存导致错误

标签 c++ c cuda jcuda

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

__shared__ int testMe;

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

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

extern __shared__ int test

但是 nvcc 编译器给出了 cannot external link shared memory 错误。我真的很想让它工作以简化内核的编写,但我看不出有什么办法。

最佳答案

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

关于c++ - JCuda全局共享内存导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31068816/

相关文章:

c++ - C++ 中 While 循环的困难

c++ - 如何使用 fork() 系统调用创建一级进程树?

c++ - 在 C++ 中跟踪用户登录的可行性

c - Lex:C 关键字规则未正确识别

c - 用 C 语言逐个读取句子中的单词

c - (void **)&x 和 (void *)x 有什么区别?

Python C++ 包装器 : Convert multi-type struct to it's python representation (preferable dictionary)

c++ - libcurl : output of network upload download speed is not accurate

ubuntu - CUDA 2.1 "error: unknown type name ' size_t'"

将 C 代码与 CUDA 链接时发生 CMake 错误