2012-10-20 13 views
7

Die Datenrate von cudaMemcpy Operationen wird stark von der Anzahl der PCI-e 3.0 (oder 2.0) Lanes beeinflusst, die zugewiesen sind, um von der CPU zur GPU zu laufen. Ich bin gespannt, wie PCI-e-Lanes auf Nvidia-Geräten mit zwei GPUs verwendet werden.PCI-e-Spurbelegung auf 2-GPU-Karten?

Nvidia hat ein paar Produkte, die zwei GPUs auf einem einzigen PCI-e-Gerät haben. Zum Beispiel:

  • Die GTX 590 enthält zwei Fermi GF110-GPUs
  • Die GTX 690 enthält zwei Kepler GK104-GPUs

Wie bei vielen neueren Grafikkarten, diese Geräte in PCI-e 16 Schlitze montieren. Für Karten, die nur eine GPU enthalten, kann die GPU 16 PCI-e-Lanes verwenden.

Wenn ich ein Gerät mit zwei GPUs (wie die GTX 690), aber ich bin mit nur Rechenaufträge auf nur ein der GPUs können alle 16 PCI-e Bahnen dienen dazu, die eine GPU, dass wird verwendet?


diese Kunst als ascii Um zu zeigen, ...

[ GTX690 (2x GF110) ] ------ 16 PCI-e Fahrspuren ----- [ CPU ]


ich spreche nicht über den Fall wo die CPU mit zwei Karten verbunden ist, die jeweils eine GPU haben. (Wie das folgende Diagramm)

[ GTX670 (1x GK104) ] ------ PCI-e Fahrspuren ----- [ CPU ] ------ PCI -e Fahrspuren ----- [ GTX670 (1x GK104) ]

Antwort

9

die GTX 690 verwendet eine PLX PCIe Gen 3 bridge chip die zwei GPUs GK104 mit dem Host-PCIe-Bus zu verbinden. Es gibt eine volle x16-Verbindung vom Host zum PLX-Gerät und vom PLX-Gerät zu jeder GPU (das PLX-Gerät hat insgesamt 48 Spuren). Wenn Sie also nur eine GPU verwenden, können Sie ungefähr die volle x16-Bandbreite für diese GPU erreichen. Sie können dies mithilfe der bandwidthTest untersuchen, die in den CUDA-Beispielen enthalten ist. bandwidthTest richtet sich an eine einzelne GPU (von den beiden, die sich auf der Karte befinden, und ist über die Befehlszeilenoption auswählbar), und Sie sollten abhängig vom System ungefähr die volle Bandbreite sehen. Wenn Ihr System Gen3-fähig ist, sollten Sie die volle Bandbreite von PCIe x16 Gen 3 sehen (vergessen Sie nicht, die Option --memory = pinned zu verwenden), die je nach System variieren kann, aber wahrscheinlich weit nördlich von 6GB/s liegt im Bereich 9-11GB/s). Wenn Ihr System Gen2-fähig ist, sollten Sie etwas im Bereich von 4-6 GB/s sehen. Eine ähnliche Aussage kann über GTX 590 gemacht werden, jedoch ist es ein Gen2-Gerät und verwendet einen anderen Bridge-Chip. Die Ergebnisse von bandwidthTest bestätigen, dass ein vollständiger x16 logischer Pfad zwischen dem Root-Port und jeder GPU existiert. Es gibt natürlich kein kostenloses Mittagessen, so dass Sie nicht gleichzeitig die volle Bandbreite zu beiden GPUs bekommen können: Sie sind durch den x16-Slot begrenzt.