Linux viceCanAccessPeer将返回true)

Linux viceCanAccessPeer将返回true),linux,cuda,gpgpu,nvidia,multi-gpu,Linux,Cuda,Gpgpu,Nvidia,Multi Gpu,在您的情况下,我想说,如果您能够成功地在同一卡上的设备之间启用对等访问,但在任何其他场景中都无法实现,那么您的系统拓扑可能会陷入某种“无法识别”的场景,或者可能会被列入黑名单。换句话说,这可能是预期的行为 如果您可以在同一卡上的设备之间,以及在不同卡上的某些设备对之间启用对等访问,但不能在不同卡上的其他设备对之间启用对等访问,则可能是机器配置问题或错误 驱动程序维护的管理启发、白名单和黑名单可能会随着驱动程序版本的不同而变化,这解释了为什么在从旧版本移动到新版本时,您会看到行为上的差异。(是的,

在您的情况下,我想说,如果您能够成功地在同一卡上的设备之间启用对等访问,但在任何其他场景中都无法实现,那么您的系统拓扑可能会陷入某种“无法识别”的场景,或者可能会被列入黑名单。换句话说,这可能是预期的行为

如果您可以在同一卡上的设备之间,以及在不同卡上的某些设备对之间启用对等访问,但不能在不同卡上的其他设备对之间启用对等访问,则可能是机器配置问题或错误

驱动程序维护的管理启发、白名单和黑名单可能会随着驱动程序版本的不同而变化,这解释了为什么在从旧版本移动到新版本时,您会看到行为上的差异。(是的,当您使用新版本时,启发式可能会变得更加严格。)

例如,当启发式最初在CUDA 4.0附带的270.41.19驱动程序中定义时,RD890芯片组可能被视为PCIE P2P的“安全”。稍后,根据测试或客户报告,可能会发现RD890主板的某些化身在P2P方面存在某种问题。随后,基于RD890的系统的驱动程序中可能会“关闭”P2P。我不知道这对RD890是正确的,我只是举一个可能发生的例子来说明为什么启发式会随着时间的推移变得更加严格

我提供上述内容并不是对您的案例的完整解释,因为如果您可以在不同卡上的某些GPU之间启用P2P,但不能在不同卡上的其他GPU之间启用P2P,那么这听起来像是我意想不到的行为。我描述的其余部分只是背景信息

我并不完全清楚您的描述,因为您首先指出:

GPU0 GPU1(同一卡)

GPU2 GPU3(同一卡)

GPU1 GPU3

这些都是成功的途径。假设
GPU1 GPU3
表示“跨卡”通信,这对我来说似乎是意外的行为

后来,你表示:

但是,当使用cuda 4.1及以上版本时,cudaDeviceCanAccessPeer()为“交叉卡”通信提供false

如果这是真的,那么它可能只是基于驱动程序中的enable启发式修改的预期行为

请注意,一般来说,P2P支持可能因GPU或GPU系列而异。在一种GPU类型或GPU系列上运行P2P的能力并不一定表示它将在另一种GPU类型或系列上工作,即使在相同的系统/设置中也是如此。GPU P2P支持的最终决定因素是提供的工具,这些工具通过
cudaDeviceCanAccessPeer
查询运行时。P2P支持也可能因系统和其他因素而异。这里所做的任何声明都不能保证在任何特定设置中对任何特定GPU的P2P支持

-[0000:00]-+-00.0  ATI Technologies Inc RD890 Northbridge only single slot PCI-e GFX Hydra part
       +-02.0-[0c-0f]----00.0-[0d-0f]--+-00.0-[0f]--+-00.0  nVidia Corporation Device 1088
       |                               |            \-00.1  nVidia Corporation GF110 High Definition Audio Controller
       |                               \-02.0-[0e]--+-00.0  nVidia Corporation Device 1088
       |                                            \-00.1  nVidia Corporation GF110 High Definition Audio Controller
       :
       +-0b.0-[04-07]----00.0-[05-07]--+-00.0-[07]--+-00.0  nVidia Corporation Device 1088
       |                               |            \-00.1  nVidia Corporation GF110 High Definition Audio Controller
       |                               \-02.0-[06]--+-00.0  nVidia Corporation Device 1088
       |                                            \-00.1  nVidia Corporation GF110 High Definition Audio Controller