我尝试使用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的范围。
https://stackoverflow.com/questions/16709181
复制相似问题