¿Cómo perfilar el código de PyCuda con el Visual Profiler?

Cuando creo una nueva sesión y le digo al Visual Profiler que inicie mis scripts de python / pycuda, recibo el siguiente mensaje de error: Execution run #1 of program '' failed, exit code: 255

Estas son mis preferencias:

  • Lanzamiento: python "/pathtopycudafile/mysuperkernel.py"
  • Directorio de trabajo: "/pathtopycudafile/mysuperkernel.py"
  • Argumentos: [empty]

Yo uso CUDA 4.0 bajo Ubuntu 10.10. 64Bit. El perfilado de ejemplos comstackdos funciona.

ps Soy consciente de la pregunta SO ¿ Cómo perfilar el código PyCuda en Linux? , pero parece ser un problema no relacionado.

Ejemplo minimo

pycudaexample.py:

 import pycuda.autoinit import pycuda.driver as drv import numpy from pycuda.compiler import SourceModule mod = SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """) multiply_them = mod.get_function("multiply_them") a = numpy.random.randn(400).astype(numpy.float32) b = numpy.random.randn(400).astype(numpy.float32) dest = numpy.zeros_like(a) multiply_them( drv.Out(dest), drv.In(a), drv.In(b), block=(400,1,1), grid=(1,1)) pycuda.autoinit.context.detach() 

Configuraciones de ejemplo Captura de pantalla de los ajustes utilizados

Mensaje de error

Captura de pantalla del mensaje de error

Hay algo incorrecto en la forma en que está especificando el ejecutable al compiler profiler. Si pongo una línea de hash bang en la parte superior de tu código publicado:

 #!/usr/bin/env python 

y luego, otorgue al archivo python permisos ejecutables, el generador de perfiles de cálculo ejecuta el código sin queja y obtengo esto:

introduzca la descripción de la imagen aquí

Hay dos métodos que puede utilizar.

Iniciar el intérprete de script

 Launch python Arguments "/pathtopycudafile/mysuperkernel.py" 

Lanzar un script ejecutable

 Launch "/pathtopycudafile/mysuperkernel.py" Arguments [blank] mysuperkernel.py must be executable (chmod +x) mysuperkenrel.py must have a #! to specify the path to the interpreter 

Ver respuesta @talonmies