cuda - Detectando kernel ptx de transformada de empuje
thrust (1)
Si está usando Visual Studio, use Nvidia NSIGHT Visual Studio Edition que viene con CUDA Toolkit.
Vaya al menú "Nsight", haga clic en la entrada "Start Performance Analysis ...".
- En "Tipo de actividad", seleccione "Aplicación CUDA de perfil"
- En "Configuración del experimento", marca "Recoger información para la vista de fuente CUDA"
- Elija "Todos" en el cuadro de lista "Experimentos para ejecutar"
- En "Control de captura", marque "Abrir informe al detener" y seleccione "Vista de fuente CUDA" en el cuadro de lista
Luego, haga clic en "Iniciar" y espere a que su aplicación se ejecute por completo. Verás salida adicional en la consola de Nsight.
Después de la ejecución, se abrirá la ventana "Vista de la fuente CUDA". - Seleccione "Fuente y PTX" en el cuadro de lista "Ver". Podrá encontrar la correspondencia entre el código fuente y el PTX generado. Cuando hace clic en una línea en el código fuente, una o más líneas se resaltan en verde en el código PTX.
Tengo siguiente impulso: llamada de transformación.
my_functor *f_1 = new my_functor();
thrust::transform(data.begin(), data.end(), data.begin(),*f_1);
Quiero detectar su kernel correspondiente en el archivo PTX. Pero hay muchos núcleos que contienen my_functor en sus nombres destrozados.
Por ejemplo-
_ZN6thrust6system4cuda6detail6detail23launch_closure_by_valueINS2_17for_each_n_detail18for_each_n_closureINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESD_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEEjNS9_30device_unary_transform_functorI10my_functorEENS3_20blocked_thread_arrayEEEEEvT_
_ZN6thrust6system4cuda6detail6detail23launch_closure_by_valueINS2_17for_each_n_detail18for_each_n_closureINS_12zip_iteratorINS_5tupleINS_6detail15normal_iteratorINS_10device_ptrIiEEEESD_NS_9null_typeESE_SE_SE_SE_SE_SE_SE_EEEElNS9_30device_unary_transform_functorI10my_functorEENS3_20blocked_thread_arrayEEEEEvT_
_ZN6thrust6detail15device_functionINS0_30device_unary_transform_functorI10my_functorEEvEC1ERKS4_
¿Qué kernel se lanza y qué son estos otros kernels?