首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以并发执行多少个cudaMemcpyAsync操作?

可以并发执行多少个cudaMemcpyAsync操作?
EN

Stack Overflow用户
提问于 2013-11-23 10:58:50
回答 1查看 449关注 0票数 0

考虑以下情况:

代码语言:javascript
运行
复制
//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编写一些程序,因此这将对性能非常关键。

EN

回答 1

Stack Overflow用户

发布于 2013-11-23 11:30:49

实际上,在任何给定时间,每个方向上,只有一个cudaMemcpy操作可以通过PCIE链路传输数据。当然,其他操作也可以排队,但实际上只能有一个操作在使用该链接。

一些CUDA GPU有一个DMA引擎,另一些有两个。那些有两个引擎的GPU可以同时在两个方向上传输数据。这是数据传输中并发的限制:每个方向一个(假设双复制引擎)。

假设数据传输不是很小,那么在每次传输的持续时间内,PCIE总线将得到充分利用(在该方向上)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20157980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档