Domanda

Ho guardato attraverso la guida di programmazione e le migliori pratiche guide e detto che l'accesso globale di memoria prende 400-600 cicli. Non ho visto molto sugli altri tipi di memoria come cache di tessitura, la cache costante, la memoria condivisa. Registri hanno 0 memoria latenza.

Credo costante cache è la stessa come registri se tutti i fili utilizzano lo stesso indirizzo nella cache costante. Caso peggiore Io non sono così sicuro.

memoria

Shared è lo stesso di registri fintanto che non ci siano conflitti di banca? Se ci sono poi, come si fa la latenza svolgersi?

Che dire di consistenza della cache?

È stato utile?

Soluzione

La latenza ai ricordi condivisi / costanti / struttura è piccola e dipende da quale dispositivo hai. In generale, comunque GPU sono progettati come un'architettura di throughput che significa che creando thread sufficienti la latenza alle memorie, compresa la memoria globale, è nascosto.

La ragione le guide parlano la latenza di memoria globale è che la latenza è ordini di grandezza superiore a quella di altri ricordi, che significa che è la latenza dominante da considerare per l'ottimizzazione.

Hai menzionato la cache costante in particolare. Sei tutto corretto che se tutti i fili all'interno di un ordito (cioè gruppo di 32 fili) accesso lo stesso indirizzo allora non c'è penalità, cioè il valore viene letto dalla cache e trasmesso a tutti i thread simultaneamente. Tuttavia, se le discussioni accedere agli indirizzi diversi, il mosto accessi serialize dal momento che la cache può fornire un solo valore alla volta. Se si sta utilizzando il CUDA Profiler, allora questo verrà visualizzato sotto il banco di serializzazione.

La memoria condivisa, a differenza della cache costante, in grado di fornire la larghezza di banda molto più alta. Controlla la CUDA Ottimizzazione parlare per maggiori dettagli e una spiegazione della banca conflitti e il loro impatto.

Altri suggerimenti

Per (Keplero) Tesla K20 le latenze sono i seguenti:

  

La memoria globale: 440 orologi
  Costante di memoria
  L1: 48 orologi
  L2: 120 orologi
  Memoria condivisa: 48 orologi
  memoria texture
  L1: 108 orologi
  L2: 240 orologi

Come faccio a saperlo? Ho eseguito le microbenchmarks descritti da di Demystifying GPU microarchitettura gli autori attraverso Microbenchmarking . Essi forniscono risultati simili per i più anziani GTX 280.

Questa è stata misurata su un cluster Linux, il nodo di calcolo in cui stavo correndo i parametri di riferimento non è stato utilizzato da altri utenti o ha altri processi. È BULLX Linux con una coppia di 8 Xeon core e 64 GB RAM, nvcc 6.5.12. Ho cambiato il sm_20 per sm_35 per la compilazione.

C'è anche un operandi costo capitolo nella PTX ISA anche se non è molto utile, ma ribadisce solo quello che già aspetta, senza dare cifre precise.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top