CUDA C ++重叠SERIAL内核执行和数据传输

问题描述

因此,本指南here显示了重叠内核执行和数据传输的一般方法。

{
  "example1": {
    "example2": {
      "example3": 4
    }
  }
}

但是,内核是串行的。因此,它必须处理0-> 1000,然后处理1000-> 2000,...总之,在重叠数据传输时正确执行此内核的顺序为:

  • 复制[a-> b]必须在内核[a-> b]之前发生
  • 内核[a-> b]必须在内核[b-> c]之前发生,其中c> a,b

是否可以不使用cudaStream_t streams[nStreams]; for (int i = 0; i < nStreams; ++i) { cudaStreamCreate(&streams[i]); int offset = ...; cudaMemcpyAsync(&d_a[offset],&a[offset],streamBytes,cudaMemcpyHostToDevice,stream[i]); kernel<<<streamSize/blockSize,blockSize,stream[i]>>>(d_a,offset); // edit: no deviceToHost copy } 来执行此操作?如果没有,最快的方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)