我的集群配备了Nvlink和PCIe。所有的GPU(V100)都可以直接通过PCIe或NvLink进行通信。据我所知,PCIe交换机和Nvlink都可以通过使用数据自动化系统来支持直接链接。
现在,我想比较一下PCIe和NvLink的点对点通信性能.然而,我不知道如何指定一个,似乎数据自动化系统总是自动指定一个。有人能帮我吗?
发布于 2018-11-07 17:27:57
如果数据自动化系统中的两个GPU之间有一个直接的NVLink连接,并且您启用了对等传输,那么这些传输将通过NVLink进行。在数据自动化系统中没有任何方法来改变这种行为。
如果不启用对等传输,那么这两个设备之间的数据传输(例如,cudaMemcpy、cudaMemcpyAsync、cudaMemcpyPeerAsync)将从源GPU通过PCIE流到CPU套接字(可能通过中间PCIE交换机,也可能通过套接字级链接(例如QPI),然后通过PCIE从CPU套接字流向另一个GPU。至少有一个CPU套接字将始终涉及,即使在PCIE结构上存在较短的直接路径。这种行为也不能以程序员可用的任何方式修改。
这两种方法都是使用p2pBandwidthLatencyTest数据自动化系统示例代码演示的。
发布于 2022-09-19 01:02:35
接受的答案--来自NVIDIA的一名员工--在2018年是正确的。但在某种程度上,NVIDIA增加了一个(无证?)司机的选择。
在Linux上,您现在可以将它放在/etc/modprobe.d/diable. can中:
options nvidia NVreg_NvLinkDisable=1这将在下一次加载驱动程序时禁用NVLink,迫使GPU点对点通信使用PCIe互连。此小工具存在于驱动程序515.65.01 (CUDA 11.7.1)中。我不知道是什么时候加进去的。
至于"there is no reason to allow the end-user to choose the slower path",这一问题的存在本身就表明情况并非如此。在我的例子中,我们买的不是一台服务器,而是几十台.在选择配置的过程中,使用单个原型系统对我们的应用程序使用NVLink或PCIe进行基准测试是很好的。
https://stackoverflow.com/questions/53174224
复制相似问题