2012-12-18 37 views
3

我面臨一個簡單的問題,即所有我對cudaMalloc的調用失敗,給我一個內存不足的錯誤,即使它只是我分配的單個字節。cudaMalloc總是給出內存

該cuda設備可用,並且還有很多可用的內存(與相應的調用檢查機器人)。

任何想法可能是什麼問題?

+2

您能夠運行SDK示例嗎?你能否向我們提供一個代碼樣本,但你失敗了? –

+0

你能提供一些你已經嘗試過的例子嗎? –

回答

2

謝謝大家的幫助。

這個問題不是真的與cudaMalloc本身有關,而是它隱藏了真正的問題,這是由於似乎失敗的cuda的初始化。

因爲第一次調用cuda是在一個單獨的線程中,我沒有可用的GLContext,導致失敗。我需要確保在初始化上下文之後,我在主線程中通過虛擬malloc初始化了cuda。

2

請嘗試在代碼本身的開頭調用cudaSetDevice(),然後調用cudaDeviceSynchronize(),然後調用cudaThreadSynchronize()。

cudaSetDevice(0)如果只有一個設備。默認情況下,CUDA運行時將初始化設備0.

cudaSetDevice(0); 
cudaDeviceSynchronize(); 
cudaThreadSynchronize(); 

請回復您的觀察結果。如果仍然失敗,請指定操作系統,體系結構,CUDA SDK版本,CUDA驅動程序版本。如果可能的話,請提供失敗的代碼/代碼片段。

+0

你好,我可以在我的R代碼中使用這些命令嗎? – Mohammad