Nvidia GPU 上的内存带宽测试

Sag*_*uti 0 cuda nvidia

我尝试使用 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
Run Code Online (Sandbox Code Playgroud)

在 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
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我没有root权限..

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

tal*_*ies 5

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

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