2011-01-12 20 views
10

Al compilar su código CUDA, debe seleccionar para qué arquitectura se está generando su código. nvcc proporciona dos parámetros para especificar esta arquitectura, básicamente:¿Cuáles son los valores predeterminados para las opciones de arco y código cuando se usa nvcc?

  • arch especifica el arquictecture virtual, que puede ser compute_10, compute_11, etc.
  • code especifica la arquitectura real, que puede ser sm_10, sm_11, etc.

Así que un comando como este:

nvcc x.cu -arch=compute_13 -code=sm_13 

Generará código 'cubin' para dispositivos con capacidad de cómputo 1.3. Por favor corrígeme si estoy equivocado. Lo que me gustaría saber es cuáles son los valores predeterminados para estos dos parámetros? ¿Cuál es la arquitectura predeterminada que usa nvcc cuando no se especifica ningún valor paraarchocode?

+2

Si compila su código con el indicador detallado, verá la arquitectura virtual predeterminada utilizada. –

Respuesta

8

Ok, finalmente he logrado descubrir los valores predeterminados. Mi error es no haber leído todo el capítulo sobre compilación de GPU en la documentación de NVCC desde el principio hasta el final. Así,

nvcc x.cu 

es equivalente para

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10 

Esos son los valores por defecto. La compilación se realiza por defecto a la arquitectura virtual compute_10, y el a.out que resulta de la compilación incluirá el código CUBIN para la arquitectura real sm_10, y el código ensamblador PTX para la arquitectura compute_10, que se compilará 'justo a tiempo' por el controlador CUDA si su arquitectura es mayor que sm_10.

+2

La arquitectura predeterminada [ahora varía según la versión de CUDA] (http://stackoverflow.com/questions/28932864/cuda-compute-capability-requirements), con versiones más recientes. –

2

Creo que el valor predeterminado es compute_10, ya que no puede usar ninguna de las funciones de compute_13 a menos que especifique explícitamente que eso es lo que desea. (Presumiblemente la documentación de NVCC que viene con el kit de herramientas CUDA especifica, pero no puedo encontrar un enlace en línea).

+0

Supongo que tienes razón. No pude encontrar esa información cuando eché un vistazo a la documentación de NVCC. Voy a mirar de nuevo, de todos modos. – Auron

+0

Hmm, parece que el valor predeterminado para '-code' es el valor especificado en' -arch', pero no puedo encontrar cuál es el valor predeterminado para '-arch'. – Auron

Cuestiones relacionadas