根據CUDA Programming Guide,頁面122,只要我們使用計算體系結構2.x,就可以在設備/全局函數中動態分配內存。在__device/global__ CUDA內核中動態分配內存
我的問題是,當我嘗試此我得到的命令行消息:
命令 「一些命令」 -gencode = ARCH = compute_10,代碼= \ 「sm_10,compute_10 \」 -gencode = ARCH = compute_20,代碼= \「sm_20,compute_20 \」等等
這是緊隨其後的錯誤說,你不能調用從設備/全球功能的主機功能(malloc的)。
上面的消息表明它正試圖在計算1.x下進行編譯。我正在使用VS2010,並且在「CUDA C/C++」屬性頁面中將「代碼生成」設置爲「compute_20,sm_20」,所以我不確定爲什麼它仍然試圖在compute 1.x下編譯。我絕對使用支持2.x的卡。有任何想法嗎?
你是對的 - 我已經設置了在compute_20,sm_20下編譯的默認屬性。但是當我檢查文件本身的屬性時,它仍然被設置爲compute_20,sm_20和compute_10,sm_10。改變了這一點,現在我的代碼成功編譯了。 – Barjavel