2

2 つの GTX 590 カード (4 つの GPU) を搭載した Linux ボックスがあります。CUDA 4.0 ドライバーを使用すると、GPUDirect メモリ アクセスを呼び出して、4 つの GPU の可能なすべてのペア間でコピーが成功したことを確認できます。

しかし、CUDA 4.1 ドライバー (またはそれ以降のドライバー) にアップグレードした後、GPUDirect アクセス ペアが制限されます。

たとえば、ピアツーピアは、CUDA 4.0 の下で次の間で有効になります。

GPU0 <-> GPU1

GPU0 <-> GPU2

GPU0 <-> GPU3

GPU1 <-> GPU2

GPU1 <-> GPU3

GPU2 <-> GPU3

しかし、CUDA 4.1 (またはそれ以降) では、次の間のみのアクセスに制限されています。

GPU0 <-> GPU1 (同じカード)

GPU2 <-> GPU3 (同じカード)

GPU1 <-> GPU3

最新の CUDA 5.x ドライバーを使用する場合、誰かがこれを説明したり、回避策を知ったりできますか?


$ lspci -tv (興味深い部分):

-[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

私には、すべてのパスが物理的に利用可能 (構造のようなツリー) であり、cuda 4.0 を使用しているように見えますが、cuda 4.1 以降を使用している場合、cudaDeviceCanAccessPeer() は「クロスカード」通信に対して false を返します。すべてのホストからデバイスへのパスは常に (もちろん) 利用可能であることに注意してください。

4

1 に答える 1