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
risposta
cmem
è dicussed here. Nel tuo caso significa 64 byte per passare argomenti al kernel e 12 byte sono occupati da costanti generate dal compilatore.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.Non conosco informazioni ufficiali sul formato di output verboso
ptxas
. Per esempio. in "Calcolatore di occupazione CUDA" si dice semplicemente di sommare i valori persmem
senza alcuna spiegazione.Ci sono diversi documenti PTX su nVidia website. Il più fondamentale è PTX: Parallel Thread Execution ISA Version 3.0.
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.
- 1. NVIDIA NVCC e CUDA: Cubin vs. PTX
- 2. aiutami a capire cuda
- 3. Confusione con il codice PTX CUDA e memoria di registro
- 4. Passaggio diretto del programma PTX al driver CUDA
- 5. Capire questo kernel CUDA lancia i parametri
- 6. Disabilitare le informazioni di debug di Tensorflow
- 7. I registri PTX "bit bucket"
- 8. Capire le goroutine
- 9. Come valutare le prestazioni CUDA?
- 10. Come posso recuperare le informazioni sull'elenco dei parametri per un kernel CUDA 4.0+?
- 11. Passare le strutture ai kernel CUDA
- 12. CUDA driver API vs. CUDA runtime
- 13. Quali sono le differenze tra le capacità di calcolo CUDA?
- 14. differenze tra architettura virtuale e reale di cuda
- 15. Come ottengo le mie specifiche CUDA su una macchina Linux?
- 16. Come capire le autorizzazioni socket Java?
- 17. Ottenere intelliJ IDEA capire le dipendenze SBT
- 18. Capire le stringhe di $ in formato Java
- 19. Capire le prestazioni di numpy memmap
- 20. CUDA disabilita la cache L1 solo per una variabile
- 21. Come inizializzare le informazioni sull'autorizzazione
- 22. mysqldump conserva le informazioni dell'indice?
- 23. Non riesco a capire le notazioni: * e ** con i puntatori
- 24. Dovrei cercare in PTX per ottimizzare il mio kernel? Se é cosi, come?
- 25. Capire xcode linking (ld)
- 26. Barriera interblocco su CUDA
- 27. CMake + Cuda: compila file cpp in modalità Cuda (--x = cu)
- 28. Come usare clang per compilare OpenCL al codice ptx?
- 29. Mathematica e CUDA
- 30. CUDA: sincronizzazione dei thread
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