在 Nvida CUDA C 编程指南 4.0 的第 3.2.5.5.4 节中,它说如果在它们之间发出设备到设备的内存副本,则来自不同流的两个命令不能同时运行。我不确定它到底是什么意思。希望有人能澄清我的困惑。
假设我的程序有两个流,流 0 和流 1。以下是内核启动到这些流的顺序。
内核 0.0(流 0;假设执行时间为 10 毫秒)
内核 1.0(流 1;假设执行时间为 1 毫秒)
内核 1.1(流 1;假设执行时间为 3 毫秒)
内核 1.2(流 1;此内核导致设备到设备的内存复制,假设执行时间为 1 毫秒)
内核 1.3(流 1;假设执行时间为 6 毫秒)
我们还假设程序没有其他开销,并且 GPU 有足够的 SM 来同时运行这些内核。我的问题是内核 0.0 是否可以与内核 1.2 和内核 1.3 同时运行?整个程序的运行时间是多少?