CUDA内存库冲突?

CUDA内存库冲突?,cuda,gpu,shared-memory,Cuda,Gpu,Shared Memory,我编写了一个简单的代码,只启动一个块和块内的一个线程。内核创建一个48 KB的共享内存阵列,填充流式多处理器的整个共享内存。该代码设置和取消设置共享内存中的各个位。我注意到,对于前32位,代码运行良好。然而,当我开始翻转剩余的位时,什么也没有发生,位保持不变 知道发生了什么事吗?我是CUDA编程新手。是否有任何理由相信这与内存库冲突有关?回答您的问题,不,这与共享内存库冲突无关。银行冲突只会影响绩效,而不会影响正确性。因此,无论有无银行冲突,您都会得到相同的结果 您应该在主机代码中添加错误检查,

我编写了一个简单的代码,只启动一个块和块内的一个线程。内核创建一个48 KB的共享内存阵列,填充流式多处理器的整个共享内存。该代码设置和取消设置共享内存中的各个位。我注意到,对于前32位,代码运行良好。然而,当我开始翻转剩余的位时,什么也没有发生,位保持不变


知道发生了什么事吗?我是CUDA编程新手。是否有任何理由相信这与内存库冲突有关?

回答您的问题,不,这与共享内存库冲突无关。银行冲突只会影响绩效,而不会影响正确性。因此,无论有无银行冲突,您都会得到相同的结果


您应该在主机代码中添加错误检查,并检查所有cuda API函数返回的结果。我怀疑你在什么地方出错了。一般来说,如果您想得到更准确的答案,您应该在问题中添加代码。

要回答您的问题,不,这与共享内存库冲突无关。银行冲突只会影响绩效,而不会影响正确性。因此,无论有无银行冲突,您都会得到相同的结果


您应该在主机代码中添加错误检查,并检查所有cuda API函数返回的结果。我怀疑你在什么地方出错了。一般来说,如果您想得到更准确的答案,您应该在问题中添加代码。

您通常不能使用所有可用的共享内存,因为有一小部分用于内核函数参数等。有没有办法确定我可以使用多少?即使我不能使用整个共享内存,我也应该能够访问第二个32位字,就像我在代码中所做的那样?在看不到实际代码的情况下,很难说您可能会出错。Paul R,共享内存仅用于sm_1x GPU上的函数参数。sm_20和更高版本的GPU使用常量内存来传递函数参数。在编译器上使用--ptxas options=-v可以得到已使用的寄存器、共享内存和本地内存的数量。通常不能使用所有可用的共享内存,因为一小部分用于内核函数参数等。有没有办法确定我可以使用多少?即使我不能使用整个共享内存,我也应该能够访问第二个32位字,就像我在代码中所做的那样?在看不到实际代码的情况下,很难说您可能会出错。Paul R,共享内存仅用于sm_1x GPU上的函数参数。sm_20和更高版本的GPU使用常量内存来传递函数参数。在编译器上使用--ptxas options=-v可以获得已使用寄存器、共享内存和本地内存的数量。