我有這樣的事情之一:CUDA中全局變量的字符串查找錯誤?
__constant__ double PNT[ NUMCOORDS ];
__device__ double PNT[ NUMCOORDS ];
取決於一些預處理選擇。然後我用這個變量:
cudaMemcpyToSymbol("PNT", point, pntSize)
然而,有時(我時真的混淆了我真的不能說)我得到錯誤信息:
重複的全局變量看up by字符串名稱
檢查CUDA錯誤時。我試着用PNT
更換"PNT"
和奇怪的是,這個工程:
cudaMemcpyToSymbol(PNT, point, pntSize)
Shound我在實踐中(而不是使用字符串"PNT"
)使用此解決方案?
如果沒有更詳細的例子,我想很難說出發生了什麼,最好是以其他人可以複製的形式。你是否用不同的宏設置分析你的文件幾次?也許nvcc不更新一些中間文件,並且它最終同時具有__constant__和__device__變量? – CygnusX1
已經感謝了;只是簡短的問題:代碼'cudaMemcpyToSymbol(PNT,point,pntSize)'100%正確嗎?如果是這樣,我會堅持下去,因爲使用它時不會出現任何錯誤! – tim
[CUDA庫文檔](http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/online/group__CUDART__MEMORY_g58acd070e6f9bb82d7aeee3d0b958460.html)表明您嘗試做的事是正確的。您可能需要將另外2個參數傳遞給該函數。但是,我會小心的,如果nvcc弄亂了變量,它可能實際上也會混淆在這個函數中,通過將數據複製到不正確的目的地。 – CygnusX1