- 第二个“等(gpu)”在你不需要紧密的循环,将影响结果。记忆从设备传输到主机(即。“收集”)总是同步的。
- 你测量的速度传输数据从GPU /(即PCI总线的速度)。这不是一样的GPU内存带宽(问题标题所显示),这是多,高得多(> 90 gb /秒的GPU和最近的GPU更高)。
- 几乎是不可能精确测量在MATLAB的传输带宽。你在这里实际上是时间的时间分配一些空间(GPU在第一种情况下,在第二个主机内存),来执行数据传输和分配一个MATLAB函数。这些额外步骤采取一些(希望小)的时间将减少的结果。
- 的一些变化可能来自其他进程使用PCI总线。运行操作系统在一个高度精简模式没有网络等可能会有帮助。
如何衡量GPU内存带宽?
22日视图(30天)
显示旧的评论
我有一个TeslaC1060 4 gb的内存。我跑步MatlabR2012b和我用下面的代码来测量主机和设备之间的内存带宽。
gpu = gpuDevice ()
N = 8192;data =兰德(N, N);%
为k = 1:10 0
抽搐;
gdata = gpuArray(数据);等待(gpu);
CPU2GPU (k) = N ^ 2 * 8/1024 ^ 3 / toc;
抽搐;
data2 =收集(gdata);等待(gpu);
GPU2CPU (k) = N ^ 2 * 8/1024 ^ 3 / toc;
结束
图;
CPU2GPU情节(1:10 0,“r”。,GPU2CPU 1:10 0“b”。);
传奇(CPU - > GPU的,“GPU - > CPU”);
我发现不到1.5 Gb / s GPU和CPU和不到3.0 Gb / s从CPU、GPU(平均100个值最初的除外)。1)测量值为什么到目前为止从预期的8 Gb / s ?事实证明,100年值变化从一个运行到另一个几乎2倍。2)为什么这段代码的行为不是那么reproductible呢?
谢谢你的帮助。
0评论
接受的答案
本Tordoff
2013年4月15日
嗨Anterrieu,
你也许想看看以下文章:
在这些结果中,实现了传输带宽大约是5.7 gb /秒(发送)和4.0 gb /秒(收集)。虽然我不能给你一个确切的答案为什么测量转移利率如此之低,不可靠的,需要考虑以下几点:
如果你尝试本文中的代码,还看到低得多的结果,让我知道。但是请注意,你不测量GPU在这里,你只是测量多忙你的PCI总线和MATLAB可以把数据。这是一个重要的指标,但这通常不是最重要的,只要你做大量的计算数据一旦你把它放在GPU。如果你想知道更多关于你的GPU的计算性能,您可能喜欢GPUBench兜风:
本