我现在做的这台机器上装有四块GPU,型号一样都是Tesla C2050,但是运行的时候发现这四块卡是两两之间可P2P的,0号卡和1号卡可以传,2号卡和3号卡可以传,但,1号卡和2号卡就不行了,想问一下有可能是什么原因,是总线或者主板架构的问题么?
楼主说的,两两不能p2p copy能否继续说明下?
据我所知,无论在A家还是I家的板子上,都是可以进行P2P copy的。
唯一的区别是,在I家,某种情况下(似乎是不在同一个root complex下), 则需要通过内存进行中转。
但这个中转,是自动的。
以及,在较老的驱动和cuda toolkit下,您可能会遇到在I家板子上的P2P copy问题。此时则建议您升级到最近驱动。
即:
(1)给出更确切的信息。
(2)如果不是最新驱动/toolkit,请使用最新驱动/tookit。
您使用的函数是cudaMemcpy而不是cudaMemcpyPeer?
如果两个GPU连接到同一个CPU上,p2p是没有问题的,如果连到不同的CPU上,p2p就不行了.
如果您的机器是双路的,那么就有可能,建议使用lspci -vt查看一下.
1)现在还只是测试一下系统,还没有实际进行数据传输,我先使用
cudaDeviceCanAccessPeer(&can_access_peer[i][j],gpuid[i],gpuid[j]);
发现can_access_peer[0][1]==can_access_peer[1][0]==can_access_peer[2][3]==can_access_peer[3][2]==1;但是can_access_peer[1][2]和can_access_peer[2][1]==0;
2)驱动和toolkit都是4.2的,要升到5.0吗?
很有可能是您说的这个问题,具体怎么查看,您能再说得详细一点吗?
楼主您好,4.2可以了。无需升级。(如果您想升级也行。到最新驱动还是不错的)。
感谢风大指出官方说法:不能跨CPU进行P2P copy。
以及,
(1)其他不靠谱资料指出,这个在AMD的双路CPU上是无问题的(通过hyper-transport中转)
(2)同时不靠谱资料指出,只有Intel的CPU受到影响(无法跨Intel I/O Hub进行PCI-E mastering)。
(3)同时不靠谱资料指出,可以强上cudaMemcpy的。在intel双路cpu这种不支持的情况下,会自动通过host memory中转(即自动复制2次。GPU1 → CPU, CPU → GPU2)。
以上信息仅供参考, 如有矛盾,请以风大为主。
请使用lspci -vt查看GPU连接到那个CPU上.如我的机器就可以看到:
-[0000:00]-±00.0 Intel Corporation Sandy Bridge DMI2
±01.0-[01]----00.0 NVIDIA Corporation Device 1022
±02.0-[02]–±00.0 NVIDIA Corporation GF108 [GeForce GT 420]
请问这个指令时要在哪里输入呢?windows系统下也是这个指令么?
LZ您好,关于lspci命令,您可以参考如下的链接:
http://en.wikipedia.org/wiki/Lspci
http://linux.die.net/man/8/lspci
WIN下有否类似的命令,我不清楚,请其他人继续补充。
祝您好运~
windows下不是lspci命令,但是您可以通过“设备管理器"来查看您的PCI/PCI-E设备连接信息。
设备管理器可以通过鼠标右键点击您的“计算机”图标,并选择属性。并在弹出的窗口中选择“设备管理器”。即可查看。
如图(附件)
[attach]3041[/attach]