异步调用后cudaFree工作吗?

时间:2014-01-17 03:56:58

标签: asynchronous cuda

我想问一下在一些异步调用后调用cudaFree是否有效?例如

int* dev_a;

// prepare dev_a...

// launch a kernel to process dev_a (asynchronously)

cudaFree(dev_a);

在这种情况下,由于内核启动是异步的,当到达cudaFree部分时,内核可能还没有完成运行。那么cudaFree(dev_a)会在它破坏数据后立即发生吗?

1 个答案:

答案 0 :(得分:3)

根据Jared的评论,我大约99%确定CUDA驱动程序free / malloc对被实现为阻塞调用,这将在执行调用之前同步它们运行的​​上下文。