如果我将一个字节从CUDA内核传输到PCI-E,再传输到主机(零拷贝内存),与传输200兆字节相比,它的速度有多慢?
我想知道的是,由于我知道通过PCI-E传输CUDA内核的速度很慢,如果我只传输一个字节或大量数据,会有什么变化吗?或者也许因为内存传输是以“批量”的方式执行的,所以传输一个字节与传输200MB相比是非常昂贵和无用的?
发布于 2013-07-19 20:20:45
希望这张照片能解释一切。数据是由bandwidthTest在CUDA示例中生成的。硬件环境为PCI-E v2.0、Tesla M2090和2x Xeon E5-2609。请注意,这两个轴都是对数尺度。
根据这个数字,我们可以看到发起一个传输请求的开销需要一个恒定的时间。对数据的回归分析给出了H2D的估计开销时间为4.9us,D2H为3.3us,D2D为3.0us。

发布于 2020-07-22 14:13:45
在这种情况下,latency plot会更清晰。小交易并不比大交易更昂贵。它们唯一的问题是它们不能使总线饱和。因此,几乎同时传输更大的消息是可能的。这就是为什么传输一个512 KB的事务要比传输512个1 KB的事务快120倍。PCIe的饱和点取决于通道数。您可以从CUDA的角度here找到有关PCIe功能的更多详细信息。
https://stackoverflow.com/questions/17729351
复制相似问题