我想问一下,在进行异步调用后是否可以调用cudaFree函数?例如:
在这种情况下,由于内核启动是异步的,当到达 cudaFree 部分时,内核可能尚未完成运行。那么,在其后立即执行的 cudaFree(dev_a) 会破坏数据吗?
int* dev_a;
// prepare dev_a...
// launch a kernel to process dev_a (asynchronously)
cudaFree(dev_a);
在这种情况下,由于内核启动是异步的,当到达 cudaFree 部分时,内核可能尚未完成运行。那么,在其后立即执行的 cudaFree(dev_a) 会破坏数据吗?
cudaFree
在尝试释放指针之前会同步。 - Jared Hoberock