【问题标题】:CUDA cudaMemcpyAsync using single stream to hostCUDA cudaMemcpyAsync 使用单个流来托管
【发布时间】:2021-05-11 07:12:45
【问题描述】:

我有一个内核,它使用 单流 来感受两个参数(dev_out_1 和 dev_out_2)的数据。我想将数据从设备复制回主机并行。 我的要求是使用单流并并行复制回主机。

您如何处理此类问题?

SomeCudaCall<<<25,34>>>(input, dev_out_1,dev_out_2);
cudaMemcpyAsync(toHere_1, dev_out_1, sizeof(int), cudaMemcpyDeviceToHost,0);
cudaMemcpyAsync(toHere_2, dev_out_2, sizeof(int), cudaMemcpyDeviceToHost,0);

【问题讨论】:

    标签: cuda cuda-streams


    【解决方案1】:

    我想将设备中的数据并行复制回主机

    这是不可能的。

    NVIDIA GPU 只能使用一个 DMA 引擎进行设备到主机的传输(即使在有多个 DMA 引擎的情况下),并且 DMA 引擎一次只能执行一次传输。因此,不可能通过 PCI express 总线在同一方向上“并行”复制。

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2019-04-19
      • 1970-01-01
      • 2018-02-10
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多