2012-09-07 12 views
8

Non sto trovando molte informazioni utili sulle informazioni PTX --ptxas-options=-v Ho trovato un pdf NVCC 2008 con una piccola descrizione, ma nessun dettaglio.
1) Che cosa significa 64 bytes cmem[0], 12 bytes cmem[16]? Ho capito che si riferisce alla memoria costante. Non uso alcun mem costante nel codice, quindi questo deve provenire dal compilatore. (Cosa succede a RO mem?)
2) Che cosa significa 49152+0 bytes smem? Sì, è memoria condivisa, ma cosa significano i due #?
3) C'è un documento che mi aiuterà con questo? (Come si chiama?)
4) Dove posso trovare un documento che spiegherà il file * .ptx? (Mi piacerebbe essere in grado di leggere/capire il codice CUDA compl.)CUDA: Capire le informazioni PTX

+2

cmem [x] - x = la banca mem #: 0 = dati param/informazioni kernel, 2 = memoria costante definita dall'utente, 14 e 16 = compilatore ha generato memoria costante – Doug

risposta

7
  1. cmem è dicussed here. Nel tuo caso significa 64 byte per passare argomenti al kernel e 12 byte sono occupati da costanti generate dal compilatore.

  2. In caso di smem, il primo numero è la quantità di dati richiesta dal codice e il secondo numero (0) indica la quantità di memoria utilizzata per scopi di sistema.

  3. Non conosco informazioni ufficiali sul formato di output verboso ptxas. Per esempio. in "Calcolatore di occupazione CUDA" si dice semplicemente di sommare i valori per smem senza alcuna spiegazione.

  4. Ci sono diversi documenti PTX su nVidia website. Il più fondamentale è PTX: Parallel Thread Execution ISA Version 3.0.

1

Vedere "Miscellaneous NVCC Usage". Ricordano che l'allocazione bancaria costante è specifica del profilo.

Nel PTX guide, dicono che a parte 64 KB di memoria costante, avevano 10 più banchi per la memoria costante. Il driver può allocare e inizializzare i buffer costanti in queste regioni e passare i puntatori ai buffer come parametri di funzione del kernel.

Immagino che quel profilo dato per nvcc si occuperà di quali costanti andare in quale memoria. Ad ogni modo, non dobbiamo preoccuparci se ogni memoria costante cmem [n] è inferiore a 64 KB, perché ogni banca ha una dimensione di 64 KB e comune a tutti i thread nella griglia.