使用cudaMemcpyAsync如何保证准确性?

  • 2 replies
  • 170 views
使用cudaMemcpyAsync如何保证准确性?
« 于: 六月 22, 2019, 10:35:08 am »
各位[名词6],求问当使用cudaMemcpyAsync从GPU传回数据到CPU时,CPU并不会等数据传输完成就进行下一步,当下一步会对传回的数据进行操作时,我们应该如何判断数据已经传输完成了呢?还是在这种情况下应该用普通的cudaMemcpy?

Re: 使用cudaMemcpyAsync如何保证准确性?
« 回复 #1 于: 六月 22, 2019, 10:49:11 am »
哇找到了,似乎这两个函数可以
cudaError_t cudaStreamSynchronize(cudaStream_t stream);
cudaError_t cudaStreamQuery(cudaStream_t stream);
« 最后编辑时间: 六月 22, 2019, 10:52:14 am 作者 shanling »

Re: 使用cudaMemcpyAsync如何保证准确性?
« 回复 #2 于: 六月 24, 2019, 02:24:43 pm »
哇找到了,似乎这两个函数可以
cudaError_t cudaStreamSynchronize(cudaStream_t stream);
cudaError_t cudaStreamQuery(cudaStream_t stream);

cudaStreamQuery只能查询的。除非你准备忙等循环。

你可以使用3大同步里面的任何一种(流同步、设备同步、事件同步),手册里面说的很明白了。这种问题其实不应当询问的(就在你看到的异步传输的后面就直接有答案)