2012-06-24 131 views
1

我寫了一個簡單的代碼,只在塊內啓動一個塊和一個線程。內核創建一個共享的內存數組,共佔用流式多處理器的整個共享內存。代碼設置和取消共享內存中的各個位。我注意到,前32位,代碼工作正常。然而,當我開始翻轉剩餘的比特時,沒有任何反應,比特保持不變。CUDA內存銀行衝突?

任何想法是怎麼回事?我是CUDA編程的新手。是否有理由相信這與記憶銀行衝突有關?

+1

您通常不能使用所有可用的共享內存,因爲少量用於內核函數參數等。 –

+0

有沒有辦法確定我可以使用多少?即使我不能使用整個共享內存,我仍然可以訪問第二個32位字,就像我在我的代碼中一樣? – gmemon

+2

沒有看到實際的代碼,很難說哪裏可能出錯。 –

回答

1

要回答你的問題,不,這與共享內存組衝突無關。銀行衝突隻影響業績,不正確。因此,無論是否存在銀行衝突,您都會得到相同的結果。

您應該爲您的主機代碼添加錯誤檢查並檢查從所有cuda API函數返回的結果。我懷疑你在某處遇到錯誤。一般來說,如果您想要更準確的答案,您應該在代碼中附上您的問題。

+0

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