cudaMemcpy和cublas在对等模式下阻塞



我想通过调用cudaMemcpy在两个CUDA设备(具有UVA支持)之间复制内存。我想知道呼叫是否与主机同步?我知道同一设备内的cudaMemcpy是异步的,但是不同设备之间的复制呢?我需要打电话给cudaDeviceSynchronize来确认拷贝是否已经完成,还是自动完成?

我也有一个关于cublas的类似问题。我想将存储在一个设备上的向量添加到存储在另一个设备上的向量上,因此我调用cublasSaxpy。它会阻塞主机直到操作完成,还是我需要显式同步?

我知道cudaMemcpy在同一设备是异步的

文档说,"这个函数在大多数用例中显示同步行为。"(我的重点)。然而,尽管cudaMemcpy()在某些极端情况下确实表现出异步行为,但这些极端情况具有否定该行为的行为。最终的结果是,你可以依赖于cudaMemcpy()是同步的,在进行点对点复制时也是如此。

如果你需要异步行为,你应该调用cudaMemcpyAsync()

CUBLAS API大部分是异步的,包括cublasSaxpy。例外是一些返回标量的调用。

相关内容

  • 没有找到相关文章

最新更新