SM significa multiprocesador de transmisión y el número indica las características admitidas por la arquitectura. Se puede encontrar una buena descripción de las secciones 3.1.2-3.1.4 CUDA Programming Guide y se puede ver las características asociadas a cada arquitectura en el cuadro del apéndice F.
Desde el NVCC manual (también incluido en el kit de herramientas):
Para permitir la evolución arquitectónica, las GPU NVIDIA se lanzan en las generaciones diferentes . Las nuevas generaciones introducen mejoras importantes en la funcionalidad y/o arquitectura de chips, mientras que los modelos GPU dentro de la misma generación muestran diferencias de configuración menores que afectan "moderadamente" la funcionalidad , el rendimiento o ambos.
Su GPU tiene Capacidad Compute 2.0, por lo que debe usar sm_20 para permitir que el compilador use características no disponibles en las arquitecturas antiguas. Si desea compatibilidad con versiones anteriores, puede también objetivo sm_13 (o sm_1x), consulte los documentos anteriores para saber cómo usar la opción -gencode
de nvcc para orientar varias arquitecturas en una única llamada a nvcc.
En cuanto al rendimiento, una cosa a tener en cuenta es que sm_1x no admite el punto flotante IEEE754, por lo que si se dirige a sm_13 y se ejecuta en un dispositivo con Capacidad Compute 2.0 o posterior, entonces puede encontrar que el punto flotante está usando la ruta menos precisa. También puede forzar la ruta menos precisa con sm_20 o posterior utilizando las opciones -ftz=true -prec-div=false -prec-sqrt=false
; consulte la sección 5.4.1 en la Guía de programación CUDA para obtener más información al respecto.
necesita usar sm_20. sm_13 es para calcular tarjetas 1.3. –
es tan simple? capacidad de cálculo 2.0 -> sm_20, capacidad de cálculo 1.3 -> sm_13? – user1281071