¿Cuáles son los valores predeterminados para las opciones de arco y de código cuando se utiliza NVCC?

StackOverflow https://stackoverflow.com/questions/4671607

  •  10-10-2019
  •  | 
  •  

Pregunta

Al compilar el código CUDA, usted tiene que seleccionar para que la arquitectura se genera el código. nvcc proporciona dos parámetros para especificar esta arquitectura, básicamente:

  • 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 el siguiente:

nvcc x.cu -arch=compute_13 -code=sm_13
código

Generará 'cubin' para los dispositivos con capacidad de 1.3 cómputo. Por favor corrígeme si estoy equivocado. Que me gustaría saber es cuales son los valores predeterminados de estos dos parámetros? ¿Qué es la arquitectura predeterminada que utiliza NVCC cuando ningún valor para arch o code se especifica?

¿Fue útil?

Solución

Ok, he finalmente logró descubrir los valores por defecto. Mi culpa por no leer todo el capítulo sobre la compilación de la GPU en la documentación NVCC desde el principio hasta el final. Por lo tanto,

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 de forma predeterminada para la arquitectura compute_10 virtual y el a.out que resulta de la compilación incluirá el código Cubin para la verdadera arquitectura sm_10, y el código ensamblador PTX para la arquitectura compute_10, que se vuelve a compilar 'justo a tiempo' por el conductor si su arquitectura CUDA es mayor que sm_10.

Otros consejos

Creo que el defecto es compute_10, como no se puede usar cualquier función compute_13 a menos que se especifique explícitamente que eso es lo que quiere. (Es de suponer que la documentación NVCC que viene con el kit de herramientas CUDA especifica, pero no puedo encontrar un enlace en línea).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top