0

我尝试使用 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权限..

我不知道为什么它在特斯拉设备上更少.. 谁能指出原因是什么?

4

2 回答 2

5

服务器中的 GPU 很可能不在 16 通道 PCI Express 插槽中。我希望像 K20C 这样的 PCI-e v2.0 设备能够在合理指定的现代服务器上实现 4.5-5.5Gb/s 的峰值吞吐量(在桌面系统上可能约为 6Gb/s,集成 PCI-e 控制器)。您的结果看起来像是将 GPU 托管在只有 8 个甚至 4 个活动通道的 16x 插槽中。

还可能有其他因素在起作用,例如 CPU-IOH 亲和性,这可能会增加托管 GPU 的 PCI-e 总线与运行测试的处理器及其内存之间的“跳数”)。但是提供进一步的分析需要更多关于服务器配置和硬件的细节,这确实超出了 StackOverflow 的范围。

于 2013-12-23T08:32:53.123 回答
-1

快速浏览一下 Tesla K20c 规格GT 650M 规格可以说明问题。我们看到 Tesla 的 PCIe 接口有2.0版本,它比 GT PCIe 接口3.0。尽管特斯拉在内存和内存总线方面拥有更多资源,但这两个参数会限制内存带宽。因此,Tesla 可能会发出比 GT 更多的内存指令,但它们会因为 PCIe 接口而停止运行。

当然这可能不是唯一的原因,但对于细节,我会探索这两种卡的架构,因为我看到了微小的差异(至少在命名方面)。

编辑#1:显然参考下面的评论,您可以在 PCIe 2.0 板上实现 PCIe 3.0 速度。检查这个

于 2013-05-23T08:56:21.980 回答