2014-01-17 49 views
3

我想問一下在一些異步調用之後調用cudaFree是否有效?例如:異步調用後cudaFree工作嗎?

int* dev_a; 

// prepare dev_a... 

// launch a kernel to process dev_a (asynchronously) 

cudaFree(dev_a); 

在這種情況下,由於內核啓動是異步的,當達到cudaFree部分時,內核可能還沒有完成運行。那麼cudaFree(dev_a)會立即破壞數據嗎?

+3

很確定'cudaFree'會在它試圖釋放指針之前同步。 –

回答

3

按Jared的評論,我一定約99%的CUDA驅動自由/ malloc的對被作爲支撐,這將同步在它們它們的執行調用之前運行的背景下調用來實現。

+0

謝謝!內核中的「free」函數怎麼樣?如果我立即開始內核啓動,這是否工作? – shaoyl85