我有一個奇怪的問題..我寫了一個在仿真中正確執行的CUDA代碼,並且所有結果都顯示出來了..但是,當在硬件「G210」上執行時..結果內存中的結果始終爲0硬件中的Cuda程序結果始終爲零,在EMU中正確嗎?
我將兩個向量傳遞給內核,一個使用隨機變量,另一個初始化爲零,代碼將第一個向量複製到共享內存,執行一些交換和其他操作,然後將結果寫回第二個向量(一個與初始的0)
我使用雙精度,則使用-arch SM13標誌,所有的存儲器分配也使用sizeof(雙)..
我已檢查內核是否被調用,它確實..所以這裏沒有問題.. cudaMemCpy沒有問題..
可能是什麼問題.. :(爲什麼它會在模擬工作,但不是HW
我很困惑..任何想法?
你是否分析了代碼?從簡短的描述來看,您的操作聽起來像是內存綁定(主要是讀寫),所以值得檢查一下您沒有低效的內存事務或共享內存組衝突(如果您使用的是共享內存)。也許在其他問題或NVIDIA論壇上發佈更多細節。也有可能這是一個很好的候選人(http://code.google.com/p/thrust/)。 – Tom 2010-05-26 15:37:15