我想问一下在一些异步调用后调用cudaFree是否有效?例如
int* dev_a;
// prepare dev_a...
// launch a kernel to process dev_a (asynchronously)
cudaFree(dev_a);
在这种情况下,由于内核启动是异步的,当到达cudaFree部分时,内核可能还没有完成运行。那么cudaFree(dev_a)会在它破坏数据后立即发生吗?
答案 0 :(得分:3)
根据Jared的评论,我大约99%确定CUDA驱动程序free / malloc对被实现为阻塞调用,这将在执行调用之前同步它们运行的上下文。