小编Gur*_*rgg的帖子

CUDA共享内存不是在调试时阻止的

基本上,我很难理解这里到底出了什么问题.

在调试时,共享内存似乎不以块独占方式运行.正常运行代码时,不会打印任何内容.但是,如果我尝试调试它,则在块之间共享共享内存并到达print语句.

这是一个例子,显然这不是非常有用的代码,但它重现了我的系统上的问题.难道我做错了什么?这是调试器中的错误或预期行为吗?

__global__ 
void test()
{
    __shared__ int result[1];
    if (blockIdx.x == 0 && blockIdx.y == 0 && blockIdx.z == 0)
        result[0] = 4444;
    else
    {
        if (result[0] == 4444)
            printf("This should never print if shared memory is unique\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

并推出它:

test<<<dim3(8,8,1), dim3(8,8,1)>>>();
Run Code Online (Sandbox Code Playgroud)

完全有可能我完全误解了共享内存.

谢谢您的帮助.

其他信息: 我使用的是GTX 460.为项目设置了Compute_20和sm_20.我正在使用nsight 3.0预览在Visual Studio 2010中编写代码.

cuda shared-memory nsight

3
推荐指数
1
解决办法
124
查看次数

标签 统计

cuda ×1

nsight ×1

shared-memory ×1