CUDA:我需要在多个GPU上并行执行不同的流吗?
我想要在多个GPU上并行运行内核。 为此,我使用cudaSetDevice()
在设备之间切换,然后在相应的设备中启动我的内核。 现在,通常一个流中的所有调用都是按顺序执行的,如果它们应并行执行,则必须使用不同的流。 当使用不同的设备时,情况也是如此,或者我可以在两台设备上的默认流上运行我的内核调用,并且它们仍然可以并行运行?
没有必要使用每个设备的非默认流来从同一主机进程或线程并发执行多个设备上的内核。 内核启动是异步和非阻塞的,因此在单独的设备上启动内核的紧密循环应该为非重要的内核产生执行重叠(请记住设备上下文切换具有延迟)。
有必要使用所有其他主机API调用的异步版本,这些调用通常与默认流中的内核结合使用,因为其中很多(例如cudaMemcpy系列)块会阻塞。
链接地址: http://www.djcxy.com/p/79397.html上一篇: CUDA: do I need different streams on multiple GPUs to execute in parallel?