2012-09-07 13 views
8

No encuentro mucha información útil sobre la información de PTX --ptxas-options=-v Encontré un pdf de NVCC 2008 que tiene una pequeña propaganda, pero no detalles.
1) ¿Qué significa 64 bytes cmem[0], 12 bytes cmem[16]? Entiendo que se refiere a la memoria constante. No uso ninguna memoria constante en el código, así que esto debe provenir del compilador. (¿Qué entra en RO mem?)
2) ¿Qué significa 49152+0 bytes smem? Sí, es memoria compartida, pero ¿qué significan los dos?
3) ¿Hay algún documento que me ayude con esto? (¿Cómo se llama?)
4) ¿Dónde puedo encontrar un documento que explique el archivo * .ptx? (Me gustaría ser capaz de leer/entender el código CUDA compl.)CUDA: Comprender la información de PTX

+2

cmem [x] - x = mem bank #: 0 = kernel param data/info, 2 = almacenamiento constante definido por el usuario, 14 & 16 = almacenamiento constante generado por el compilador – Doug

Respuesta

7
  1. cmem se dicussed here. En su caso, significa que se utilizan 64 bytes para pasar argumentos al kernel y 12 bytes están ocupados por constantes generadas por el compilador.

  2. En el caso de smem, el primer número es la cantidad de datos que solicita su código, y el segundo número (0) indica cuánta memoria se utiliza para el sistema.

  3. No conozco ninguna información oficial con respecto al formato de salida detallado ptxas. P.ej. en "CUDA Occupancy calculator" simplemente dicen que suman los valores para smem sin ninguna explicación.

  4. Hay varios documentos de PTX en nVidia website. El más fundamental es PTX: Parallel Thread Execution ISA Version 3.0.

1

Consulte "Miscellaneous NVCC Usage". Mencionan, que la asignación bancaria constante es específica del perfil.

En el PTX guide, dicen que aparte de 64KB de memoria constante, tenían 10 bancos más para memoria constante. El controlador puede asignar e inicializar búferes constantes en estas regiones y pasar punteros a los búferes como parámetros de la función kernel.

Supongo que ese perfil dado para nvcc se ocupará de qué constantes entren en cada memoria. De todos modos, no tenemos que preocuparnos si cada memoria constante cmem [n] es inferior a 64 KB, porque cada banco es de tamaño 64 KB y es común a todos los hilos en la red.