我想知道是否可以在两个Titan X GPU之间使用点对点内存传输和内存访问。目前我只有一个GPU,如果有可能,我可能会得到另一个。 我知道在here和here之前已经提出了类似的问题,但这些问题已超过2年了。我在问这个有什么新鲜事。
答案 0 :(得分:3)
应该可以使用Titan X.但是有一些注意事项:
操作系统/驱动程序模型 - 在Windows上,GPU可以处于WDDM模式或TCC模式。 WDDM模式AFAIK不支持P2P。因此,您应该将GPU置于TCC模式,这在最近的驱动程序中支持Titan X(尽管不适用于大多数其他GeForce产品)。 CUDA支持的Linux操作系统不应该有任何额外的考虑因素。
系统拓扑 - GPU直接P2P依赖于相同 PCIE结构上的源设备和目标设备,这实际上意味着它们必须连接到同一PCIE根联合体。如果您的系统拓扑结构是一个PCIE插槽来自一个CPU插槽,而另一个PCIE插槽来自另一个CPU插槽(例如,在双插槽主板中),则这些PCIE结构将在逻辑上分离(它们由单独的根联合体提供服务)并且两者之间的P2P转移是不可能的。此外,拓扑决策取决于GPU驱动程序能够发现它并正确识别它。如果由于某种原因没有发生这种情况,那么其他兼容的系统可能仍然不适用于P2P。因此,对于企业/生产用途,一般建议是购买已经由制造商认证的用于GPU之间的P2P访问的系统。因此,这个答案绝不能保证您的特定组件能够正常工作。
当然,仍然可以在两个不在适当的P2P环境中的GPU之间进行数据传输,但数据将流经更直接涉及CPU的路径。
请注意,通常,P2P支持可能因GPU或GPU系列而异。在一个GPU类型或GPU系列上运行P2P的能力并不一定表明它可以在另一种GPU类型或系列上运行,即使在同一系统/设置中也是如此。 GPU P2P支持的最终决定因素是通过cudaDeviceCanAccessPeer
查询运行时提供的工具。所以这里的陈述应该可以用Titan X"不应被解释为指代任何其他GPU类型。 P2P支持也可能因系统和其他因素而异。此处所做的任何陈述都不是任何特定设置中任何特定GPU支持P2P的保证。