Collo di bottiglia PCI-E durante il trasferimento di dati tra CPU e GPU


3

Ho letto che il sovraccarico di trasferimento tra CPU e GPU è un grosso collo di bottiglia nel raggiungimento di elevate prestazioni nelle applicazioni GPU / CPU. Perché è così?

Secondo il programma di larghezza di banda di Nvidia, la mia larghezza di banda CPU / GPU è di circa 4 a 5 GBps. Sono le massime prestazioni e le prestazioni effettive sono probabilmente molto inferiori? La mia applicazione può raggiungere ~ 17 Gbps solo quando il trasferimento dei dati è incluso nella misurazione delle prestazioni, un grande calo rispetto alla frequenza di oltre 100 Gbps quando si misura solo il calcolo della GPU senza trasferimento di dati.

Risposte:


0

Perché questa è la larghezza di banda PCI-e, vedi http://en.wikipedia.org/wiki/PCI_Express

5 GB / sec sembrano ragionevoli dato che in un sistema reale non è possibile eseguire trasferimenti interamente back-to-back in qualsiasi momento, di volta in volta è necessario lasciare andare il bus per altre periferiche.

La larghezza di banda su GPU va solo alla DRAM, e forse nemmeno quella (hit della cache all'interno della GPU), ed è quindi molto più alta.

La risposta alla tua prossima domanda "perché non c'è più larghezza di banda in PCIe" è fondamentalmente dovuta a compromessi di costo / potenza / dimensioni / latenza. Una corsia PCIe è più lenta di Ethernet 10G ma i transitori di autobus sono più economici; un sistema di larghezza di banda maggiore aumenterebbe il costo di tutte le schede di espansione.


0

Ho letto che il sovraccarico di trasferimento tra CPU e GPU è un grosso collo di bottiglia nel raggiungimento di elevate prestazioni nelle applicazioni GPU / CPU. Perché è così?

La tua domanda ha due sensi:

  1. Perché questo (il trasferimento) è il collo di bottiglia?
  2. Quali sono le ragioni fisiche per questo?

Nel primo senso, è perché tutto il resto sulla tua macchina si muove molto più velocemente:

CPU rispetto alla velocità del bus

Mentre questo grafico è per CPU e memoria, grafici simili sono validi per la GPU. Il risultato è che se si desidera ottenere buone prestazioni, è necessario sfruttare al massimo ogni carico di memoria possibile.

È possibile tracciare questo con il modello roofline:

Modello sul tetto

L'asse x mostra quante volte viene utilizzato ogni byte quando viene caricato dalla memoria. L'asse y è la prestazione in operazioni al secondo. Le linee diagonali sul lato sinistro sono regioni in cui la velocità della memoria limita il calcolo.

In quella regione puoi ottenere prestazioni migliori usando una memoria più veloce (come la memoria locale della GPU o le cache L3, L2 o L1 della CPU), in modo che una linea diagonale più alta ti limiti, o aumentando l'intensità aritmetica, quindi passa alla giusto. Le linee piatte nella parte superiore sono limiti sulla velocità di calcolo non elaborata una volta caricata la memoria. Può esserci una linea per operazioni diritte in virgola mobile, SSE2, AVX, ecc. In questo caso, il diagramma mostra che alcuni kernel profonde-learning riutilizzare i propri dati molto e può fare pieno uso di tutti gli operatori matematici speciali in un GPU, quindi l'unico modo per farli è più veloce di costruire un nuovo dispositivo: il TPU .

La tua seconda domanda: perché l'autobus è il collo di bottiglia? Ci sono una serie di ragioni tecnologiche, ma ignorale. I chip di Intel si stanno avvicinando a 8 nm tra i transistor. Le GPU sono da qualche parte in quel campo da baseball. Il bus, d'altra parte, è facilmente misurabile in pollici: 25 milioni di volte più lontano.

Supponendo un processore da 3 GHz, sono necessari circa 0,3 n per eseguire un'operazione.

Ci vogliono 0,25 n per un po 'per spostarsi su un bus da 3 pollici. Poiché ogni bit inviato sul bus richiede almeno 1 ciclo per l'invio e 1 ciclo per la ricezione, un trasferimento di bit completo richiede circa 0,9 ns. (Questo ignora un po 'di sovraccarico aggiuntivo sui messaggi che viene catturato da modelli come LogP .) Moltiplicalo per 1 MB e ottieni circa 1 ms per un trasferimento di dati. Nello stesso momento in cui stavi facendo quel trasferimento, avresti potuto fare un milione di altre operazioni. Quindi la fisica afferma che il bus è un limitatore fondamentale delle prestazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.