如果我将单个字节从 CUDA 内核传输到 PCI-E 到主机(零拷贝内存),与传输 200 兆字节的数据相比,它慢了多少?
我想知道,因为我知道通过 PCI-E 传输对于 CUDA 内核来说很慢,所以我想知道的是:如果我只传输一个字节或大量数据,它会改变什么吗?或者也许由于内存传输是“批量”执行的,传输单个字节相对于传输 200 MB 而言非常昂贵且无用?
希望这张照片能解释一切。数据由CUDA 样本中的bandwidthTest生成。硬件环境为 PCI-E v2.0、Tesla M2090 和 2x Xeon E5-2609。请注意,两个轴都是对数刻度。
鉴于此图,我们可以看到启动传输请求的开销需要一个恒定的时间。对数据的回归分析得出 H2D 的估计开销时间为 4.9us,D2H 为 3.3us,D2D 为 3.0us。