bwe*_*ber 3 parallel-processing cuda multi-gpu
我想并行运行多个GPU上的内核.为此,我在设备之间切换cudaSetDevice()
,然后在相应的设备中启动我的内核.现在,通常一个流中的所有调用都是顺序执行的,如果它们必须并行执行,则必须使用不同的流.在使用不同的设备时也是这种情况,或者在这种情况下我是否可以在两台设备上的默认流上运行内核调用,它们仍将并行运行?
没有必要为每个设备使用非默认流来从同一主机进程或线程在多个设备上同时执行内核.内核启动是异步和非阻塞的,因此在不同设备上启动内核的紧密循环应该为非平凡内核产生执行重叠(请记住,设备上下文切换具有延迟).
这是需要使用所有其他主机API调用您通常会结合在默认流内核使用的异步版本,因为其中许多(在cudaMemcpy家庭,例如)的块.