2012-06-24 65 views
1

我写了一个简单的代码,只在块内启动一个块和一个线程。内核创建一个共享的内存数组,共占用流式多处理器的整个共享内存。代码设置和取消共享内存中的各个位。我注意到,前32位,代码工作正常。然而,当我开始翻转剩余的比特时,没有任何反应,比特保持不变。CUDA内存银行冲突?

任何想法是怎么回事?我是CUDA编程的新手。是否有理由相信这与记忆银行冲突有关?

+1

您通常不能使用所有可用的共享内存,因为少量用于内核函数参数等。 –

+0

有没有办法确定我可以使用多少?即使我不能使用整个共享内存,我仍然可以访问第二个32位字,就像我在我的代码中一样? – gmemon

+2

没有看到实际的代码,很难说哪里可能出错。 –

回答

1

要回答你的问题,不,这与共享内存组冲突无关。银行冲突只影响业绩,不正确。因此,无论是否存在银行冲突,您都会得到相同的结果。

您应该为您的主机代码添加错误检查并检查从所有cuda API函数返回的结果。我怀疑你在某处遇到错误。一般来说,如果您想要更准确的答案,您应该在代码中附上您的问题。

+0

感谢您的信息,哈里斯 – gmemon