2012-10-20 8 views
7

La velocità dati delle operazioni cudaMemcpy è fortemente influenzata dal numero di corsie PCI-e 3.0 (o 2.0) assegnate per l'esecuzione dalla CPU alla GPU. Sono curioso di sapere come vengono utilizzate le corsie PCI-e sui dispositivi Nvidia contenenti due GPU.Allocazione della linea PCI-e sulle schede a 2 GPU?

Nvidia ha alcuni prodotti con due GPU su un singolo dispositivo PCI-e. Per esempio:

  • La GTX 590 contiene due GPU Fermi GF110
  • La GTX 690 contiene due GK104 GPU Kepler

Come per molte schede grafiche più recenti, questi dispositivi montare in PCI-e 16 slot. Per le schede che contengono solo una GPU, la GPU può utilizzare 16 linee PCI-e.

Se ho un dispositivo contenente due GPU (come la GTX 690), ma sto solo l'esecuzione dei processi di elaborazione su un unico delle GPU, può tutti i 16 PCI-e corsie servire quello che GPU viene utilizzato?


Per mostrare questo come ascii art ...

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


sto non parlare del caso in cui la CPU è collegata a due schede che hanno ciascuna una GPU. (Dello schema seguente)

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

risposta

9

la GTX 690 utilizza un PLX PCIe Gen 3 bridge chip per collegare i due GK104 GPU con il bus PCIe host. C'è una connessione x16 completa dall'host al dispositivo PLX e dal dispositivo PLX a ogni GPU (il dispositivo PLX ha un totale di 48 corsie). Pertanto, se si utilizza solo una GPU, è possibile ottenere una larghezza di banda pari a circa x16 su quella GPU. È possibile esplorare questo utilizzando lo bandwidthTest incluso negli esempi CUDA. bandwidthTest si rivolgerà a una singola GPU (delle due che sono sulla scheda, e questa è selezionabile tramite l'opzione della riga di comando), e dovresti vedere approssimativamente la larghezza di banda completa a seconda del sistema. Se il tuo sistema è compatibile con Gen3, dovresti vedere l'intera larghezza di banda di PCIe x16 Gen 3 (non dimenticare di usare l'opzione --memory = pinned), che varierà a seconda del sistema specifico ma dovrebbe essere ben a nord di 6 GB/s (probabilmente nell'intervallo 9-11 GB/s). Se il tuo sistema è compatibile con Gen2, dovresti vedere qualcosa nell'intervallo 4-6 GB/s. Una dichiarazione simile può essere fatta su GTX 590, tuttavia è un dispositivo solo Gen2 e utilizza un chip bridge diverso. I risultati di bandwidthTest confermano che esiste un percorso logico completo x16 tra la porta principale e la GPU. Ovviamente non esiste un pranzo gratis, quindi non è possibile ottenere la piena larghezza di banda simultanea per entrambe le GPU: si è limitati dallo slot x16.

Problemi correlati