我尝试使用nvidia发布的代码并进行内存带宽测试,但得到了一些令人惊讶的结果
使用的程序在这里:https://developer.nvidia.com/content/how-optimize-data-transfers-cuda-cc
在桌面上(使用MacOS)
Device: GeForce GT 650M
Transfer size (MB): 16
Pageable transfers
Host to Device bandwidth (GB/s): 4.053219
Device to Host bandwidth (GB/s): 5.707841
Pinned transfers
Host to Device bandwidth (GB/s): 6.346621
Device to Host bandwidth (GB/s): 6.493052在Linux服务器上:
Device: Tesla K20c
Transfer size (MB): 16
Pageable transfers
Host to Device bandwidth (GB/s): 1.482011
Device to Host bandwidth (GB/s): 1.621912
Pinned transfers
Host to Device bandwidth (GB/s): 1.480442
Device to Host bandwidth (GB/s): 1.667752顺便说一句,我没有root权限。
我不知道为什么在特斯拉设备上它会更少。谁能指出原因是什么?
发布于 2013-12-23 16:32:53
最有可能的情况是,服务器中的GPU不在16通道PCI express插槽中。我期望像K20C这样的PCI-e v2.0设备能够在合理指定的现代服务器上达到4.5-5.5 6Gb/s的峰值吞吐量(在台式机系统上,集成PCI-e控制器可能约为6 6Gb/s)。你的结果看起来就像你在一个只有8个甚至4个活动通道的16x插槽中托管GPU。
也可能有其他因素在起作用,如CPU-IOH亲和性,它可以增加托管GPU的PCI-e总线与运行测试的处理器及其内存之间的“跳数”。但是提供进一步的分析将需要关于服务器配置和硬件的更多细节,这确实超出了StackOverflow的范围。
发布于 2013-05-23 16:56:22
快速浏览一下Tesla K20c spec和GT 650M spec可以澄清一些问题。我们可以看到,特斯拉的PCIe接口的2.0版本是slower,而GT PCIe接口是3.0。虽然特斯拉在内存和内存总线方面有更多的资源,但这两个参数会限制内存带宽。因此,特斯拉可能会发出比GT更多的内存指令,但它们会因为PCIe接口而停滞。
当然,这可能不是唯一的原因,但对于详细信息,我将探索这两个卡的体系结构,因为我看到了微小的差异(至少在命名方面)。
Edit#1:参考下面的评论,显然你可以在PCIe 2.0板上达到PCIe 3.0的速度。检查this
https://stackoverflow.com/questions/16709181
复制相似问题