考虑以下情况:
//thread 0 on device 0:
cudaMemcpyAsync(Dst0, Src0, ..., stream0);//stream0 is on Device 0;
...
//thread 1 on device 1:
cudaMemcpyAsync(Dst1, Src1, ..., stream1);//stream1 is on Device 1;
这两个memcpy操作是否可以同时进行并获得双倍的主机-设备带宽(只要主机内存带宽足够)?如果答案是肯定的,那么这种并发是否有上限?
我计划为单个计算节点中的多个(6-8) GPU编写一些程序,因此这将对性能非常关键。
发布于 2013-11-23 11:30:49
实际上,在任何给定时间,每个方向上,只有一个cudaMemcpy
操作可以通过PCIE链路传输数据。当然,其他操作也可以排队,但实际上只能有一个操作在使用该链接。
一些CUDA GPU有一个DMA引擎,另一些有两个。那些有两个引擎的GPU可以同时在两个方向上传输数据。这是数据传输中并发的限制:每个方向一个(假设双复制引擎)。
假设数据传输不是很小,那么在每次传输的持续时间内,PCIE总线将得到充分利用(在该方向上)。
https://stackoverflow.com/questions/20157980
复制相似问题