2

CUDA サンプルに含まれている simpleP2P サンプル プログラムの実行中に見つかったエラーのトラブルシューティングを試みています。エラーは次のとおりです。

$ ./simpleP2P 
[./simpleP2P] - Starting...
Checking for multiple GPUs...
CUDA-capable device count: 2
> GPU0 = "     Tesla K20c" IS  capable of Peer-to-Peer (P2P)
> GPU1 = "     Tesla K20c" IS  capable of Peer-to-Peer (P2P)

Checking GPU(s) for support of peer to peer memory access...
> Peer-to-Peer (P2P) access from Tesla K20c (GPU0) -> Tesla K20c (GPU1) : No
> Peer-to-Peer (P2P) access from Tesla K20c (GPU1) -> Tesla K20c (GPU0) : No
Two or more GPUs with SM 2.0 or higher capability are required for ./simpleP2P.
Peer to Peer access is not available between GPU0 <-> GPU1, waiving test.

私が使用しているデバイスは次のとおりです。

$ lspci | grep NVIDIA
03:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
83:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)

nvidia-smi から取得した接続に関する追加情報:

$ nvidia-smi topo -m
    GPU0    GPU1    CPU Affinity
GPU0     X  SOC 0-5,12-17
GPU1    SOC  X  6-11,18-23

Legend:

  X   = Self
  SOC = Path traverses a socket-level link (e.g. QPI)
  PHB = Path traverses a PCIe host bridge
  PXB = Path traverses multiple PCIe internal switches
  PIX = Path traverses a PCIe internal switch

最後に、lspci ツールからのより詳細な出力。

03:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
        Subsystem: NVIDIA Corporation Device 0982
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at f9000000 (32-bit, non-prefetchable)
        Memory at d0000000 (64-bit, prefetchable)
        Memory at ce000000 (64-bit, prefetchable)
        Capabilities: <access denied>
        Kernel driver in use: nvidia
        Kernel modules: nvidia_346, nouveau, nvidiafb
...
83:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
        Subsystem: NVIDIA Corporation Device 0982
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at cc000000 (32-bit, non-prefetchable)
        Memory at b0000000 (64-bit, prefetchable)
        Memory at ae000000 (64-bit, prefetchable)
        Capabilities: <access denied>
        Kernel driver in use: nvidia
        Kernel modules: nvidia_346, nouveau, nvidiafb

トラブルシューティングや、少なくとも問題の場所をよりよく理解するのに役立つ情報をお持ちの方はいらっしゃいますか? いつものように読んでくれて/助けてくれてありがとう。-- オマール

4

1 に答える 1

3

GPU がソケットレベルのリンク (Intel ベースのシステムの QPI) を介して相互接続されている場合:

GPU0     X  SOC 0-5,12-17
GPU1    SOC  X  6-11,18-23
        ^^^

その場合、これら 2 つの GPU 間で P2P トランザクションは実行できません。

P2P に参加する GPU には、多くの要件が課せられています。そのうちの 1 つは、通常は同じ PCIE ルート コンプレックス上にある必要があるということです。ソケットレベルのリンク (QPI など) を介して接続されている GPU は、2 つの異なる「ソケット」、つまり 2 つの異なる CPU にあるため、2 つの異なる PCIE ルート コンプレックスに属します。

一般に、P2P サポートは GPU または GPU ファミリによって異なる場合があることに注意してください。1 つの GPU タイプまたは GPU ファミリで P2P を実行する機能は、同じシステム/セットアップであっても、別の GPU タイプまたはファミリで動作することを必ずしも示しません。GPU P2P サポートの最終的な決定要因は、 を介してランタイムをクエリする提供ツールcudaDeviceCanAccessPeerです。P2P のサポートは、システムやその他の要因によっても異なります。ここに記載されている記述は、特定のセットアップにおける特定の GPU の P2P サポートを保証するものではありません。

于 2015-11-06T13:30:01.083 に答える