2012-11-25 17 views
6

Quando usiamo CUDA profilatore nvvp, ci sono diversi s "generali" correlati con istruzioni, per esempio:In CUDA profiler nvvp, cosa significa "overhead di memoria condivisa/globale"? Come viene calcolato?

  • Branch Divergenza ambientale;
  • Sovraccarico memoria condivisa/globale; e
  • Overhead della cache locale/globale.

Le mie domande sono:

  1. Quale causa (s) queste spese generali e
  2. come vengono calcolati?
  3. Analogamente, come viene calcolata l'efficienza di carico/negozio globale?

Allegato: ho trovato tutte le formule che calcolano questi overhead nella 'CUDA Profiler Users Guide' confezionata nel toolkit CUDA5.

risposta

2

Potete trovare alcune delle risposte alla tua domanda qui:

Why does CUDA Profiler indicate replayed instructions: 82% != global replay + local replay + shared replay?

Istruzioni riprodotti (%) Questo dà la percentuale di istruzioni riprodotti durante l'esecuzione del kernel. Le istruzioni ripetute sono la differenza tra i numeri di istruzioni che sono effettivamente rilasciati dall'hardware al numero di istruzioni che sono eseguite dal kernel. Idealmente questo dovrebbe essere zero. Questo è calcolato come 100 * (istruzioni impartite - istruzione eseguita)/ istruzioni emesse

memoria globale di replay (%) Percentuale di istruzioni rieseguiti causati a causa di memoria globale accessi. Questo è calcolato come 100 * (l1 perdere carico globale)/istruzioni impartite

Memoria locale di replay (%) Percentuale di istruzioni rieseguiti causato a causa di accessi alla memoria locale. Questo è calcolato come 100 * (l1 locale carico perdere + L1 locale negozio di perdere)/istruzioni impartite

banca comune di replay conflitto (%) Percentuale di rieseguiti istruzioni causati a causa di conflitti di banca di memoria condivisa. Questo è calcolato come 100 * (l1 conflitto comune)/istruzioni impartite

+1

Grazie per le vostre risposte, BenC, ho capito le "Istruzioni" riprodotti e percentuali "banca in comune conflitto di riproduzione". Tuttavia, date le formule per i replay di "Global/Local memory", non riesco ancora a capire perché le mancate cache globali/locali possano causare ripetizioni delle istruzioni. Quando si verifica un errore nella cache, è sufficiente accedere alla memoria globale per recuperare ciò che è necessario, PERCHÉ REPLAY? – troore

+1

Penso che tu possa trovare alcune risposte alla tua domanda in [queste diapositive] (http://developer.download.nvidia.com/CUDA/training/bandwidthlimitedkernels_webinar.pdf).Le operazioni di memoria sono emesse per ordito, proprio come ogni altra istruzione. Quando un ordito richiede le parole successive, una scarsa coalescenza di memoria porterà a più missioni di carico di L1, causando così ripetizioni di istruzioni. Nota che non sono un esperto CUDA quindi la mia comprensione potrebbe non essere corretta :-) – BenC

+1

Questo [altro link] (http://www.freepatentsonline.com/8266383.html) potrebbe essere quello che stavi cercando, ma i dettagli tecnici richiedono una vera motivazione. – BenC