在一个GPU上同时运行MemcpyPtoP和一个计算kernel

我有两块GPU,并在这两块GPU上开启一个异步的数据传输(cudaDeviceEnablePeerAccess()),同时多次运行一个自定义的kernel。然后发生了一个意外的现象:这两个操作可以并行,但是在这两个操作重叠的时候,两个自定义kernel间的间隔变大了。如下图。
[attach]16267[/attach]
我是在第二个设备上的stream启动的cudaDeviceEnablePeerAccess(),所以第二个设备出现了这个现象。
如果我在第一个设备上的stream启动的cudaDeviceEnablePeerAccess(),则第一个设备出现这个现象,第二个设备正常。
如果我在第三个设备上的stream启动的cudaDeviceEnablePeerAccess(),则设备1和设备2都不会出现这个现象。

因此我怀疑是同一个GPU上不同stream间的相互影响导致的这个问题,有人知道究竟为什么会出现这个情况吗,以及要怎么解决呢。