test instalar how cuda nvcc

instalar - nvidia cuda



nvcc-Xptxas-v indicador del compilador no tiene efecto (6)

Tengo un proyecto CUDA. Consiste en varios archivos .cpp que contienen mi lógica de aplicación y un archivo .cu que contiene varios kernels más una función __host__ que los invoca.

Ahora me gustaría determinar el número de registros utilizados por mi kernel (s). Mi llamada normal al compilador se ve así:

nvcc -arch compute_20 -link src/kernel.cu obj/..obj obj/..obj .. -o bin/..exe -l glew32 ..

Agregar el indicador del compilador "-Xptxas -v" a esta llamada desafortunadamente no tiene ningún efecto. El compilador aún produce la misma salida de texto que antes. El .exe compilado también funciona de la misma manera que antes con una excepción: Mi framerate salta a 1800 fps, en vez de 80 fps.


Tuve el mismo problema, esta es mi solución:

  1. Compile * cu archivos en el dispositivo solamente * archivo ptx, esto descartará el código de host

    nvcc -ptx *.cu

  2. Compilar * archivo ptx:

    ptxas -v *.ptx

El segundo paso le mostrará la cantidad de registros usados ​​por kernel y la cantidad de memoria compartida utilizada.


cuando compilas

nvcc --ptxas-options=-v


No es exactamente lo que estaba buscando, pero puede usar el perfilador visual CUDA incluido con el nvidia gpu computing sdk. Además de muchas otras informaciones útiles, muestra la cantidad de registros utilizados por cada kernel en su aplicación.


Es posible que desee ctrl sus valores predeterminados de opción verbosa del compilador.

Por ejemplo, VStudio goto: Herramientas-> Opciones-> Proyectos y soluciones-> BuildAndRun luego establece la salida de verbosidad en Normal.


Al usar "-Xptxas -v", "-arch" juntos, no podemos obtener información detallada (register num, etc.). Si queremos ver el detallado sin perder la posibilidad de asignar arquitectura de GPU (-arch, -code), podemos hacer los siguientes pasos: nvcc -arch compute_XX *.cu -keep then ptxas -v *.ptx . Pero obtendremos muchos archivos de procesamiento. Ciertamente, la respuesta de Kogut es al grano.


Convierta el compute_20 en sm_20 en su llamada al compilador. Eso debería arreglarlo.