3

cudaMalloc()对同步 cuda 函数(例如,cudaBindTextureToArray()等)的调用是否会阻塞主机,直到设备上所有先前请求的任务都完成?或者它只会阻塞直到对该同步函数的调用完成?

换句话说,对同步 cuda 函数的调用是否与cudaDeviceSynchronize()

4

1 回答 1

3

是的,它应该阻塞,直到所有前面的任务都完成。

您可以通过在 CPU 端定时执行语句来测试这一点:

放置一个像内核执行这样的异步任务,然后在它之后cudaMemcpy()分别执行一个同步任务和时间执行。如果你把它放在cudaDeviceSynchronize()内核之后,两个调用的时间都是正确的。但是如果你删除cudaDeviceSynchronize()调用,你会看到执行内核的时间似乎是附加在cudaMemcpy()调用上的。

于 2013-04-23T10:52:08.077 回答