我编写了一个简单的代码,只在块中启动一个块和一个线程。内核创建一个48 KB 共享内存阵列,填充流式多处理器的整个共享内存。代码设置和取消设置共享内存中的各个位。我注意到,前32位,代码工作正常。但是,当我开始翻转剩余的位时,没有任何反应,位保持不变。
任何想法是怎么回事?我是CUDA编程的新手。有没有理由相信这与记忆库冲突有关?
答案 0 :(得分:1)
要回答你的问题,不,这与共享内存库冲突无关。银行冲突只会影响绩效,而不是正确性。因此,无论是否存在银行冲突,您都会获得相同的结果。
您应该向主机代码添加错误检查,并检查从所有cuda API函数返回的结果。我怀疑你在某个地方遇到错误。一般来说,如果您想要更准确的答案,您应该使用您的问题发布代码。