Domanda

Supponiamo, dichiaro una variabile locale in una funzione del kernel CUDA per ogni thread:

float f = ...; // some calculations here

Supponiamo anche che la variabile dichiarata è stata collocata da un compilatore di una memoria locale (che è lo stesso di quello globale tranne che è visibile per un unico filo per quanto ne so). La mia domanda è sarà l'accesso al f essere fusero durante la lettura è?

È stato utile?

Soluzione

Non credo ci sia documentazione ufficiale di come locale di memoria (o pila su Fermi) è disposto in memoria, ma sono abbastanza sicuro che le allocazioni mulitprocessor sono accessibili in modo "righe" in modo che le discussioni non-divergente nello stesso ordito avranno accesso coalescente alla memoria locale. Su Fermi, la memoria locale è anche memorizzato nella cache utilizzando lo stesso meccanismo di accesso L1 / L2 come memoria globale.

Altri suggerimenti

carte

CUDA non hanno memoria allocata per le variabili locali. Tutte le variabili locali vengono memorizzati nei registri. kernel complessi con molte variabili riducono il numero di thread che possono essere usati contemporaneamente, una condizione nota come adibita a basso.

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