Asynchronous 异步调用后的cudaFree工作吗?
我想问一下在一些异步调用之后调用cudaFree是否有效?比如说Asynchronous 异步调用后的cudaFree工作吗?,asynchronous,cuda,Asynchronous,Cuda,我想问一下在一些异步调用之后调用cudaFree是否有效?比如说 int* dev_a; // prepare dev_a... // launch a kernel to process dev_a (asynchronously) cudaFree(dev_a); 在这种情况下,由于内核启动是异步的,当到达cudaFree部分时,内核可能还没有完成运行。那么cudaFree(dev_a)会在销毁数据后立即销毁吗?根据Jared的评论,我大约99%确定CUDA无驱动程序/malloc对
int* dev_a;
// prepare dev_a...
// launch a kernel to process dev_a (asynchronously)
cudaFree(dev_a);
在这种情况下,由于内核启动是异步的,当到达cudaFree部分时,内核可能还没有完成运行。那么cudaFree(dev_a)会在销毁数据后立即销毁吗?根据Jared的评论,我大约99%确定CUDA无驱动程序/malloc对被实现为阻塞调用,这将在执行调用之前同步它们操作的上下文。非常确定
cudaFree
将在尝试释放指针之前同步。谢谢!内核中的“free”函数怎么样?如果我有一个内核启动立即进行,这工作吗?